-- 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;