FactuGES_ERP/docs/customer-invoices/sql/README.md
david 92b17ba307 refactor: eliminar mapeadores, repositorios y servicios heredados de proformas
* Se eliminaron `SequelizeProformaTaxesDomainMapper` y los archivos relacionados.
* Se eliminaron `SequelizeInvoiceRecipientSummaryMapper` y `SequelizeProformaSummaryMapper`.
* Se eliminó `ProformaRepository` y sus métodos asociados.
* Se limpiaron los servicios sin uso, incluido `SequelizeProformaNumberGenerator`.
* Se actualizaron las importaciones y exportaciones de los módulos relacionados para reflejar la eliminación del código heredado.
* Se ajustaron las plantillas para eliminar las referencias a `is_proforma`.
* Se modificó el DTO de la solicitud para excluir el campo `is_proforma`.
2026-08-04 12:09:19 +02:00

69 lines
2.4 KiB
Markdown

# SQL Customer Invoices
## Estado
Este directorio mezcla SQL vigentes de soporte con SQL historicos/transicionales.
Las tablas legacy `customer_invoices`, `customer_invoice_items` y
`customer_invoice_taxes` no forman parte del runtime actual. Solo pueden aparecer
en SQL historico de migracion o validacion.
## SQL vigentes
- `add-proforma-document-series-columns.sql`
- `add-proforma-tax-config-columns.sql`
- `add-issued-invoice-reference.sql`
- `normalize-document-series-snapshots.sql`
- `fix-proforma-series-semantics.sql`
- `validate-proforma-tax-config.sql`
- `validate-proforma-soft-delete.sql`
## SQL históricos / transicionales
- `dev-split-proformas-issued-invoices.sql`
- `validate-split-proformas-issued-invoices.sql`
Estos archivos no deben tratarse como el camino normal de entornos nuevos salvo que exista un escenario legacy concreto que los requiera.
## Orden recomendado en desarrollo para el estado vigente
1. Verificar que la BD objetivo es inequívocamente de desarrollo.
2. Hacer backup o confirmar que los datos son descartables.
3. Ejecutar el DDL vigente que falte para `proformas`.
4. Ejecutar `normalize-document-series-snapshots.sql` para completar snapshots y validaciones de seriado.
5. Ejecutar las validaciones SQL vigentes.
6. Levantar backend V2 y validar flujos funcionales.
## Propiedades de los scripts históricos de split
- Crea tablas con `CREATE TABLE IF NOT EXISTS`.
- Añade `verifactu_records.issued_invoice_id` con `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`.
- Conserva UUIDs legacy.
- No borra ni modifica datos legacy.
- Usa `NOT EXISTS` para evitar duplicados en reejecuciones.
- No usa `INSERT IGNORE`.
## Cuándo no ejecutar
No ejecutar si:
- no existe una configuración de desarrollo clara
- hay duda sobre si la BD es producción
- no existe backup verificable
- el entorno no tiene aún las credenciales/localización confirmadas
## Procedimiento preliminar de producción
No ejecutar todavía. Referencia operativa:
1. Backup verificado.
2. Ventana de mantenimiento.
3. Bloquear escrituras del backend.
4. Ejecutar create tables / columnas transicionales.
5. Ejecutar backfill idempotente y conservador.
6. Ejecutar validaciones SQL.
7. Desplegar backend con wiring V2.
8. Monitorizar errores y métricas.
9. Mantener legacy congelado para rollback y auditoría.
10. Ejecutar rollback según punto de corte si alguna validación falla.