Jump to content
Fivewin Brasil

Boletos com ACBr DLL


HERGON

Recommended Posts

#include "Struct.ch"
#include "Fivewin.ch"

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

Procedure Main()
   TACBrBol():New()

Return

/*
TipoResposta: Define qual será o formato da resposta.
0 = Formato INI (Padrão);
1 = Formato XML;
2 = Formato JSON.

CodificacaoResposta: Define qual será a codificação das respostas.
0 = UTF8 (Padrão);
1 = ANSI;

LogNivel: Define qual o nível do log da biblioteca.
0 = Nenhum;
1 = Simples;
2 = Normal;
3 = Completo;
4 = Paranoico;

LogPath: O Path onde será salvo o arquivo de log da biblioteca (Padrão Vazio)

[Principal]
TipoResposta=0
LogNivel=4
LogPath=c:\correio\
*/


CLASS TACBrBol
   DATA hBol INIT Hash()
   DATA oBol
   DATA cFileIni

   METHOD New()  CONSTRUCTOR
   METHOD Cedente()
   METHOD Banco()
   METHOD Conta()
   METHOD Config()
   METHOD Titulo(nI)
   METHOD Create_Ini()

ENDCLASS

**============================================================
METHOD New() CLASS TACBrBol
   Local nI

   Set Default To "c:\Temp\"

   ::cFileIni := "C:\Temp\Titulos.ini" //nome o onde quiser
   ::oBol := ACBrBoleto():New() //"C:\Temp\teste.INI",'')

   ::Config()
   ::Cedente()
   ::Banco()
   ::Conta()

   For nI:=1 to 4 //quantidade de boleto
      ::Titulo(nI)
   Next
   ::Create_Ini()

   ::oBol:LimparLista()
   //::oBol:SetDiretorioArquivo("c:\temp\","Boletopdf")
   ::oBol:IncluirTitulos(::cFileIni)
   ::oBol:GerarPDF()
   //::oBol:Imprimir()

   ::oBol:GerarRemessa("c:\temp\",::cFileIni,"File.REM")

   //::oBol:LerRetorno("C:\temp\","file.ret")
    ::oBol:LimparLista()
    ::oBol := nil

    MsgInfo("Boletos gerado com sucesso !")
Return Self

**============================================================
METHOD Config() CLASS TACBrBol
   ::oBol:ConfigGravarValor("Principal","LogNivel","4")
   ::oBol:ConfigGravarValor("Principal","LogPath","c:\temp\")

   ::oBol:ConfigGravarValor("Sistema","Nome","meu soft")
   ::oBol:ConfigGravarValor("Sistema","Versao","1.0")
   ::oBol:ConfigGravarValor("Sistema","Data","29/09/2020")
   ::oBol:ConfigGravarValor("Sistema","Descricao","Escreve aqui qq coisa")


   ::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","DirLogo","C:\Temp\")
   ::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","MostrarPreview","1")
   ::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","MostrarProgresso","1")
   //duas formas, aqui ou pelo metodo :SetDiretorioArquivo(
   ::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","NomeArquivo","c:\temp\Bol_PDF.pdf")
   ::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","NumeroCopias","1")
   //::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","PrinterName","Sua_impressora")
   //::oBol:ConfigGravarValor("BoletoBancoFCFortesConfig","SoftwareHouse","Sua_Empresa")

   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","DataArquivo","29/09/2020")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","DirArqRemessa","C:\Temp\")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","DirArqRetorno","C:\Temp\")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","DirHomologacao","0")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","ImprimirMensagemPadrao","1")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","LayoutRemessa","1")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","LeCedenteRetorno","0")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","NomeArqRemessa","File_Remessa")
   ::oBol:ConfigGravarValor("BoletoDiretorioConfig","NomeArqRetorno","File_Retorno")
   //::oBol:ConfigGravarValor("BoletoDiretorioConfig","NomeroArquivo","0")

   ::oBol:ConfigGravar()
   ::oBol:ConfigLer()

Return Nil


