Boletos bancários para montagem de carnês

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Boletos bancários para montagem de carnês

Mensagem por Duda 'Sgluber' »

Amigos,

até uns dias atrás eu jamais tinha precisado estudar/programar sobre geração/emissão de boletos bancários. Até que um cliente me pediu! :-)

Pesquisando por aqui encontrei, em princípio, 3 caminhos:

1 - Harbour Boleto
2 - MR-Boleto
3 - Cobre Bem

Pretendo dar uma fuçada nesse material pelos próximos dias, mas devido a outros compromissos já assumidos e à necessidade de solução em curto espaço de tempo, já sei que não poderei me dedicar por muito tempo ao assunto. Preciso ser rápido e objetivo, não posso e não quero "reinventar a roda".

O que eu preciso: emitir 3 boletos por folha, com canhoto à esquerda, para posterior corte nas linhas pontilhadas que separam cada boleto e montagem de carnês.

Talvez alguns de vocês já tenham lidado com essa necessidade e possam me ajudar... agradeço antecipadamente a todas as opiniões, sugestões e dicas que venham em meu favor! ;-)
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Boletos bancários para montagem de carnês

Mensagem por lucimauro »

Estou tambem com esse mesmo dilema de qual desses vou usar.
Ainda acressento o acbrmonitor e boleto-pro nesta relação.
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Boletos bancários para montagem de carnês

Mensagem por Duda 'Sgluber' »

lucimauro escreveu:Estou tambem com esse mesmo dilema de qual desses vou usar.
Ainda acressento o acbrmonitor e boleto-pro nesta relação.
Legal vc ter postado, lucimauro: acabei de dar uma olhada no Boleto Pro e parece que ele oferece o que eu preciso. Só não gostei muito da licença anual, talvez eu mande um email pra eles perguntando a respeito.

De qualquer forma, como eu disse na mensagem que abriu este tópico, na medida do possível estou testando o que pode ser feito em curto espaço de tempo com aquelas ferramentas que citei e vou incluir o Boleto Pro na lista. Em breve, pretendo postar novamente deixando as minhas conclusões. Até lá, quem sabe não aparecem outras mensagens por aqui? :-)

Quanto ao ACBrMonitor, não parece ser um projeto voltado para a geração/emissão de boletos bancários em diferentes leiautes... estou enganado?
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Boletos bancários para montagem de carnês

Mensagem por jelias »

Amigos,

Eu também estou neste processo de implantação de boletos bancários em meu sistema. Após várias horas pesquisando optei por usar o CobreBemX.
Gostei muito da proposta do HarbourBoleto, mais devido algumas limitações "pessoais" percebi que iria demandar mais tempo investindo neste processo. No meu caso é muito importante o correto envio dos arquivos para os respecivos bancos, bem como o tratamento dos retornos.
Em um futuro próximo penso em abraçar o projeto HarbourBoleto.

- O que posso lhe dizer é que estou em fase de testes e gostando muito do CobreBemX.

Irei compartilhar minhas rotinas para que possam ser aprimoradas. Por gentileza, estas rotinas são somente exemplos! Este projeto que está sendo desenvolvido quando me sobra tempo, kkkkkkkkk, devido a outras prioridades, pode-se conter erros. :)

Sds,

Júlio.

Código: Selecionar todos

//-----------------------------------------------------------------------------
// Rotina para impressao de boletos bancarios
// Arquivo : Boleto.prg
// Detalhes: Integracao com o CobrebemX via DLL
//
//
FUNCTION IMPBOLETO(vPreview)
LOCAL vMenDemonstrativo,vMenInstrucao
vMenDemonstrativo := "Nota fiscal "+AL_RECEB->notafi + " Emitida em "+DTOC(AL_SAIDA->datemi)+" Duplicata Mercantil "+AL_RECEB->codigo+"<br>"+;
		     "Apos o vencimento cobrar juros de "+TRANS(AL_BANCO->jurosa,"999.99")+"% ao mes - R$ "+TRANS( (((AL_RECEB->valrec*AL_BANCO->jurosa)/100)/30),"@E 999,999.99")+" ao dia."+"<br>"+;
		     "Multa por atraso de pagamento "+TRANS(AL_BANCO->multas,"999.99")+"%"+"<br>"+;
		     IIF(AL_RECEB->valdes>0,"Desconto de R$"+TRANS(AL_RECEB->valdes,"@E 999,999.99")+" para pagamento ate o vencimento"," ")

vMenInstrucao	  := "Apos o vencimento cobrar juros de "+TRANS(AL_BANCO->jurosa,"999.99")+"% ao mes - R$ "+TRANS( (((AL_RECEB->valrec*AL_BANCO->jurosa)/100)/30),"@E 999,999.99")+" ao dia."+"<br>"+;
		     "Multa por atraso de pagamento "+TRANS(AL_BANCO->multas,"999.99")+"%"+"<br>"+;
		     IIF(AL_RECEB->valdes>0,"Desconto de R$"+TRANS(AL_RECEB->valdes,"@E 999,999.99")+" para pagamento ate o vencimento"," ")

// Confirma os registros corretos no banco de dados a partir do contas a receber
sele AL_BANCO
DBSETORDER(1)
DBSEEK(AL_RECEB->codban)

sele AL_CLIEN
DBSETORDER(1)
DBSEEK(AL_RECEB->codcli)

sele AL_SAIDA
DBSETORDER(1)
DBSEEK(AL_RECEB->notafi+"1  ")

// Registrar a DLL do cobrebemx
RegisterServer("e:\estoq\cobrebem\cobrebemx.dll")

// Criar objeto para trabalho com cobrebemx
oCBX := CreateObject("CobrebemX.ContaCorrente")

// Abrir a licenca de carteira para cada banco
if AL_BANCO->codban="001"
   // Banco do Brasil
   oCBX:ArquivoLicenca:="e:\estoq\cobrebem\001-17Simples.conf"
elseif AL_BANCO->codban="237"
   // Bradesco
   oCBX:ArquivoLicenca:="e:\estoq\cobrebem\.conf"
elseif AL_BANCO->codban="104"
   // Caixa Economica Federal
   oCBX:ArquivoLicenca:="e:\estoq\cobrebem\.conf"
elseif AL_BANCO->codban="353"
   // Santander
   oCBX:ArquivoLicenca:="e:\estoq\cobrebem\.conf"
elseif AL_BANCO->codban="356"
   // Banco Real
   oCBX:ArquivoLicenca:="e:\estoq\cobrebem\.conf"
elseif AL_BANCO->codban="341"
   // Itau
   oCBX:ArquivoLicenca:="e:\estoq\cobrebem\.conf"
else
   MENSAGEM("Erro no sistema, banco nao identificado no boleto "+AL_RECEB->codbol,5)
   retu
end

// Dados do Cedente
oCBX:CodigoAgencia:=AL_BANCO->agenci
oCBX:NumeroContaCorrente:=AL_BANCO->numcom
oCBX:CodigoCedente:=AL_BANCO->codced
oCBX:PadroesBoleto:PadroesBoletoImpresso:ArquivoLogoTipo:="e:\estoq\cobrebem\kiflor.png"
oCBX:PadroesBoleto:PadroesBoletoImpresso:CaminhoImagensCodigoBarras:="e:\estoq\cobrebem\"
*oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto:="Padrao"
oCBX:PadroesBoleto:PadroesBoletoImpresso:HTMLReciboPersonalizado := RetHTML()


// Monta dados do sacado
oBoleto:=oCBX:DocumentosCobranca:Add()
oBoleto:TipodocumentoCobranca := "DM"
oBoleto:NumeroDocumento := AL_RECEB->codigo
oBoleto:NomeSacado := AL_CLIEN->nomecl
if AL_CLIEN->indent="01" .or. AL_CLIEN->indent="02"
   oBoleto:CnpjSacado := ALLTRIM(AL_CLIEN->CPFCGC)
else
   oBoleto:CpfSacado := ALLTRIM(AL_CLIEN->CPFCLI)
end
oBoleto:EnderecoSacado := AL_CLIEN->endere
oBoleto:BairroSacado   := AL_CLIEN->bairro
oBoleto:CidadeSacado   := AL_CLIEN->cidade
oBoleto:EstadoSacado   := AL_CLIEN->estado
oBoleto:CepSacado      := AL_CLIEN->cepcli
oBoleto:DataDocumento  := AL_RECEB->datemi
oBoleto:DataVencimento := AL_RECEB->datven
oBoleto:ValorDocumento := AL_RECEB->valrec
oBoleto:ValorDesconto  := AL_RECEB->valdes
oBoleto:NossoNumero    := AL_RECEB->codbol
oBoleto:PercentualJurosdiaAtraso   := AL_BANCO->jurosa
oBoleto:PercentualMultaAtraso	   := AL_BANCO->multas
oBoleto:PadroesBoleto:Demostrativo := vMenDemostrativo
oBoleto:PadroesBoleto:Instrucoes   := vMenInstrucao

// Abaixo o Cobrebemx ira gravar os dados e calcular algumas informacoes
// tais como numero do codigo de barras
oCBX:CalcularDadosBoleto()
sele AL_RECEB
RECLOCK()
repl codbar with oBoleto:CodigoBarras
DBUNLOCK()
DBCOMMIT()

if nPreview
   oCBX:ImprimeBoletos()
else
   oCBX:ImprimeBoletosSemPreview()
end

