Jump to content

dev botao

Exemplo Harbour Acbrlib Boleto


Go to solution Solved by Rafael Dias,
  • Este tópico foi criado há 1944 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Administradores
Posted

Boa tarde

As libs para  xHarbour foram feitas em parceria com o colega @jorge andrade, se tiver interesse podemos lhe auxiliar a iniciar também.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Posted

Claro que gostaria, pelo que vi, foi criado uma classe para chamadas a DLL, seria basicamente alterar as funções da classe, correto? como faço? como entro em contato com o criador da classe para sat? obrigado

  • Fundadores
Posted

Você pode baixar os Demos e classes, pelo SVN, usando essa URL

http://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Harbour/

No Link abaixo, tem instruções de como baixar os fontes

https://www.projetoacbr.com.br/fontes/

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Posted

Olá estou fazendo um teste para gerar uma html de boletos, apresenta a seguinte mensagem:

"|Error /0  Nome do cedente não informado (Quit)                                  |
|Error /0  Nome do cedente não informado  "

Gostaria de saber como resolver no boleto.ini esta assim:

[Cedente]
Nome=Empresa teste
CNPJCPF=99.999.999/9999-99
Logradouro=Rua Evaristo Mendes 

Obrigado JMSilva

 

  • Moderadores
Posted
11 minutos atrás, Silva José disse:

Bom dia

Para passar os dados do cedente utilize o método ConfigurarDados, passando o arquivo .ini como parâmetro:

https://acbr.sourceforge.io/ACBrLib/BOLETO_ConfigurarDados.html

Para passar os dados do Título utilize o método:

https://acbr.sourceforge.io/ACBrLib/BOLETO_IncluirTitulos.html

  • Like 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Posted
1 hora atrás, José M. S. Junior disse:

Bom dia

Para passar os dados do cedente utilize o método ConfigurarDados, passando o arquivo .ini como parâmetro:

https://acbr.sourceforge.io/ACBrLib/BOLETO_ConfigurarDados.html

Para passar os dados do Título utilize o método:

https://acbr.sourceforge.io/ACBrLib/BOLETO_IncluirTitulos.html

Júnior, está dando pau no acesso:

503 Service Unavailable

No server is available to handle this request.

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Posted
9 minutos atrás, José M. S. Junior disse:

Pode ser algo no acesso local... Veja a definição do método:

image.png

Abriu no IE. Obrigado

  • Like 1

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Posted
4 horas atrás, José M. S. Junior disse:

Bom dia

Para passar os dados do cedente utilize o método ConfigurarDados, passando o arquivo .ini como parâmetro:

https://acbr.sourceforge.io/ACBrLib/BOLETO_ConfigurarDados.html

Para passar os dados do Título utilize o método:

https://acbr.sourceforge.io/ACBrLib/BOLETO_IncluirTitulos.html

Olá com base nas informações acima, consegui  gerar um boleto de teste pela ACBr, porém só foi possível na opção Imprimir, as opções de GerarHTML e GerarPDF estão com problemas, possivelmente causado pelo método SetDiretorioArquivo.

Encontrei dois Bugs, que gostaria que fosse analisado pela equipe técnica ACBr:

Primeiro:

METHOD New(eArqConfig, eChaveCrypt) CLASS ACBrBoleto
    local hResult, buffer, bufferLen, oErr

    ::hHandle := DllLoad(ACBrLIB)
    if Empty(::hHandle) // = nil
        oErr := ErrorNew()
        oErr:Severity := ES_ERROR
        oErr:Description := "Erro a carregar a dll [" + ACBrLIB + "]"
        Throw(oErr)
    endif
    hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt))
    ::CheckResult(hResult)
    RETURN Self

Este erro só acontece se não encontrar a DLL, o retorno da variável e um valor nulo mas não é "nil" , por isso acredito que uso da função EMPTY() se faz necessária ao invés de   if ::hHandle = nil

Segundo: 

METHOD SetDiretorioArquivo(eDir, eArq) CLASS ACBrBoleto
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_SetDiretorioArquivo", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

Observa-se que este método recebe Diretório e nome do arquivo, eDir e eArq respectivamente, porém é ignorado pelo método causa erro -6 e travamento da aplicação

Acredito que certo seria, 

 hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_SetDiretorioArquivo", hb_StrToUTF8(eDir), hb_StrToUTF8(eArq)) //@buffer, @bufferLen)

Desta forma resolve o erro, mas nos métodos GravaHTML() e GravaPDF() TRAVA A APLICAÇÃO, Veja os arquivos anexo.

att

José M. Silva

 

 

ACBrLibBoleto-20191021A.log ACBrLibBoleto-20191021.log

Posted (edited)
15 horas atrás, Daniel Simoes disse:

