Uecko_ERP/docs/document-series/sql/migrate-customer-invoice-series-to-document-series.sql
david 5ed6556036 feat(document-series): implement document series management API
- Add UpdateDocumentSeriesController for updating document series.
- Create documentSeriesApiErrorMapper for error handling.
- Define document series routes including CRUD operations.
- Implement Sequelize-based persistence layer for document series.
- Add DTOs for request and response schemas for document series operations.
- Establish common structures for document series data handling.
- Configure TypeScript settings for the document series module.
2026-07-28 18:04:57 +02:00

113 lines
2.1 KiB
SQL

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