/** * Template rico para las stories de pestañas de líneas. * * El mock mínimo con tres campos y seis columnas servía para probar la barra, pero * no para responder la pregunta que importa: **¿la capacidad aguanta un documento * de verdad?** Aquí el documento es una orden de compra con máquina de estados, * tres secciones de encabezado, catorce campos con condiciones y candados, * columnas gateadas por permiso, reglas calculadas, totales agregados, FactBox de * cuatro secciones, acciones de documento y de línea con su gateo por estado. * * Lo que cada pieza pone a prueba de las pestañas: * * | Pieza del template | Qué verifica en las pestañas | * |---|---| * | `lineTotals` + FactBox de totales | R4: una pestaña Tipo 2 es VISTA, no fuente de verdad — los totales no se mueven al mirarla | * | `permissionVisibility` en columnas | `ctx.columns` llega ya filtrado por permiso | * | `lineActionRegistry` con `visibleStates`/`disabledStates` | `ctx.rowActions` gatea por estado de línea Y de documento dentro del FlexQuery | * | `lockedWhen: { hasLines: true }` | el candado del encabezado sigue reaccionando a las líneas con la grilla dentro de una pestaña | * | `addLineLockedWhen` | el botón "Nueva línea" se bloquea aunque la grilla viva en una pestaña | * | Máquina de estados con 5 estados | cambiar de estado re-deriva las acciones de fila sin remontar la pestaña | * * Es un mock: el adapter responde en memoria y ninguna llamada sale a la red. */ import type { MasterDocumentTemplate, DetailTabTemplate } from '../template/MasterDocumentTemplate.types'; import type { DocumentState, IMasterDocumentAdapter } from '../adapter/MasterDocumentAdapter.types'; export declare const ESTADOS: readonly ["DRAFT", "PENDING_APPROVAL", "APPROVED", "RECEIVED", "CANCELLED"]; export type Estado = (typeof ESTADOS)[number]; export declare const ETIQUETA_ESTADO: Record; /** * Líneas del documento. `fulfillment` y `_row_version` no son adorno: la primera * alimenta el gateo por estado de línea de `lineActionRegistry`, la segunda es el * token de concurrencia optimista que el kit reinyecta en cada mutación. */ export declare const LINEAS: { id: string; line_number: number; _row_version: string; code: string; description: string; warehouse: string; uom: string; fulfillment: string; quantity: number; received: number; unitPrice: number; discountPct: number; taxPct: number; lineTotal: number; }[]; export declare const PROVEEDORES: { Id: string; code: string; name: string; city: string; }[]; /** * Construye el template. `tabs` es lo único que cambia el playground; el resto es * la parte "pesada" del documento y se mantiene constante para que se vea cómo * conviven las pestañas con un encabezado, un FactBox y unas reglas reales. */ export declare function construirTemplateComplejo(tabs?: DetailTabTemplate[], opciones?: { crossing?: boolean; }): MasterDocumentTemplate; export declare function documentoInicial(estado?: Estado): DocumentState; /** * Adapter en memoria. Responde a todo lo que el template declara —búsqueda de * proveedores, historial de estados, transiciones, acciones de línea— sin salir a * la red. `onLlamada` deja ver en pantalla qué le pidió el kit. */ export declare function construirAdapterComplejo(opciones?: { estado?: Estado; onLlamada?: (linea: string) => void; }): IMasterDocumentAdapter; //# sourceMappingURL=lineTabsComplejo.fixture.d.ts.map