import type { ListColumn } from '../../shared/list/list.types'; import type { VhLookup } from '../../shared/value-help/value-help.types'; import { ACCOUNT_LOOKUP } from '../documents/dimension-lookups'; const col = (key: string, title: string, extra: Partial = {}): ListColumn => ({ key, title, ...extra }); /** Ventanas de selección de los campos de código de los maestros. */ export const MASTER_LOOKUPS = { /** Grupo de clientes o de proveedores. */ partnerGroup: (type: 'cCustomer' | 'cSupplier'): VhLookup => ({ title: type === 'cSupplier' ? 'Grupos de proveedores' : 'Grupos de clientes', resource: 'BusinessPartnerGroups', orderby: 'Code', baseFilter: `Type eq '${type === 'cSupplier' ? 'bbpgt_VendorGroup' : 'bbpgt_CustomerGroup'}'`, valueType: 'number', nameKey: 'Name', columns: [col('Code', 'Código', { width: '90px', mono: true }), col('Name', 'Nombre')], }), currency: { title: 'Monedas', resource: 'Currencies', orderby: 'Code', nameKey: 'Name', columns: [col('Code', 'Código', { width: '90px', mono: true }), col('Name', 'Nombre')], } satisfies VhLookup, paymentTerms: { title: 'Condiciones de pago', resource: 'PaymentTermsTypes', orderby: 'GroupNumber', nameKey: 'PaymentTermsGroupName', valueType: 'number', columns: [col('GroupNumber', 'Código', { width: '90px', mono: true }), col('PaymentTermsGroupName', 'Nombre')], } satisfies VhLookup, priceList: { title: 'Listas de precios', resource: 'PriceLists', orderby: 'PriceListNo', nameKey: 'PriceListName', valueType: 'number', columns: [col('PriceListNo', 'Código', { width: '90px', mono: true }), col('PriceListName', 'Nombre')], } satisfies VhLookup, salesPerson: { title: 'Empleados de ventas', resource: 'SalesPersons', orderby: 'SalesEmployeeCode', nameKey: 'SalesEmployeeName', valueType: 'number', baseFilter: `Active eq 'tYES'`, columns: [col('SalesEmployeeCode', 'Código', { width: '90px', mono: true }), col('SalesEmployeeName', 'Nombre')], } satisfies VhLookup, /** Cuenta contable del socio de negocio (cuentas por cobrar o por pagar). */ account: ACCOUNT_LOOKUP, /** Proveedor principal de un artículo. */ supplier: { title: 'Proveedores', resource: 'BusinessPartners', orderby: 'CardCode', baseFilter: `CardType eq 'cSupplier'`, nameKey: 'CardName', columns: [col('CardCode', 'Código', { width: '130px', mono: true }), col('CardName', 'Nombre')], } satisfies VhLookup, itemGroup: { title: 'Grupos de artículos', resource: 'ItemGroups', orderby: 'Number', nameKey: 'GroupName', valueType: 'number', columns: [col('Number', 'Código', { width: '90px', mono: true }), col('GroupName', 'Nombre')], } satisfies VhLookup, } as const;