Ir para conteúdo
  • Cadastre-se

Recommended Posts

  • Membros Pro
Postado

Boa tarde.

Após atualizar os fontes para a correção feita para o erro E0713, passou-se a ter outro erro (o E0701, relativo a CSLL), quando há PIS/COFINS não retido e empresa é lucro real:

image.png.7c5fc01e9bd3eabc48ea82872c4db7ae.png

Mesmo não havendo valor de CSLL na NFSe, a tag vRETCSLL era adicionada ao XML, causando o erro.

Vendo as discussões do @Juliomar Marchetti no discord com quem estava tendo esse problema, fiz uma correção, adicionando a seguinte condição:

 

image.thumb.png.c8c9286d5e442f0f6a30cb4c446ce0b8.png

testei aqui e efetivou a NFSe.

Segue anexo o arquivo para validação e possível subida pro SVN.

Att,

Leandro

 

 

 

PadraoNacional.LerXml.pas

Postado

Estou recebendo esse erro ao atualizar o componente e usando a v1.01

 

 2026-02-23 10:12:32.039  Código  : E0713
 2026-02-23 10:12:32.039  Mensagem: Para Não Optante o indicador de informação de valor total de tributos e o valor percentual aproximado do total dos tributos da alíquota do Simples Nacional (%) não podem ser informados.

 

Pelo que entendi não é para ir essa tag... porem no fonte do componente quando é igual a indNao ela sempre vai.
<totTrib>
<indTotTrib>0</indTotTrib>
</totTrib>

 

image.thumb.png.04f6cae79833155c7fdb75b952bb6024.png

 

Estou mandando assim...

image.thumb.png.16713621890eec6d9052d424056e39ae.png

 

se eu coloco indSim da certo, alguém conseguiu resolver de outra forma?

Postado

Eu consegui resolver, só que no meu caso existe retenção de PIS + COFINS + CSLL, o componente soma tudo no valor do CSLL, o fim da nota fica certo, mas é tudo somado no CSLL, o layout fica aparecendo o valor do PIS, do COFINS e quando chega no CSLL, é a soma de todos os 3.

 

Alguém sabe me dizer se o novo layout é assim?

Postado

acredito que desse jeito resolva todos os casos, até então

E0710 = Para MEI pTotTribSN nunca poderá ser informado.

E0712 = Para ME/EPP indTotTrib nunca poderá ser informado

E0713 = Para Não Optante do SN os campos, indicador de informação de valor total de tributos (indTotTrib) e  percentual aproximado do total dos tributos da alíquota do Simples Nacional (%) (pTotTribSN), não podem ser informado.

function TNFSeW_PadraoNacional.GerarXMLTotalTributos: TACBrXmlNode;
begin
  Result := CreateElement('totTrib');

  if (NFSe.Servico.Valores.totTrib.pTotTribFed > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribEst > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribMun > 0) then
    Result.AppendChild(GerarXMLPercentualTotalTributos)
  else
  if (NFSe.OptanteSN = osnOptanteMEEPP) then
    Result.AppendChild(AddNode(tcDe2, '#1', 'pTotTribSN', 1, 5, 1,
                                 NFSe.Servico.Valores.totTrib.pTotTribSN, ''))
  else
  if (NFSe.OptanteSN = osnOptanteMEI) then
    Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1,
              indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), ''))
  else
    Result.AppendChild(GerarXMLValorTotalTributos);
end;

os testes aqui não deram erro, e o xml sai assim, com os valores zerados e sem essas flags

<totTrib>
	<vTotTrib>
		<vTotTribFed>0.00</vTotTribFed>
		<vTotTribEst>0.00</vTotTribEst>
		<vTotTribMun>0.00</vTotTribMun>
	</vTotTrib>
</totTrib>

 

PadraoNacional.GravarXml.pas

  • Curtir 1
Postado

Você dever somar todos os valores e informar somente em:

              if fCofins+fPis+fCsll>0 then
              begin
                Servico.Valores.tribFed.tpRetPisCofins := trpiscofinscsllRetido;
                Servico.Valores.tribFed.vRetCSLL := round2(fCofins+fPis+fCsll);
              end;

  • Membro Pro Verificado
Postado

Atualizei os fontes e foi necessário ajustar o ponto que destaquei, alterando de "<>" para "=", pois a tag pTotTribSN só poder ser informada quando for "Sim".

function TNFSeW_PadraoNacional.GerarXMLTotalTributos: TACBrXmlNode;
begin
  Result := CreateElement('totTrib');

  if (NFSe.Servico.Valores.totTrib.pTotTribFed > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribEst > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribMun > 0) then
    Result.AppendChild(GerarXMLPercentualTotalTributos)
  else
    if (NFSe.OptanteSN = osnOptanteMEEPP) then
      Result.AppendChild(AddNode(tcDe2, '#1', 'pTotTribSN', 1, 5, 1,
                                   NFSe.Servico.Valores.totTrib.pTotTribSN, ''))
    else
      if (NFSe.Servico.Valores.totTrib.indTotTrib = indSim) then
        Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1,
                  indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), ''))
      else
        Result.AppendChild(GerarXMLValorTotalTributos);
