Vitor Barbieri Postado Quinta as 17:36 Postado Quinta as 17:36 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 Italo Giurizzato Junior Postado Segunda as 13:44 Consultores Solution Postado Segunda as 13:44 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. 2 1 Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / Araraquara-SP Araraquara - A era dos Trólebus
Vitor Barbieri Postado Há 20 horas Autor Postado Há 20 horas 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.
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora