- Add UpdateDocumentSeriesController for updating document series. - Create documentSeriesApiErrorMapper for error handling. - Define document series routes including CRUD operations. - Implement Sequelize-based persistence layer for document series. - Add DTOs for request and response schemas for document series operations. - Establish common structures for document series data handling. - Configure TypeScript settings for the document series module.
2.8 KiB
2.8 KiB
Migration from customer_invoice_series
Equivalencia conceptual
customer_invoice_series.code->document_series.codecustomer_invoice_series.company_id->document_series.company_idcustomer_invoice_series.next_number->document_series.next_numbercustomer_invoice_series.padding_length->document_series.paddingcustomer_invoice_series.is_default->document_series.is_defaultcustomer_invoice_series.is_active->document_series.is_activedocument_series.document_typepara legacy de facturas emitidas seráissued_invoice
Migración conservadora de issued invoices
INSERT INTO document_series (
id,
company_id,
branch_id,
document_type,
code,
name,
description,
prefix,
suffix,
next_number,
padding,
valid_from,
valid_to,
is_default,
is_active,
created_at,
updated_at
)
SELECT
cis.id,
cis.company_id,
NULL,
'issued_invoice',
cis.code,
cis.code,
NULL,
CONCAT(cis.code, '-'),
NULL,
cis.next_number,
cis.padding_length,
NULL,
NULL,
cis.is_default,
cis.is_active,
cis.created_at,
cis.updated_at
FROM customer_invoice_series cis
WHERE NOT EXISTS (
SELECT 1
FROM document_series ds
WHERE ds.company_id = cis.company_id
AND ds.document_type = 'issued_invoice'
AND ds.code = cis.code
);
Series de proformas
Crear una serie por defecto por empresa con:
document_type = 'proforma'code = 'PF'prefix = 'PF-'next_number = 1padding = 6
En Fase 2B la fuente preferida para este seed pasa a ser companies, no customer_invoice_series, para cubrir empresas activas sin series legacy previas.
Cambio de assigner
- antes:
InvoiceSeriesNumberAssigner - después:
DocumentSeriesNumberAssignerodocument-series:general.assignNextNumber
Estado actual
document_serieses la tabla canonicaGET /document-serieses la API canonica/catalogs/invoice-seriesha sido retirado del runtimeCustomerInvoiceSeriesModely su repositorio legacy ya no participan en runtime
Pendiente
- migración controlada de otros tipos documentales
- ejecucion manual y controlada del SQL conservador de migracion
- DDL previa de
proformas.document_series_idyproformas.proforma_number - propagacion real de
branchIddesdecustomer-invoices
Validacion recomendada
- ejecutar
docs/document-series/sql/validate-document-series-migration.sql - revisar que no existan duplicados logicos por
company_id + document_type + code - revisar que cada empresa activa tenga una default de
proforma - revisar que ninguna proforma quede sin
proforma_reference
Estado de ejecucion Fase 2C
- se detecto una configuracion de desarrollo en
apps/server/.env.development - no se ejecuto SQL real desde esta terminal por bloqueo operativo del cliente/conector local
- produccion no se considero objetivo de ejecucion