-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-19_04 · Transmisión de DTE a Hacienda (firma propia en PHP)
--
-- Pedido del usuario: integrar al ERP lo que hace el sistema Control
-- (Visual FoxPro) para enviar los DTE a Hacienda; opción A: el ERP lo
-- reemplaza. La firma se hace en PHP (RS512 con la llave del certificado
-- MH), sin el firmador Java, para que todo viva en el mismo cPanel.
--
--   facturacion_emisor: archivo del certificado por ambiente, transmitir al
--     emitir, y caché del token del día. api_password y clave_privada pasan a
--     guardarse CIFRADAS (AES-256-GCM, llave en storage/claves/).
--   factura: ambiente en que se emitió, JSON firmado, respuesta de Hacienda,
--     fecha y número de intentos de transmisión.
--
-- Respaldo previo: backups/tinsa_db_pre-dte-transmision_2026-10-19.sql
-- Reversa: database/rollback/2026-10-19_04_dte_transmision.sql
-- ═══════════════════════════════════════════════════════════════════════

ALTER TABLE facturacion_emisor
  ADD COLUMN cert_pruebas VARCHAR(120) DEFAULT NULL AFTER clave_privada,
  ADD COLUMN cert_produccion VARCHAR(120) DEFAULT NULL AFTER cert_pruebas,
  ADD COLUMN transmitir_al_emitir TINYINT(1) NOT NULL DEFAULT 1 AFTER cert_produccion,
  ADD COLUMN token_valor TEXT DEFAULT NULL AFTER transmitir_al_emitir,
  ADD COLUMN token_ambiente CHAR(2) DEFAULT NULL AFTER token_valor,
  ADD COLUMN token_obtenido DATETIME DEFAULT NULL AFTER token_ambiente;

ALTER TABLE factura
  ADD COLUMN ambiente CHAR(2) NOT NULL DEFAULT '00' AFTER estado_fiscal,
  ADD COLUMN json_firmado MEDIUMTEXT DEFAULT NULL AFTER observaciones_mh,
  ADD COLUMN respuesta_mh TEXT DEFAULT NULL AFTER json_firmado,
  ADD COLUMN fecha_transmision DATETIME DEFAULT NULL AFTER respuesta_mh,
  ADD COLUMN intentos_transmision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER fecha_transmision;