//-----------------------------------------------------------------------------
// Rotina para impressão de Recibo de Entrega
STATIC FUNCTION RETHTML()
LOCAL nCHR:=CHR(13)+CHR(10)
LOCAL nHTML:=""
nHTML +='<table border=0 cellpadding=0 cellspacing=0 width=730><tr><td width=40% valign=bottom height=60><p align=left><#LogotipoCedente></td><td width=25% valign=bottom><p align=center><font size=2><b>Comprovante de Entrega</b></font></td></tr></table>'+nCHR
nHTML +='<table border=1 cellpadding=1 cellspacing=0 width=730><tr><td colspan=3 width=320><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Cedente</font></td></tr><tr><td width=100%><font size=2><b><#NomeCedente></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Agência/Código Cedente</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#AgenciaCodigoCedente></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=146><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Vencimento</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#Vencimento></b></font></td></tr></table>'+nCHR
nHTML +='</td></tr><tr><td width=320 colspan=3><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Sacado</font></td></tr><tr><td width=100%><font size=2><b><#NomeSacado></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Número do Documento</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#NumeroDocumento></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=146><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Nosso Número</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#NossoNumeroExibicao></b></font></td></tr></table>'+nCHR
nHTML +='</td></tr><tr><td width=66><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Espécie</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#Moeda></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=100><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Quantidade</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#Quantidade></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=150><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>(x) Valor</font></td></tr><tr><td width=100%><p align=center><font size=2><b>  </b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>(=) Valor do Documento</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#ValorDocumentoExibicao></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>(-) Desconto</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#ValorDescontoExibicao></b></font></td></tr></table>'+nCHR
nHTML +='</td></tr><tr><td width=320 colspan=3 valign=bottom><p align=left><font size=2><b>Demonstrativo:</b></font></td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>(+) Outros Acréscimos</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#ValorOutrosAcrescimosExibicao></b></font></td></tr></table>'+nCHR
nHTML +='</td><td width=146><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>(=) Valor Cobrado</font></td></tr><tr><td width=100%><p align=center><font size=2><b>  </b></font></td></tr></table>'+nCHR
nHTML +='</td></tr><tr><td width=100% height=120 colspan=5 valign=top><font size=2><#Demonstrativo></font></td></tr></table>'+nCHR
nHTML +='<table border=0 cellpadding=0 cellspacing=0 border=0 width=730><tr><td nowrap height=25 valign=bottom><font size=1>---------------------------------------------------------------------------------------------------------------------------------------------------------------- Corte Aqui ------------------------------</font></td></tr></table>'+nCHR
nHTML +='<table border=0 cellpadding=0 cellspacing=0 height=38 width=730><tr>'+nCHR
nHTML +='<td valign=bottom width=149><p align=center><#LogotipoBanco></p></td>'+nCHR
nHTML +='<td valign=bottom width=70><p align=center><font face="Times New Roman" size=5>|</font><font face="Times New Roman" size=4><b><#NumeroBanco></b></font><font face="Times New Roman" size=5>|</font></p></td>'+nCHR
nHTML +='<td valign=bottom width=511><p align=right><font face="Times New Roman" size=3><#LinhaDigitavel> <#DvCodigoBarras> <#FatorVencimento><#ValorLinhaDigitavel></font></td>'+nCHR
nHTML +='</tr></table>'+nCHR
nHTML +='<table border=1 cellspacing=0 height=244 width=730 bordercolor=black><tr>'+nCHR
nHTML +='<td colspan=6 valign=top width=562><font face="Times New Roman" size=1>Local de Pagamento      <b><#LocalPagamento></b></font></td>'+nCHR
nHTML +='<td valign=top width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Vencimento</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#Vencimento></b></font></td></tr></table></td>'+nCHR
nHTML +='</tr>'+nCHR
nHTML +='<tr>'+nCHR
nHTML +='<td colspan=6 valign=top width=562><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Cedente</font></td></tr><tr><td align=left valign=middle width=100%><font face="Times New Roman" size=1><b><#NomeCedente></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Agência/Código Cedente</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#AgenciaCodigoCedente></b></font></td></tr></table></td>'+nCHR
nHTML +='</tr>'+nCHR
nHTML +='<tr>'+nCHR
nHTML +='<td valign=top width=95><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Data Documento</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#DataDocumento></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=134 colspan=2><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Número do Documento</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#NumeroDocumento></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=80><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Espécie Doc.</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#EspecieDocumento></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=38><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Aceite</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#Aceite></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=109><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Data Processamento</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#DataProcessamento></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Nosso Número</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#NossoNumeroExibicao></b></font></td></tr></table></td>'+nCHR
nHTML +='</tr>'+nCHR
nHTML +='<tr>'+nCHR
nHTML +='<td valign=top width=95><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Uso do Banco</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#UsoBanco></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=85><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Carteira</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#CarteiraExibicao></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=29><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Espécie</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#Moeda></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=90 colspan=2><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>Quantidade</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#Quantidade></b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=115><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>(x) Valor</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b> </b></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1>(=) Valor do Documento</font></td></tr><tr><td align=center valign=middle width=100%><font face="Times New Roman" size=1><b><#ValorDocumentoExibicao></b></font></td></tr></table></td>'+nCHR
nHTML +='</tr>'+nCHR
nHTML +='<tr>'+nCHR
nHTML +='<td valign=top width=562 colspan=6 rowspan=4><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1><b>Instruções (texto de responsabilidade do cedente)</b></font></td></tr><tr><td align=left valign=top width=100%><font face="Times New Roman" size=1><#InstrucoesCaixa></font></td></tr></table></td>'+nCHR
nHTML +='<td valign=top width=168><font face="Times New Roman" size=1>(-) Desconto  <b><#ValorDescontoExibicao></b></font></td></tr>'+nCHR
nHTML +='<tr><td valign=top width=168><font face="Times New Roman" size=1>(+) Mora/Multa</font></td></tr>'+nCHR
nHTML +='<tr><td valign=top width=168><font face="Times New Roman" size=1>(+) Outros Acréscimos  <b><#ValorOutrosAcrescimosExibicao></b></font></td></tr>'+nCHR
nHTML +='<tr><td valign=top width=168><font face="Times New Roman" size=1>(=) Valor Cobrado</font></td></tr>'+nCHR
nHTML +='<tr><td width=730 colspan=7 valign=bottom><table border=0 cellpadding=0 cellspacing=0 width=100%>'+nCHR
nHTML +='<tr><td width=562><font face="Times New Roman" size=1>Sacado  <b><#NomeSacado></b></td>'+nCHR
nHTML +='<td width=168><font face="Times New Roman" size=1><center><b><#CNPFCPFSacadoExibicao></b></center></font></td></tr>'+nCHR
nHTML +='<tr><td width=562><font face="Times New Roman" size=1><b><#EnderecoSacado></b>   <b><#BairroSacado></b>   '+nCHR
nHTML +='<b><#CidadeSacado></b>   <b><#EstadoSacado></b>   <b><#CepSacadoExibicao></b></td>'+nCHR
nHTML +='<td width=168><font face="Times New Roman" size=1> </font></td></tr>'+nCHR
nHTML +='<tr><td width=562><font face="Times New Roman" size=1>Sacador/Avalista  <b><#SacadorAvalista></b></font></td>'+nCHR
nHTML +='<td width=168><font face="Times New Roman" size=1><center><b>Recibo do Sacado</b></center></font></td></tr></table>'+nCHR
nHTML +='</td></tr></table>'+nCHR
RETU nHTML