end;


  • Curtir 1
  • Obrigado 1
Postado

Bom dia,

Atualizei meus fontes ontem (03/03/2023) e após atualização estou recebendo o erro E0713 . 

Os valores estavam montados assim e emitia a NFS-e e agora estou recebendo o erro.

 

Servico.Valores.tribFed.vPis           := DM.qryUsu_T660NFV_usu_vlrpit.AsCurrency;
Servico.Valores.tribFed.vCofins        := DM.qryUsu_T660NFV_usu_vlrcrt.AsCurrency;
if (DM.qryUsu_T660NFV_usu_vlrpit.AsCurrency + DM.qryUsu_T660NFV_usu_vlrcrt.AsCurrency > 0) then
begin
    Servico.Valores.tribFed.vBCPisCofins := DM.qryUsu_T660NFV_usu_vlrtot.AsCurrency;
    Servico.Valores.tribFed.pAliqPis := 0.65;
    Servico.Valores.tribFed.pAliqCofins := 3;
    Servico.Valores.tribFed.tpRetPisCofins := trpcRetido;
end;
Servico.Valores.tribFed.vRetCP         := DM.qryUsu_T660NFV_usu_vlrins.AsCurrency;
Servico.Valores.tribFed.vRetIRRF       := DM.qryUsu_T660NFV_usu_vlrirf.AsCurrency;
Servico.Valores.tribFed.vRetCSLL       := DM.qryUsu_T660NFV_usu_vlrcsl.AsCurrency+
                                          DM.qryUsu_T660NFV_usu_vlrpit.AsCurrency+
                                          DM.qryUsu_T660NFV_usu_vlrcrt.AsCurrency;
Servico.Valores.totTrib.vTotTribFed    := RoundABNT(DM.qryUsu_T660NFV_usu_vlrtot.AsCurrency * 0.0865, 2);
Servico.Valores.totTrib.vTotTribEst    := 0;
Servico.Valores.totTrib.vTotTribMun    := RoundABNT(DM.qryUsu_T660NFV_usu_vlrtot.AsCurrency * (Servico.Valores.Aliquota), 2);

 

O que preciso alterar?

  • Membros Pro
Postado
14 horas atrás, Paulo Alexandre Hostert disse:

Atualizei os fontes e foi necessário ajustar o ponto que destaquei, alterando de "<>" para "=", pois a tag pTotTribSN só poder ser informada quando for "Sim".

function TNFSeW_PadraoNacional.GerarXMLTotalTributos: TACBrXmlNode;
begin
  Result := CreateElement('totTrib');

  if (NFSe.Servico.Valores.totTrib.pTotTribFed > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribEst > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribMun > 0) then
    Result.AppendChild(GerarXMLPercentualTotalTributos)
  else
    if (NFSe.OptanteSN = osnOptanteMEEPP) then
      Result.AppendChild(AddNode(tcDe2, '#1', 'pTotTribSN', 1, 5, 1,
                                   NFSe.Servico.Valores.totTrib.pTotTribSN, ''))
    else
      if (NFSe.Servico.Valores.totTrib.indTotTrib = indSim) then
        Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1,
                  indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), ''))
      else
        Result.AppendChild(GerarXMLValorTotalTributos);
end;

 

Fiz isso e funcionou, value muito obrigado pela dica.

  • Curtir 1
Postado
NFSe.Servico.Valores.totTrib.indTotTrib:=  indSim;  // Para OCULTAR o <indTotTrib>0</indTotTrib> quando os totais estiverem zerados
NFSe.Servico.Valores.totTrib.vTotTribMun := 0.0000001; // Artimanha para o valor ser maior que zero, passar na validação, e depois ser arredondado para ZERO.

Em Porto Alegre-RS - padrao naiconal - empresa nao optante do simples nacional , isso vinha validando e funcionando normalmente desde dezembro de 2025. Após a atualização do ACBr, o problema citado no assunto deste fórum passou a ocorrer. Usei a dica acima e funcionou, 
mas percebi que houve alterações nesse comportamento, conforme o trecho abaixo. Acho importante verificar:

[*] ACBR-8894 - Ajustes para gerar o campo pTotTribSN se o emitente for diferente de
    não Optante SN.
   Por: Italo Giurizzato Junior

 

Postado (editado)
Em 03/03/2026 at 18:45, Paulo Alexandre Hostert disse:

Atualizei os fontes e foi necessário ajustar o ponto que destaquei, alterando de "<>" para "=", pois a tag pTotTribSN só poder ser informada quando for "Sim".

function TNFSeW_PadraoNacional.GerarXMLTotalTributos: TACBrXmlNode;
begin
  Result := CreateElement('totTrib');

  if (NFSe.Servico.Valores.totTrib.pTotTribFed > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribEst > 0) or
     (NFSe.Servico.Valores.totTrib.pTotTribMun > 0) then
    Result.AppendChild(GerarXMLPercentualTotalTributos)
  else
    if (NFSe.OptanteSN = osnOptanteMEEPP) then
      Result.AppendChild(AddNode(tcDe2, '#1', 'pTotTribSN', 1, 5, 1,
                                   NFSe.Servico.Valores.totTrib.pTotTribSN, ''))
    else
      if (NFSe.Servico.Valores.totTrib.indTotTrib = indSim) then
        Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1,
                  indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), ''))
      else
        Result.AppendChild(GerarXMLValorTotalTributos);
end;

 

Solução corretíssima meu caro @Paulo Alexandre Hostert.
Só falta o pessoal do ACBr aplicar a alteração. Já mandou pra eles?
Obrigado!

Editado por Sady Martins
Postado
3 minutos atrás, Paulo Alexandre Hostert disse:

Acredito que o pessoal do ACBr acompanha aqui, ou será que devemos abrir um novo tópico?

Acho interessante abrir sim e também colocar no título algo como Erro NFS-e Padrão Nacional.
Me parece que quando tem ERRO no título a resposta é mais rápida 😅

  • Consultores
Postado

Bom dia a todos.

Foi criada a tarefa ACBR-8093 para tratar do caso.

Assim que houver novidades vamos reportar aqui.

  • Obrigado 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Consultores
Postado

Boa tarde pessoal!

Em 03/03/2026 at 18:45, Paulo Alexandre Hostert disse:

Atualizei os fontes e foi necessário ajustar o ponto que destaquei, alterando de "<>" para "=", pois a tag pTotTribSN só poder ser informada quando for "Sim".

Essa é a relação de conversão, ou seja, o enumerado e o valor que gera no XML:

indNao => 0
indSim => 1

Se abrirmos o arquivo AnexoVI-LeiautesRN_RTC_IBSCBS-V1.03.00 – NT007.xlsx, podemos ver que o único valor válido para este tag é zero.

Captura de tela 2026-03-05 144649.jpg

Então na verdade é o contrário, essa tag só pode ser gerada quando o valor de indTotTrib for igual a indNao.

Por isso a validação usa <> indSim para definir se deve gerar a tag indTotTrib ou se deve tentar gerar as tags de valores.

Para a tag pTotTribSN, se pesquisarmos no mesmo arquivo por essa tag na planilha RN DPS_NFSe, podemos ver apenas duas rejeições atrelas a essa tag.

Caminho no XML 

Campo 

Regra 

Efeito 

Código 

Msg. Erro 

NFSe/infNFSe/DPS/infDPS/valores/trib/totTrib/ 

pTotTribSN                                                             

 Se a situação do emitente da DPS perante o Simples Nacional na data de competência informada for Não Optante, indTotTrib e pTotTribSN nunca poderá ser informado.

Rej.                                                          

E0713                                                                                                       

 Para Não Optante do SN os campos, indicador de informação de valor total de tributos e percentual aproximado do total dos tributos da alíquota do Simples Nacional (%), não podem ser informado.

Se a situação do emitente da DPS perante o Simples Nacional na data de competência informada for MEI, o choice pTotTribSN nunca poderá ser informado. 

Rej. 

 E0710                                       

Para MEI pTotTribSN nunca poderá ser informado. 

Observem que em ambos os casos, na mensagem de erro é mencionado o valor de opSimpNac.

A primeira diz:

  • "Para não Optante do SN" => Entendemos aqui opSimpNac com valor 1 - Não Optante
  • "(...) percentual aproximado do total dos tributos da alíquota do Simples Nacional (%) não pode ser informado" => Entendemos como o campo pTotTribSN não pode ser informado.

A segunda diz:

  • "Para MEI" => Entendemos aqui opSimpNac com valor 2 - Optante - Microempreendedor Individual (MEI);
  • pTotTribSN nunca poderá ser informado => Campo de mesmo nome não deve ser informado.

Com essa interpretação, entendemos que apenas quando o valor de opSimpNac for igual "2 - Optante - Microempreendedor Individual (MEI);" é que o grupo pTotTribSN deverá ser gerado.

Por isso a condição if (NFSe.OptanteSN = osnOptanteMEEPP) then nos fontes para a geração dessa tag.

Eu fiz um teste em meu ambiente e a tag pTotTribSN foi gerada corretamente.

