feat: redondeo en el pie de los documentos de ventas y compras (visible según OADM.RoundMthd) y endpoint /api/company/settings

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-19 12:53:23 -05:00
1 parent 6c2cb30d63
commit e9e3ba03e5
19 files changed
+270 -17

No files matched your search

@@ -44,6 +44,8 @@ export type HeaderField =
/** Flete: código del gasto adicional y su importe (`DocumentAdditionalExpenses`). */
/** Tabla de gastos adicionales del documento (flete, seguro…): una fila por gasto. */
| { type: 'expenses'; label: string }
/** Redondeo del documento (`Rounding` y `RoundingDiffAmount`): solo se ofrece si la empresa usa redondeo (`OADM.RoundMthd`). */
| { type: 'rounding'; label: string }
| { type: 'computed'; label: string; source: ComputedSource };
/** Las listas de valores (ventanas modales) de un formulario. */
@@ -263,11 +265,12 @@ export function marketingLayout(opts: {
{ type: 'number', key: 'DiscountPercent', label: 'Descuento %', decimals: 2 },
{ type: 'computed', label: 'Gastos adicionales', source: 'expenses' },
{ type: 'computed', label: 'Impuesto', source: 'tax' },
{ type: 'rounding', label: 'Redondeo' },
{ type: 'computed', label: 'Total del documento', source: 'total' },
],
},
columns,
newHeader: () => ({ DocType: ITEMS_DOC_TYPE, DocDate: today(), DocDueDate: today(), DiscountPercent: 0 }),
newHeader: () => ({ DocType: ITEMS_DOC_TYPE, DocDate: today(), DocDueDate: today(), DiscountPercent: 0, Rounding: 'tNO', RoundingDiffAmount: 0 }),
newLine: newDocumentLine,
recalc: recalcLine,
service: {
@@ -301,6 +304,8 @@ export const keysOfFields = (fields: readonly HeaderField[]): string[] =>
return [f.prefixKey, f.numberKey];
case 'expenses':
return [];
case 'rounding':
return ['Rounding', 'RoundingDiffAmount'];
default:
return [f.key];
}