-- ================================================================
-- quoERP — Poblar sri_number en facturas de venta existentes
-- Seed: 004_populate_sri_numbers.sql
-- ================================================================
-- INSTRUCCIONES:
--   1. Ejecutar DESPUÉS de la migración 013_settings_tax_sri_modules.sql
--   2. Ajustar las variables @COMPANY_ID, @LOCAL_CODE y @POS_CODE
--   3. Ejecutar en phpMyAdmin o por línea de comandos MySQL
--   4. Verificar los resultados con el SELECT al final
-- ================================================================

-- ── CONFIGURACIÓN (ajustar antes de ejecutar) ─────────────────
SET @COMPANY_ID  = 1;      -- ← ID de tu empresa (ver tabla companies)
SET @LOCAL_CODE  = '001';  -- ← Código establecimiento SRI (3 dígitos)
SET @POS_CODE    = '001';  -- ← Código punto de emisión SRI (3 dígitos)

-- ── PASO 1: Contador de secuencia (inicia en 0, se incrementa) ─
SET @seq = 0;

-- ── PASO 2: Asignar número SRI a facturas sin sri_number ────────
-- Ordenado por fecha de emisión + id para mantener secuencia cronológica.
-- Solo actualiza facturas no anuladas sin sri_number asignado.
UPDATE sale_invoices
SET sri_number = CONCAT(
    @LOCAL_CODE, '-',
    @POS_CODE,   '-',
    LPAD((@seq := @seq + 1), 9, '0')
)
WHERE company_id     = @COMPANY_ID
  AND sri_number     IS NULL
  AND payment_status != 'anulada'
ORDER BY date ASC, id ASC;

-- ── PASO 3: Crear o actualizar configuración SRI ─────────────────
-- La secuencia queda apuntando al siguiente número disponible.
INSERT INTO sri_invoice_config (company_id, local_code, pos_code, sequence, is_active)
VALUES (@COMPANY_ID, @LOCAL_CODE, @POS_CODE, @seq + 1, 1)
ON DUPLICATE KEY UPDATE
    local_code = VALUES(local_code),
    pos_code   = VALUES(pos_code),
    sequence   = @seq + 1;

-- ── VERIFICACIÓN ──────────────────────────────────────────────────
SELECT
    COUNT(*)        AS total_actualizadas,
    MIN(sri_number) AS primer_sri_asignado,
    MAX(sri_number) AS ultimo_sri_asignado,
    (SELECT sequence FROM sri_invoice_config WHERE company_id = @COMPANY_ID) AS proxima_secuencia
FROM sale_invoices
WHERE company_id = @COMPANY_ID
  AND sri_number IS NOT NULL;

-- ── RESUMEN DE FACTURAS ANULADAS (no actualizadas) ───────────────
SELECT COUNT(*) AS facturas_anuladas_sin_sri
FROM sale_invoices
WHERE company_id = @COMPANY_ID AND payment_status = 'anulada' AND sri_number IS NULL;
