Ir para conteúdo
  • Cadastre-se

dev botao

NFSeX Birigui Provedor Próprio


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

Recommended Posts

  • Membros Pro
Postado

Bom dia Italo! Estou tentando resolver o problema da consulta, precisei incluir no INI o endereço de consulta de lote,  mas estou com problema da formatação do XML, o que fica sempre diferente é o recibo.ECSAELCO-con-lot-soap.xml
Fiz essa alteração na tentativa de deixar igual:
image.thumb.png.44e034a18715532b0b02f14aa5f2ce55.png

ACBrNFSeXServicos.ini GeradoNFSe-ApenasParaCompararEstruturaConsultaLote.xml

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Membros Pro
Postado

Boa tarde, rapaz como é bom conhecer o core do sistema rsrs esse XmlToStr que está fazendo a magica ai, já estou pegando a logica de como montar usando os métodos já existentes, logo consigo arrumar sozinho rsrs. Mas vamos lá, a recepção ocorreu porém precisamos ajustar o ProcessarMensagemErros,:
image.png.557e5c45ca6ae6fd1681f216da23f32c.png

Fiquei na duvida ProcessarMensagemErros(Document.Root, Response, '', 'nfderro')?
 

for I := Low(ANodeArray) to High(ANodeArray) do
  begin
    AErro := Response.Erros.New;
    AErro.Codigo := ProcessarConteudoXml(ANodeArray[I].Childrens.FindAnyNs('codigoerro'), tcStr);
    AErro.Descricao := ProcessarConteudoXml(ANodeArray[I].Childrens.FindAnyNs('numeronfd'), tcStr);
    AErro.Correcao := '';

    if AErro.Descricao = '' then
      AErro.Descricao := ANodeArray[I].AsString;
  end;

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Consultores
Postado

Jorge,

Maravilha, fico feliz que esta entendo como é que a coisa funciona.

Esse retorno é referente a consulta?

Se sim, que porcaria, os caras colocaram o numero da nota e o código do erro como atributos da tag <nfderro> em vez de elementos.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado (editado)

Sim, como está no em assicrono, tenho que consultar logo após o envio como aquele código de recibo <codrecibo>,  sempre passa pelo método de tratamento de erros e de acordo com o layout é desse jeito que vai vir os erros...,vou colocar uma aliquota de ISS maior só para ver o que vai retornar...

Editado por netstart

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Consultores
Postado

Jorge,

Você notou que cada serviço do webservice esta retorno as mensagens de erros de forma distintas, ou seja, não segue um padrão.

Da impressão que cada serviço foi implementado por uma pessoa diferente e não houve uma reunião para estabelecer um padrão.

Acaba sobrando para nós ficar fazendo gambiarras para contornar essas porcarias que eles fazem.

Eu sugiro que você entre em contato com o provedor e questione essa falta de padrão.

Vai que eles resolvem acertar essas kakas.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Rapaz, é um carma falar com aquele pessoal, vai demorar um século a resposta no e-mail, que vai ser esta no manual, mas vou enviar o e-mail para a prefeitura que vai encaminhar para eles, enquanto isso vou tentando aqui ajustar aqui, fiz um ajuste no tratamento de erro, mas estou perdendo em como conseguir ler o xml de retorno para carregar no componente, se puder me ajudar vou ajustando aqui:
image.thumb.png.732a0fb8a7db834955256313d1f0296c.png

BBPDXTRL-lista-nfse-con-lot-soap.xml

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Membros Pro
Postado (editado)

Italo,
Fiz varios ajustes para conseguir ler os retornos, como não sei que horas vou conseguir mexer amanhã novamente, vou deixar as alterações para analise, como estou usando a impressão do link presente no ini, já consigo fazer o processo de envio, consulta e impressão, porém tem um probleminha na hora de carregar o xml retornado, não faz o parse para NotasFiscais.Items, não da erro mas os dados da nota ficam vazios no objeto, ajustando isso acho que vai faltar apenas o cancelamento...

No método  TACBrNFSeProviderSmarAPD.TratarRetornoEmitir
  // Precisa de um tratamento de data para o padrao <datahora>04/08/2021 14:30:56</datahora>
 // DataRecebimento:= ProcessarConteudoXml(AuxNode.Childrens.FindAnyNs('datahora'), tcDatHor);

image.thumb.png.2974d6a9b4e0c195e6e735e7a695bc9e.png

ACBrNFSeXServicos.ini SmarAPD.Provider.pas

Editado por netstart

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • 2 semanas depois ...
  • Membros Pro
Postado

Boa tarde @Italo Giurizzato Junior

Tivemos que dar uma parada na homologação desse provedor com o NFSeX, mas agora já finalizamos, tivemos que fazer alguns ajustes, se puder analisar para colocar em produção e encerrarmos esse tópico agradeço, estou anexando as units para analise.

SmarAPD.zip

  • Obrigado 1

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Consultores
Postado

Boa tarde Jorge,

Não entendi a finalidade da propriedade de configuração que você acrescentou?

E qual é o erro que esta ocorrendo na procedure ProcessarMensagemErros que foi resolvido comentando o bloco de linhas que estão no ELSE?

Notei que você esta com os fontes desatualizados.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Bom dia Italo,
Os fontes foram atualizados no mesmo dia que enviei as units para tópico.
Com relação ao bloco comentado é porque não faz sentido aquele código, sempre estava incluído erro mesmo não existindo erros no xml de retorno.
Sobre a propriedade, inserimos porque não encontramos nenhuma propriedade que permitisse remover a mascara de CNPJ ao salvar o arquivo xml da nota, nesse novo componente mudou o padrão que estava no anterior,  fizemos isso para não afetar os demais:
image.png.009edbd400fdecbdc3131f4217b7af54.png

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Consultores
Postado

Bom dia,

Quanto a ausência de erro vou verificar.

Como assim ele não remove a mascara do CNPJ/CPF ao montar o nome do XML?

  if Configuracoes.Arquivos.NomeLongoNFSe then
    Result := GerarNomeNFSe(Configuracoes.WebServices.UFCodigo,
                            ANFSe.DataEmissao,
                            OnlyNumber(xCNPJ),                  <=== a função OnlyNumber renove a mascara
                            StrToInt64Def(NumDoc, 0))
  else
    Result := NumDoc + ANFSe.IdentificacaoRps.Serie;

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Italo,
O problema da mascara está no trecho de código abaixo, o property foi apenas porque eu não sabia se poderia tratar diretamente no método sem afetar os demais:

procedure TACBrNFSeXProvider.SalvarXmlNfse(aNota: NotaFiscal);
var
  aPath, NomeArq: string;
  aConfig: TConfiguracoesNFSe;
begin
  aNota.Confirmada := True;
  aNota.NomeArq := '';

  if FAOwner.Configuracoes.Arquivos.Salvar then
  begin
    aConfig := TConfiguracoesNFSe(FAOwner.Configuracoes);
    aPath := aConfig.Arquivos.GetPathNFSe;

    if aConfig.Arquivos.NomeLongoNFSe then
      NomeArq := GerarNomeNFSe(aConfig.WebServices.UFCodigo,
                               aNota.NFSe.DataEmissao,
                               aNota.NFSe.Prestador.IdentificacaoPrestador.Cnpj,
                               StrToInt64Def(aNota.NFSe.Numero, 0),aConfig.Arquivos.ApenasNumerosCNPJ) + '-nfse.xml'
    else
      NomeArq := aNota.NFSe.Numero +
                 aNota.NFSe.IdentificacaoRps.Serie +
                 '-nfse.xml';

    aNota.NomeArq := NomeArq;

    TACBrNFSeX(FAOwner).Gravar(NomeArq, aNota.XML, aPath);
  end;
end;

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Membros Pro
Postado

Boa tarde @Italo Giurizzato Junior,

Atualizei novamente o componente e tive que fazer 2 ajustes:

- Passar na configuração para assinar ao cancelar

- Remover o trecho de código do método ProcessarMensagemErros, que já havíamos comentado antes.

SmarAPD.Provider.pas

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Este tópico foi criado há 1188 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.