Ir para conteúdo
  • Cadastre-se

dev botao

Ajustes e melhorias ACBR NFSeX


Ver Solução Respondido por VEXCOM Sistemas - Valtair,
  • Este tópico foi criado há 383 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
  • Solution
Postado

Contribuindo com o projeto ACBr, solicito, se possível alguns ajustes, tenho clientes que enviam NFSe nestas cidades, e após os ajustes abaixo, as NFSes estão sendo transmitidas com sucesso. Essas alterações não foram feitas hoje, faz um certo tempo já, então estão funcionando perfeitamente.

no arquivo INI: "ACBr\trunk2\Fontes\ACBrDFe\ACBrNFSeX\ACBrNFSeXServicos.ini"

A cidade São Carlos / SC que estava:

[4216008]
Nome=Sao Carlos
UF=SC
Provedor=Betha

o correto é:

[4216008]
Nome=Sao Carlos
UF=SC
Provedor=IPM


 

A Cidade de Nonoai / RS que estava

[4312708]
Nome=Nonoai
UF=RS
Provedor=DataSmart
Versao=2.02
Params=AliasCidade:NONOAIRS

o correto é:

[4312708]
Nome=Nonoai
UF=RS
Provedor=DataSmart
Versao=2.02
Params=AliasCidade:NONOAI


 

O Provedor IPM para a cidade de são carlos, está retornando o sucesso como '00001 - Sucesso'
para ter o correto envio da NFSe para este provedor fiz o seguinte ajuste na unit:
ACBr\trunk2\Fontes\ACBrDFe\ACBrNFSeX\Provedores\IPM.Provider.pas - Linha 280
Adicionando o "if ((Codigo <> '00001') and (Codigo <> '00001 - Sucesso')) then", pois caso não haja essa condição gera um erro como "Sucesso", pode verificar na imagem abaixo também.

procedure TACBrNFSeProviderIPM.ProcessarMensagemErros(
  RootNode: TACBrXmlNode; Response: TNFSeWebserviceResponse;
  const AListTag, AMessageTag: string);
var
  I: Integer;
  ANode: TACBrXmlNode;
  ANodeArray: TACBrXmlNodeArray;
  AErro: TNFSeEventoCollectionItem;
  aMsg, Codigo: string;
begin
  ANode := RootNode.Childrens.FindAnyNs(AListTag);

  if (ANode = nil) then
    ANode := RootNode;

  ANodeArray := ANode.Childrens.FindAllAnyNs(AMessageTag);

  if not Assigned(ANodeArray) then Exit;

  for I := Low(ANodeArray) to High(ANodeArray) do
  begin
    Codigo := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('codigo'), tcStr);
    aMsg := ACBrStr(ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Mensagem'), tcStr));
    {
     Codigo = 00001 significa que o processamento ocorreu com sucesso, logo não
     tem erros.
    }
    if ((Codigo <> '00001') and (Codigo <> '00001 - Sucesso')) then
    begin
      AErro := Response.Erros.New;

      AErro.Codigo := Codigo;
      AErro.Descricao := aMsg;
      AErro.Correcao := '';
    end;
  end;
end;


PrintRetornoIPM.thumb.png.fc1c6ca9fdb1981436c1abe911e9aed2.png

  • Consultores
Postado

Boa tarde,

Poderia anexar os arquivos alterados? Facilita bastante para realizarmos as comparações e atualizações.

Aproveitando, vc comentou que fez os ajuste já a algum tempo. Seus fontes estão atualizados? Se possível envie a sua alteração sobre os fontes mais recentes, pois pode já ter sido ajustado o que vc pede ou podem ter sido feitas outras alterações.

Obrigado

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

  • Membros Pro
Postado

O SVN faz o merge sempre que faço o update.

Alterar apenas o arquivo ini que está em anexo, fiz o update agora dos meus fontes, e vi que o italo, já fez a correção recentemente do tratamento correto das mensagens de erro, tem o commit abaixo quer corrigiu:
 

Revision: 31112
Author: italojjr
Date: segunda-feira, 30 de outubro de 2023 17:01:12
Message:
30/10/2023
-- IPM.GravarXml/IPM.Provider --
[*] Possível solução para tratar corretamente as mensagens de erro.
   Por: Italo Giurizzato Junior

----
Modified : /trunk2/Fontes/ACBrDFe/ACBrNFSeX/ACBrNFSeX-change-log.txt
Modified : /trunk2/Fontes/ACBrDFe/ACBrNFSeX/Provedores/IPM.GravarXml.pas
Modified : /trunk2/Fontes/ACBrDFe/ACBrNFSeX/Provedores/IPM.Provider.pas

 

 

ACBrNFSeXServicos.ini

×
×
  • 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.