Migrar Boletos CobreBemx Para ACBr Boleto

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cacg57
Usuário Nível 1
Usuário Nível 1
Mensagens: 17
Registrado em: 28 Nov 2009 13:06
Localização: Florianopolis - SC

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por cacg57 »

Senhores, estou com um problema sério na impressão de boletos, empresa sem poder emitir nenhum porque a linha digitavel sai errada.
Usava o Cobrebemx para impressão em xHarbour, funcionava perfeitamente até fevereiro.
Estou tentando imprimir em ACBr Boleto usando a DLL ACBrBoleto32.dll
Infelizmente não estou conseguindo gerar, e o pessoal da ACBr não conseguem me orientar em xHarbour.
Se alguem puder me orientar, agradeço muito
Avatar do usuário
developer
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 09 Nov 2024 23:45
Localização: Londrina/PR

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por developer »

Você mencionou que parou de funcionar em fevereiro?
Será que não é somente questão de fator de vencimento? Foi justamente neste período que mudou.
cacg57
Usuário Nível 1
Usuário Nível 1
Mensagens: 17
Registrado em: 28 Nov 2009 13:06
Localização: Florianopolis - SC

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por cacg57 »

Sim, o problema é o fator de vencimento
Acontece que usamos o cobrebemx e o mesmo encerrou as atividades e não dá mais manutenção
cacg57
Usuário Nível 1
Usuário Nível 1
Mensagens: 17
Registrado em: 28 Nov 2009 13:06
Localização: Florianopolis - SC

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por cacg57 »

Estou tentando usar a ACBr para imprimir boletos
Preciso de dicas para montar o TXT do Monitor
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por JoséQuintas »

Qual o banco mais urgente?
Tem alguns bancos no boletoclass ?

O cobrebem dá pra enganar, mas não muito.
Seria usar um vencimento fake, o que vai gerar visual errado, mas código de barras e digitável certo.
Usar vencimento - 9000
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por JoséQuintas »

Outra alternativa, se for mingw, é analisar a lib, e tentar trocar alguma função, no chute mesmo.
Talvez dê com bcc.
exportar a lista de funções pra ver se alguma poderia ser trocada.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por JoséQuintas »

Faço isso com fivewin.
Mas no meu caso é pra excluir função mesmo.
Por exemplo, excluo toda parte de base de dados, trocando por função vazia.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por jelias »

Olá amigos,

cacg57 eu tive o mesmo problema, fui usuário da CobreBemX por muitos anos e fui obrigado a migrar. Devido o curto tempo, ainda não consegui usar DLL ACBrBoleto32.dll. Caso tenha sucesso e puder compartilhar, lhe agradeço antecipadamente.

Consegui fazer tudo gerando o .INI para o AcbrMonitor e está funcionando sem nenhum problema.

Código: Selecionar todos

FUNCTION GERACEDENTE(cCodBanco)
LOCAL sFile:=aw_acbr+"SAINFE-C"  // Arquivo de retornos do ACBR
LOCAL eFile:=aw_acbr+"ENTNFE-C"  // Arquivo de envios do ACBR
LOCAL cCHR:=CHR(13)+CHR(10)

// Confirma os registros corretos no banco de dados a partir do contas a receber
sele AL_EMPRE
DBSETORDER(1)
DBSEEK(aw_emp)

sele AL_BANCO
DBSETORDER(1)
DBSEEK(cCodBanco)

if AT("-",numcom)=0
   cConta=ALLTRIM(numcom)
   cDigitoConta=""
else
   cConta=LEFT(numcom,(AT("-",numcom)-1))
   cDigitoConta=SUBS(numcom,(AT("-",numcom)+1) )
end
if AT("-",agenci)=0
   cAgencia=ALLTRIM(agenci)
   cDigitoAgencia=""
else
   cAgencia=LEFT(agenci,(AT("-",agenci)-1))
   cDigitoAgencia=SUBS(agenci,(AT("-",agenci)+1) )
end
   
