Jump to content
Fivewin Brasil

Hbole para xHarbour


jaguiar

Recommended Posts

Olá pessoal.

Tenho o sistema em harbour 7.01 e devido a nfe tive que compilar em xharbour. A partir daí começou a dar um erro a cada boleto impresso.

Sgue o erro

Called from: source\rtl\win32ole.prg => TOLEAUTO:END(0)

Called from: IMPBOLL.prg => IMPRIME(398)

Alguem tem esta hbole.lib?

Grato

joão Freire de Aguair

joaosiscom@hotmail.com

Link to comment
Share on other sites

Olá pessoal.

Tenho o sistema em harbour 7.01 e devido a nfe tive que compilar em xharbour. A partir daí começou a dar um erro a cada boleto impresso.

Sgue o erro

Called from: source\rtl\win32ole.prg => TOLEAUTO:END(0)

Called from: IMPBOLL.prg => IMPRIME(398)

Alguem tem esta hbole.lib?

Grato

joão Freire de Aguair

joaosiscom@hotmail.com

Link to comment
Share on other sites

Olá Lailton.

Segue o código amigo...

STATIC FUNCTION Imprime(cWILCOND)

LOCAL oCBX, oBoleto

LOCAL nJURODIA := ARQPARAM->JURODIA

LOCAL nVALDESC,nVALTIT,nVALMULT

LOCAL cINST01,cINST02,cINST03,cINST04,cINST05

PRIVATE cARQCONF,cARQLOGO,cAGENCIA,cCONTA

// Necessrio efetuar download da lib TOleAuto em ftp://ftp.harbour-project.org/contrib/hbole.zip

//

// Exemplo dado pelo evandro@skillnet.com.br

//

dllatual:= loadlibrary("Cobrebemx.dll")

SET RESOURCES TO dllatual

//

// SET RESOURCES TO "H:\SISCOM\cobrebem\Cobrebemx.dll" // "C:\cobrebemx\Cobrebemx.dll" // dllatual

// SET RESOURCES TO "Cobrebemx.dll"

//

oCBX := TOleAuto():New("CobreBemX.ContaCorrente")

// Monta arquivo de licena de teste para banco 001 carteira 18

cARQCONF := ARQPARBL->ARQCONF

oCBX:ArquivoLicenca := "&cDRIVE\SISCOM\CobreBem\&cARQCONF" // TL356_42.conf"

// oCBX:ArquivoLicenca := "H:\SISCOM\CobreBem\TL356_42.conf"

// Monta dados da conta corrente

cAGENCIA := STRZERO(ARQPARBL->AGENCIA,4)

IF !EMPTY(ARQPARBL->DIGAGENC)

cAGENCIA += "-"+ARQPARBL->DIGAGENC

ENDIF

oCBX:CodigoAgencia := cAGENCIA // STRZERO(ARQPARBL->AGENCIA,4) // "0200"

cAGENCIA := STRZERO(ARQPARBL->AGENCIA,4) + ;

IF( !EMPTY(ARQPARBL->DIGAGENC),"-"+ARQPARBL->DIGAGENC," ")

cCONTA := TRIM(ARQPARBL->CONTA)+;

IF(!EMPTY(ARQPARBL->DIGCONTA),"-"+ARQPARBL->DIGCONTA," " )

oCBX:NumeroContaCorrente := TRIM(cCONTA)

//oCBX:NumeroContaCorrente := LEFT(ARQPARBL->CONTA,7) rem 03/07/09

oCBX:LocalPagamento := "Pagável em qualquer banco até o vencimento"

//

oCBX:CodigoCedente := LEFT(ARQPARBL->CONTA,7) // "0715383"

IF ARQPARBL->NNUMERNF

// Gera o n. número igual à nota fiscal no Bradesco é assim

oCBX:InicioNossoNumero := "0000001"

oCBX:FimNossoNumero := "0079999"

nNOSSNUM := VAL( STR(TMPCREC->RECSEQ,6)+STR(TMPCREC->RECPARC,1) ) // Adi 22/07/09

