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