Captura de tela 2026-03-05 151841.png

Por favor, revisem suas rotinas para confirmarem o correto preenchimento das informações.

Se alguém tiver um arquivo XML de uma NFS-e autorizado pelo ambiente nacional que contradiga a interpretação prévia dessas regra e justifique a alteração no código, peço que disponibilize o mesmo para análise através de tópico na Área Privada do Fórum

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Talvez eu não esteja entendendo muito bem, mas pq nao poderia ser " = indNao"? Se o campo só pode existir com o não, ele é a única resposta válida. A ausencia do preenchimento do campo não engatilharia a criação do campo.

Postado (editado)

@Diego Foliene
Acho que não estamos entendendo da mesma forma. 
image.thumb.png.4abdc1b314598210d8a150f786771c92.png

Alí diz que se o emitente for "NÃO OPTANTE" os campos não podem existir

No trecho de código
 

        if NFSe.Servico.Valores.totTrib.indTotTrib <> indSim then
          Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1,
                 indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), ''));

Ele diz que:
Se indTotTrib <> indSim (não é diferente de indSim)
então ele grava o campo

Mas a regra diz que SE FOR NÃO os campos não podem aparecer

Já quanto a essa parte:
image.thumb.png.5f9fa8e2f9c382830918bb6e2ebbca12.png

Alí diz que, se a tag indTotTrib for informada (ao contrário do caso anterior onde ela não é informada) então ela deve obrigatoriamente ter valor 0.
E, segundo meu entendimento, esse valor 0 nela indica que o cara opta pelo SN mas não quer informar os VALORES ESTIMADOS, que é outra coisa.
Mas refere-se apenas a "valores estimados"
 

image.png

Editado por Sady Martins
  • Curtir 1
  • Consultores
Postado
1 hora atrás, Sady Martins disse:

@Diego Foliene
Acho que não estamos entendendo da mesma forma. 
image.thumb.png.4abdc1b314598210d8a150f786771c92.png

Alí diz que se o emitente for "NÃO OPTANTE" os campos não podem existir

No trecho de código
 

        if NFSe.Servico.Valores.totTrib.indTotTrib <> indSim then
          Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1,
                 indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), ''));

Ele diz que:
Se indTotTrib <> indSim (não é diferente de indSim)
então ele grava o campo

Mas a regra diz que SE FOR NÃO os campos não podem aparecer

Já quanto a essa parte:
image.thumb.png.5f9fa8e2f9c382830918bb6e2ebbca12.png

Alí diz que, se a tag indTotTrib for informada (ao contrário do caso anterior onde ela não é informada) então ela deve obrigatoriamente ter valor 0.
E, segundo meu entendimento, esse valor 0 nela indica que o cara opta pelo SN mas não quer informar os VALORES ESTIMADOS, que é outra coisa.
Mas refere-se apenas a "valores estimados"
 

image.png

Hmmm, acho que entendi o seu ponto.

Se eu tiver o opSimpNac com a opção 1 de Não Optante a menos que eu explicitamente defina indTotTrib com valor indSim, ao invés de gerar as tags do vTotXXX zeradas ele sempre vai cair na geração dessa tag e isso vai devolver o E0713.

Mas nesse caso não adianta eu mudar a condição de geração da tag usando indNao seja para = ou <>. E mudar ela para considerar indSim deixaria a lógica no mínimo estranha levando em conta que é o valor de indNao que ele usa para gerar a tag.

Enviei ao SVN na Rev-45204 um ajuste alterando a inicialização desse valor.

Ao invés de sempre começar com indNao por default, agora vai começar com indSim.

Por favor, atualizem seus fontes, reinstalem o ACBr com a opção "Apagar Arquivos Antigos" e façam novos testes.

Ficamos no aguardo de um retorno.

 

 

  • Curtir 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 2 semanas depois ...
  • Membros Pro
Postado
Em 26/02/2026 at 07:26, Joffas disse:

Você dever somar todos os valores e informar somente em:

              if fCofins+fPis+fCsll>0 then
              begin
                Servico.Valores.tribFed.tpRetPisCofins := trpiscofinscsllRetido;
                Servico.Valores.tribFed.vRetCSLL := round2(fCofins+fPis+fCsll);
              end;

Bom dia, amigos.

Tentei utilizar esse trpiscofinscsllRetido no meu, e deu erro de schemas:

image.png.d220830ae94685dd4b621592a835900d.png

E, conferi na pasta de schemas dos fontes do ACBr (atualizado), e está assim:

 

image.thumb.png.ab6c5ad7d92c2c01065702d8cb468ae2.png

Sabem me dizer se essa opção trpiscofinscsllRetido já está sendo aceita no padrão nacional?

Grato,

Leandro

 

 

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.