cLine:= 'BOLETO.ConfigurarDados("'+cCHR
cLine+= "[Cedente]"+cCHR
cLine+= "Nome="+ALLTRIM(AL_EMPRE->nomeem)+cCHR
cLine+= "CNPJCPF="+ALLTRIM(AL_EMPRE->cgcemp)+cCHR
cLine+= "Logradouro="+ALLTRIM(AL_EMPRE->endere)+cCHR
cLine+= "Numero="+ALLTRIM(AL_EMPRE->numero)+cCHR
cLine+= "Bairro="+ALLTRIM(AL_EMPRE->bairro)+cCHR
cLine+= "Cidade="+ALLTRIM(AL_EMPRE->cidade)+cCHR
cLine+= "Cep="+ALLTRIM(AL_EMPRE->cepemp)+cCHR
cLine+= "Telefone=(35) 3831-6400"+cCHR
cLine+= "Complemento="+cCHR
cLine+= "UF=MG"+cCHR
cLine+= "RespEmis=0"+cCHR                                 //[0] Cliente Emite  [1] Banco Emite    [2] Banco Reemite [3] Banco nÒo Reemite
cLine+= "TipoPessoa=1"+cCHR                               //[0] Pessoa Fisica  [1] Pessoa Juridica [2] Outros
cLine+= "CodigoCedente="+ALLTRIM(AL_BANCO->codced)+cCHR
cLine+= "LayoutBol=5"+cCHR                                //[0] Padrao  [1] Carne  [2] - Fatura (Nao implementado = Padrao)    [3] Padrao Entrega
cLine+= "Modalidade=019"+cCHR
cLine+= "CaracTitulo=5"+cCHR                              //[0] Cobranca Simples [1] Cobranca Vinculada [2] Cobranca Caucionada [3] Cobranca Descontada [4] Cobrnaca Vendor
cLine+= "TipoCarteira=1"+cCHR
cLine+= "TipoDocumento=0"+cCHR
cLine+= "Convenio="+ALLTRIM(AL_BANCO->codced)+cCHR
cLine+= cCHR
cLine+= "[Conta]"+cCHR
cLine+= "Conta="+cConta+cCHR
cLine+= "DigitoConta="+cDigitoConta+cCHR
cLine+= "Agencia="+cAgencia+cCHR
cLine+= "DigitoAgencia="+cDigitoAgencia+cCHR
cLine+= cCHR
cLine+= "[Banco]"+cCHr
cLine+= "Numero=1"+cCHR
cLine+= "CNAB=0"+'")'+cCHR
   
//cLine+= "IndiceACBr="  --> Este campo não é obrigatório, desde que o número do banco seja informado. Caso ambos sejam informados, o Número terá prioridade.
   
cRandom=TRANS(HB_RandomInt(9999999999),"9999999999")+".TXT"  // Gerar codigo aleatorio
cFileEnvio=(eFile+cRandom)
cFileRetorno=(sFile+cRandom)
   
HB_MEMOWRIT( cFileEnvio, cLine )
   
nCont:=1
do whil !FILE(cFileRetorno) .and. nCont <= 40
   inkey(0.5); nCont++
end
   
if !FILE(cFileRetorno)
   MENSAGEM("Portal da NF-e nao retornou a solicitacao, tente novamente!",3)
   FERASE( cFileRetorno )
   retu
end
   
gTexto:=MEMOREAD(cFileRetorno)
if !AT("OK:",gTexto)>0
   MENSAGEM("Erro ao configurar o cedente do BOLETO, verifique!",3)
   EDITORACBR(gTexto,05,05,20,78,)
end
FERASE( cFileRetorno )
   
//--------------------------------------------------------------------------------------------------------------
// Função: Gera um arquivo txt dos boletos
FUNCTION GERABOLETOS(aBoletos,lImprime)
LOCAL aTEL:=SAVESCREEN(00,00,24,79)
LOCAL cCHR:=CHR(13)+CHR(10)
LOCAL sFile:=aw_acbr+"SAINFE-B"  // Arquivo de retornos do ACBR
LOCAL eFile:=aw_acbr+"ENTNFE-B"  // Arquivo de envios do ACBR
LOCAL cPathBoleto:="d:\temp\"
   
