-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-19_05 · Catálogos de Hacienda (v1.2) y datos del receptor para DTE
--
-- Para transmitir créditos fiscales Hacienda exige del receptor: actividad
-- económica (CAT-019), departamento (CAT-012) y municipio (CAT-013, con el
-- esquema de 44 municipios de 2024), y en cada línea la unidad de medida
-- (CAT-014).
--   mh_catalogo: catálogos oficiales (carga: database/seeds/2026-10-19_catalogos_mh_v1_2.sql)
--   cliente: cod_actividad, cod_departamento, cod_municipio
--   medida: cod_mh (CAT-014)
--   factura: copia de esos datos del receptor al emitir
--   factura_linea: uni_medida (CAT-014)
--
-- Respaldo previo: backups/tinsa_db_pre-catalogos-mh_2026-10-19.sql
-- Reversa: database/rollback/2026-10-19_05_catalogos_mh.sql
-- ═══════════════════════════════════════════════════════════════════════

CREATE TABLE mh_catalogo (
  catalogo  VARCHAR(8)   NOT NULL,
  codigo    VARCHAR(10)  NOT NULL,
  padre     VARCHAR(10)  NOT NULL DEFAULT '' COMMENT 'CAT-013: código del departamento',
  valor     VARCHAR(300) NOT NULL,
  PRIMARY KEY (catalogo, padre, codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

ALTER TABLE cliente
  ADD COLUMN cod_actividad    VARCHAR(6) DEFAULT NULL AFTER giro,
  ADD COLUMN cod_departamento CHAR(2)    DEFAULT NULL AFTER direccion,
  ADD COLUMN cod_municipio    CHAR(2)    DEFAULT NULL AFTER cod_departamento;

ALTER TABLE medida ADD COLUMN cod_mh SMALLINT UNSIGNED NOT NULL DEFAULT 59 COMMENT 'CAT-014' AFTER nombre;
UPDATE medida SET cod_mh = CASE LOWER(nombre) WHEN 'm' THEN 1 WHEN 'mm' THEN 6 WHEN 'unidad' THEN 59 ELSE 99 END;

ALTER TABLE factura
  ADD COLUMN receptor_cod_actividad    VARCHAR(6) DEFAULT NULL AFTER receptor_giro,
  ADD COLUMN receptor_cod_departamento CHAR(2)    DEFAULT NULL AFTER receptor_direccion,
  ADD COLUMN receptor_cod_municipio    CHAR(2)    DEFAULT NULL AFTER receptor_cod_departamento;

ALTER TABLE factura_linea ADD COLUMN uni_medida SMALLINT UNSIGNED NOT NULL DEFAULT 59 COMMENT 'CAT-014' AFTER unidad;
