Durante um atendimento de chamado aqui na empresa, nos deparamos com um cliente emitindo NFSe para um tomador no exterior com CodPaisIBGE 1508 – JERSEY, ILHA DO CANAL.
Na análise do caso, foi identificado que esse código IBGE não estava retornando a respectiva sigla ISO2 (JE), o que ocasionava a rejeição pelo Ambiente Nacional.
A partir desse ponto, foi realizada uma verificação mais ampla do relacionamento entre os códigos IBGE e ISO2. Durante essa análise, constatou-se que alguns códigos não existem na tabela de Países IBGE que utilizamos (base consolidada do EFD Contribuições), apesar de o array SiglaISO2Pais trazer uma equivalência ISO2.
Os códigos identificados foram: 200, 420, 990, 1023, 2925, 3212, 3433, 3930, 4898, 6939, 7552, 7811, 8753.
Para tratar esses cenários de forma mais explícita e previsível, a lógica de obtenção da sigla ISO2 passou a ser feita de forma controlada, em uma única estrutura.
Na implementação anterior, o relacionamento era feito com base em dois arrays distintos; com a solução proposta, o mapeamento IBGE × ISO2 fica centralizado em um único array, com o auxílio de um record, tornando a leitura, a manutenção e a validação dos códigos mais facil e centralizada.
O comportamento atual foi preservado, e a nova abordagem está protegida por uma diretiva de compilação (USAR_MATRIZ_TPAIS) dentro do método
ACBrNFSeXConversao.CodIBGEPaisToSiglaISO2, permitindo a avaliação da mudança sem impacto imediato para quem não optar por utilizá-la.
Fontes/ACBrDFe/ACBrNFSeX/Base/ACBrNFSeXConversao.pas - modified
Fontes/ACBrDFe/ACBrNFSeX/Base/PaisesIBGEISO.pas - added
acbr_pais_ibge_iso.zip 164.18 kB · 3 downloads
Resolvido com a alteração?