// Limpa a Lista de Títulos no ACBR
LIMPARLISTA()
// Configura o Cedente no ACBR
sele AL_RECEB
DBSETORDER(1)
DBSEEK(aBoletos[1])
cCodBanco = codban
GERACEDENTE(cCodBanco)
nCount=1
cLine:= ""
do whil LEN(aBoletos)>=nCount
   sele AL_RECEB
   DBSETORDER(1)
   DBSEEK(aBoletos[nCount])
   sele AL_CLIEN
   DBSETORDER(1)
   DBSEEK(AL_RECEB->codcli)
   if nCount=1
      cLine+="Boleto.IncluirTitulos("+["]+"[Titulo"+ALLTRIM(STR(nCount,2))+"]"+cCHR
   else
      cLine+= "[Titulo"+ALLTRIM(STR(nCount,2))+"]"+cCHR
   end
   cLine+= "NumeroDocumento="+ALLTRIM(AL_RECEB->codigo)+cCHR
   cLine+= "NossoNumero="+ALLTRIM(AL_RECEB->codbol)+cCHR
   cLine+= "Carteira=17"+cCHR
   cLine+= "ValorDocumento="+STRTRAN(ALLTRIM(TRANS(AL_RECEB->valrec,"99999999.99")),".",",")+cCHR
   cLine+= "Vencimento="+DTOC(AL_RECEB->datven)+cCHR
   cLine+= "ValorMoraJuros="+STRTRAN(ALLTRIM(TRANS((((AL_RECEB->valrec*AL_BANCO->jurosa)/100)/30),"99999999.99")),".",",")+cCHR
   cLine+= "DataDocumento="+DTOC(AL_RECEB->datlan)+cCHR
   cLine+= "DataProcessamento="+DTOC(DATE())+cCHR
   if (AL_RECEB->desfin>0)
      cLine+= "DataDesconto="+DTOC(AL_RECEB->datven)+cCHR
   end   
   cLine+= "DataMoraJuros="+DTOC( (AL_RECEB->datven+1) )+cCHR
   cLine+= "DataMulta="+DTOC( (AL_RECEB->datven+1) )+cCHR
   if (AL_RECEB->desfin>0)
      cLine+= "ValorDesconto="+STRTRAN(ALLTRIM(TRANS(AL_RECEB->desfin,"99999999.99")),".",",")+cCHR
   end   
   cLine+= "PercentualMulta=2"+cCHR
   cLine+= "LocalPagamento=Ate o vencimento pagavel em qualquer banco do sistema de compensacao"+cCHR
   cLine+= "Especie=DM"+cCHR
   cLine+= "EspecieMod=R$"+cCHR
   cLine+= "Sacado.NomeSacado="+ALLTRIM(RETIRARACENTOS(AL_CLIEN->nomecl))+cCHR
   if AL_CLIEN->indent="01" .or. AL_CLIEN->indent="02"
      cLine+= "Sacado.CNPJCPF="+ALLTRIM(AL_CLIEN->cpfcgc)+cCHR
   else
      cLine+= "Sacado.CNPJCPF="+ALLTRIM(AL_CLIEN->cpfcli)+cCHR
   end
   cLine+= "Sacado.Pessoa="+IIF(AL_CLIEN->indent="01" .or. AL_CLIEN->indent="02","1","0")+cCHR
   cLine+= "Sacado.Logradouro="+ALLTRIM(RETIRARACENTOS(AL_CLIEN->endere))+cCHR
   cLine+= "Sacado.Numero="+ALLTRIM(AL_CLIEN->numero)+cCHR
   cLine+= "Sacado.Bairro="+ALLTRIM(RETIRARACENTOS(AL_CLIEN->bairro))+cCHR
   cLine+= "Sacado.Cidade="+ALLTRIM(RETIRARACENTOS(AL_CLIEN->cidade))+cCHR
   cLine+= "Sacado.UF="+ALLTRIM(AL_CLIEN->estado)+cCHR
   cLine+= "Sacado.CEP="+ALLTRIM(AL_CLIEN->cepcli)+cCHR
   cLine+= "Mensagem=NF-e "+ALLTRIM(AL_RECEB->notafi)+cCHR
   //cLine+= "ArquivoLogoEmp=f:\cobrebem\kiflor.jpg"+cCHR
   //cLine+= "Detalhamento=Dados Fatura 1|Dados Fatura 2|Dados Fatura 3"+cCHR
   //cLine+= "Informativo=Informativo de Boleto1|Informativo de Boleto2|Informativo de Boleto3"+cCHR
   //cLine+= "Instrucao1=
   //cLine+= "Instrucao2="
   cLine+= "Aceite=1"+cCHR
   //cLine+= "OcorrenciaOriginal="
   cLine+= "Parcela=1"+cCHR
   cLine+= "TotalParcelas=1"+cCHR
   cLine+= "CodigoMora=1"+cCHR
   cLine+= "SeuNumero="+ALLTRIM(AL_RECEB->codigo)+cCHR
   //cLine+= "TipoDiasProtesto="
   cLine+= "TipoImpressao=1"+cCHR

   nCount++
end
if lImprime
   // Imprime os boletos da lista
   cLine+=[","I")]+cCHR
else
   cLine+=[")]+cCHR
end
   
cRandom=TRANS(HB_RandomInt(9999999999),"9999999999")+".TXT"  // Gerar codigo aleatorio
cFileEnvio=(eFile+cRandom)
cFileRetorno=(sFile+cRandom)
HB_MEMOWRIT( cFileEnvio, cLine)
   
nCont:=1
do whil (!FILE(cFileRetorno) .and. nCont<=40)
   inkey(0.5); nCont++
end
   
if !FILE(cFileRetorno)
   MENSAGEM("Portal da NF-e nao retornou a solicitacao, tente novamente!",3)
   FERASE( cFileRetorno )
   retu
end
   
gTexto:=MEMOREAD(cFileRetorno)
if !AT("OK:",gTexto)>0
   MENSAGEM("Erro ao configurar o cedente do BOLETO, verifique!",3)
   EDITORACBR(gTexto,05,05,20,78,)
end
FERASE( cFileRetorno )
   
//--------------------------------------------------------------------------------------------------------------------------------
// Funcao: Gera um arquivo txt dos boletos
//
FUNCTION LIMPARLISTA()
LOCAL Atel:=SAVESCREEN(00,00,24,79)
LOCAL cCHR:=CHR(13)+CHR(10)
LOCAL sFile:=aw_acbr+"SAINFE-L"  // Arquivo de retornos do ACBR
LOCAL eFile:=aw_acbr+"ENTNFE-L"  // Arquivo de envios do ACBR
   
cRandom=TRANS(HB_RandomInt(9999999999),"9999999999")+".TXT"  // Gerar codigo aleatorio
cFileEnvio=(eFile+cRandom)
cFileRetorno=(sFile+cRandom)
cLine:=""
cLine:="BOLETO.LimparLista"+cCHR
HB_MEMOWRIT( cFileEnvio, cLine)
   
nCont:=1
do whil (!FILE(cFileRetorno) .and. nCont<=40)
   inkey(0.5); nCont++
end
   
FERASE( cFileRetorno )
RETU
Espero que possa lhe ser útil o código acima.

Saudações,

Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Avatar do usuário
developer
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 09 Nov 2024 23:45
Localização: Londrina/PR

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por developer »

Uma pergunta, não é mais fácil, direto e seguro fazer os boletos diretamente no Harbour sem usar nenhuma DLL ou outra coisa do tipo?
Ou ninguém faz assim?
Até me deixou curioso, todo mundo usa alguma ferramenta ou DLL externo? Ou alguém faz como eu mencionei na primeira linha?
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por jelias »

developer, sem dúvidas é o ideal fazer direto no Harbour. Tive contato a tempos atrás com o HarbourBoleto e como uso xHarbour e precisava terminar o projeto mais rápido possível, optei por seguir outro caminho.

Não tenho conhecimento de ninguém que faça todo o processo de boletos, com vários bancos, tudo feito em Harbour ou xHarbour, todavia acredito que tenha vários amigos que já conseguiram chegar neste nível.

Pra mim que já faço uso do Acbr foi mais prático devido a falta de tempo, entendo que o ideal seria fazer tudo em Harbour, o que pretendo no futuro.

Saudações,

Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por malcarli »

Caros colegas, uso emissão, remessa (alguns em cnab400 e outros em cnab240) e retorno feito em harbour com minigui, gerando em pdf os boletos com HMG_HPDF (bb, Santander, Cef, Bradesco, Itaú, hsbc, safra, sicredi, sicoob), inclusive híbrido. Adaptei do harbourboleto, pois o mesmo foi descontinuado. O Mestre Quintas também fez uma classe, com alguns bancos.

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: marceloalcarli@gmail.com
Avatar do usuário
developer
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 09 Nov 2024 23:45
Localização: Londrina/PR

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por developer »

Pois é, foi o que pensei.

E onde está esta classe do José Quintas? Não encontrei no GitHub.

Usar AcBr pode ser logicamente mais rápido de início mas com o passar do tempo poderá ficar na mão como aconteceu com o CobreBem, melhor ter algo garantido na mão, com código fonte 100% sob controle.

Eu sugiro usar o que o José Quintas já fez e se faltar algum banco, simplesmente ir adicionando, por meio de fork para contribuir com inclusões, alterações e correções.

Isso seria ótimo para ir fortalecendo o trabalho e esforço por tudo que já foi feito, todos sairão ganhando, pois todos interessados teriam acesso aos fontes.

O mesmo com a ótima Sefazclass, aproveitar o que já foi feito e até melhorar onde for o caso.
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por malcarli »

Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Migrar Boletos CobreBemx Para ACBr Boleto

Mensagem por Kapiaba »

Responder