feat(web): Indicador, prefijo y número del folio juntos en una fila (documentos de facturación y asiento) y las tres fechas de la cabecera en orden

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-19 14:35:54 -05:00
1 parent 1bb8efa77e
commit a74c19a139
11 files changed
+170 -19

No files matched your search

@@ -252,10 +252,13 @@ describe('el proyecto de la cabecera se elige de su ventana modal', () => {
});
describe('el indicador de la cabecera se elige de su ventana modal', () => {
it('es un campo con lista de valores sobre FactoringIndicators, con código y nombre', () => {
const f = DOCUMENT_SCREENS.find((s) => s.path === '/ventas/facturas')!.layout.header.left.find((x) => x.type === 'lookup' && x.key === 'Indicator');
expect(f && f.type === 'lookup' && f.lookup.resource).toBe('FactoringIndicators');
expect(f && f.type === 'lookup' && f.lookup.columns.map((c) => c.key)).toEqual(['IndicatorCode', 'IndicatorName']);
it('es una celda con lista de valores sobre FactoringIndicators, con código y nombre, junto al folio', () => {
const group = DOCUMENT_SCREENS.find((s) => s.path === '/ventas/facturas')!.layout.header.right.find((x) => x.type === 'group');
const cells = group && group.type === 'group' ? group.cells : [];
expect(cells.map((c) => c.key)).toEqual(['Indicator', 'FolioPrefixString', 'FolioNumber']);
const first = cells[0];
expect(first.kind === 'lookup' && first.lookup.resource).toBe('FactoringIndicators');
expect(first.kind === 'lookup' && first.lookup.columns.map((c) => c.key)).toEqual(['IndicatorCode', 'IndicatorName']);
});
it('abre su ventana de selección y escribe el código elegido', async () => {
@@ -278,8 +281,8 @@ describe('el indicador de la cabecera se elige de su ventana modal', () => {
};
await tick();
const el = fixture.nativeElement as HTMLElement;
const row = [...el.querySelectorAll('sbo-lookup-field')].find((f) => f.querySelector('label')?.textContent?.trim() === 'Indicador')!;
expect(row, 'campo Indicador con lista').toBeDefined();
const row = [...el.querySelectorAll('sbo-field')].find((f) => f.querySelector('label')?.textContent?.trim() === 'Indicador / Folio')!;
expect(row, 'fila Indicador / Folio').toBeDefined();
(row.querySelector('button.sbo-btn') as HTMLElement).click();
await tick();
ctrl.expectOne((r) => r.url === '/api/sl/FactoringIndicators').flush({ value: [{ IndicatorCode: '33', IndicatorName: 'Factura' }, { IndicatorCode: '39', IndicatorName: 'Boleta' }], 'odata.count': '2' });