-- Marca medios de pago de credito y normaliza el catalogo para facturacion

SET @sql_add_es_credito := (
    SELECT IF(
        COUNT(*) = 0,
        'ALTER TABLE catalogo_medios_pago ADD COLUMN es_credito TINYINT(1) NOT NULL DEFAULT 0 AFTER comentario',
        'SELECT 1'
    )
    FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = 'catalogo_medios_pago'
      AND column_name = 'es_credito'
);
PREPARE stmt_add_es_credito FROM @sql_add_es_credito;
EXECUTE stmt_add_es_credito;
DEALLOCATE PREPARE stmt_add_es_credito;

UPDATE catalogo_medios_pago
SET es_credito = CASE WHEN UPPER(codigo) = 'CREDITO' THEN 1 ELSE 0 END
WHERE deleted_at IS NULL;

INSERT INTO catalogo_medios_pago (id, codigo, descripcion, comentario, es_credito, estado, created_at)
SELECT 2, 'CREDITO', 'Credito', 'Pago diferido o en cuotas', 1, 1, NOW()
FROM DUAL
WHERE NOT EXISTS (
    SELECT 1
    FROM catalogo_medios_pago
    WHERE id = 2 OR UPPER(codigo) = 'CREDITO'
    LIMIT 1
);
