Você mandou a
harbour-32.dll
O sistema está pedindo a
harbour-32-bcc.dll
[]´s
Moderador: Moderadores
Banco_Ag_Un_A=
Conta_OP_____=
Carteira_Tipo=
NossoNumero__=
Prefixo______=
Prefixo_DV___=
#include "inkey.ch"
#include "hbclass.ch"
PROCEDURE demojose
LOCAL oBoleto, nCont
LOCAL cFilePdf := 'Boleto.PDF'
REQUEST HB_CODEPAGE_PTISO
SET( _SET_CODEPAGE, "PTISO" )
SET EPOCH TO YEAR( DATE() ) - 50
SET CENTURY ON
SetMode( 33, 80 )
oBoleto := MyBoletoPDFClass():New( cFilePdf )
//*----------------------------------------------------------------------*
// BRADESCO
//*----------------------------------------------------------------------*
FOR nCont = 1 TO 3
oBoleto:cCarteira := "06"
oBoleto:cNossoNumero := '12345'
oBoleto:cDocOrigem := 'NFe'
oBoleto:cDocNumero := '00001234'
oBoleto:dDocData := Date()
oBoleto:dVencimento := Ctod( "18/09/2014" )
oBoleto:nValor := 5.67
oBoleto:acInstrucoes := {}
oBoleto:acDemonstrativo := {}
oBoleto:acBeneficiario := { "CNPJ", "NOME", "ENDERECO" }
oBoleto:acPagador := { "CNPJ", "NOME", "ENDERECO", "CEP" }
oBoleto:acAvalista := { "CNPJ", "NOME", "ENDERECO" }
oBoleto:AddPage()
oBoleto:AddCnab()
NEXT
oBoleto:Finish()
IF FILE( cFilePdf )
hb_Run( "Explorer.exe " + cFilePdf )
ELSE
ALERT( "ERRO NA GERACAO DO ARQUIVO...;;" + cFilePdf )
ENDIF
RETURN
CREATE CLASS MyBoletoPDFClass INHERIT BoletoPDFClass
VAR cBanco INIT "237"
VAR cBancoAgencia INIT "0000"
VAR cBancoAgenciaDV INIT ""
VAR cBancoAgenciaUnA INIT ""
VAR cBancoConta INIT "00000"
VAR cBancoContaDV INIT "0"
VAR cBancoContaOP INIT ""
VAR cCarteira INIT "09"
VAR cCarteiraTipo INIT ""
VAR cNossoNumero INIT ""
VAR cDocOrigem INIT ""
VAR cPrefixo INIT ""
VAR cPrefixoDV INIT ""
VAR cDocNumero INIT ""
VAR cDocAceite INIT "N"
VAR cDocEspecie INIT "R$"
VAR dDocData INIT Ctod("")
VAR dVencimento INIT Ctod("")
VAR nValor INIT 0
VAR nMultaAuto INIT 0
VAR nJurosMes INIT 9
VAR nNumeroVias INIT 3
VAR acLocalPagamento INIT { "PAGÁVEL EM QUALQUER BANCO ATÉ O LIMITE DA DATA DO VENCIMENTO" }
VAR acInstrucoes INIT {}
VAR acDemonstrativo INIT {}
VAR acBeneficiario INIT {}
VAR acPagador INIT {}
VAR acAvalista INIT {}
VAR Cnab400 INIT {}
METHOD AddPage()
METHOD AddCnab()
METHOD DigitoDoc( cDocNumero, cCarteira )
METHOD SaveCnab( cPath )
END CLASS
METHOD AddPage() CLASS MyBoletoPDFClass
::Banco________ := ::cBanco
::Banco_Agencia := ::cBancoAgencia
::Banco_Ag_Dv__ := ::cBancoAgenciaDV
::Banco_Ag_Un_A := ::cBancoAgenciaUnA
::Conta________ := ::cBancoConta
::Conta_DV_____ := ::cBancoContaDV
::Conta_OP_____ := ::cBancoContaOP
::Carteira_____ := ::cCarteira
::Carteira_Tipo := ::cCarteiraTipo
::NossoNumero__ := ::cNossoNumero
::Doc_Origem___ := ::cDocOrigem
::Prefixo______ := ::cPrefixo
::Prefixo_DV___ := ::cPrefixoDV
::Doc_Numero___ := ::cDocNumero
::Doc_Aceite___ := ::cDocAceite
::Doc_Especie__ := ::cDocEspecie
::Doc_Data_____ := ::dDocData
::Vencimento___ := ::dVencimento
::Valor________ := ::nValor
::Multa_Auto___ := ::nMultaAuto
::Juros_Mes____ := ::nJurosMes
::Numero_Vias__ := ::nNumeroVias
::Local_Pagamen := ::acLocalPagamento
::Instrucoes___ := ::acInstrucoes
::Demonstrativo := ::acDemonstrativo
::Cedente______ := ::acBeneficiario
::Sacado_______ := { ::acPagador[ 1 ], ::acPagador[ 2 ], ::acPagador[ 4 ] + " " + ::acPagador[ 3 ] }
::Avalista_____ := ::acAvalista
::Super:AddPage()
RETURN NIL
METHOD AddCnab() CLASS MyBoletoPDFClass
LOCAL cTxt
IF ::cBanco == "237"
IF Len( ::Cnab400 ) == 0
::Cnab400 := { "", "" }
//----- registro inicial ---
/* */ cTxt := ""
/* 001 */ cTxt += "0" // Fixo: 0=Registro inicial
/* 002 */ cTxt += "1" // Fixo: ID Remessa
/* 003 */ cTxt += "REMESSA" // Fixo: Decricao
/* 010 */ cTxt += "01" // Fixo: Codigo de Servico
/* 012 */ cTxt += Pad( "COBRANCA", 15 ) // Fixo: Literal Servico
/* 027 */ cTxt += Padl( "0000000", 20, "0" ) // Codigo da empresa no Bradesco
/* 047 */ cTxt += Pad( ::acBeneficiario[ 2 ], 30 ) // Nome da empresa
/* 077 */ cTxt += ::cBanco // Fixo: Codigo do Banco
/* 080 */ cTxt += Pad( "BRADESCO", 15 ) // Fixo: Nome do Banco
/* 095 */ cTxt += StrZero( Day( Date() ), 2 ) + StrZero( Month( Date() ), 2 ) + Right( StrZero( Year( Date() ), 4 ), 2 ) // Data da gravacao Dia/Mes/Ano, 2 digitos de cada
/* 101 */ cTxt += Space(8) // Espacos
/* 109 */ cTxt += "01" // MX - olhar pag. 16, pag. 20, posicao 109/110 -> 01=remessa
/* 111 */ cTxt += StrZero( 1, 7 ) // Num. sequencial de remessa - olhar pag. 16 // nao pode pular, reiniciar ou zerar
/* 118 */ cTxt += Space(277) // Espacos
/* 395 */ cTxt += StrZero( 1, 6 ) // Num. sequencial de registro
::cnab400[ 1 ] := cTxt
ENDIF
// ----- registro detalhe -----
/* */ cTxt := ""
/* 001 */ cTxt += "1" // Fixo: 1=Movimentacao
/* 002 */ cTxt += StrZero( 0, 5 ) // Opcional: Agencia do Pagador
/* 007 */ cTxt += "0" // Opcional: Digito da Agencia do Pagador
/* 008 */ cTxt += StrZero( 0, 5 ) // Opcional: Razao da Conta do Pagador
/* 013 */ cTxt += StrZero( 0, 7 ) // Opcional: Número da Conta do Pagador
/* 020 */ cTxt += "0" // Optional: Digito do Número da Conta do Pagador
/* 021 */ cTxt += "0" + StrZero( Val( ::cCarteira ), 3 ) + StrZero( Val( ::cBancoAgencia ), 5 ) + StrZero( Val( ::cBancoConta ), 7 ) + StrZero( Val( ::cBancoContaDV ), 1 ) // 17 // Zero + Carteira + Agencia sem digito + Conta + Digito Conta do Beneficiario
/* 038 */ cTxt += Space(25) // Número de controle do participante - olhar pag. 17
/* 063 */ cTxt += StrZero(0, 3 ) // Codigo do banco a ser debitado - olhar pag.17
/* 066 */ cTxt += "0" // Multa, 2=percentual, 0=sem multa
/* 067 */ cTxt += StrZero( 0, 4 ) // Percentual de multa - olhar pag 17
/* 071 */ cTxt += StrZero( Val( ::cDocNumero ), 11 ) // ID do titulo no banco - olhar pag. 17 - 10 caracteres + digito = 11 caracteres
/* 082 */ cTxt += ::DigitoDoc( StrZero( Val( ::cDocNumero ), 10 ) ) // Digito de controle da ID do titulo
/* 083 */ cTxt += StrZero( 0, 10 ) // Desconto Bonificacao por dia
/* 093 */ cTxt += "2" // 1=Banco emite, 2=Cliente emite - olhar pag. 19
/* 094 */ cTxt += "N" // N=Nao registra, outracoisa=banco emite para debito automatico - olhar pag. 19
/* 095 */ cTxt += Space(10) // Brancos
/* 105 */ cTxt += Space(1) // Indicacao de Rateio
/* 106 */ cTxt += Space(1) // Enderecamento para aviso de debito
/* 107 */ cTxt += Space(2) // Brancos
/* 109 */ cTxt += "01" // Identificacao da ocorrencia - 01=Remessa
/* 111 */ cTxt += Space(10) // Número do documento
/* 121 */ cTxt += StrZero( Day( ::dVencimento ), 2 ) + StrZero( Month( ::dVencimento ), 2 ) + Right( StrZero( Year( ::dVencimento ), 4 ), 2 ) // Data vencto DDMMAA
/* 127 */ cTxt += StrZero( ::nValor * 100, 13 ) // Valor do titulo
/* 140 */ cTxt += StrZero( 0, 3 ) // Zeros - Banco Encarregado da cobranca
/* 143 */ cTxt += StrZero( 0, 5 ) // Zeros - Agencia depositaria
/* 148 */ cTxt += "99" // 01-duplicata, 05-Recibo, 99-Outros
/* 150 */ cTxt += "N" // Sempre N - identificacao
/* 151 */ cTxt += StrZero( Day( ::dDocData ), 2 ) + StrZero( Month( ::dDocData ), 2 ) + Right( StrZero( Year( ::dDocData ) , 4 ), 2 ) // Data de emissao do titulo DDMMAA
/* 157 */ cTxt += "00" // Instrucao - olhar pag. 20 // 00=nada,06=protestar,18=Baixar
/* 159 */ cTxt += "00" // Instrucao - olhar pag. 20 // complemento do anterior, indicando qtde. dias
/* 161 */ cTxt += StrZero( ::nJurosMes * ::nValor / 30, 13 ) // Multa por dia - olhar pag. 21
/* 174 */ cTxt += StrZero( 0, 6 ) // Data limite pra desconto
/* 180 */ cTxt += StrZero( 0, 13 ) // Valor do desconto
/* 193 */ cTxt += StrZero( 0, 13 ) // Valor IOF
/* 206 */ cTxt += StrZero( 0, 13 ) // Valor Abatimento
/* 219 */ cTxt += iif( Len( SoNumeros( ::acPagador[ 1 ] ) ) == 14, "02", "01" ) // 01=CPF, 02=CNPJ, 98=Nao tem, 99=Outros
/* 221 */ cTxt += StrZero( Val( SoNumeros( ::acPagador[ 1 ] ) ), 14 ) // Número do CPF ou CNPJ - olhar pag. 21
/* 235 */ cTxt += Pad( ::acPagador[ 2 ], 40 ) // Nome do pagador
/* 275 */ cTxt += Pad( ::acPagador[ 3 ], 40 ) // Endereco do pagador
/* 315 */ cTxt += Space(12) // Primeira mensagem
/* 327 */ cTxt += ::acPagador[ 4 ] // CEP
/* 335 */ cTxt += Space(60) // Sacador/Avalista ou segunda mensagem
/* 395 */ cTxt += StrZero( Len( ::cnab400 ), 6 ) // Número sequencial de registro
::cnab400[ Len( ::cnab400 ) ] := cTxt
// ----- registro final -----
/* */ cTxt := ""
/* 001 */ cTxt += "9" // Fixo: 9=Final
/* 002 */ cTxt += Space(393) // Brancos
/* 395 */ cTxt += StrZero( Len( ::cnab400 ) + 1, 6 ) // Número de registro
AAdd( ::cnab400, cTxt )
ENDIF
RETURN NIL
METHOD DigitoDoc( cDocNumero, cCarteira ) CLASS MyBoletoPDFClass
LOCAL nCont, nNumero, nSoma, nResto, cDigito
nSoma := 0
FOR nCont = 1 TO 11
nNumero := Val( Substr( Right( cCarteira, 2 ) + cDocNumero, nCont, 1 ) ) // 2 dig.carteira + 10 dig.Número (11 c/ dig.controle)
nSoma := nSoma + ( nNumero * { 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 }[ nCont ] )
NEXT
nResto := Mod( nSoma, 11 )
IF nResto == 0
cDigito := "0"
ELSEIF nResto == 1
cDigito := "P"
ELSE
cDigito := Str( 11 - nResto, 1 )
ENDIF
RETURN cDigito
METHOD SaveCnab( cPath ) CLASS MyBoletoPDFClass
LOCAL cNumero, cFileName, nCont, cTxt := ""
IF ::cCarteira != "09"
RETURN NIL
ENDIF
cPath := iif( cPath == NIL, "", cPath )
cNumero := "01"
cFileName := cPath + "CB" + StrZero( Day( Date() ), 2 ) + StrZero( Month( Date() ), 2 )
DO WHILE File( cFileName + cNumero + ".TST" )
cNumero := StrZero( Val( cNumero ) + 1, 2 )
ENDDO
FOR nCont = 1 TO Len( ::Cnab400 )
cTxt += ::Cnab400[ nCont ] + HB_EOL()
NEXT
hb_MemoWrit( cFileName + cNumero + ".TST", cTxt )
RETURN NIL
Retornar para Contribuições, Dicas e Tutoriais
Usuários vendo este fórum: Nenhum usuário registrado online e 13 visitantes