54 lines
1.5 KiB
MySQL
54 lines
1.5 KiB
MySQL
|
|
-- 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;
|