oCBX:ProximoNossoNumero := STRZERO(nNOSSNUM-1,5) // adi em 03/07/09

//oCBX:ProximoNossoNumero := STRZERO(TMPCREC->RECSEQ-1,5) rem 22/07/09

ELSE

// oCBX:InicioNossoNumero := "00001" rem 03/07/2009

// oCBX:FimNossoNumero := "79999" rem 03/07/2009

oCBX:InicioNossoNumero := STRZERO(ARQPARBL->NNUMEROI,7) // ad 03/07/2009

oCBX:FimNossoNumero := STRZERO(ARQPARBL->NNUMEROF,7) // ad 03/07/2009

oCBX:ProximoNossoNumero := STRZERO(ARQPARBL->NNUMERO-1,5)

ENDIF

nNOSSNUM := ARQPARBL->NNUMERO

oCBX:PadroesBoleto:PadroesBoletoImpresso:CaminhoImagensCodigoBarras := "&cDRIVE\SISCOM\bitmaps\"

//

DbSelectArea("ARQPARBL")

REGLOCK(0,.F.)

DbSelectArea("TMPCREC")

//

cARQLOGO := LTRIM( STR(nCDBANC) ) + ".jpg"

oCBX:PadroesBoleto:PadroesBoletoImpresso:ArquivoLogotipo := "&cDRIVE\SISCOM\bitmaps\&cARQLOGO"

//oCBX:PadroesBoleto:PadroesBoletoImpresso:ArquivoLogotipo := "&cDRIVE\SISCOM\bitmaps\356.jpg"

// MsgAlert("Erro "+oCBX:PadroesBoleto:UltimaMensagemErro)

/*

Caso queira emitir o boleto no formato Carnet, informe para a propriedade 'LayoutBoleto'

do objeto 'IPadroesBoletoImpresso' o valor 'CarnetReciboLateralEsquerda'

ou 'CarnetReciboLateralDireita'

*/

//

// oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto := "CarnetReciboTopo"

//oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto := "PadraoReciboTopo"

While &cWILCOND // !eof()

IF cWILCOND=="!EOF()" .AND. RECBCO # nCDBANC

DbSkip()

LOOP

ENDIF

nVALDESC:= 0

nVALTIT := TMPCREC->RECVAL - nVALDESC

nVALMULT:= 2.00

IF !EMPTY(ARQPARBL->DIASPROT)

// cINST01 := 'NAO DISPENSA MORA. COBRAR MORA DE '+TRIM(ARQPARAM->PMOEDA)+' '+LTRIM( TRANSF( (TMPCREC->RECVAL-nVALDESC) * nJURODIA/100,'@E 99,999.99') ) +' POR DIA DE ATRASO'

cINST01 := ' '

cINST02 := 'APOS VENCIMENTO COBRAR MULTA DE '+TRIM(ARQPARAM->PMOEDA)+' '+LTRIM( TRANSF( (TMPCREC->RECVAL-nVALDESC) * 0.02,'@E 99,999.99'))

cINST03 := 'PROTESTAR APOS '+LTRIM(ARQPARBL->DIASPROT) + ' DIAS UTEIS DO VENCIMENTO'

ELSE

cINST01 := ' '

cINST02 := ' '

cINST03 := ' '

ENDIF

cINST04 := 'VALORES EXPRESSOS EM REAIS'

cINST05 := 'NF '+STR(TMPCREC->RECSEQ,6)

//

// O bloco do IF abaixo não existe no programa da Distribegi. Verificar se é necessário

//

IF !ARQPARBL->NNUMERNF .AND. !EMPTY(TMPCREC->RECNNUM) // adi 03/07/09

//IF !EMPTY(TMPCREC->RECNNUM) rem 03/07/09

nNOSSNUM := VAL(TMPCREC->RECNNUM) - 1

oCBX:ProximoNossoNumero := STRZERO(nNOSSNUM,5)

