Diego A. Folieni
-
Total de ítens
40 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por Diego A. Folieni
-
-
Me recordo de em edição anterior do Papo Pro o Francisco Thiago ter dito que precisou se afastar da area de TI por um tempo e depois acabou voltando.
Acredito que seria interessante ele nos contar um pouco de como foi essa experiência de "alcançar" o mercado novamente.- 1
-
29 minutos atrás, Italo Giurizzato Junior disse:
Boa tarde Diego,
Favor atualizar os fontes, reinstale o ACBr e faça novos testes.
Note que foi realizado um Refactoring no componente.
Timing ruim da minha parte kkkkkk.
Atualizei o ACBr nesta quarta-feira(08/06) antes de fazer as minhas alterações. Se eu tivesse esperado um pouco mais kkkk.
OK @Italo Giurizzato Junior eu farei como pediu.
Muito obrigado!- 2
-
2 horas atrás, Diego A. Folieni disse:
Prezados, bom dia.
Utilizando o validador de arquivos do site do Bradesco para o serviço de Pagamento a Fornecedores disponível neste link https://banco.bradesco/html/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo.shtm
Realizei as seguintes alterações em Units do ACBrPagFor.-
ACBrPagForGravarTXT.pas
- Alterei a procedure GeraRegistro1 para que quando o banco seja o Bradesco e o lote correspondente for de segmentos O preencha o Layout do Lote como 012.
- Modifiquei a procedure GeraRegistro1 para que quando o banco seja o Bradesco e o lote correspondente for de segmentos O preencha o indicativo de forma de pagamento (P014 no manual) como 01.
- Modifiquei o case da procedure GeraSegmentoO para que quando o banco for Bradesco gere o Segmento conforme é para o Santander, Sicredi e Safra, colocando 20 posições para o Nosso Número(conforme é no manual) ao invés de 19.
-
ACBrPagForLerTXT.pas
- Adicionei um no Case da procedure LerSegmentoO uma opção específica para o Bradesco.
-
Linha 14 - Trailer de Arquivo. Caracteres, espaços ou mais de uma linha após Trailer.ACBrPagForConversao.pas
- Alterei na procedure BancoToDesc para que o resultado quando Bradesco seja BANCO BRADESCO S.A;
- Adicionei uma procedure DescricaoRetornoBancoBradesco.
As coloco a disposição da comunidade para validação e possível inclusão.
ACBrPagForConversao.pas 103 kB · 0 downloads ACBrPagForGravarTxt.pas 127 kB · 0 downloads ACBrPagForLerTxt.pas 97 kB · 0 downloads
Adiciono também a ACBrPagForArquivo onde setei para false a property TrailingLineBreak da TStringList ArquivoGerado na function Gravar da classe TRegistro para resolver o erro.
Linha 14 - Trailer de Arquivo. Caracteres, espaços ou mais de uma linha após Trailer. apontado pelo validador do Bradesco. -
ACBrPagForGravarTXT.pas
-
Boa tarde.
Peço desculpas pela demora na resposta, mas pode encerrar o tópico, por favor. -
Prezados, bom dia.
Utilizando o validador de arquivos do site do Bradesco para o serviço de Pagamento a Fornecedores disponível neste link https://banco.bradesco/html/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo.shtm
Realizei as seguintes alterações em Units do ACBrPagFor.-
ACBrPagForGravarTXT.pas
- Alterei a procedure GeraRegistro1 para que quando o banco seja o Bradesco e o lote correspondente for de segmentos O preencha o Layout do Lote como 012.
- Modifiquei a procedure GeraRegistro1 para que quando o banco seja o Bradesco e o lote correspondente for de segmentos O preencha o indicativo de forma de pagamento (P014 no manual) como 01.
- Modifiquei o case da procedure GeraSegmentoO para que quando o banco for Bradesco gere o Segmento conforme é para o Santander, Sicredi e Safra, colocando 20 posições para o Nosso Número(conforme é no manual) ao invés de 19.
-
ACBrPagForLerTXT.pas
- Adicionei um no Case da procedure LerSegmentoO uma opção específica para o Bradesco.
-
ACBrPagForConversao.pas
- Alterei na procedure BancoToDesc para que o resultado quando Bradesco seja BANCO BRADESCO S.A;
- Adicionei uma procedure DescricaoRetornoBancoBradesco.
As coloco a disposição da comunidade para validação e possível inclusão.
ACBrPagForConversao.pas ACBrPagForGravarTxt.pas ACBrPagForLerTxt.pas
-
ACBrPagForGravarTXT.pas
-
22 horas atrás, Juliana Tamizou disse:
Boa tarde,
Possível correção enviada ao svn, favor testar.
At.
O problema de não gerar o Trailer de Lote quando Segmento O foi resolvido.
O validador (https://banco.bradesco/html/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo.shtm)ainda apontou alguns(poucos e dos quais alguns nem fazer sentido ao meu ver) problemas, mas isso acredito que seja assunto para outro tópico.
Muito obrigado, pode fechar esse aqui, por favor.- 1
-
Não está compilando @Italo Giurizzato Junior, não esta encontrando a Unit ACBrPagForInterface na Unit ACBrPagForArquivo.pas
Linha do log n a instalação."..\ACBr\Fontes\ACBrPagFor\ACBrPagForArquivo.pas(103) Fatal: F2613 Unit 'ACBrPagForInterface' not found."
ACBr foi atualizado hoje ainda a pouco. -
Boa tarde!
Estou adicionando em nosso sistema opção para que usando o ACBrPagFor gere arquivos com registros para o serviço de Pagamento de Tributos com Código de Barras.
Mas me deparei com um problema!
Para o banco do Bradesco a procedure GeraRegistro5 da Unit ACBrPagForGravarTxt tem uma condição quando o Banco é Bradesco para que só gere o Trailer de Lote se a forma de lançamento do Header do Lote for algumas específicas.pagBradesco: begin wregistro := wregistro + FormatFloat('000000', FQtdeRegistrosLote); if (FPagFor.Lote.Items[I].Registro1.Servico.FormaLancamento in [flLiquidacaoTitulosProprioBanco, flLiquidacaoTitulosOutrosBancos, flDocTed, flPIXTransferencia, flPIXQRCode,flCreditoContaCorrente])then begin wregistro := wregistro + FormatFloat('000000000000000000', FPagFor.Lote.Items[I].Registro5.Valor * 100); wregistro := wregistro + FormatFloat('000000000000000000', FPagFor.Lote.Items[I].Registro5.QtdeMoeda * 100000); // 5 casas decimais wregistro := wregistro + '000000'; wregistro := wregistro + Space(165); wregistro := wregistro + Space(10); end; end;
A forma de lancamento para o Pagamento de Tributos com Código de Barras nos manuais que estou usando é 11, que para o ACBr traduz como flPagamentoContas. Logo a condição não é atendida, o Trailer do Lote não é gerado por completo e da erro na geração do arquivo.
Existe alguma razão para ter essa condição delimitando quais os serviços? O Segmento correspondente para esse serviço é o Segmento O e o mesmo consta no manual.Não consigo anexar os manuais em PDF pois ambos excedem 2MB, mas os consegui nos seguintes links
* Manual Bradesco https://banco.bradesco/assets/pessoajuridica/pdf/jun-19-layout-multipag.pdf
* Manual Febraban https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout padrao CNAB240 V 10 09 - 14_10_21.pdf -
Bom dia a todos.
Precisei utilizar a classe TDeclaracaoImportacao(e derivados) para importar uma DI.
Tenho em mãos o XML da DI e o Impresso do Extrato da DI correspondente.Na impressão as informações relacionadas a carga estão conforme o print.
Quanto importo atualmente os resultados ficam assim:
cargaPesoBruto|Valor Lido (FloatToStr): 11705300 cargaPesoLiquido|Valor Lido (FloatToStr): 9876300 quantidadeVolumes|Valor Lido (FloattoStr): 36,58 cargaPesoBruto|Valor Lido FormatFloat(#,###,##0.00000): 11.705.300,00000 cargaPesoLiquido|Valor Lido FormatFloat(#,###,##0.00000): 9.876.300,00000 quantidadeVolumes|Valor Lido FormatFloat(###0): 37
Fiz algumas pequenas alterações para que eles fiquem assim depois de importar:
cargaPesoBruto|Valor Lido (FloatToStr): 11705,3 cargaPesoLiquido|Valor Lido (FloatToStr): 9876,3 quantidadeVolumes|Valor Lido (FloattoStr): 3658 cargaPesoBruto|Valor Lido FormatFloat(#,###,##0.00000): 11.705,30000 cargaPesoLiquido|Valor Lido FormatFloat(#,###,##0.00000): 9.876,30000 quantidadeVolumes|Valor Lido FormatFloat(###0): 3658
- 1
-
Bom dia a todos.
Precisei fazer algumas poucas alterações no ACBrPagFor para o arquivo que é gerado para o Bradesco(Foi muito pouca coisa mesmo).
Utilizando este Link aqui para validar o arquivo (https://banco.bradesco/html/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo.shtm) me foram apontados alguns erros.O primeiro deles é que o nome do Banco deveria ser me maíusculo e ser BANCO BRADESCO S.A. Então alterei na BancoToDesc da ACbrPagForConversao.pas;
O outro informava que o dígito verificador da conta corrente era inválido. Utilizei este site(https://www.4devs.com.br/validador_conta_bancaria) para validar e o mesmo apontou que a conta era válida. Debugando vi que nas funções GeraRegistro0 e GeraRegistro1 a parte de informações da conta corrente estava caindo no else do case e por isso estava colocando a informação do Tipo de Conta, informação essa que não consta no Layout do Bradesco.(https://banco.bradesco/assets/pessoajuridica/pdf/jun-19-layout-multipag.pdf). Então adicionei uma opção para o Bradesco no case de ambos.
Por fim estava apontando que tinha uma linha a mais depois do fim do arquivo. Alterei a procedure Gravar da classe TRegistro na ACBrPagForArquivo .pas
Em anexo as Units.
ACBrPagForArquivo.pas ACBrPagForConversao.pas ACBrPagForGravarTxt.pas
- 1
- 1
-
1 minuto atrás, Sandro Andre Reghelin disse:
Eu usei Nfse.NotasFiscais.Items[0].XMLOriginal, mas não sei se é o correto...
Tenta ACBrNFSeX.WebService.ConsultaLoteRps.XmlRetorno.
- 1
-
19 horas atrás, Italo Giurizzato Junior disse:
Boa tarde Diego,
Favor atualizar os fontes e faça novos testes.
Maravilha, muito obrigado!
Precisei fazer também uma pequena alteração na ACBrNFSeXProviderABRASFv2.pas pois ao fazer a substituição, mesmo que efetuada com sucesso não estava achando a Tag NfseSubstituidora que vinha na resposta.
Vendo o código da TratarRetornoSubstituiNFSe vi que para a Tag NfseSubstituida era procurada nos elementos filhos de RetSubstituicao, enquanto que a NFSeSubstituidora era procura nos elementos de um nível acima.
Grato, Diego F.- 1
-
29 minutos atrás, junior103 disse:
Olá, estou em busca de modelo do arquivo xml de envio de um NFSe da Pronim. Alguém poderia me disponibilizar por favor?
No caminho \ACBr\Exemplos\ACBrDFe\Schemas\NFSe você encontra os Schemas dos provedores
-
Bom dia.
Precisei fazer uma pequena alteração na ACBrLerXml_ABRASFv2, pois mesmo recebendo no arquivo soap de retorno as informações de Cancelamento e Substituição o componente não estava fazendo a leitura de ambas as informações.
-
8 minutos atrás, Italo Giurizzato Junior disse:
Boa tarde Diego,
Favor atualizar os fontes e faça novos testes.
Note que agora temos uma nova pasta com os schemas dos provedores: ...\Exemplos\ACBrDFe\Schemas\NFSe
Dentro da pasta NFSe temos uma pasta para cada Provedor.
O componente tem agora uma nova propriedade de configuração: Configuracoes.Geral.MontarPathSchema := True/False
Se o valor dela for True e o PathSchemas apontar para a pasta: ...\Exemplos\ACBrDFe\Schemas\NFSe o componente vai encontrar os schemas utilizado pelo provedor de forma automática.
Outra correção feita no componente é que se o provedor não tiver uma URL de homologação definida vai ser apresentada uma mensagem de erro e o envio vai ser abortado.
Entendido, muito obrigado!
- 1
-
22 minutos atrás, Italo Giurizzato Junior disse:
Boa tarde a todos,
Favor atualizar os fontes e faça novos testes.
Note que agora temos uma nova pasta com os schemas dos provedores: ...\Exemplos\ACBrDFe\Schemas\NFSe
Dentro da pasta NFSe temos uma pasta para cada Provedor.
O componente tem agora uma nova propriedade de configuração: Configuracoes.Geral.MontarPathSchema := True/False
Se o valor dela for True e o PathSchemas apontar para a pasta: ...\Exemplos\ACBrDFe\Schemas\NFSe o componente vai encontrar os schemas utilizado pelo provedor de forma automática.
Outra correção feita no componente é que se o provedor não tiver uma URL de homologação definida vai ser apresentada uma mensagem de erro e o envio vai ser abortado.
Entendido @Italo Giurizzato Junior, muito obrigado.
- 1
-
Isso acontece porque o Nó não foi encontrado.
Em outras procedures dessa mesma Unit você vai ver que existe uma validação antesif(not Assigned(ANode)) or (ANode = nil)then Exit;
Relacionado
-
Em 22/09/2021 at 10:14, Italo Giurizzato Junior disse:
Bom dia Diego,
Já inclui na minha lista de tarefas para analisar.
Não sei dizer quanto aos outros, mas descobri que a de Mineiros do Tiete está incorreta mesmo.
A correta para Produção: http://54.207.200.34/nfse.portal.integracao/services.svc
Infelizmente não consegui a de homologação ainda. -
Bom dia.
Estou tendo problemas para emitir NFSe para Mineiros do Tiete.
Debugando pelo programa exemplo cheguei neste trecho de código localizado na ACBrNFSeXWebServiceBase na function Executartry HttpClient.Execute; HttpClient.DataResp.Position := 0; FPRetorno := ReadStrFromStream(HttpClient.DataResp, HttpClient.DataResp.Size); // Alsuns provedores retorna uma string apenas com a mensagem de erro if Pos('Body', FPRetorno) = 0 then FPRetorno := GetSoapBody(FPRetorno); if Pos('ISO-8859-1', FPRetorno) > 0 then begin FPRetorno := RemoverDeclaracaoXML(FPRetorno); FPRetorno := TranslateString(FPRetorno, 0, 28591); end; if Pos('<?xml version="1.0" ?>', FPRetorno) > 0 then FPRetorno := RemoverDeclaracaoXML(FPRetorno); // Alguns provedores não retornam o XML em UTF-8 FPRetorno := ConverteXMLtoUTF8(FPRetorno); // Verifica se o ResultCode é: 200 OK; 201 Created; 202 Accepted // https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html if not (HttpClient.HTTPResultCode in [200..202]) then begin aRetorno := TACBrXmlDocument.Create; if FPRetorno <> '' then begin aRetorno.LoadFromXml(FPRetorno); try ChecarRetorno(aRetorno); finally aRetorno.Free; end; end else raise EACBrDFeException.Create('WebService retornou um XML vazio.'); end; except on E:Exception do begin raise EACBrDFeException.CreateDef(Format(ACBrStr(cACBrDFeSSLEnviarException), [HttpClient.InternalErrorCode, HttpClient.HTTPResultCode, HttpClient.URL] ) + sLineBreak + HttpClient.LastErrorDesc + sLineBreak + Result); end; end; finally HTTPResultCode := HttpClient.HTTPResultCode; InternalErrorCode := HttpClient.InternalErrorCode; end;
Nele para a cidade de Mineiros do Tiete, depois da chamada do HttpClient.Execute a o HttpClient fica com os seguintes valores:
**HttpClient.URL = http://54.207.200.34/nfsewsteste/services.svc;
**HttpClient.HTTPResultCode = 404;
** HttpClient.HeaderResp.Text = HTTP/1.1 404 Not Found Date: Wed, 22 Sep 2021 12:42:11 GMT Content-Length: 0 Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET;
** HttpClient.DataResp.Size = 0;
Acredito que isso quer dizer que a URL para qual estou fazendo o envio está incorreta.
Testei então, pelo programa exemplo, as outras cidades que constam no ACBrNFSeXServicos.ini com o provedor GovBR e obtive os seguintes resultados:
* Cidade de São Gabriel deu erro de Timeout de Requisição(12002 - TimeOut de Requisição) e não salvou soap de resposta.
** HttpClient.URL = http://191.36.145.163/nfsewsteste/services.svc
** HttpClient.HTTPResultCode = 0 ;
** HttpClient.HeaderResp.Text = "";
** HttpClient.DataResp.Size = 0 ;
* Cidade de Bocaiuva do Sul
** HttpClient.URL = http://18.230.172.116/nfsewsteste/services.svc;
** HttpClient.HTTPResultCode = 404;
** HttpClient.HeaderResp.Text = HTTP/1.1 404 Not Found Date: Wed, 22 Sep 2021 12:38:54 GMT Content-Length: 0 Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET;
** HttpClient.DataResp.Size = 0;
Alguém emite NFS para essas cidades ?
Anexo também os arquivos gerados pelo programa exemplo para as cidades.
GovBR - Mineiros Tiete.zip
GovBR - Bocaiuva do Sul.zip -
26 minutos atrás, Diego A. Folieni disse:
Mas pelo que pude entender essa informação não é utilizada posteriormente no método que chamou.
A procedure Execute é chamada dentro da Executar e a mesma retorna uma String contendo o XML de Retorno.
E é esse XML de retorno que ele válida então esse erro acaba sendo ignorado.** A procedure Execute é chamada dentro do método Executar através de HttpClient.Execute e o retorno da Executar é uma String contendo o XML de Retorno.
-
15 horas atrás, BigWings disse:
Ao contrário, o try..except seria pra tratar a exceção, nesse caso o método não trata, se ocorrer uma exceção ela será devolvida ao método que chamou.
Mas pelo que pude entender essa informação não é utilizada posteriormente no método que chamou.
A procedure Execute é chamada dentro da Executar e a mesma retorna uma String contendo o XML de Retorno.
E é esse XML de retorno que ele válida então esse erro acaba sendo ignorado. -
Estou recebendo um retorno em branco/vazio ao tentar emitir NFSe para a cidade de Mineiros do Tiete usando o programa exemplo.
Enquanto aguardava retorno do Provedor a prefeitura para que a mesma me passase continuei tentando no programa exemplo, na esperança de ser alguma configuração que passei errado, ou algo do gênero, alguma coisa que pudesse corrigir sem precisar aguardar a boa vontade do pessoal do provedor.
Enquanto debugava o método Emitir do componente no Programa Exemplo, cheguei nas seguintes situações:
* A Unit ACBrNFSeXWebServiceBase possui a função chamada Executar. Dentro dela, tem a chamada HttpClient.Execute. Entrando nela através do F7 chego a seguinte procedure:procedure TDFeHttpWinHttp.Execute; begin inherited; // Enviando, dispara exceptions no caso de erro // try FWinHTTPReqResp.Execute(DataResp); HeaderResp.Text := FWinHTTPReqResp.HeaderResp.Text; finally FpHTTPResultCode := FWinHTTPReqResp.HttpResultCode; FpInternalErrorCode := FWinHTTPReqResp.InternalErrorCode; end; // DEBUG // //DataResp.SaveToFile('c:\temp\ReqResp.xml'); end;
Considerando o comentário, não deveria ser um try except ao invés de try finally ?
Nela para mim os valores de FWinHTTPReqResp.HttpResultCode é 404 e FWinHttpReqResp.HeaderResp.Text é HTTP/1.1 404 Not Found Date: Mon, 20 Sep 2021 16:36:09 GMT Content-Length: 0 Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET.
Ainda assim considera como sucesso a requisição e trata o Retorno "Bem Sucedido".
Isso está correto?
* Na Unit ACBrNFSeXWebserviceBase, na procedure Executar tem o seguinte trecho de código:
HttpClient.Execute; HttpClient.DataResp.Position := 0; FPRetorno := ReadStrFromStream(HttpClient.DataResp, HttpClient.DataResp.Size); // Alsuns provedores retorna uma string apenas com a mensagem de erro if Pos('Body', FPRetorno) = 0 then FPRetorno := GetSoapBody(FPRetorno); if Pos('ISO-8859-1', FPRetorno) > 0 then begin FPRetorno := RemoverDeclaracaoXML(FPRetorno); FPRetorno := TranslateString(FPRetorno, 0, 28591); end; if Pos('<?xml version="1.0" ?>', FPRetorno) > 0 then FPRetorno := RemoverDeclaracaoXML(FPRetorno); // Alguns provedores não retornam o XML em UTF-8 FPRetorno := ConverteXMLtoUTF8(FPRetorno); // Verifica se o ResultCode é: 200 OK; 201 Created; 202 Accepted // https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html if not (HttpClient.HTTPResultCode in [200..202]) then begin aRetorno := TACBrXmlDocument.Create; if FPRetorno <> '' then begin aRetorno.LoadFromXml(FPRetorno); try ChecarRetorno(aRetorno); finally aRetorno.Free; end; end else raise EACBrDFeException.Create('WebService retornou um XML vazio.'); end;
Nele, a função GetSoapBody é assim:
aXml := SeparaDados(Response, 'Body'); if aXml = '' then aXml := '<a>' + '<ListaMensagemRetorno>' + '<MensagemRetorno>' + '<Codigo>' + '</Codigo>' + '<Mensagem>' + Response + '</Mensagem>' + '<Correcao>' + '</Correcao>' + '</MensagemRetorno>' + '</ListaMensagemRetorno>' + '</a>'; Result := aXml;
Então mesmo que FPResponse seja vazio(que está sendo o meu caso)ele vai passar um valor para FPResponse e assim não cai na exceção se o retorno vier vazio.
-
14 minutos atrás, inods disse:
Bom dia, Diego
Verifiquei o arquivo ACBrNFSeXServicos.ini, e consta para Taubate [3554102] o provedor da Conam.
Configurei para essa cidade (Taubate), mas no exemplo do ACBrNFSeX ocorre esse erro "Nenhum provedor encontrado".
Bom dia.
Antes de indicar o código do município no componente faça a chamada do método LerCidades. -
1 hora atrás, inods disse:
Olá Italo,
Tentei pelo exemplo do ACBrNFSeX, porém a mensagem que recebo nele é: "Nenhum provedor encontrado".
Analisando o arquivo cidades.ini verifiquei que para taubaté o servidor é da conam.
Isto não está ocorrendo devido as configurações do webservice. SSLLib, CryptLib etc?
O ACBrNFSeX não usa o cidades.ini, ele usa o ACBrNFSeXServicos.ini
Caixa de Sugestões do Papo Pro ACBr
em Dúvidas Gerais sobre o ACBr
Postado
Para polemizar um pouco(ou não?) talvez trazer o Adriano Santos para comentar(e comparar) o Firemonkey com as principais formas de desenvolvimento para Mobile presentes no mercado(FireMokey Vs Flutter Vs Reac Native)?