2026-10-19 14:53:59 -05:00
import { type DocumentLayout , marketingLayout } from '../document-layouts' ;
2026-10-16 11:07:38 -05:00
import type { GridColumn } from '../../../shared/grid/grid.types' ;
2026-10-19 14:53:59 -05:00
import { ANALYTIC_COLUMNS , LINE_COLUMNS } from '../line-columns' ;
2026-10-14 15:12:01 -05:00
2026-10-19 14:53:59 -05:00
/** Proveedor sugerido de la línea (`LineVendor`). */
const vendorColumn : GridColumn = {
key : 'LineVendor' ,
title : 'Proveedor' ,
width : '130px' ,
mono : true ,
lookup : {
config : {
title : 'Proveedores' ,
resource : 'BusinessPartners' ,
baseFilter : `CardType eq 'cSupplier'` ,
orderby : 'CardCode' ,
columns : [
{ key : 'CardCode' , title : 'Código' , width : '130px' , mono : true },
{ key : 'CardName' , title : 'Nombre' },
],
2026-10-14 15:12:01 -05:00
},
2026-10-19 14:53:59 -05:00
apply : ( bp , line ) => ({ ... line , LineVendor : bp [ 'CardCode' ] }),
2026-10-16 11:07:38 -05:00
},
2026-10-19 14:53:59 -05:00
};
/** Fecha en que se necesita lo pedido en la línea (`RequiredDate`). */
const requiredDateColumn : GridColumn = { key : 'RequiredDate' , title : 'Fecha necesaria' , type : 'date' , width : '135px' };
/** Las columnas de la solicitud de compra, en el orden de SAP: artículo, descripción, proveedor, fecha, cantidad, precio, descuento, impuesto, total y almacén. */
const requestColumns : readonly GridColumn [] = [
LINE_COLUMNS . item ,
LINE_COLUMNS . description ,
vendorColumn ,
requiredDateColumn ,
{ ... LINE_COLUMNS . quantity , title : 'Cantidad necesaria' },
{ ... LINE_COLUMNS . price , title : 'Precio info' },
LINE_COLUMNS . discount ,
LINE_COLUMNS . tax ,
LINE_COLUMNS . total ,
LINE_COLUMNS . warehouse ,
2026-10-16 11:07:38 -05:00
... ANALYTIC_COLUMNS ,
];
2026-10-19 14:53:59 -05:00
/**
* Solicitud de compra: un documento de marketing sin socio de negocio. Lleva al solicitante (usuario de SAP), «Válido
* hasta» y la fecha necesaria; sus líneas llevan el proveedor sugerido y la fecha en que se necesita cada una.
*/
export const purchaseRequestLayout : DocumentLayout = marketingLayout ({
partnerLabel : 'Solicitante' ,
taxResource : 'SalesTaxCodes' ,
uom : 'purchase' ,
requester : true ,
lineColumns : requestColumns ,
});