++ nNOSSNUM

ENDIF

oBoleto := oCBX:DocumentosCobranca:Add()

syswait(.5) // Tem no programa exemplo do chegado do forum

// Monta dados do sacado

cNOMSAC := TRIM(ARQCLI->CLIRAZAO)

IF !LEFT(ARQCLI->CLIRAZAO,20) == ARQCLI->CLINOME

cNOMSAC += " - "+ARQCLI->CLINOME

ENDIF

oBoleto:NomeSacado := cNOMSAC

oBoleto:EnderecoSacado:= ARQCLI->CLIENDC

oBoleto:BairroSacado := ARQCLI->CLIBAIC

oBoleto:CidadeSacado := ARQCLI->CLICIDC

oBoleto:EstadoSacado := ARQCLI->CLIUFC

oBoleto:CEPSacado := ARQCLI->CLICEPC

// Monta dados do documento de cobranca

oBoleto:PadroesBoleto:InstrucoesCaixa := cINST01 + "

" + cINST02 + "

" + cINST03 + "

" + cINST04 + "

" + cINST05

oBoleto:PadroesBoleto:Demonstrativo := cINST01 + "

" + cINST02 + "

" + cINST03 + "

" + cINST04 + "

" + cINST05

oBoleto:DataDocumento := DTOC(RECDEMI)

oBoleto:DataProcessamento:= DTOC(RECDEMI)

oBoleto:DataVencimento := DTOC(RECDVEN)

oBoleto:NumeroDocumento := STRZERO(RECSEQ,6)+STR(RECPARC,1)

oBoleto:ValorDocumento := nVALTIT

oBoleto:TipoDocumentoCobranca:= "DM"

//

oCBX:calcularDadosBoletos()

linhadigi := oBoleto:LinhaDigitavel // pega linha digitável

codildigi := oBoleto:CodigoBarras // codigo utilizado para gerar o código de barras

//

// nNossoCob := oBoleto:NossoNumero && pega nosso número

//

// Pega o nosso numero igual a nf

IF ARQPARBL->NNUMERNF // Bradesco

//nNOSSNUM := TMPCREC->RECSEQ Rem em 22/07/09

nNOSSNUM := VAL( STR(TMPCREC->RECSEQ,6)+STR(TMPCREC->RECPARC,1) ) // AD em 22/07/09

oCBX:ProximoNossoNumero := STRZERO(nNOSSNUM-1,10) // STRZERO(nNOSSNUM,8) Sem o digito conf contato c/Cobrebem

ELSE // Real

// Pega o nosso numero pelo contador de auto-incremento - Real

IF EMPTY(TMPCREC->RECNNUM)

DbSelectArea("ARQCREC")

GO TMPCREC->NRECNO

REGLOCK(0,.F.)

REPLACE RECNNUM WITH STRZERO(nNOSSNUM,5)

DbUnlock()

REPLACE TMPCREC->RECNNUM WITH STRZERO(nNOSSNUM,5)

//

DbSelectArea("TMPCREC")

++ nNOSSNUM

REPLACE ARQPARBL->NNUMERO WITH nNOSSNUM // ta travado

ELSE

// Retorna o próximo n.número para os parâmetros

nNOSSNUM := ARQPARBL->NNUMERO

oCBX:ProximoNossoNumero := STRZERO(nNOSSNUM-1,5)

ENDIF

ENDIF

syswait(.5)

IF cWILCOND=="!EOF()"

DbSkip()

ELSE

EXIT

ENDIF

SysRefresh() && aqui verifica numero do boleto 17/04/2007 retirar se der algo errado

Enddo

IF !"JOAO" $ cUSUARIO

oCBX:ImprimeBoletosSemPreview()

ELSE

oCBX:ImprimeBoletos()

ENDIF

oCBX:End()

//

DbSelectArea("ARQPARBL")

DbUnlock()

//

DbSelectArea("TMPCREC")

RETURN( NIL )

***********************************************************************************************

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