feat: boletas de venta (Invoices con DocumentSubType bod_Bill); la lista de facturas las excluye

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-15 17:13:33 -05:00
1 parent d926519f1b
commit 1834c64f6f
18 files changed
+122 -19

No files matched your search

@@ -3,6 +3,7 @@ import { formatNumber } from '../../core/format';
import type { ListFilter } from '../../core/sl/list-filters';
import type { ListColumn, ListRow, Tone } from '../../shared/list/list.types';
import type { GridColumn } from '../../shared/grid/grid.types';
import type { DocRecord } from './document-model';
import { type DocumentLayout, FIELDS, type FieldColumns, type HeaderField, type LookupColumns, marketingLayout } from './document-layouts';
/** Pantalla de un documento: lista de los últimos ingresados + formulario (nuevo / ver-editar). */
@@ -18,6 +19,8 @@ export interface DocumentScreen {
filters: readonly ListFilter[];
/** Los más recientes primero. */
orderby: string;
/** Filtro fijo de la lista y de la navegación (ej. las boletas son las `Invoices` con `DocumentSubType = bod_Bill`). */
baseFilter?: string;
/** Formulario de documentos con socio de negocio, líneas y totales (ventas y compras). */
partner?: {
label: string;
@@ -121,6 +124,10 @@ export interface MarketingExtras {
headerRight?: readonly HeaderField[];
/** Cabecera completa (reemplaza a la base). */
header?: FieldColumns;
/** Filtro fijo de la lista y de la navegación entre documentos. */
baseFilter?: string;
/** Valores que se envían siempre al crear (ej. `DocumentSubType`). */
fixed?: DocRecord;
/** Columnas de línea de este documento (de `LINE_COLUMNS`); sin ellas, todas. */
lineColumns?: readonly GridColumn[];
/** Columnas de las listas de valores de este documento (cliente, artículo, almacén, impuesto). */
@@ -147,11 +154,13 @@ export const marketing = (
header: extras.header,
lineColumns: extras.lineColumns,
lookups: extras.lookups,
fixed: extras.fixed,
uom: path.startsWith('/ventas') ? 'sales' : 'purchase',
}),
resource,
createLabel,
orderby: 'DocEntry desc',
baseFilter: extras.baseFilter,
partner: path.startsWith('/ventas')
? { label: partner, type: 'cCustomer', taxResource: 'SalesTaxCodes' }
: { label: partner, type: 'cSupplier', taxResource: 'SalesTaxCodes' },