#pragma BEGINDUMP
	     #include <hbapi.h>
	     #include <windows.h>
	     typedef LONG ( * PDLLREGISTERSERVER ) ( void );
	     HB_FUNC( REGISTERSERVER )
	     {
	     HMODULE hDll = LoadLibrary( hb_parc( 1 ) );
	     LONG lReturn = 0;
	     if( hDll )
	             {
	             FARPROC pRegisterServer = GetProcAddress( hDll, "DllRegisterServer" );
	             if( pRegisterServer )
	                lReturn = ( ( PDLLREGISTERSERVER ) pRegisterServer )();
	                FreeLibrary( hDll );
	           }
	           hb_retnl( lReturn );
	        }       
#pragma ENDDUMP


// ----------------------------------------------------------------------------
// Rotina para remessa de boletos ao banco.
// Arquivo : Remessa.prg
// Detalhes: Integracao com o CobrebemX via DLL
//
// --------------------------------------------
// Banco do Brasil
// ---------------
// Layout      : FEBRABAN240
//	       : CBR454  - Remessa para impressao e postagem pelo BB
//	       : CBR641  - (CNAB400) Arquivo Remessa de 400char
//	       : CNAB240 - Vendor
//	       : CNAB240 - Remessa e Retorno 240char/linha
//

FUNCTION REMESSA()
LOCAL vMenDemonstrativo,vMenInstrucao
LOCAL iNegrito:="<b>"  // Personalizar texto em Negrito
LOCAL fNegrito:="</b>" // Terminar texto em Negrito
LOCAL nLayout:={"FEBRABAN240","CBR454","CBR641","CNAB240","CNAB400"}

IF PERG("Deseja gerar arquivo de REMESSAS dos BOLETOS Pendentes ?")="N"
   retu
end