**============================================================
METHOD Cedente() CLASS TACBrBol
   ::hBol["Cedente"] := Hash()

   ::hBol["Cedente","Nome"]           := "SAO JOAO LTDA."
   ::hBol["Cedente","CNPJCPF"]        := "35373107000160"
   ::hBol["Cedente","Logradouro"]     := "Rua Evaristo Mendes"
   ::hBol["Cedente","Numero"]         := "200"
   ::hBol["Cedente","Bairro"]         := "Centro"
   ::hBol["Cedente","Cidade"]         := "Tatui"
   ::hBol["Cedente","CEP"]            := "18.270-000"
   ::hBol["Cedente","Complemento"]    := "Sala 10"
   ::hBol["Cedente","UF"]             := "SP"
   ::hBol["Cedente","RespEmis"]       := "0"
   ::hBol["Cedente","TipoPessoa"]     := "1"
   ::hBol["Cedente","CodigoCedente"]  := "123456"
   ::hBol["Cedente","LayoutBol"]      := "1"
   ::hBol["Cedente","CaracTitulo"]    := "0"
   ::hBol["Cedente","TipoCarteira"]   := "0"
   ::hBol["Cedente","TipoDocumento"]  := "0"
   ::hBol["Cedente","Modalidade"]     := "17"
   ::hBol["Cedente","CodTransmissao"] := "10"
   ::hBol["Cedente","Convenio"]       := "123456"

Return nil
/*
 LayoutBol:= 0 - 6
 0=
 1=c/canhoto-bloco
 2=dois boletos s/recibo
 3=dois boletos c/recibo
 4=um boletos c/recibo
*/

**============================================================
METHOD Banco() CLASS TACBrBol
   ::hBol["Banco"] := Hash()

   ::hBol["Banco","Numero"]               := "001"
   ::hBol["Banco","CNAB"]                 := "1"
   ::hBol["Banco","IndiceACBr"]           := "1"
   ::hBol["Banco","NumeroCorrespondente"] := "200"
   ::hBol["Banco","VersaoArquivo"]        := "0"
   ::hBol["Banco","VersaoLote"]           := "0"

Return nil

**============================================================
METHOD Conta() CLASS TACBrBol
   ::hBol["Conta"] := Hash()

   ::hBol["Conta","Conta"]                         := "011234567"
   ::hBol["Conta","DigitoConta"]                   := "1"
   ::hBol["Conta","Agencia"]                       := "0734"
   ::hBol["Conta","DigitoAgencia"]                 := "2"
   ::hBol["Conta","DigitoVerificadorAgenciaConta"] := "0"

Return nil


METHOD Titulo(nCt) CLASS TACBrBol
   Local cTitulo := "Titulo"+AllTrim(Str(nCt,2))

   ::hBol[cTitulo] := Hash()
   ::hBol[cTitulo,"NumeroDocumento"]    := "000010"
   ::hBol[cTitulo,"NossoNumero"]        := "0000001"
   ::hBol[cTitulo,"Carteira"]           := "20"
   ::hBol[cTitulo,"ValorDocumento"]     := "100,50"
   ::hBol[cTitulo,"Vencimento"]         := "10/09/2010"
   ::hBol[cTitulo,"ValorMoraJuros"]     := "0,50"
   ::hBol[cTitulo,"DataDocumento"]      := "10/08/2010"
   ::hBol[cTitulo,"DataProcessamento"]  := "10/08/2010"
   ::hBol[cTitulo,"DataAbatimento"]     := "05/09/2010"
   ::hBol[cTitulo,"DataDesconto"]       := "07/09/2010"
   ::hBol[cTitulo,"DataMoraJuros"]      := "12/09/2010"
   ::hBol[cTitulo,"DiasDeProtesto"]     := "0"
   ::hBol[cTitulo,"DataProtesto"]       := "10/10/2010"
   ::hBol[cTitulo,"DataMulta"]          := "10/10/2010"
   ::hBol[cTitulo,"ValorAbatimento"]    := "5,00"
   ::hBol[cTitulo,"ValorDesconto"]      := "0,50"
   ::hBol[cTitulo,"ValorMoraJuros"]     := "0,55"
   ::hBol[cTitulo,"ValorIOF"]           := "3,50"
   ::hBol[cTitulo,"ValorOutrasDespesas"] := "2,50"
   ::hBol[cTitulo,"MultaValorFixo"]     := "0"
   ::hBol[cTitulo,"PercentualMulta"]    := "05,00"
   ::hBol[cTitulo,"LocalPagamento"]     := "Pagável em qualquer agência bancária mesmo após o vencimento"
   ::hBol[cTitulo,"Especie"]            := "DM"
   ::hBol[cTitulo,"EspecieMod"]         := "R$"
   ::hBol[cTitulo,"Sacado.NomeSacado"]  := "Sacado Teste"
   ::hBol[cTitulo,"Sacado.CNPJCPF"]     := "999.999.999.99"
   ::hBol[cTitulo,"Sacado.Pessoa"]      := "0"
   ::hBol[cTitulo,"Sacado.Logradouro"]  := "Rua Jose Rodrigues"
   ::hBol[cTitulo,"Sacado.Numero"]      := "100"
   ::hBol[cTitulo,"Sacado.Bairro"]      := "Jardim Moderno"
   ::hBol[cTitulo,"Sacado.Complemento"] := "Casa"
   ::hBol[cTitulo,"Sacado.Cidade"]      := "Tatui"
   ::hBol[cTitulo,"Sacado.UF"]          := "SP"
   ::hBol[cTitulo,"Sacado.CEP"]         := "18277.500"
   ::hBol[cTitulo,"Sacado.Email"]       := "teste@email.com"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.NomeAvalista"] := "Nome do Avalista"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.CNPJCPF"] := "9999999999"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Logradouro"] := "Rua das Flores"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Numero"] := "99"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Complemento"] := "Casa"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Bairro"] := "Centro"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Cidade"] := "Tatui"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.UF"] := "SP"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.CEP"] := "9999999"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Email"] := "teste@email.com"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.Fone"] := "(99)999999999"
   ::hBol[cTitulo,"Sacado.SacadoAvalista.InscricaoNr"] := "9999999"
   ::hBol[cTitulo,"Mensagem"]   := "teste1|teste2"
   ::hBol[cTitulo,"Instrucao1"] := "10"
   ::hBol[cTitulo,"Instrucao2"] := "11"
   ::hBol[cTitulo,"Aceite"]     := "1"
   ::hBol[cTitulo,"OcorrenciaOriginal.TipoOcorrencia"] := "0"
   ::hBol[cTitulo,"Parcela"] := "1"
   ::hBol[cTitulo,"TotalParcelas"] := "1"
   ::hBol[cTitulo,"SeuNumero"] := "000020"
   ::hBol[cTitulo,"TipoDiasProtesto"] := "1"
   ::hBol[cTitulo,"TipoImpressao"] := "1"
   ::hBol[cTitulo,"CodigoMora"] := "1"
   ::hBol[cTitulo,"TipoDesconto"] := "0"
   ::hBol[cTitulo,"TipoDesconto2"] := "0"

