feat(web): la cuenta asociada de los documentos de ventas ofrece solo las de activo y la de compras solo las de pasivo (listas locales en la ventana de selección)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
896fa25f2f
commit
57424432f9
12 files changed
+264
-8
No files matched your search
@@ -65,6 +65,7 @@ import { SboField } from './sbo-field';
|
||||
[baseFilter]="lookup().baseFilter"
|
||||
[orderby]="lookup().orderby"
|
||||
[extraFields]="lookup().extraFields ?? []"
|
||||
[localRows]="lookup().rows"
|
||||
(selected)="onPicked($event)"
|
||||
(closed)="closeList()"
|
||||
/>
|
||||
|
||||
@@ -86,6 +86,19 @@ describe('ValueHelp', () => {
|
||||
await reply(req, [row(1)]);
|
||||
});
|
||||
|
||||
it('con filas locales las busca y pagina en el navegador sin consultar al servidor', async () => {
|
||||
fixture.componentRef.setInput('localRows', [row(1), row(2), row(3)]);
|
||||
fixture.componentRef.setInput('open', true);
|
||||
await flush();
|
||||
ctrl.expectNone(URL);
|
||||
expect(bodyRows()).toHaveLength(3);
|
||||
expect(q('.pager span').textContent).toBe('1–3 de 3');
|
||||
await type('C2');
|
||||
await submitSearch();
|
||||
ctrl.expectNone(URL);
|
||||
expect(bodyRows()).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('cerrado no muestra nada ni consulta', async () => {
|
||||
await flush();
|
||||
expect(q('.dlg')).toBeNull();
|
||||
|
||||
@@ -32,6 +32,8 @@ export class ValueHelp {
|
||||
readonly extraFields = input<readonly string[]>([]);
|
||||
/** Campo único de cada fila; por defecto, el de la primera columna. */
|
||||
readonly rowKey = input<string>();
|
||||
/** Filas ya cargadas (ver `VhLookup.rows`): se buscan y paginan aquí, sin consultar el servidor. */
|
||||
readonly localRows = input<readonly ListRow[]>();
|
||||
readonly pageSize = input(100);
|
||||
/** Filas ya elegidas al abrir (solo selección múltiple). */
|
||||
readonly initialSelection = input<readonly ListRow[]>([]);
|
||||
@@ -48,6 +50,7 @@ export class ValueHelp {
|
||||
orderby: () => this.orderby(),
|
||||
pageSize: () => this.pageSize(),
|
||||
active: () => this.open(),
|
||||
localRows: () => this.localRows(),
|
||||
});
|
||||
|
||||
/** Las marcadas se guardan completas para no perderlas al cambiar de página. */
|
||||
|
||||
@@ -17,6 +17,11 @@ export interface VhLookup {
|
||||
extraFields?: readonly string[];
|
||||
/** Tipo de la clave de la lista: `number` para códigos numéricos (grupos, listas de precios), que no llevan comillas. */
|
||||
valueType?: 'string' | 'number';
|
||||
/**
|
||||
* Filas ya cargadas (una lista corta que el servidor no puede filtrar, como las cuentas asociadas de un grupo): la
|
||||
* ventana las busca y pagina en el navegador, sin consultar `resource`.
|
||||
*/
|
||||
rows?: readonly VhRow[];
|
||||
/** Otros campos por los que se reconoce un código escrito a mano (`FormatCode` de una cuenta: el usuario no conoce el `_SYS…` interno). */
|
||||
alsoMatch?: readonly string[];
|
||||
/** Cómo se muestra el código guardado en una celda (la cuenta con su formato) y cómo se aprenden los de las filas elegidas. */
|
||||
|
||||
Reference in new issue
Block a user