ABREARQ(,{"AL_RECEB","AL_BANCO","AL_CLIEN","AL_SAIDA"})
// Optei por varrer todo o arquivo por ter poucos registros
sele AL_BANCO
DBSETORDER(1)
DBGOTOP()
do whil !EOF()
   // Faco um teste para saber se existe convenio e gera boleto para este banco
   // Se houver um convenio cadastrado tento encontrar boletos para envio na
   // remessa que estou prestes a gerar.
   if LEN(ALLTRIM(codced))=0
      skip
      loop
   end
   // Conferencia do layout do arquivo a ser gerado
   if ASCAN(nLayout,ALLTRIM(layout))=0
      MENSAGEM("Layout nao configurado Banco "+codigo+"-"+LEFT(nomeba,10),5)
      skip
      loop
   end

   sele AL_RECEB
   DBSETORDER(12)
   ORDSCOPE(0,AL_BANCO->codigo+"*")
   ORDSCOPE(1,AL_BANCO->codigo+"*")
   DBGOTOP()

   if !EOF() // Havendo Bloquetos
      // Registrar a DLL do cobrebemx
      RegisterServer("e:\estoq\cobrebem\cobrebemx.dll")
      // Criar objeto para trabalho com cobrebemx
      oCBX := CreateObject("CobrebemX.ContaCorrente")

      // Abrir a licenca de carteira para cada banco
      // Vale ressaltar que cada carteira possui um arquivo. conf para o mesmo banco
      // o prudente seria criar um cadastro de carteira por banco
      // devido a urgencia, nao tive como fazer. So tenho como configurar uma carteira
      // por vez no sistema atraves do campo: arqlic
      if LEN(ALLTRIM(AL_BANCO->arqlic))>0
	 oCBX:ArquivoLicenca:=ALLTRIM(AL_BANCO->arqlic)
      else
	 MENSAGEM("Erro no sistema, banco nao identificado no boleto "+AL_RECEB->codbol,5)
	 sele AL_BANCO
	 skip
	 loop
      end

      // Nome do arquivo de remessa sera gerado seguindo o padrao do bradesco
      // pelo que pude colher nos manuais e o unico que exige um padrao
      // CBddmm??.REM
      // CB - Cobranca Bradesco
      // DD - O dia geracao do Arquivo
      // MM - O mes da geracao do arquivo
      // ?? - Variaveis alfanumericas/numericas
      _nCounter:=1  // Objetivo poder criar varias remessas.
      vNomeArquivo:="CB"+LEFT(DTOC(DATE()),2)+SUBS(DTOC(DATE()),4,2)+STRZERO(_nCounter,2)+".REM"
      do whil FILE(ALLTRIM(AL_BANCO->dirrem)+vNomeArquivo)
	 _nCounter++
	 vNomeArquivo:="CB"+LEFT(DTOC(DATE()),2)+SUBS(DTOC(DATE()),4,2)+STRZERO(_nCounter,2)+".REM"
      end

      // Dados do Cedente
      oCBX:CodigoAgencia:=ALLTRIM(AL_BANCO->agenci)
      oCBX:NumeroContaCorrente:=ALLTRIM(AL_BANCO->numcom)
      oCBX:CodigoCedente:=ALLTRIM(AL_BANCO->codced)

      // Padroes definidos para todos os boletos
      oCBX:ArquivoRemessa:Diretorio:=ALLTRIM(AL_BANCO->dirrem)
      oCBX:ArquivoRemessa:Arquivo:=vNomeArquivo
      oCBX:ArquivoRemessa:Layout:=ALLTRIM(AL_BANCO->layout)

      nRecno:={}
      do whil !EOF()
	 sele AL_CLIEN
	 DBSETORDER(1)
	 DBSEEK(AL_RECEB->codcli)

	 sele AL_SAIDA
	 DBSETORDER(1)
	 DBSEEK(AL_RECEB->notafi+"1  ")

	 // Monta dados do sacado
	 oBoleto:=oCBX:DocumentosCobranca:Add()
	 oBoleto:TipodocumentoCobranca := "DM"
	 oBoleto:NumeroDocumento := AL_RECEB->codigo
	 oBoleto:NomeSacado := AL_CLIEN->nomecl
	 if AL_CLIEN->indent="01" .or. AL_CLIEN->indent="02"
	    oBoleto:CnpjSacado := ALLTRIM(AL_CLIEN->CPFCGC)
	 else
	    oBoleto:CpfSacado := ALLTRIM(AL_CLIEN->CPFCLI)
	 end
	 oBoleto:EnderecoSacado 	  := AL_CLIEN->endere
	 oBoleto:BairroSacado		  := AL_CLIEN->bairro
	 oBoleto:CidadeSacado		  := AL_CLIEN->cidade
	 oBoleto:EstadoSacado		  := AL_CLIEN->estado
	 oBoleto:CepSacado		  := AL_CLIEN->cepcli
	 oBoleto:DataDocumento		  := AL_RECEB->datemi
	 oBoleto:DataVencimento 	  := AL_RECEB->datven
	 oBoleto:ValorDocumento 	  := AL_RECEB->valrec
	 oBoleto:ValorDesconto		  := AL_RECEB->desfin
	 oBoleto:NossoNumero		  := AL_RECEB->codbol
	 oBoleto:PercentualJurosdiaAtraso := (AL_BANCO->jurosa/30)
	 oBoleto:PercentualMultaAtraso	  := AL_BANCO->multas
	 oBoleto:NaoGerarMensagemJuros	  := .T.
	 oBoleto:NaoGerarMensagemMulta	  := .T.
	 sele AL_RECEB
	 AADD(nRecno, RECNO() )
	 skip
      end

      // Termina o arquivo e grava o mesmo
      oCBX:GravaArquivoRemessa()

      // Registra no arquivo de contas a receber que o boleto ja foi gerado
      // na remessa
      ORDSCOPE(0,nil) // Limpar
      ORDSCOPE(1,nil)
      vCont:=1
      do whil LEN(nRecno)>=vCont
	 sele AL_RECEB
	 DBGOTO(nRecno[vCont])
	 RECLOCK()
	 repl gerare with " "
	 repl arqrem with vNomeArquivo
	 repl datrem with DATE()
	 repl horasr with TIME()
	 DBUNLOCK()
	 DBCOMMIT()
	 vCont++
      end
      MENSAGEM("Remessa gerada com Sucesso, banco: "+AL_BANCO->codigo,5)
   end
   sele AL_BANCO
   skip
