Olá pessoal,
Após vários testes com o ACBrNFSeX e o provedor ISSSaoPaulo, consegui resolver a questão da alternância entre layout 1.00 e 2.00, tanto para Regime Normal quanto Simples Nacional.
O ponto mais crítico é que a ORDEM DE CONFIGURAÇÃO DOS OBJETOS É FUNDAMENTAL.
Mesmo com o INI correto, se o Provedor, CodigoMunicipio e Versao forem setados fora da sequência correta, a segunda nota (ou qualquer nota subsequente) herda a configuração da anterior, gerando erros de schema ou rejeição do XML.
Exemplo de configuração do INI para São Paulo
[3550308]
Nome=Sao Paulo
UF=SP
Provedor=ISSSaoPaulo
Versao=***
ProRecepcionar=https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx
Versao=2.00
ProRecepcionar=https://nfews.prefeitura.sp.gov.br/lotenfe.asmx
HomRecepcionar=https://nfews.prefeitura.sp.gov.br/lotenfe.asmx?op=TesteEnvioLoteRPS
ProLinkURL=https://nfe.prefeitura.sp.gov.br/nfe.aspx?ccm=%InscMunic%&nf=%NumeroNFSe%&cod=%CodVerif%
HomLinkURL=https://nfe.prefeitura.sp.gov.br/nfe.aspx?ccm=%InscMunic%&nf=%NumeroNFSe%&cod=%CodVerif%
Observem que cada versão deve ter todas as chaves necessárias, e Versao=*** funciona como fallback para layout 1.
Sequência CORRETA de configuração em código Delphi
NFSeX.Configuracoes.Geral.Provedor := proISSSaoPaulo;
NFSeX.Configuracoes.Geral.CodigoMunicipio := 3550308;
if Tb_SaoPauloOptante_SN.AsString = 'N' then
NFSeX.Configuracoes.Geral.Versao := ve200
else
NFSeX.Configuracoes.Geral.Versao := ve100;
NFSeX.SetProvider;//Força recarregamento do provider
NFSeX.Configuracoes.Arquivos.PathSchemas :=
GetInfoPadrao('PastaLocalExe') + 'NFSe_Util\NFSE_Schemas\SP\';
NFSeX.Configuracoes.Arquivos.PathSalvar :=
GetInfoPadrao('PastaLocalExe') + 'NFSe_Util\Xml\';
ForceDirectories(NFSeX.Configuracoes.Arquivos.PathSalvar);
A ORDEM É CRUCIAL: PROVEDOR → CODIGO DO MUNICIPIO → VERSÃO → SETPROVIDER.
Alterar essa ordem pode resultar em configuração herdada da nota anterior, principalmente ao processar múltiplas notas em sequência.
Testes realizados
Emissão de duas notas consecutivas:
Regime Normal, versão 2.00
Simples Nacional, versão 1.00
Ambas em modo teste → Sucesso = True
Funcionou mesmo processando várias notas sem recriar o componente, desde que a ordem correta seja respeitada.
Referências úteis
Fórum ACBr – explicação da alternância entre layouts:
https://www.projetoacbr.com.br/forum/topic/90324-configurar-acbrnfsex-para-utilizar-leiaute-1-ou-leiaute-2-na-emiss%C3%A3o-de-nota-fiscal-de-servi%C3%A7o-de-s%C3%A3o-paulo-isssaopaulo/?utm_source=chatgpt.com
A explicação da ordem e do carregamento do provider está detalhada nesse link.
Espero que esse exemplo ajude quem também estava enfrentando problemas ao alternar layout 1.00 ↔ 2.00 e Regime Normal ↔ Simples Nacional.
esse tópico pode ser encerrado, com sucesso.