Essas modificações são nos fontes em Harbour, correto ?

Se SIM, você consegue corrigir e enviar os arquivos modificados ?

Sim, na Classe ACBrBoleto, o Método :New(), resolve mas o o método  :SetDiretorioArquivo(eDir, eArq) não, porque precisa de intervenção no arquivo ACBrBoleto32.dll (DllCall), para descobrir a causa do travamento, a alteração esta postada acima!

Aproveitando o Método :ConfigGravar(eArq) também não funciona, e o problema também esta na DLL. Interessante que Log registra que tudo correu sem problemas. kkk . vaje log abaixo 

Obs: Testei com e sem a path do arquivo de destino.

22/10/19 08:53:42:519 - TLibBoletoConfig.Gravar: c:\correio\log\Zeka.ini //registra que criou mas não cria o arquivo
22/10/19 08:53:42:532 - TLibBoletoConfig.Gravar - Feito

Sugestão:  Sugiro verificar na DLL o método :ConfigLer(), Porque ele grava o arquivo corretamente, porém pelo nome deveria apenas ler. 

Segue o arquivo alterado, mas precisa ajustar a DLL.

JMSilva

 

ACBrBoleto.prg

Edited by Silva José
Posted
7 horas atrás, Silva José disse:

Sim, na Classe ACBrBoleto, o Método :New(), resolve mas o o método  :SetDiretorioArquivo(eDir, eArq) não, porque precisa de intervenção no arquivo ACBrBoleto32.dll (DllCall), para descobrir a causa do travamento, a alteração esta postada acima!

Aproveitando o Método :ConfigGravar(eArq) também não funciona, e o problema também esta na DLL. Interessante que Log registra que tudo correu sem problemas. kkk . vaje log abaixo 

Obs: Testei com e sem a path do arquivo de destino.

22/10/19 08:53:42:519 - TLibBoletoConfig.Gravar: c:\correio\log\Zeka.ini //registra que criou mas não cria o arquivo
22/10/19 08:53:42:532 - TLibBoletoConfig.Gravar - Feito

Sugestão:  Sugiro verificar na DLL o método :ConfigLer(), Porque ele grava o arquivo corretamente, porém pelo nome deveria apenas ler. 

Segue o arquivo alterado, mas precisa ajustar a DLL.

JMSilva

 

ACBrBoleto.prg 10 kB · 4 downloads

No prg acima coloquei uma instrução para teste e esqueci de retirar, method IncluirTitulos(), hResult := 0. 

METHOD IncluirTitulos(eArquivoIni, eTpSaida) CLASS ACBrBoleto
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_IncluirTitulos", hb_StrToUTF8(eArquivoIni), hb_StrToUTF8(eTpSaida), @buffer, @bufferLen)
    ::CheckResult(hResult)
    //hResult := 0   //não existe
    RETURN ::ProcessResult(buffer, bufferLen)

ok

  • Moderadores
Posted

Bom dia @Silva José

O componente utiliza o diretório configurado no arquivo ACBrLib.ini para geração do .pdf ou .html, conforme abaixo:

[BoletoBancoFCFortesConfig]
...
NomeArquivo=C:\PDf\Arquivo1.pdf

Neste caso, pode utilizar os Métodos de Configuração e Leitura para alterar o arquivo ACBrLib.ini, conforme exemplo do demo.

https://acbr.sourceforge.io/ACBrLib/MetodosdeConfiguracao18.html

 

O método BOLETO_SetDiretorioArquivo(...) é um método independente, deve utilizá-lo antes de cada método BOLETO_GerarPDF, se desejar alterar o nome do arquivo. Este método altera o diretório e Nome do arquivo, para cada pdf ou html a ser gerado. Mas não precisa utilizar os métodos de Configuração neste caso.

  • Like 2
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Solution
Posted

O método de gravação do ini e de leitura esta funcionando correto o mesmo método é usado em todas as dll.
Mandei uma correção para a classe Boleto para o método SetDiretorioArquivo o mesmo estava incorreto.

 

Obs.: Agora que vi o seu problema é quando manda salvar com outro nome correto, pelo que vi realmente esta incorreto vou mandar uma atualização.

 

  • Like 2

 

Posted
5 horas atrás, Rafael Dias disse:

O método de gravação do ini e de leitura esta funcionando correto o mesmo método é usado em todas as dll.
Mandei uma correção para a classe Boleto para o método SetDiretorioArquivo o mesmo estava incorreto.

 

Obs.: Agora que vi o seu problema é quando manda salvar com outro nome correto, pelo que vi realmente esta incorreto vou mandar uma atualização.

 

Show, Funcionou corretamente!

  • Like 2
  • Este tópico foi criado há 1944 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...