end
ABREARQ(.F.)
retu
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
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Boletos bancários para montagem de carnês

Mensagem por lucimauro »

Essa dll tambem é paga, quanto custa a licença por CNPJ?

voce sabe informar.

Desde ja agradeço.
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Boletos bancários para montagem de carnês

Mensagem por jelias »

Amigo,

Você pode encontrar o preço e mais informações aqui http://www.cobrebem.com.br/precoscbx.html

Sds,

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
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Boletos bancários para montagem de carnês

Mensagem por rochinha »

Amiguinho

Na ua lista voce pode incluir BoletoPRO

1 - BoletoPRO
2 - Cobre Bem
3 - MR-Boleto
4 - Harbour Boleto

Onde a sequencia acima define o grau de facilidade de integração no MEU entendimento.

1 - BoletoPRO - aplicativo(pago) executado por linha de comando e possui configurador.
2 - Cobre Bem - OCX(pago) que deve ser automatizada pelo seu sistema.
3 - Harbour Boleto - Código Fonte(livre) que pode ser integrado ou gerado um stand-alone de linha de comando.
4 - MR-Boleto - Código fonte(livre) que pode ser integrado, não lembro se gera um stand-alone de linha de comando.

Obs: No caso do MrBoleto cheguei a apresentar uma alteração que nã época permitia colocar mais linhas de demonstrativo. Tópico MRBoleto pronto para o uso

Com BoletoPRO voce gera um arquivo .CSV que nada mais é do que um arquivo com delimitador " ; ", sendo que a aprimeira linha deverá ser os nomes dos campos para a ferramenta e as linhas seguintes os dados de cada boleto.

Chame a ferramenta via RUN e pronto.

Layout Exemplo de arquivo .CSV( com 1 boleto ).

Código: Selecionar todos

Data Processamento;Vencimento;Valor Documento;Nosso Número;Data Documento;Espécie Documento;Número Documento;Aceite;Instruções;Sacado;CNPJ;Rua;Número;Complemento;Bairro;Cidade;Estado;CEP;Parcela;NParcelas;E-Mail
31/01/2007;02/03/2007;    49,25;;31/01/2007;RC;DOC_A_123;;NAO RECEBER APOS O VENCIMENTO;JOSE CARLO DA ROCHA;118.988.538-78;R DR MARIO MAURO RAMOS MATOSO;  50;CASA 2;PIRITUBA;SAO PAULO;SP;05171-340;000;000;irochinha@itelefonica.com.br
Veja um exemplo de comando no prompt do DOS:

Código: Selecionar todos

boletopro.exe -M /P /QE "/F:C:\sistema\Boletos.csv" 
Para que o mesmo funcione via RUN ou SwpRunCMD é necessário que existam as aspas no momento que o boletroPRO receber os parametros.

Para tanto use [ e ] ao passar o comando para SwpRunCmd() exemplo:

Código: Selecionar todos

...
SwpRunCMD( [boletopro.exe -M /P /QE "/F:C:\sistema\Boletos.csv"] )
...
Não uso mais o comando acima, portanto não lembro qual sua sintaxe.

Exemplo de execução do BoletoPRO passando o arquivo .CSV como parametro(usando funções do Fivewin).

Código: Selecionar todos

