fix(web): la grilla de líneas no aprieta las columnas (ancho mínimo = suma de anchos), el total va tras el impuesto y el proyecto de la cabecera abre su ventana

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-16 11:09:47 -05:00
1 parent f66ef108cf
commit f077a61d08
11 files changed
+90 -13

No files matched your search

@@ -210,3 +210,38 @@ describe('copiar conserva dimensiones y proyecto', () => {
expect(objectLabel(-1)).toBe('');
});
});
describe('el proyecto de la cabecera se elige de su ventana modal', () => {
it('el campo tiene su botón «…» y abre la lista de proyectos', async () => {
TestBed.resetTestingModule();
const screen = DOCUMENT_SCREENS.find((s) => s.path === '/ventas/ordenes')!;
const route = {
snapshot: { data: { screen, title: 'Documento' }, paramMap: convertToParamMap({}) },
paramMap: of(convertToParamMap({})),
};
await TestBed.configureTestingModule({
imports: [DocumentFormPage],
providers: [provideRouter([]), provideHttpClient(), provideHttpClientTesting(), { provide: ActivatedRoute, useValue: route }],
}).compileComponents();
const ctrl = TestBed.inject(HttpTestingController);
const fixture = TestBed.createComponent(DocumentFormPage);
fixture.detectChanges();
await new Promise((r) => setTimeout(r));
fixture.detectChanges();
const el = fixture.nativeElement as HTMLElement;
const row = [...el.querySelectorAll('sbo-lookup-field')].find((f) => f.querySelector('label')?.textContent?.trim() === 'Proyecto')!;
expect(row, 'campo Proyecto con lista').toBeDefined();
(row.querySelector('button.sbo-btn') as HTMLElement).click();
fixture.detectChanges();
await new Promise((r) => setTimeout(r));
const req = ctrl.expectOne((r) => r.url === '/api/sl/Projects');
expect(req.request.params.get('$filter')).toContain(`Active eq 'tYES'`);
req.flush({ value: [{ Code: 'PE001', Name: 'Proyecto uno' }], 'odata.count': '1' });
fixture.detectChanges();
await new Promise((r) => setTimeout(r));
fixture.detectChanges();
(el.querySelector('.dlg tbody tr') as HTMLElement).click();
fixture.detectChanges();
expect(fixture.componentInstance['header']()['Project']).toBe('PE001');
});
});