wmsoft Posted May 26, 2012 Report Share Posted May 26, 2012 Pessoal estou ficando azuado aqui porque não esto conseguindo gerar a remessa, Abaixo postei o fonte. Deixa eu explicar como ocorre aqui, é uma associação de pescadores os associados vão pegar seus boletos durante o dia, no final do dia a associação envia um arquivo remessa com todos os boletos que foram emitidos, o estranho que o boleto ele está gerando certinho. FUNCTION CBXRemessa() local oVenDl, oSay, MyDb, oPess, lESC:= .F. local lSave := .f. local nOldRec := RecNo(), nTotDesc:=0 LOCAL OBMP, oFont1, oFnt2, oFont4, oFnt5, oFont6 local oCBX, oBoleto, aGet PRIVATE oBrw, aParc:= {} IF ! UsrFree(CliIncl) RETURN NIL ENDIF CheckDados() if !oEMBOLETOS MsgAlert("Modulo de Boleto Bancário não está ativo no sistema.","Atenção") Return Nil endif CursorWait() use_arq("BOLETO","BOLETO",.t.,.t.) use_arq("REMESSA","REMESSA",.t.,.t.) SELECT BOLETO BOLETO->(DBSETORDER(1)) BOLETO->(DBGOTOP()) oData := Date() nQteBai := 0 nTotal := 0 While ! BOLETO->( EOF() ) if BOLETO->BOLSITU = "N" nQteBai++ nTotal+=BOLETO->BOLVALOR aadd(aParc,({BOLETO->BOLCOD,; BOLETO->BOLDATA,; BOLETO->BOLVENC,; BOLETO->BOLVALOR,; BOLETO->BOLCONTR,; BOLETO->BOLNOME,; BOLETO->BOLOBS,; Alltrim(BOLETO->BOLCBAR)})) endif BOLETO->( DbSkip() ) End If Len(aParc) = 0 MsgAlert("Não existem boletos processados para geração de remessa no momento","Atenção") dbcloseall() Return Nil endif DEFINE FONT oFon1 NAME "Courier New" SIZE 0, -10 OF oVenDl DEFINE FONT oFon2 NAME "Courier New" SIZE 0, -9 OF oVenDl DEFINE FONT oFon3 NAME "Courier New" SIZE 0, -14 OF oVenDl DEFINE FONT oFon4 NAME "Courier New" SIZE 0, -22 BOLD OF oVenDl DEFINE FONT oFon5 NAME "Courier New" SIZE 0, -19 BOLD OF oVenDl DEFINE FONT oFon6 NAME "Courier New" SIZE 0, -15 BOLD OF oVenDl DEFINE FONT oFntLis NAME "Courier New" SIZE 0, -11 DEFINE DIALOG oVenDl RESOURCE "REMESSA" // Apresentando as BOLETO abertas no browse REDEFINE LISTBOX oBrw ; FIELDS Strzero(aParc[oBrw],11),; TRANS(aParc[oBrw],"@D"),; TRANS(aParc[oBrw],"@D"),; TRANS(aParc[oBrw],"@E 999,999.99"),; aParc[oBrw],; aParc[oBrw]; FIELDSIZES 80,80,50 ; HEADERS "Documento","Emissão","Vencimento"," Valor","Contrato","Nome" ; UPDATE COLORS BrwText, BrwBack ; ID 100 OF oVenDl oBrw:cAlias := NIL oBrw:SetArray(aParc) oBrw:nLineStyle:=4 //Linha pontilhada oBrw:lCellStyle:=.F.//trabalhar em linha oBrw:SetFont(oFntLis) oBrw:bGoTop := {|| oBrw:nat := 1 } oBrw:bGoBottom := {|| oBrw:nat := Eval( oBrw:bLogicLen ) } oBrw:bSkip := { | nWant, nDo | ; nDo := Min( Max( nWant, 1 - oBrw:nat ), ; Len( aParc ) - oBrw:nat ), ; oBrw:nat += nDo, nDo } oBrw:Refresh() // Vencimento e Parcelas REDEFINE GET oG01 VAR nTotal PICTURE "@E 999,999.99" ID 10 OF oVenDl When .F. ; FONT oFon5 UPDATE COLOR CLR_BLUE REDEFINE GET oG02 VAR oData PICTURE "@D" ID 11 OF oVenDl When .F. ; FONT oFon5 UPDATE COLOR CLR_BLUE REDEFINE GET oG03 VAR nQteBai PICTURE "9999" ID 12 OF oVenDl When .F. ; FONT oFon5 UPDATE COLOR CLR_BLUE REDEFINE SBUTTON oBt1 ID 30 OF oVenDl ACTION ( lSave := .t. , oVenDl:End()) ; CANCEL ; COLORS CLR_BLACK, ; {|oB| If( oB:lMouseOver, {CLR_BLUE,CLR_WHITE}, ; {CLR_WHITE,CLR_BLUE} ) }; BORDER TEXT POSITION ON_RIGHT REDEFINE SBUTTON oBt1 ID 31 OF oVenDl ACTION oVenDl:End() ; CANCEL; COLORS CLR_BLACK, ; {|oB| If( oB:lMouseOver, {CLR_BLUE,CLR_WHITE}, ; {CLR_WHITE,CLR_BLUE} ) }; BORDER TEXT POSITION ON_RIGHT ACTIVATE DIALOG oVenDl CENTERED Valid VerEsc(@lESC) if lSave lChange := .f. // Dar Confirmou gerar Boleto Select BOLETO BOLETO->(DBSETORDER(1)) if Len(aParc) > 0 aguarde('Aguarde enquanto remessa está sendo processado...') // Iniciando objeto do boleto oCBX := TOleAuto():New("CobreBemX.ContaCorrente") oCBX:ArquivoLicenca:= alltrim(oEMCAMCONF) // Monta dados da conta corrente oCBX:CodigoAgencia:= alltrim(oEMAGENCIA) oCBX:NumeroContaCorrente:= alltrim(oEMCONTA) oCBX:CodigoCedente:= alltrim(oEMCEDENTE) oCBX:OutroDadoConfiguracao1 := "009" // Preencha com a variação da carteira. oCBX:OutroDadoConfiguracao2 := "N" oCBX:LocalPagamento := "Pagável em qualquer banco até o vencimento" oCBX:InicioNossoNumero:= "000001" oCBX:FimNossoNumero:= "999999" oCBX:PadroesBoleto:PadroesBoletoImpresso:ArquivoLogotipo := Curdrive() + ":\"+"\"+CURDIR()+"\bitmaps\BannerCBX.gif" oCBX:PadroesBoleto:PadroesBoletoImpresso:CaminhoImagensCodigoBarras := Curdrive() + ":\"+"\"+CURDIR()+"\bitmaps\" oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto := "Padrao" //oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto := "CarnetReciboTopo" // Adicionando as informações do boleto For j = 1 to Len(aParc) NomeCliente(aParc[j,5],3,@aGet) oBoleto := oCBX:DocumentosCobranca:Add() oCBX:ProximoNossoNumero := aParc[j,1] // Monta dados do sacado oBoleto:CPFSacado := "" oBoleto:NomeSacado := aGet[2] oBoleto:EnderecoSacado := aGet[3] oBoleto:BairroSacado := aGet[4] oBoleto:CidadeSacado := aGet[5] oBoleto:EstadoSacado := aGet[6] oBoleto:CepSacado := aGet[7] // Monta dados do documento de cobrança oBoleto:numeroDocumento := aParc[j,8] oBoleto:DataVencimento := TRANSF(aParc[j,3],"@D") oBoleto:NumeroDocumento := strzero(aParc[j,1],11) oBoleto:ValorDocumento := aParc[j,4] // Dados de observações finais cInstru:="" if oEMMULTAMES>0 cInstru+='Apos '+Dtoc(oData)+' cobrar multa de R$ '+transform( oEMMULTAMES, '@E 99,999.99')+' ' endif if oEMJUROMES>0 nVlrMora:=((aParc[j,4]*oEMJUROMES)/100) cInstru+='Apos vencimento cobrar juros diario de R$ '+transform(nVlrMora,'@E 99,999.99')+' ' endif cInstru+=aParc[j,7]+' ' cInstru+=oEMOBS1+' ' cInstru+=oEMOBS2+' ' oCBX:PadroesBoleto:InstrucoesCaixa:=cInstru //oCBX:ImprimeBoletos() // Gerando Impressão oCBX:calcularDadosBoletos() //oCBX:ImprimeBoletosSemPreview() //nNossoNumero:=oBoleto:NossoNumero Next // Tratamentos finais para gerar arquivo remessa oCBX:ArquivoRemessa:Layout := "CNAB400" cRemessa:=ProxCod("EMPRESA","EMCONTREM",3) oCBX:ArquivoRemessa:Sequencia := cRemessa cNomeArq:= Strzero(Day(date()),2)+Strzero(Month(date()),2)+Right(Time(),2)+".TST" oCBX:ArquivoRemessa:Arquivo := cNomeArq cCurPath:= Curdrive() + ":\"+"\"+CURDIR()+"\remessa\" IF ! lIsDir(cCurPath) IF ! lMkDir(cCurPath) MsgStop(OemToAnsi("Não conseguiu criar a pata para remessa."),"ATENÇÃO...") QUIT ENDIF ENDIF oCBX:ArquivoRemessa:Diretorio := Curdrive() + ":\"+"\"+CURDIR()+"\boletos\remessa\" //oCBX:calcularDadosBoletos() oCBX:GravaArquivoRemessa() *oCBX:End() fecha_aguarde() endif //Imprimir comprovante //Imprimir(oCod) // Lançar valor em caixa //Moviment() endif dbcloseall() return nil Washington Guimarães FWH 906, xHarbour 1.2.1, PelleC, xDev, SQLLIB Editado por - wmsoft on 27/05/2012 02:00:51 Quote Link to comment Share on other sites More sharing options...
wmsoft Posted May 26, 2012 Author Report Share Posted May 26, 2012 Pessoal estou ficando azuado aqui porque não esto conseguindo gerar a remessa, Abaixo postei o fonte. Deixa eu explicar como ocorre aqui, é uma associação de pescadores os associados vão pegar seus boletos durante o dia, no final do dia a associação envia um arquivo remessa com todos os boletos que foram emitidos, o estranho que o boleto ele está gerando certinho. FUNCTION CBXRemessa() local oVenDl, oSay, MyDb, oPess, lESC:= .F. local lSave := .f. local nOldRec := RecNo(), nTotDesc:=0 LOCAL OBMP, oFont1, oFnt2, oFont4, oFnt5, oFont6 local oCBX, oBoleto, aGet PRIVATE oBrw, aParc:= {} IF ! UsrFree(CliIncl) RETURN NIL ENDIF CheckDados() if !oEMBOLETOS MsgAlert("Modulo de Boleto Bancário não está ativo no sistema.","Atenção") Return Nil endif CursorWait() use_arq("BOLETO","BOLETO",.t.,.t.) use_arq("REMESSA","REMESSA",.t.,.t.) SELECT BOLETO BOLETO->(DBSETORDER(1)) BOLETO->(DBGOTOP()) oData := Date() nQteBai := 0 nTotal := 0 While ! BOLETO->( EOF() ) if BOLETO->BOLSITU = "N" nQteBai++ nTotal+=BOLETO->BOLVALOR aadd(aParc,({BOLETO->BOLCOD,; BOLETO->BOLDATA,; BOLETO->BOLVENC,; BOLETO->BOLVALOR,; BOLETO->BOLCONTR,; BOLETO->BOLNOME,; BOLETO->BOLOBS,; Alltrim(BOLETO->BOLCBAR)})) endif BOLETO->( DbSkip() ) End If Len(aParc) = 0 MsgAlert("Não existem boletos processados para geração de remessa no momento","Atenção") dbcloseall() Return Nil endif DEFINE FONT oFon1 NAME "Courier New" SIZE 0, -10 OF oVenDl DEFINE FONT oFon2 NAME "Courier New" SIZE 0, -9 OF oVenDl DEFINE FONT oFon3 NAME "Courier New" SIZE 0, -14 OF oVenDl DEFINE FONT oFon4 NAME "Courier New" SIZE 0, -22 BOLD OF oVenDl DEFINE FONT oFon5 NAME "Courier New" SIZE 0, -19 BOLD OF oVenDl DEFINE FONT oFon6 NAME "Courier New" SIZE 0, -15 BOLD OF oVenDl DEFINE FONT oFntLis NAME "Courier New" SIZE 0, -11 DEFINE DIALOG oVenDl RESOURCE "REMESSA" // Apresentando as BOLETO abertas no browse REDEFINE LISTBOX oBrw ; FIELDS Strzero(aParc[oBrw],11),; TRANS(aParc[oBrw],"@D"),; TRANS(aParc[oBrw],"@D"),; TRANS(aParc[oBrw],"@E 999,999.99"),; aParc[oBrw],; aParc[oBrw]; FIELDSIZES 80,80,50 ; HEADERS "Documento","Emissão","Vencimento"," Valor","Contrato","Nome" ; UPDATE COLORS BrwText, BrwBack ; ID 100 OF oVenDl oBrw:cAlias := NIL oBrw:SetArray(aParc) oBrw:nLineStyle:=4 //Linha pontilhada oBrw:lCellStyle:=.F.//trabalhar em linha oBrw:SetFont(oFntLis) oBrw:bGoTop := {|| oBrw:nat := 1 } oBrw:bGoBottom := {|| oBrw:nat := Eval( oBrw:bLogicLen ) } oBrw:bSkip := { | nWant, nDo | ; nDo := Min( Max( nWant, 1 - oBrw:nat ), ; Len( aParc ) - oBrw:nat ), ; oBrw:nat += nDo, nDo } oBrw:Refresh() // Vencimento e Parcelas REDEFINE GET oG01 VAR nTotal PICTURE "@E 999,999.99" ID 10 OF oVenDl When .F. ; FONT oFon5 UPDATE COLOR CLR_BLUE REDEFINE GET oG02 VAR oData PICTURE "@D" ID 11 OF oVenDl When .F. ; FONT oFon5 UPDATE COLOR CLR_BLUE REDEFINE GET oG03 VAR nQteBai PICTURE "9999" ID 12 OF oVenDl When .F. ; FONT oFon5 UPDATE COLOR CLR_BLUE REDEFINE SBUTTON oBt1 ID 30 OF oVenDl ACTION ( lSave := .t. , oVenDl:End()) ; CANCEL ; COLORS CLR_BLACK, ; {|oB| If( oB:lMouseOver, {CLR_BLUE,CLR_WHITE}, ; {CLR_WHITE,CLR_BLUE} ) }; BORDER TEXT POSITION ON_RIGHT REDEFINE SBUTTON oBt1 ID 31 OF oVenDl ACTION oVenDl:End() ; CANCEL; COLORS CLR_BLACK, ; {|oB| If( oB:lMouseOver, {CLR_BLUE,CLR_WHITE}, ; {CLR_WHITE,CLR_BLUE} ) }; BORDER TEXT POSITION ON_RIGHT ACTIVATE DIALOG oVenDl CENTERED Valid VerEsc(@lESC) if lSave lChange := .f. // Dar Confirmou gerar Boleto Select BOLETO BOLETO->(DBSETORDER(1)) if Len(aParc) > 0 aguarde('Aguarde enquanto remessa está sendo processado...') // Iniciando objeto do boleto oCBX := TOleAuto():New("CobreBemX.ContaCorrente") oCBX:ArquivoLicenca:= alltrim(oEMCAMCONF) // Monta dados da conta corrente oCBX:CodigoAgencia:= alltrim(oEMAGENCIA) oCBX:NumeroContaCorrente:= alltrim(oEMCONTA) oCBX:CodigoCedente:= alltrim(oEMCEDENTE) oCBX:OutroDadoConfiguracao1 := "009" // Preencha com a variação da carteira. oCBX:OutroDadoConfiguracao2 := "N" oCBX:LocalPagamento := "Pagável em qualquer banco até o vencimento" oCBX:InicioNossoNumero:= "000001" oCBX:FimNossoNumero:= "999999" oCBX:PadroesBoleto:PadroesBoletoImpresso:ArquivoLogotipo := Curdrive() + ":\"+"\"+CURDIR()+"\bitmaps\BannerCBX.gif" oCBX:PadroesBoleto:PadroesBoletoImpresso:CaminhoImagensCodigoBarras := Curdrive() + ":\"+"\"+CURDIR()+"\bitmaps\" oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto := "Padrao" //oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto := "CarnetReciboTopo" // Adicionando as informações do boleto For j = 1 to Len(aParc) NomeCliente(aParc[j,5],3,@aGet) oBoleto := oCBX:DocumentosCobranca:Add() oCBX:ProximoNossoNumero := aParc[j,1] // Monta dados do sacado oBoleto:CPFSacado := "" oBoleto:NomeSacado := aGet[2] oBoleto:EnderecoSacado := aGet[3] oBoleto:BairroSacado := aGet[4] oBoleto:CidadeSacado := aGet[5] oBoleto:EstadoSacado := aGet[6] oBoleto:CepSacado := aGet[7] // Monta dados do documento de cobrança oBoleto:numeroDocumento := aParc[j,8] oBoleto:DataVencimento := TRANSF(aParc[j,3],"@D") oBoleto:NumeroDocumento := strzero(aParc[j,1],11) oBoleto:ValorDocumento := aParc[j,4] // Dados de observações finais cInstru:="" if oEMMULTAMES>0 cInstru+='Apos '+Dtoc(oData)+' cobrar multa de R$ '+transform( oEMMULTAMES, '@E 99,999.99')+' ' endif if oEMJUROMES>0 nVlrMora:=((aParc[j,4]*oEMJUROMES)/100) cInstru+='Apos vencimento cobrar juros diario de R$ '+transform(nVlrMora,'@E 99,999.99')+' ' endif cInstru+=aParc[j,7]+' ' cInstru+=oEMOBS1+' ' cInstru+=oEMOBS2+' ' oCBX:PadroesBoleto:InstrucoesCaixa:=cInstru //oCBX:ImprimeBoletos() // Gerando Impressão oCBX:calcularDadosBoletos() //oCBX:ImprimeBoletosSemPreview() //nNossoNumero:=oBoleto:NossoNumero Next // Tratamentos finais para gerar arquivo remessa oCBX:ArquivoRemessa:Layout := "CNAB400" cRemessa:=ProxCod("EMPRESA","EMCONTREM",3) oCBX:ArquivoRemessa:Sequencia := cRemessa cNomeArq:= Strzero(Day(date()),2)+Strzero(Month(date()),2)+Right(Time(),2)+".TST" oCBX:ArquivoRemessa:Arquivo := cNomeArq cCurPath:= Curdrive() + ":\"+"\"+CURDIR()+"\remessa\" IF ! lIsDir(cCurPath) IF ! lMkDir(cCurPath) MsgStop(OemToAnsi("Não conseguiu criar a pata para remessa."),"ATENÇÃO...") QUIT ENDIF ENDIF oCBX:ArquivoRemessa:Diretorio := Curdrive() + ":\"+"\"+CURDIR()+"\boletos\remessa\" //oCBX:calcularDadosBoletos() oCBX:GravaArquivoRemessa() *oCBX:End() fecha_aguarde() endif //Imprimir comprovante //Imprimir(oCod) // Lançar valor em caixa //Moviment() endif dbcloseall() return nil Washington Guimarães FWH 906, xHarbour 1.2.1, PelleC, xDev, SQLLIB Editado por - wmsoft on 27/05/2012 02:00:51 Quote Link to comment Share on other sites More sharing options...
wmsoft Posted May 26, 2012 Author Report Share Posted May 26, 2012 Problema resolvido, bastou pequenas correções na forma como eu estava passando os dados, convertendo tudo para char. Washington Guimarães FWH 906, xHarbour 1.2.1, PelleC, xDev, SQLLIB Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.