116 lines
2.3 KiB
SQL
116 lines
2.3 KiB
SQL
-- Estado: HISTORICO / TRANSICIONAL.
|
|
-- No ejecutar en entornos nuevos salvo necesidad legacy explicita.
|
|
-- Sustituido por: document_series como runtime activo + validate-document-series-migration.sql como runbook vigente.
|
|
-- Migracion conservadora e idempotente de customer_invoice_series a document_series.
|
|
-- No ejecutar automaticamente en produccion.
|
|
-- Revisar primero nombres de columnas y existencia de tabla document_series en el entorno destino.
|
|
|
|
-- 1. Migrar series legacy de facturas emitidas si no existen ya en document_series.
|
|
INSERT INTO document_series (
|
|
id,
|
|
company_id,
|
|
branch_id,
|
|
document_type,
|
|
code,
|
|
name,
|
|
description,
|
|
prefix,
|
|
suffix,
|
|
next_number,
|
|
padding,
|
|
valid_from,
|
|
valid_to,
|
|
is_default,
|
|
is_active,
|
|
created_at,
|
|
updated_at,
|
|
deleted_at
|
|
)
|
|
SELECT
|
|
cis.id,
|
|
cis.company_id,
|
|
NULL,
|
|
'issued_invoice',
|
|
cis.code,
|
|
cis.code,
|
|
NULL,
|
|
CONCAT(cis.code, '-'),
|
|
NULL,
|
|
cis.next_number,
|
|
cis.padding_length,
|
|
NULL,
|
|
NULL,
|
|
cis.is_default,
|
|
cis.is_active,
|
|
cis.created_at,
|
|
cis.updated_at,
|
|
NULL
|
|
FROM customer_invoice_series cis
|
|
WHERE NOT EXISTS (
|
|
SELECT 1
|
|
FROM document_series ds
|
|
WHERE ds.company_id = cis.company_id
|
|
AND ds.document_type = 'issued_invoice'
|
|
AND ds.code = cis.code
|
|
);
|
|
|
|
-- 2. Crear una serie por defecto de proformas por empresa solo si no existe ninguna.
|
|
-- Fuente preferida: companies. Esto evita depender de que exista customer_invoice_series
|
|
-- para empresas nuevas o para empresas sin series legacy de facturas emitidas.
|
|
INSERT INTO document_series (
|
|
id,
|
|
company_id,
|
|
branch_id,
|
|
document_type,
|
|
code,
|
|
name,
|
|
description,
|
|
prefix,
|
|
suffix,
|
|
next_number,
|
|
padding,
|
|
valid_from,
|
|
valid_to,
|
|
is_default,
|
|
is_active,
|
|
created_at,
|
|
updated_at,
|
|
deleted_at
|
|
)
|
|
SELECT
|
|
UUID(),
|
|
source.id,
|
|
NULL,
|
|
'proforma',
|
|
'PF',
|
|
'Proformas',
|
|
NULL,
|
|
'PF-',
|
|
NULL,
|
|
1,
|
|
6,
|
|
NULL,
|
|
NULL,
|
|
TRUE,
|
|
TRUE,
|
|
NOW(),
|
|
NOW(),
|
|
NULL
|
|
FROM (
|
|
SELECT c.id
|
|
FROM companies c
|
|
WHERE c.status = 'active'
|
|
) AS source
|
|
WHERE NOT EXISTS (
|
|
SELECT 1
|
|
FROM document_series ds
|
|
WHERE ds.company_id = source.id
|
|
AND ds.document_type = 'proforma'
|
|
AND ds.code = 'PF'
|
|
);
|
|
|
|
-- 3. Validaciones manuales recomendadas.
|
|
-- SELECT company_id, document_type, code, next_number, padding, is_default, is_active
|
|
-- FROM document_series
|
|
-- ORDER BY company_id, document_type, code;
|