2026-07-10 11:59:44 +00:00
|
|
|
# SQL Customer Invoices
|
|
|
|
|
|
2026-10-17 13:52:08 +00:00
|
|
|
> Referencia manual e histórica. El esquema nuevo se instala mediante las
|
|
|
|
|
> [migraciones versionadas](../../desarrollo-y-migraciones-bd.md).
|
|
|
|
|
> No ejecutar todos estos scripts como procedimiento de instalación.
|
|
|
|
|
|
|
|
|
|
|
2026-07-29 09:24:06 +00:00
|
|
|
## Estado
|
2026-07-10 11:59:44 +00:00
|
|
|
|
2026-07-29 09:24:06 +00:00
|
|
|
Este directorio mezcla SQL vigentes de soporte con SQL historicos/transicionales.
|
|
|
|
|
|
2026-08-04 10:09:19 +00:00
|
|
|
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.
|
|
|
|
|
|
2026-08-26 11:03:39 +00:00
|
|
|
Regla SSOT relevante para VeriFactu:
|
|
|
|
|
|
|
|
|
|
- `issued_invoices` no debe reintroducir `verifactu_profile_status`,
|
|
|
|
|
`uses_verifactu` ni `verifactu_effective_at` como columnas vigentes;
|
|
|
|
|
- la cardinalidad implementada sigue siendo `IssuedInvoice 1 -> 0..1 VerifactuRecord`;
|
|
|
|
|
- `0..N` es objetivo futuro, no estado operativo actual.
|
|
|
|
|
|
2026-07-29 09:24:06 +00:00
|
|
|
## SQL vigentes
|
|
|
|
|
|
2026-08-12 11:31:31 +00:00
|
|
|
- `add-company-verifactu-profiles.sql`
|
2026-07-29 09:24:06 +00:00
|
|
|
- `add-proforma-document-series-columns.sql`
|
|
|
|
|
- `add-proforma-tax-config-columns.sql`
|
2026-08-04 09:05:02 +00:00
|
|
|
- `add-issued-invoice-reference.sql`
|
|
|
|
|
- `normalize-document-series-snapshots.sql`
|
2026-07-29 09:24:06 +00:00
|
|
|
- `fix-proforma-series-semantics.sql`
|
|
|
|
|
- `validate-proforma-tax-config.sql`
|
2026-07-29 10:43:54 +00:00
|
|
|
- `validate-proforma-soft-delete.sql`
|
2026-07-29 09:24:06 +00:00
|
|
|
|
|
|
|
|
## SQL históricos / transicionales
|
2026-07-10 11:59:44 +00:00
|
|
|
|
2026-08-26 11:03:39 +00:00
|
|
|
- `add-issued-invoice-verifactu-snapshots.sql`
|
|
|
|
|
- `drop-issued-invoice-verifactu-snapshot-columns.sql`
|
2026-07-10 11:59:44 +00:00
|
|
|
- `dev-split-proformas-issued-invoices.sql`
|
|
|
|
|
- `validate-split-proformas-issued-invoices.sql`
|
|
|
|
|
|
2026-07-29 09:24:06 +00:00
|
|
|
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
|
2026-07-10 11:59:44 +00:00
|
|
|
|
|
|
|
|
1. Verificar que la BD objetivo es inequívocamente de desarrollo.
|
|
|
|
|
2. Hacer backup o confirmar que los datos son descartables.
|
2026-08-12 11:31:31 +00:00
|
|
|
3. Ejecutar `add-company-verifactu-profiles.sql` si el entorno aún no tiene el perfil VeriFactu empresarial.
|
2026-08-26 11:03:39 +00:00
|
|
|
4. Ejecutar el DDL vigente que falte para `proformas`.
|
|
|
|
|
5. Ejecutar `normalize-document-series-snapshots.sql` para completar snapshots y validaciones de seriado.
|
|
|
|
|
6. Ejecutar las validaciones SQL vigentes.
|
|
|
|
|
7. Levantar backend V2 y validar flujos funcionales.
|
|
|
|
|
|
|
|
|
|
## SQL expresamente superados para VeriFactu en `issued_invoices`
|
|
|
|
|
|
|
|
|
|
- `add-issued-invoice-verifactu-snapshots.sql` responde a una propuesta anterior
|
|
|
|
|
que mezclaba snapshots fiscales con un `verifactuPolicy` hoy descartado.
|
|
|
|
|
- `drop-issued-invoice-verifactu-snapshot-columns.sql` se conserva como runbook
|
|
|
|
|
correctivo para entornos legacy donde esas columnas todavía existan.
|
2026-07-10 11:59:44 +00:00
|
|
|
|
2026-07-29 09:24:06 +00:00
|
|
|
## Propiedades de los scripts históricos de split
|
2026-07-10 11:59:44 +00:00
|
|
|
|
|
|
|
|
- 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.
|