import { type DocumentLayout, marketingLayout } from '../document-layouts'; import type { GridColumn } from '../../../shared/grid/grid.types'; import { ANALYTIC_COLUMNS, LINE_COLUMNS } from '../line-columns'; /** 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' }, ], }, apply: (bp, line) => ({ ...line, LineVendor: bp['CardCode'] }), }, }; /** 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, ...ANALYTIC_COLUMNS, ]; /** * 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, });