- Se han añadido `document_series_id`, `invoice_series_code` e `invoice_reference` a los modelos y instantáneas de facturas emitidas. - Se han introducido `proforma_series_code` y `proforma_number`, y se han actualizado las referencias en los modelos y instantáneas de las facturas proforma. - Se han actualizado los esquemas de la base de datos y los scripts SQL para dar cabida a los nuevos campos y garantizar la integridad de los datos. - Se ha elaborado la documentación correspondiente a las nuevas series de documentos «contrato de instantánea» y «contrato de serie de facturas emitidas». - Se han implementado scripts SQL de rellenado para completar los registros existentes con los nuevos campos.
54 lines
1.5 KiB
SQL
54 lines
1.5 KiB
SQL
-- Estado: vigente / manual.
|
|
-- Objetivo:
|
|
-- 1. Anadir `issued_invoices.invoice_reference` si no existe.
|
|
-- 2. Backfill conservador para facturas emitidas existentes.
|
|
-- 3. Validar que no quedan filas sin snapshot documental.
|
|
-- 4. Endurecer a NOT NULL cuando la validacion sea correcta.
|
|
--
|
|
-- No ejecutar automaticamente desde backend.
|
|
-- Revisar antes el nombre real de la tabla `document_series` y sus columnas
|
|
-- `prefix`, `padding`, `suffix` en el entorno objetivo.
|
|
|
|
START TRANSACTION;
|
|
|
|
ALTER TABLE issued_invoices
|
|
ADD COLUMN IF NOT EXISTS invoice_reference VARCHAR(64) NULL AFTER invoice_number;
|
|
|
|
UPDATE issued_invoices ii
|
|
JOIN document_series ds
|
|
ON ds.company_id = ii.company_id
|
|
AND ds.code = ii.invoice_series_code
|
|
AND ds.document_type = 'issued_invoice'
|
|
SET ii.invoice_reference = CONCAT(
|
|
COALESCE(ds.prefix, ''),
|
|
LPAD(CAST(ii.invoice_number AS CHAR), ds.padding, '0'),
|
|
COALESCE(ds.suffix, '')
|
|
)
|
|
WHERE ii.invoice_reference IS NULL;
|
|
|
|
SELECT id, source_proforma_id, invoice_series_code, invoice_number, invoice_reference
|
|
FROM issued_invoices
|
|
WHERE invoice_reference IS NULL;
|
|
|
|
SELECT
|
|
ii.id,
|
|
ii.invoice_series_code,
|
|
ii.invoice_number,
|
|
ii.invoice_reference,
|
|
ds.prefix,
|
|
ds.padding,
|
|
ds.suffix
|
|
FROM issued_invoices ii
|
|
JOIN document_series ds
|
|
ON ds.company_id = ii.company_id
|
|
AND ds.code = ii.invoice_series_code
|
|
AND ds.document_type = 'issued_invoice'
|
|
ORDER BY ii.created_at DESC
|
|
LIMIT 20;
|
|
|
|
-- Ejecutar solo cuando la consulta anterior no devuelva filas.
|
|
ALTER TABLE issued_invoices
|
|
MODIFY COLUMN invoice_reference VARCHAR(64) NOT NULL;
|
|
|
|
COMMIT;
|