refactor(web): el formulario base recibe de cada pantalla los campos de cabecera, pie y línea
Todas las pantallas declaran su DocumentLayout (catálogo FIELDS): ventas y compras dejan de tener la cabecera escrita en el HTML; el folio solo lo llevan los documentos tributarios. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c734dcbd0a
commit
8b0b8afc87
9 files changed
+320
-257
No files matched your search
@@ -8,7 +8,7 @@ import {
|
||||
navigationQuery,
|
||||
taxRateMap,
|
||||
updatePayload,
|
||||
validateDocument,
|
||||
validateLayout,
|
||||
} from './document-model';
|
||||
|
||||
const line = (over: Record<string, unknown> = {}) => ({
|
||||
@@ -52,15 +52,19 @@ describe('computeTotals', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('validateDocument', () => {
|
||||
describe('validateLayout', () => {
|
||||
const header = { CardCode: 'C1', DocDate: '2026-01-05' };
|
||||
const required = [
|
||||
{ key: 'CardCode', label: 'el cliente' },
|
||||
{ key: 'DocDate', label: 'la fecha de contabilización' },
|
||||
];
|
||||
|
||||
it('documento correcto no tiene errores', () => {
|
||||
expect(validateDocument(header, [line()], 'Cliente')).toEqual([]);
|
||||
expect(validateLayout(header, [line()], required, [])).toEqual([]);
|
||||
});
|
||||
|
||||
it('exige socio, fecha y al menos una línea con artículo', () => {
|
||||
expect(validateDocument({}, [line({ ItemCode: '' })], 'Cliente')).toEqual([
|
||||
it('exige los campos obligatorios y al menos una línea con artículo', () => {
|
||||
expect(validateLayout({}, [line({ ItemCode: '' })], required, [])).toEqual([
|
||||
'Indique el cliente.',
|
||||
'Indique la fecha de contabilización.',
|
||||
'Agregue al menos una línea con artículo.',
|
||||
@@ -68,7 +72,7 @@ describe('validateDocument', () => {
|
||||
});
|
||||
|
||||
it('exige cantidad mayor que cero (numerando solo las líneas reales)', () => {
|
||||
expect(validateDocument(header, [line({ ItemCode: '' }), line({ Quantity: 0 })], 'Cliente')).toEqual([
|
||||
expect(validateLayout(header, [line({ ItemCode: '' }), line({ Quantity: 0 })], required, [])).toEqual([
|
||||
'Línea 1: la cantidad debe ser mayor que cero.',
|
||||
]);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user