- Implemented ProformaDuplicator service for duplicating proforma documents. - Added tests for duplicating proformas, including scenarios for successful duplication, audit failure propagation, and payment term adaptations. - Created ProformaStatusChanger service to handle status changes of proformas with corresponding tests. - Developed ProformaArchiver service for unarchiving proformas and added tests to verify functionality. - Introduced a test fixture for creating proforma instances for testing purposes.
8.8 KiB
Auditoría documental SSOT
Fecha de actualización: 2026-08-26
Objetivo
Fijar una lectura única y consistente de la documentación técnica del ERP para evitar que documentos históricos, propuestas o secciones parcialmente superadas se interpreten como contrato vigente.
Estados usados en esta auditoría:
CURRENT: fuente canónica vigente.PARTIALLY SUPERSEDED: documento útil, pero con secciones ya superadas.SUPERSEDED: documento conservado por trazabilidad, pero no vigente.PROPOSAL: diseño o dirección futura aún no implantada.HISTORICAL: contexto, migración o auditoría de un estado anterior.
Reglas transversales
- Si un área tiene SSOT explícito, el resto de documentos deben enlazarlo y no duplicar semántica.
- Un objetivo futuro no debe presentarse como comportamiento operativo actual.
- En
customer-invoices, el estado vigente es:IssuedInvoiceno tieneverifactuPolicycomo requisito actual.- La cardinalidad vigente es
IssuedInvoice 1 -> 0..1 VerifactuRecord. - La dirección futura deseada es
IssuedInvoice 1 -> 0..N VerifactuRecord.
Referencia canónica por bounded context
identity
Estado del contexto: CURRENT
Referencias canónicas:
docs/architecture/README.mddocs/architecture/tenant-context.mddocs/architecture/identity-auth-api.mddocs/architecture/identity-and-companies.mddocs/architecture/identity-migration-status.md
Documentos a vigilar:
docs/architecture/identity-backend-architecture.mdClasificación:PARTIALLY SUPERSEDEDAcción: mantener como nota complementaria y no como contrato operativo principal.
companies
Estado del contexto: CURRENT
Referencias canónicas:
docs/companies/company-requirements.mddocs/architecture/identity-and-companies.mdmodules/companies/README.md
Documentos a vigilar:
- Cualquier documento que presente datos de empresa dentro de
identitycomo ownership de negocio. Acción: enlazar aidentity-and-companies.md.
settings (shell frontend transversal)
Estado del contexto: CURRENT
Referencias canónicas:
docs/settings/frontend-erp-settings-system-design.mddocs/settings/frontend-erp-settings-module-integration-design.md
Documentos a vigilar:
- Cualquier diseño de módulo que describa el shell de Settings con comportamiento distinto al sistema modular actual. Acción: resumir y enlazar a estos dos documentos.
catalogs
Estado del contexto: CURRENT
Referencias canónicas:
docs/catalogs/payment-terms.md
Documentos a vigilar:
- SQL auxiliares en
docs/catalogs/sql/Clasificación:CURRENTcomo soporte/manual, no como contrato funcional.
document-series
Estado del contexto: CURRENT
Referencias canónicas:
docs/document-series/README.mddocs/document-series/document-series-design.md
Documentos a vigilar:
docs/document-series/migration-from-customer-invoice-series.mdClasificación:HISTORICALAcción: usar solo para trazabilidad de migración.
customer-invoices
Estado del contexto: CURRENT con material mezclado de varias fases
Referencias canónicas:
docs/customer-invoices/README.mddocs/customer-invoices/proforma-series-contract.mddocs/customer-invoices/proforma-create-contract.mddocs/customer-invoices/proforma-tax-config.mddocs/customer-invoices/document-series-snapshot-contract.mddocs/customer-invoices/settings/frontend-erp-settings-verifactu-design.md
Referencias canónicas con alcance parcial:
docs/customer-invoices/settings/verifactu-company-profile-backend-design.mdClasificación:PARTIALLY SUPERSEDEDCanónico solo para:CompanyVerifactuProfile- settings/backend de perfil VeriFactu
- separación entre defaults empresariales y estado operativo No canónico para:
- reintroducir
IssuedInvoice.verifactuPolicy - presentar
IssuedInvoice 1 -> 0..N VerifactuRecordcomo runtime vigente
Documentos a corregir o retirar de la lectura operativa:
-
docs/customer-invoices/split-proformas-issued-invoices-migration.mdClasificación:HISTORICALAcción: mantener solo como trazabilidad de split y migración. -
docs/customer-invoices/invoice-series.mdClasificación:HISTORICALAcción: enlazar siempre haciadocument-series. -
docs/customer-invoices/sql/add-issued-invoice-verifactu-snapshots.sqlClasificación:SUPERSEDEDAcción: no usar en entornos nuevos; conserva una propuesta descartada. -
docs/customer-invoices/sql/drop-issued-invoice-verifactu-snapshot-columns.sqlClasificación:CURRENTAcción: mantener como runbook correctivo para limpiar drift legacy. -
docs/customer-invoices/sql/validate-split-proformas-issued-invoices.sqlClasificación:HISTORICALAcción: usar solo como validación de un split legacy, no como contrato del runtime actual.
reports / generación documental
Estado del contexto: PARTIALLY SUPERSEDED
Referencias canónicas actuales en este árbol:
docs/customer-invoices/proformas-reports.md
Riesgo documental:
- todavía puede confundirse renderer concreto con arquitectura general de reporting.
Acción:
- cuando exista SSOT específico de
reports, enlazarlo desdecustomer-invoicesy evitar que documentos de módulo definan por sí solos la arquitectura transversal.
Clasificación de documentos clave
| Documento | Estado | Referencia/acción |
|---|---|---|
docs/README.md |
CURRENT |
Índice raíz y regla de navegación |
docs/architecture/README.md |
CURRENT |
Índice canónico de arquitectura |
docs/settings/frontend-erp-settings-system-design.md |
CURRENT |
SSOT del shell de Settings |
docs/settings/frontend-erp-settings-module-integration-design.md |
CURRENT |
SSOT de integración modular en Settings |
docs/catalogs/payment-terms.md |
CURRENT |
SSOT de plazos de pago |
docs/document-series/README.md |
CURRENT |
SSOT operativo de series documentales |
docs/document-series/document-series-design.md |
CURRENT |
Diseño canónico de document-series |
docs/document-series/migration-from-customer-invoice-series.md |
HISTORICAL |
Solo migración y trazabilidad |
docs/customer-invoices/README.md |
CURRENT |
Índice canónico del área |
docs/customer-invoices/proforma-series-contract.md |
CURRENT |
SSOT de semántica de series en proformas |
docs/customer-invoices/proforma-create-contract.md |
CURRENT |
SSOT de create de proformas |
docs/customer-invoices/proforma-tax-config.md |
CURRENT |
SSOT de persistencia/configuración fiscal de proformas |
docs/customer-invoices/document-series-snapshot-contract.md |
CURRENT |
SSOT de snapshot documental |
docs/customer-invoices/settings/frontend-erp-settings-verifactu-design.md |
CURRENT |
SSOT frontend de Settings VeriFactu |
docs/customer-invoices/settings/verifactu-company-profile-backend-design.md |
PARTIALLY SUPERSEDED |
Mantener como SSOT del perfil empresarial, no de IssuedInvoice.verifactuPolicy |
docs/customer-invoices/split-proformas-issued-invoices-migration.md |
HISTORICAL |
Solo migración/split |
docs/customer-invoices/invoice-series.md |
HISTORICAL |
Legacy |
docs/customer-invoices/sql/README.md |
CURRENT |
Índice canónico de SQL manual |
docs/customer-invoices/sql/add-issued-invoice-verifactu-snapshots.sql |
SUPERSEDED |
No ejecutar como DDL vigente |
docs/customer-invoices/sql/drop-issued-invoice-verifactu-snapshot-columns.sql |
CURRENT |
Runbook correctivo |
docs/customer-invoices/sql/validate-split-proformas-issued-invoices.sql |
HISTORICAL |
Validación de split legacy |
docs/API.md |
HISTORICAL |
Borrador legacy |
docs/REQUISITOS GENERALES.md |
HISTORICAL |
No usar como contrato vigente |
docs/REQUISITOS CLIENTES.md |
HISTORICAL |
No usar como contrato vigente |
docs/FACTURAS DE CLIENTE.md |
HISTORICAL |
Notas heredadas |
Correcciones prioritarias ya aplicadas
- Eliminado el requisito vigente de
IssuedInvoice.verifactuPolicydel diseño backend de VeriFactu. - Explicitada la cardinalidad actual
IssuedInvoice 1 -> 0..1 VerifactuRecord. - Explicitada la dirección futura
IssuedInvoice 1 -> 0..N VerifactuRecord. - Reclasificado el SQL que añadía columnas VeriFactu legacy en
issued_invoicescomoSUPERSEDED. - Reforzada la navegación de índices para que el lector llegue antes al SSOT que al material histórico.
Siguientes correcciones recomendadas
- Añadir estado documental visible al inicio de cualquier documento nuevo (
CURRENT,PARTIALLY SUPERSEDED,PROPOSAL, etc.). - Cuando aparezca una decisión nueva que invalide una anterior, marcar la sección desplazada dentro del documento antiguo en vez de dejar ambas coexistiendo sin etiqueta.
- Si se crea un SSOT transversal de
reports, actualizardocs/README.mdydocs/customer-invoices/README.mdpara enlazarlo como referencia canónica.