Ir para conteúdo
  • Cadastre-se

Silva José

Membros
  • Total de ítens

    6
  • Registro em

  • Última visita

Posts postados por Silva José

  1. 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!

    • Curtir 2
  2. 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

  3. 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

  4. 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

  5. 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

     

×
×
  • 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.