Function IntegraBoletoPro
   BolCMD := [ -M /P /QE "/F:Boletos.csv" ]
   cMacro := [BoletoPRO\boletoPRO.exe ] + BolCMD
   MsgRun( "Gerando Impressao.." )
   //memowrit( "boletos.bat", cMacro )
   WinExec( cMacro, 7 )
   if file( "boletos.log" )
      iLOG := memoread( "boletos.log" )
      if "ERROR" $ Upper( iLOG )
         MsgStop( iLOG )
      endif
      fErase( "boletos.log" )
   endif
   return .t.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Boletos bancários para montagem de carnês

Mensagem por lucimauro »

Rochinha voce usa entao o Boleto-pro?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Boletos bancários para montagem de carnês

Mensagem por rochinha »

Amiguinho,

Tenho integrado ao meu sistema, se o cliente precisar, já tá lá.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Boletos bancários para montagem de carnês

Mensagem por lucimauro »

Rochinha obrigado pelo atenção.

Voce pode me dizer tambem sobre a linçeça deles é anual ou paga so uma vez e pronto.?


Desde ja agradeço.
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Boletos bancários para montagem de carnês

Mensagem por Duda 'Sgluber' »

lucimauro escreveu:Rochinha obrigado pelo atenção.

Voce pode me dizer tambem sobre a linçeça deles é anual ou paga so uma vez e pronto.?

Desde ja agradeço.
lucimauro,

eu posso responder: infelizmente a licença é anual. Cheguei a mandar email pra eles, perguntando sobre uma versão "light" do programa, apenas para gerar/emitir os boletos, mas a resposta foi negativa. Eles só vendem a versão completa, paga anualmente, com um monte de possibilidades/recursos que eu e o meu cliente não precisaríamos...

É uma pena, pois o rochinha tem razão: é a opção mais fácil/rápida para implementação. Vou postar depois escrevendo sobre as minhas opiniões sobre as 4 ferramentas citadas, após os testes que eu pude fazer com o (pouco) tempo que tive nas últimas semanas.

Antecipo que pretendo optar pelo Cobre Bem.
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Boletos bancários para montagem de carnês

Mensagem por lucimauro »

Espero suas consideracoes finais, e o porque de voce ter escolhido a cobre bem!
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Boletos bancários para montagem de carnês

Mensagem por Duda 'Sgluber' »

lucimauro escreveu:Espero suas consideracoes finais, e o porque de voce ter escolhido a cobre bem!
Logo, logo, lucimauro... e será um prazer!
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Boletos bancários para montagem de carnês

Mensagem por lucimauro »

Fico no aguardo.

Obrigado por sua atenção.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Boletos bancários para montagem de carnês

Mensagem por fladimir »

A pergunta não foi pra mim mas vou postar minhas considerações...

Escolhi o Cobrebem pelo seguinte:

Por ser de fácil implementação, carrego a dll e depois defino as propriedades e chamo os métodos,

Suporte dos caras muito bom, vc manda 1 e-mail e eles retornam no mesmo dia no máximo no outro dia pela manhã

Meu sistema fica MultiBoletos, ou seja, o cliente com 1 Dll pode gerar boletos pra cerca de 48 bancos (os mais conhecidos todos e os outros q nem sem direito quais são) praticamente sem mudar quase nada a não ser 2 campos chamados OutraConfiguração01 (que seria uma particularidade de 1 banco), OutraConfiguração02 (seria a outra particularidade do banco), mas da forma que eu fiz o próprio cliente define isso na tela de parâmetros de boleto.

Não preciso esquentar cabeça com um cliente querer 1 banco X e não ter e eu ter que desenvolver o cálculo do código de barras, validação nosso número, etc etc, a Dll faz tudo isto.

Envia e-mail

Gera Preview antes da impressão

Gera HTML do boleto

Mais de 15 tipos de modelos de layout de impressão de boletos e ainda mais a tua imaginação porque tem alguns modelos que permitem vc entrar com código HTML, exemplo um cliente meu comprou a Dll e na hora de mostrar os tipos de Boletos que poderiam ser gerados (Layout) o cliente NÃO GOSTOU DE NENHUM, ele queria que fosse um determinado tipo mais que tivesse em cima outras informações etc... entrei em contato com o suporte e os caras passaram o caminho das pedras usando HTML em uma determinada propriedade e pronto do Jeitinho que o cliente queria.


Bom é isto que me recordo de vantagens...

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder