Files
basic-erp/apps/web/src/app/features/documents/compras/compras.layouts.ts
T

55 lines
1.9 KiB
TypeScript

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,
});