Return nil


**============================================================
METHOD Create_Ini() CLASS TACBrBol
   Local oIni,oGrupo,oData

   If File(::cFileIni)
      FErase(::cFileIni)
   Endif

   //gera o arquivo ini para ler e gerar o boleto
   INI oIni FILE ::cFileIni
       For EAch oGrupo IN ::hBol
          For EAch oData IN oGrupo:Value
             SET SECTION oGrupo:Key ENTRY oData:Key TO Trim(oData:Value) OF oIni
          Next
       Next
   ENDINI
Return Nil

Veja se ajuda !

Veja no mettodo New() chama ::oBol:GerarRemessa("c:\temp\",::cFileIni,"File.REM")

Link to comment
Share on other sites

5 horas atrás, sygecom disse:

Acredito que esse metodo postado pelo colega, usa o ACBRMONITOR e não a DLL, mas não tenho certeza, a ultima vez que pesquisei no Nov/2020 ainda não tinha versão do ACBR BOLETO para DLL.

Amigo vc equivocou-se, usa apenas a dll e o prg que é fornecido com a dll. Está rotina NÃO USA O ACBRMONITOR.

Link to comment
Share on other sites

40 minutos atrás, sygecom disse:

Que ótimo mestre, essa DLL para boletos conseguimos assinando o plano de suporte do ACBR?

Sim amigo, está tudo lá, aliás foi o único produto que usei da acbr até agora, funciona bem, está implantado no cliente. Muito bom.

Link to comment
Share on other sites

13 horas atrás, sygecom disse:

Valeu colega, poderia compartilhar como chama a DLL do ACBR no xbase ?

Jovem, basta copiar a dll na mesma pasta do seu sistema, que a classe ACBrBoleto():New() que é fornecido com dll, disponível para download, faz o devido acesso. Ok.

Link to comment
Share on other sites

  • 1 year later...

Boa tarde!   

 

Estou tentando implementar o acbr boletos  e estou sem conseguir gerar o numero de lote no arquivo de remessa    sempre  retoirna o mesmo numero de sequencial de arquivo lote. 

oBoleto:GerarRemessa(".\remessa\rem\",2 ,"arquivo.rem")


* metoda  estar assim 
METHOD GerarRemessa(eDir, eNumArquivo, eNomeArq) CLASS ACBrBoleto
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_GerarRemessa", hb_StrToUTF8(eDir), eNumArquivo, hb_StrToUTF8(eNomeArq))
    ::CheckResult(hResult)
RETURN nil


Toda ajuda será bem vinda!   

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...