Ir para conteúdo
  • Cadastre-se

dev botao

Dúvidas de como criar novo provedor ACBrNFSeX


Ver Solução Respondido por Italo Giurizzato Junior,

Recommended Posts

Postado

Boa tarde, estou implementando um provedor novo no ACBRNFSEX, BWSistemas

Estou com algumas dúvidas de como implementar o novo provedor...
Sei que tem bastante modelos diferentes, estou usando TACBrNFSeProviderProprio, TNFSeRClass, TNFSeWClass e TACBrNFSeXWebserviceSoap11 como classes base...
A geração e comunicação parece que está OK, estou na parte do retorno

Minha primeira dúvida é se alguém sabe um bom provedor pra eu usar de "modelo" com esses requisitos, usando as classes acima... Primeiramente farei apenas envio/retorno e cancelamento/retorno...
Não vou anexar o manual pois não sei se pode ou não, mas qualquer coisa envio em privado.

Minha segunda dúvida é quanto ao arquivo BWSistemasLerXML.pas, no caso do cancelamento: 
devo fazer a "leitura" do XML, passando os dados para o componente dentro desse arquivo? Algo desse tipo no LerXML...

if (Pos('Cancelar', XmlNode.Name) > 0) then
  if tpXML = txmlNFSe then
    Result := LerXmlCancelarEnvio(XmlNode)
  else
    Result := LerXmlCancelarRetorno(XmlNode);

Ou se alguém souber algum tópico existente... Não achei....

  • Consultores
  • Solution
Postado

Bom dia @Vitor Barbieri,

A primeira coisa a saber sobre esse novo provedor é: qual layout ele utiliza (versão 1 da ABRASF, versão 2 ou layout próprio)?

 

Se ele utiliza a versão 1 ou 2 note que temos modelos das units que são necessárias serem criadas.

Esses modelos estão na pasta: ...\Fontes\ACBrDFe\ACBrNFSeX\Modelos.

Você vai copiar e renomear esses arquivos para: BWSistemas.GravarXml, BWSistemas.LerXml e BWSistemas.Provider

Esses 3 arquivos tem que ficar dentro da pasta: ...\Fontes\ACBrDFe\ACBrNFSeX\Provedores

Vai ser necessário criar um enumerado para esse provedor (proBWSistemas) na unit ACBrNFSeXConversao.

Incluir a chamada ao novo provedor na unit ACBrNFSeXProviderManager com é feito com os demais provedores.

 

Agora se o provedor se utiliza de um layout próprio, tem que ver se ele trabalha com XML ou Json e ai você vai pegar dentro da pasta que consta os arquivos dos provedores (...\Fontes\ACBrDFe\ACBrNFSeX\Provedores) e pegar um provedor de modelo para escrever as units do novo provedor.

 

Em resumo:

Criar o enumerado em: ACBrNFSeXConversao

Incluir a chamada em: ACBrNFSeXProviderManager

Escrever as units:  BWSistemas.GravarXml, BWSistemas.LerXml e BWSistemas.Provider (ser o provedor trabalha com Json em vez de GravarXml é GravarJson, LerXml é LerJson). 

 

Quanto ao cancelamento se o provedor segue o layout da ABRASF as rotinas estão nas units: ACBrNFSeXProviderABRASFv1 e ACBrNFSeXProviderABRASFv2, se o provedor trabalha com layout próprio a rotina de cancelamento vai ser escrita na unit: BWSistemas.Provider.

 

Espero ter ajudado.

Assim que estiver pronto, por favor anexe as units aqui nesse mesmo tópico para que possamos validar e enviar para o SVN.

Desde de já muito obrigado pela colaboração.

  • Curtir 2
  • Obrigado 1
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

Postado

Agradeço os esclarecimentos Italo, no caso não é bem abrasf, é um modelo próprio que lembra bastante o abrasf, por isso escolhi o provedor "próprio", pois achei que seria mais complicado alterar o abrasf para suportar.

Mas sua dica me ajudou sim! Consegui achar as funções virtuais TratarRetorno* (ex: TratarRetornoCancelaNFSe, TratarRetornoEmitir, TratarRetornoConsultarNFSe, etc...) para fazer override na classe Provider.

Enfim só deixando aqui para consulta futura caso alguém também tenha essa dúvida.

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.