Em função de o Ambiente Nacional estar apresentando erro não catalogado no dia de hoje, não foi possível emitir notas para validar a alteração proposta.
A intenção, neste momento, é apenas compartilhar a ideia com a comunidade e avaliar se a abordagem faz sentido, não sendo ainda o momento de submeter a alteração.
Segue sugestão de correção para tratamento do erro:
E0246: O código de país informado para o endereço no exterior do tomador do serviço não existe ou é igual ao código do Brasil.
Informe um código de país existente e diferente do código do Brasil (BR) para o endereço no exterior do tomador do serviço, conforme tabela de países ISO2.
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