-- ============================================================================
-- FIX OPCIONAL — ALTER tbl_Representante.idCep BIGINT → VARCHAR
-- ============================================================================
-- ATENÇÃO: rodar APENAS se em produção a coluna idCep for BIGINT.
-- Verificar antes:
--   SHOW COLUMNS FROM tbl_Representante WHERE Field='idCep';
--
-- Se já for VARCHAR(20), PULAR este arquivo.
--
-- Origem: 20260509_023_alter_idcep_bigint_to_varchar.up.sql
-- Motivação: CEPs com zero à esquerda (01310-100) perdiam o zero quando
-- armazenados como BIGINT. Mudança pra VARCHAR(20) preserva formatação.
-- ============================================================================

-- ============================================================
-- Migration 023 — DT#13: idCep BIGINT → VARCHAR(20) em tbl_CobrancaRepresentante e tbl_FaturaRepresentante
-- ============================================================
--
-- DT#13 (07/05/2026) — bug pré-existente do schema do tefnet_erp.
-- `tbl_CobrancaRepresentante.idCep` e `tbl_FaturaRepresentante.idCep` são BIGINT,
-- corta zero à esquerda (CEP `06473000` vira `6473000`). Atinge ~11 linhas em cada
-- tabela (CEPs iniciando em 0). `tbl_Representante.idCep` é VARCHAR(20) e funciona.
--
-- Decisão (opção 2 do card, aprovada em 09/05/2026 turno noite):
--   ALTER BIGINT → VARCHAR(20) + LPAD(idCep, 8, '0') pra normalizar.
--
-- Workaround atual em B#3 (str_pad em revenda.php) pode ser REMOVIDO após esta
-- migration (limpeza opcional T4).
--
-- Ordem segura:
--   (1) ALTER COLUMN BIGINT → VARCHAR(20) — converte 6473000 (BIGINT) em '6473000' (VARCHAR sem padding).
--   (2) UPDATE com LPAD — agora coluna é VARCHAR e LPAD persiste corretamente.
--   (3) Index existente em idCep (MUL) é preservado pelo MODIFY.
--
-- Camila-DBA validou ZERO leitores fazem aritmética em idCep e ZERO dependem de tipo
-- BIGINT. Movidesk/Boleto/NFSe leem de tbl_Representante/tbl_Cliente (já VARCHAR).
-- 2 linhas com idCep=0 em tbl_FaturaRepresentante (rev 228, 255) — lixo legado, viram '00000000'.
-- ============================================================

SET SESSION sql_mode = '';

-- (1) ALTER schema das 2 tabelas. NOT NULL preservado, default '' pra futuro INSERT sem idCep.
ALTER TABLE tbl_CobrancaRepresentante
  MODIFY COLUMN idCep VARCHAR(20) NOT NULL DEFAULT ''
  COMMENT 'CEP do endereco de cobranca. DT#13: convertido de BIGINT pra VARCHAR(20) em 09/05/2026 pra preservar zeros a esquerda.';

ALTER TABLE tbl_FaturaRepresentante
  MODIFY COLUMN idCep VARCHAR(20) NOT NULL DEFAULT ''
  COMMENT 'CEP do endereco de fatura. DT#13: convertido de BIGINT pra VARCHAR(20) em 09/05/2026 pra preservar zeros a esquerda.';

-- (2) Backfill via LPAD — normaliza CEPs com 7 digitos pra 8. CEPs com idCep='0' viram '00000000'.
UPDATE tbl_CobrancaRepresentante
   SET idCep = LPAD(idCep, 8, '0')
 WHERE LENGTH(idCep) > 0 AND LENGTH(idCep) < 8;

UPDATE tbl_FaturaRepresentante
   SET idCep = LPAD(idCep, 8, '0')
 WHERE LENGTH(idCep) > 0 AND LENGTH(idCep) < 8;
