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:
GeorgeandClaude Sonnet 5.5 committed 2026-10-14 11:59:07 -05:00
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;
});
}