Ir para conteúdo
  • Cadastre-se

Ronaldo.Bispo

Membros
  • Total de ítens

    27
  • Registro em

  • Última visita

Tudo que Ronaldo.Bispo postou

  1. Olá pessoal, tudo bem? Eu procurei nos códigos fontes algo sobre validação de feriados, ou algo que retorne se retorne se a data é um feriado, ou lista de feriados. Alguém sabe dizer se existe algo assim pronto, ou também se tiver alguma dica de uma api gratuita dai podemos contribuir e enviar para a comunidade. Agradecido... muito obrigado
  2. Bom dia! Atualizado e as urls estão estar corretas! Qualquer problema eu reporto. Muito Obrigado.
  3. Olá, tudo bem? Gostaria de reportar uma alteração para enviar NFS-e do munícipio de Gaúcha do Norte - MT. No ACBrNFSeXServicos.ini alterei [5103858] Nome=Gaucha do Norte UF=MT Provedor= para [5103858] Nome=Gaucha do Norte UF=MT Provedor=Coplan Versao=2.01 ProRecepcionar=https://www.gp.srv.br/tributario/gauchadonorte/anfse_web_service ProLinkURL=http://www.gp.srv.br/tributario/gauchadonorte/tnfse_validacao?%CodVerif% Desde já, agradeço... muito obrigado. ACBrNFSeXServicos.ini
  4. Olá, tudo bem.. se ajudar ainda tive alguns problemas parecido com NFS-e. Antes de gerar usamos o metodo do Delphi SetRoundMode(rmUp), então os valores arredondam para cima. SetRoundMode (Delphi) - RAD Studio Code Examples (embarcadero.com) Espero ter ajudado...
  5. Olá pessoal, tudo bem com vocês? Estou gerando o arquivo de remessa bancária de envio do banco Sisprime 084 (antigo uniprime) e estou com alguns problemas com os dias de protesto. Quando eu deixo sem dias de protesto/negativação é gerado a exception: porém eu não gostaria de informar protesto. No manual diz que posso utilizar a indicação 03 que é 'Sem Protesto / Negativação', e também diz que se indicação for 01,02,07 deve preencher os dias a protestar sendo de 5 a 55 dias. Então me ocorreu que a validação no método TACBrUniprimeNortePR.GerarRegistroTransacao400(ACBrTitulo :TACBrTitulo; aRemessa: TStringList) não está sendo verificado se a indicação é diferente de 3 e 99. então alterei o código na unit ACBrUniprimeNortePR.pas de: if (StrToIntDef(aIdentificacaoOcorrencia,0) < 5) or (StrToIntDef(aIdentificacaoOcorrencia,0) > 55) then raise Exception.Create(ACBrStr('O número de dias a protestar / negativar '+ 'deve ser mínimo 05 a máximo 55 dias')); para: if ( (iInstrucao1 <> 3) and (iInstrucao1 <> 99) and (StrToIntDef(aIdentificacaoOcorrencia,0) < 5) or (StrToIntDef(aIdentificacaoOcorrencia,0) > 55) ) then raise Exception.Create(ACBrStr('O número de dias a protestar / negativar '+ 'deve ser mínimo 05 a máximo 55 dias')); A princípio seriam essas alterações Desde já, muito obrigado ACBrUniprimeNortePR.pas Manual_de_CobranA34a_-_Layout_CNAB_400_Atualizado.pdf
  6. No meu caso foi sempre antes de enviar, consultar, cancelar, substituir. Eu sempre chamo o metodo TACBrNFSeX.GerarToken antes de chamar um desses serviços.
  7. Bom dia, tudo bem? Retornando um feedback a respeito do problemas com o cancelamento e substituição. Foi aberto um chamado no provedor a respeito disso, mas eu fiz os testes no ambiente de homologação fornecido pelo provedor o problema acontece lá também. Como lá ocorre o problema também, então os eventos de cancelamento e substituição estão comunicando corretamente, a principio não é um problema com o ACBr. Por hora é isso mesmo, qualquer coisa se precisar fazer alterações, eu faço e crio um novo tópico comunicando as alterações.
  8. Bom dia Eu deixei com 2 minutos e mesmo assim não foi. Então eu testei direto no ambiente de homologação do provedor e lá também não está funcionando. Acredito que o problema seja por lá mesmo, o envio e consulta estão tranquilo. Vou enviar um e-mail pra eles para verificar o que pode ser.
  9. Boa tarde, Muito obrigado. Já atualizei aqui. O envio e consulta está funcionando corretamente. O cancelamento e substituição estou com um problema de timeout. Eu estou fazendo alguns testes, mas acredito que seja algum problema de comunicação com o servidor. Vou fazer mais alguns testes então te passo um feedback.
  10. Bom dia, tudo bem! Fiz algumas alterações para incluir o serviço de substituir NFS-e no provedor da SoftPlan. Foi adicionado os métodos: procedure TACBrNFSeProviderSoftPlan.PrepararSubstituiNFSe(Response: TNFSeSubstituiNFSeResponse); procedure TACBrNFSeProviderSoftPlan.TratarRetornoSubstituiNFSe(Response: TNFSeSubstituiNFSeResponse); function TACBrNFSeXWebserviceSoftPlan.ConsultarDFe(ACabecalho, AMSG: string): string; Para substituir uma NFS-e é necessário enviar um XML com as informação que serão alteradas. Para esse provedor não precisa cancelar a NFS-e antes de substituir. Como o serviço de substituir NFS-e cancela antes de enviar uma nova, foi tratado em PrepararCancelaNFSe e TratarRetornoCancelaNFSe para ignorar caso TACBrNFSeX(FAOwner).Status = stNFSeSubstituicao. Também foi necessário fazer algumas alterações no GravarXML. Apenas algumas informações poderão ser substituídas outras serão igual a nota anterior logo, o XML de envio da NFS-e de substituição será diferente do XML de envio de quando gera a NFS-e. Então no GravarXML foi preciso separar em dois métodos para um para gravar o XML de substituição e outro para o XML que envia NFS-e; function GerarXmlEnvio: Boolean; function GerarXmlSubstituicao: Boolean; Estou anexando as units que foram alteradas para analise. Muito Obrigado. SoftPlan.GravarXml.pas SoftPlan.Provider.pas
  11. Olá tudo bem! Continuando os testes na NFPS-e de Florianópolis (SoftPlan), ao tentar enviar para um tomador que não é contribuinte ou pessoa física no caso, ocorre a falha: O campo "inscricaoMunicipalTomador" tamanho deve estar entre 1 e 7 <?xml version="1.0" encoding="UTF-8"?> <xmlNfpse> <message>O campo "inscricaoMunicipalTomador" tamanho deve estar entre 1 e 7</message> </xmlNfpse> para solucionar o problema, em SoftPlan.GravarXml.pas foi alterado para verificar se a informação está em branco, caso esteja não é inserido a tag no XML. if (NFSe.Tomador.IdentificacaoTomador.InscricaoMunicipal <> '') then NFSeNode.AppendChild(AddNode(tcStr, '#1', 'inscricaoMunicipalTomador', 0, 30, 1, NFSe.Tomador.IdentificacaoTomador.InscricaoMunicipal, '')); Então estou encaminhando a unit com as alterações para analise. Muito Obrigado. SoftPlan.GravarXml.pas
  12. Olá tudo bem! Fiz algumas alterações para consultar NFS-e e baixar o XML que ainda não estavam funcionando. A consulta da NFS-e retorna uma JSON e não vem o XML . O XML deve ser baixado por outro endpoint. O ConsultarNFSe irá retornar o JSON com as informações da NFS-e, logo em seguida é usado o ConsultarDFe para baixar o xml. function TACBrNFSeXWebserviceSoftPlan.ConsultarDFe(ACabecalho, AMSG: string): string; #define a url de acordo com o tpConsulta tcPorCodigoVerificacao ou tcPorNumero procedure TACBrNFSeProviderSoftPlan.PrepararConsultaNFSe(Response: TNFSeConsultaNFSeResponse); override; #trata o retorno lendo as informações do JSON e executa o ConsultarDFe para baixar o xml procedure TACBrNFSeProviderSoftPlan.TratarRetornoConsultaNFSe(Response: TNFSeConsultaNFSeResponse); override; #prepara a url para baixar o xml da NFS-e procedure TACBrNFSeProviderSoftPlan.PrepararConsultarDFe(Response: TNFSeConsultarDFeResponse); override; #Lê e salva o xml que retornou procedure TACBrNFSeProviderSoftPlan.TratarRetornoConsultarDFe(Response: TNFSeConsultarDFeResponse); override; ... No LerXML, foi alterado para copiar a situação da NFS-e (cancelada/normal) da tag statusNFPSe do XML. Situacao := ObterConteudo(ANode.Childrens.FindAnyNs('statusNFPSe'), tcInt); ... Em ACBrNFSeXConversao.pas, também foi adicionado o tipo tcPorCodigoVerificacao no enumerador TtpConsulta. TtpConsulta = (tcPorNumero, tcPorFaixa, tcPorPeriodo, tcServicoPrestado, tcServicoTomado, tcPorCodigoVerificacao); SoftPlan.Provider.pas SoftPlan.LerXml.pas ACBrNFSeXConversao.pas
  13. Olá tudo bem! O cancelamento de NFS-e do profedor SoftPlan funcionou mas foi preciso fazer alguns ajustes porque alguns atributos conflitaram com o serviço de gerar token. Coloquei os três pontos no mesmo tópico, não sei se era obrigatório criar um tópico para cada um. Estava com problemas com a identificação do tomador na unit SoftPlan.GravarXML, era necessário remover os caracteres especiais e deixar apenas números. NFSeNode.AppendChild(AddNode(tcStr, '#1', 'identificacaoTomador', 0, 20, 1, OnlyNumber(NFSe.Tomador.IdentificacaoTomador.Cnpj), '')); O atributo ChaveAutoriz esta sendo utilizado para definir o numeroAEDF no xml de envio e de cancelamento também e conflitava com o serviço de gerar token. Esse mesmo atributo foi utilizado para salvar o client_secret que é utilizado para gerar o token. Então para evitar conflitos eu fiz alterações no serviço de gerar token para utilizar o atributo Emitente.WSFraseSecr ao invés do Emitente.WSChaveAutoriz. Então em procedure TACBrNFSeProviderSoftPlan.PrepararGerarToken(Response: TNFSeGerarTokenResponse) aonde define a URL foi alterado de: FpPath := FpPath + '&client_secret=' + Emitente.WSChaveAutoriz; para: FpPath := FpPath + '&client_secret=' + Emitente.WSFraseSecr; E em procedure TACBrNFSeXWebserviceSoftPlan.SetHeaders(aHeaderReq: THTTPHeader) aonde define o cabeçalho do request foi alterado de: with TConfiguracoesNFSe(FPConfiguracoes).Geral do Auth := Emitente.WSChaveAcesso + ':' + Emitente.WSChaveAutoriz; para: with TConfiguracoesNFSe(FPConfiguracoes).Geral do Auth := Emitente.WSChaveAcesso + ':' + Emitente.WSFraseSecr; O número da nota estava ficando errado quando gerava a nfse. Estava copiando o numero do rps ao invés do numero da nota no xml de retorno. Então alterei para copiar da tag 'numeroSerie' ao invés da tag 'identificacao'; Então em procedure TACBrNFSeProviderSoftPlan.TratarRetornoEmitir(Response: TNFSeEmiteResponse) foi alterado de: with Response do begin ... NumeroNota := ObterConteudoTag(ANode.Childrens.FindAnyNs('identificacao'), tcStr); end; para: with Response do begin ... NumeroNota := ObterConteudoTag(ANode.Childrens.FindAnyNs('numeroSerie'), tcStr); end; Muito Obrigado SoftPlan.GravarXml.pas SoftPlan.Provider.pas
  14. Caso tenha alguma alteração no GerarNFSe, ConsultarNFSe e no CancelarNFSe, é necessário abrir outro tópico ou posso continuar postando nesse mesmo?
×
×
  • 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.