feat(web): copiar de / a entre documentos de ventas y compras
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cafe4bc035
commit
29e80181fe
8 files changed
+383
-6
No files matched your search
@@ -68,6 +68,10 @@ export function computeTotals(
|
||||
/** Campos de línea que se envían a SAP; el total de línea y lo calculado lo resuelve SAP. */
|
||||
const LINE_FIELDS = ['ItemCode', 'ItemDescription', 'Quantity', 'WarehouseCode', 'Price', 'DiscountPercent', 'TaxCode'] as const;
|
||||
|
||||
/** Referencia al documento origen de una línea copiada; SAP devuelve `BaseType: -1` y `BaseEntry: null` en las que no tienen. */
|
||||
const BASE_FIELDS = ['BaseType', 'BaseEntry', 'BaseLine'] as const;
|
||||
const hasBase = (l: GridLine): boolean => num(l['BaseType']) > 0 && !isEmpty(l['BaseEntry']);
|
||||
|
||||
/** Una línea vacía (la fila en blanco que deja la grilla) no se envía. */
|
||||
export const isBlankLine = (line: GridLine): boolean => isEmpty(line['ItemCode']);
|
||||
|
||||
@@ -78,6 +82,7 @@ export function linesPayload(lines: readonly GridLine[]): DocRecord[] {
|
||||
.map((l) => {
|
||||
const out: DocRecord = {};
|
||||
for (const f of LINE_FIELDS) if (!isEmpty(l[f])) out[f] = l[f];
|
||||
if (hasBase(l)) for (const f of BASE_FIELDS) out[f] = l[f];
|
||||
return out;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user