fix(web): ventas y compras envían la unidad de medida del artículo (UoMEntry)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0d5a3074c8
commit
d3ab97cd2e
7 files changed
+71
-20
No files matched your search
@@ -88,14 +88,22 @@ export const commentsOnly: FieldColumns = { left: [FIELDS.comments], right: [] }
|
||||
const [baseItemColumn, descriptionColumn, quantityColumn, warehouseColumn, priceColumn] = DOCUMENT_LINE_COLUMNS;
|
||||
export { descriptionColumn, priceColumn, quantityColumn, warehouseColumn };
|
||||
|
||||
/** Artículo que además completa la unidad de medida de la línea (`UoMEntry`). */
|
||||
export const itemColumn: GridColumn = {
|
||||
...baseItemColumn,
|
||||
lookup: {
|
||||
...baseItemColumn.lookup!,
|
||||
apply: (item, line) => ({ ...baseItemColumn.lookup!.apply(item, line), UoMEntry: uomEntryOf(item) ?? line['UoMEntry'] }),
|
||||
},
|
||||
};
|
||||
/**
|
||||
* Columna de artículo que además completa la unidad de medida de la línea (`UoMEntry`): sin ella SAP
|
||||
* rechaza el documento si el artículo no tiene unidad por defecto. Al cambiar de artículo se reemplaza
|
||||
* (un artículo de unidad manual no lleva).
|
||||
*/
|
||||
export function itemColumnWithUom(item: GridColumn, side: 'purchase' | 'sales'): GridColumn {
|
||||
return {
|
||||
...item,
|
||||
lookup: {
|
||||
...item.lookup!,
|
||||
apply: (picked, line) => ({ ...item.lookup!.apply(picked, line), UoMEntry: uomEntryOf(picked, side) }),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export const itemColumn: GridColumn = itemColumnWithUom(baseItemColumn, 'purchase');
|
||||
|
||||
/** Lista de almacenes de la cabecera (la misma de las líneas). */
|
||||
export const WAREHOUSE_LOOKUP: VhLookup = warehouseColumn.lookup!.config;
|
||||
@@ -160,10 +168,14 @@ export function marketingLayout(opts: {
|
||||
lineColumns?: readonly GridColumn[];
|
||||
/** Columnas de las listas de valores (cliente, artículo, almacén, impuesto) de este documento. */
|
||||
lookups?: LookupColumns;
|
||||
/** Unidad de medida que se toma del artículo: la de venta o la de compra. */
|
||||
uom: 'sales' | 'purchase';
|
||||
}): DocumentLayout {
|
||||
const columns = lineColumnsFor(opts.taxResource, opts.lineColumns);
|
||||
const columns = lineColumnsFor(opts.taxResource, opts.lineColumns).map((c) =>
|
||||
c.key === 'ItemCode' && c.lookup ? itemColumnWithUom(c, opts.uom) : c,
|
||||
);
|
||||
const layout: DocumentLayout = {
|
||||
lines: { key: 'DocumentLines', fields: lineFieldsOf(columns), base: true },
|
||||
lines: { key: 'DocumentLines', fields: [...lineFieldsOf(columns), 'UoMEntry'], base: true },
|
||||
header: opts.header ?? {
|
||||
left: [
|
||||
{ type: 'partner', key: 'CardCode', label: opts.partnerLabel, required: true, missing: `el ${opts.partnerLabel.toLowerCase()}` },
|
||||
|
||||
Reference in new issue
Block a user