- 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.
3.2 KiB
3.2 KiB
document-series
Centraliza la gestion de series documentales y su numeracion transaccional para documentos ERP. A fecha de cierre V1, es la API canonica y la tabla canonica para series de customer-invoices en issued_invoice y proforma.
Estructura
modules/document-series/src/api/domain: agregadoDocumentSeriesy VOsmodules/document-series/src/api/application: use cases, servicios y repositoriomodules/document-series/src/api/infrastructure: Sequelize, Express, DI y servicios públicosmodules/document-series/src/common/dto: contratos HTTP y de transporte con Zod
Servicios disponibles
GET /document-seriesGET /document-series/:idPOST /document-seriesPUT /document-series/:idPATCH /document-series/:id/disablePOST /document-series/assign-next
Consumo desde otros módulos
document-series:general expone:
assignNextNumber(params)listActiveSeries(params)
Estado de integración
issued-invoicesya asigna numeracion nueva mediantedocument-seriesproformasya asigna referencia nueva mediantedocument-series- las proformas V2 persisten snapshot explicito de serie con
document_series_id,proforma_numberyproforma_reference - en create de proformas,
proforma_series_codepermite seleccionar la serie dedocument_type = proforma - en emision de proformas,
target_invoice_series_codeapunta solo adocument_type = issued_invoice - el endpoint transicional
/catalogs/invoice-seriesqueda eliminado antes de produccion - la UI debe consultar
GET /document-seriesfiltrando pordocument_type - la UI no debe consumir
POST /document-series/assign-nextpara previsualizar numeros customer_invoice_seriesqueda como legado historico a retirar mediante limpieza operativa controlada, no como runtime activo
SQL de soporte V1
docs/document-series/sql/migrate-customer-invoice-series-to-document-series.sqldocs/document-series/sql/validate-document-series-migration.sqldocs/document-series/sql/drop-customer-invoice-series-legacy.sqldocs/customer-invoices/sql/add-proforma-document-series-columns.sql
Estos scripts son conservadores e idempotentes. No se han ejecutado automaticamente en este workspace ni sustituyen una migracion productiva formal.
Estado Fase 2C
- el entorno detectado para desarrollo es
apps/server/.env.development - el acceso apunta a
localhostconNODE_ENV=development - en esta terminal no se pudo ejecutar SQL real porque:
- no existe cliente
mysqldisponible - la dependencia
mysql2del workspace no resuelve una dependencia transitiva (sql-escaper), por lo que tampoco fue posible abrir conexion desde Node
- no existe cliente
- por tanto, la Fase 2C queda preparada y documentada, pero no ejecutada desde este workspace
Pendientes conocidos
- propagacion real de
branchIddesde el contexto de negocio hastaassignNextNumber(...) - validacion funcional contra una BD de desarrollo migrada
Ejemplo conceptual:
const documentSeries = getService<DocumentSeriesPublicServicesType>("document-series:general");
const result = await documentSeries.assignNextNumber({
companyId,
documentType: "issued_invoice",
seriesCode: "F",
transaction,
});