kapiaba Posted August 11, 2020 Report Share Posted August 11, 2020 Galera, alguém tem feito, programa para importar boletos da C.E.F., CNAB 400 posições que importe e imprima da CAIXA ECONÔMICA FEDERAL? Obg. Abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 13, 2020 Author Report Share Posted August 13, 2020 Galera, como faço para imprimir boleto da C.E.F., e quais os parâmetros eu passo para isso. O que vocês usam? Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 13, 2020 Author Report Share Posted August 13, 2020 Galera, ajuda ahi: http://www.pctoledo.com.br/forum/viewtopic.php?f=2&t=24579 Obg. abs. Quote Link to comment Share on other sites More sharing options...
mkyx Posted August 13, 2020 Report Share Posted August 13, 2020 Não entendi bem o que tu queres! Seria usar um programa próprio e emitir os boleto da CEF? e depois gerar o arquivo de remessa e enviar para a caixa? ou importar o arquivo texto da CEF e emitir os boletos? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 13, 2020 Author Report Share Posted August 13, 2020 Captando mais informações. Semana que vem retorno ao assunto. Estamos fazendo testes com o MRBOLETO. Obg. abs. Quote Link to comment Share on other sites More sharing options...
rochinha Posted August 13, 2020 Report Share Posted August 13, 2020 Amiguinhos, Caso queira integrar com MrBoleto, analise o meu código. A primeira função eu uso para marcar os registros do meu arquivo financeiro que farão parte do job de impressões. A segunda função cria o script que o MrBoleto interpreta e chuta-pro-gol. /* ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** * FUNCAO: Imprime boletos de varios bancos utilizando o aplicativo MRBoleto ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** */ function MarcaMRBoleto() local oDlg local lSave := 2, lEmite := .f., lEmail := .f. cPathBLPRO := VerifyINI( "MRBoleto", "Pasta", "", cPath+"nfw.ini", .f. ) cArquivoLote := VerifyINI( "MRBoleto", "Lote" , "", cPath+"nfw.ini", .f. ) if empty( cPathBLPRO ) if MsgYesNo( "Procurar pasta do componente MRBoleto?" ) cPathBLPRO := cGetDir("Pasta do MRBoleto",cPathBLPRO) + "\" VerifyINI( "MRBoleto", "Pasta", cPathBLPRO, cPath+"nfw.ini", .t. ) endif endif if !file( cArquivoLote ) cArquivoLote := cGetFile( "Arquivo Lote (*.csv) |*.csv|" + "Todos arquivos (*.*) |*.*|", "Selecione o arquivo" ) VerifyINI( "MRBoleto", "Lote" , cArquivoLote, cPath+"nfw.ini", .t. ) endif if ! file( cPathBLPRO+"\MRBoleto.exe" ) MsgStop( "Instale o componente MRBoleto" ) return .t. endif SET _3DLOOK ON DEFINE DIALOG oDlg RESOURCE "dlgConfirma" TITLE "Confirma" REDEFINE ICON oIcon100 ID 100 RESOURCE "icon_impresora" OF oDlg REDEFINE ICON oIcon103 ID 103 RESOURCE "icon_email" OF oDlg REDEFINE SAY oSay101 ID 101 PROMPT "Atencao: O titulo esta sendo acrescentado ao JOB de boletos a serem amitidos. Confirma?" OF oDlg REDEFINE SAY oSay102 ID 102 PROMPT "Voce gostaria de enviar este boleto para a caixa de email deste cliente?" OF oDlg REDEFINE BUTTON ID 1 OF oDlg ACTION ( lSave := 1 , oDlg:End() ) REDEFINE BUTTON ID 2 OF oDlg ACTION ( lSave := 2 , oDlg:End() ) REDEFINE BUTTON oBtn3 ID 3 OF oDlg ACTION ( lSave := 3 , oDlg:End() ) DEFAULT oBtn3:cCaption := "Confirmar e Enviar" ACTIVATE DIALOG oDlg CENTERED do case case lSave = 1 lEmite := .t. lEmail := .f. case lSave = 2 lEmite := .f. case lSave = 3 lEmite := .t. lEmail := .t. endcase if lEmite // MsgYesNo("Atencao:"+CRLF+CRLF+"O titulo esta sendo acrescentado ao JOB de"+CRLF+"boletos a serem amitidos."+CRLF+CRLF+"Continua?",) Sacado_Nome := FDECRIPTA( PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"NOME" ) ) Sacado_CNPJ := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"CGC" ) Sacado_Rua := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"ENDERECO" ) Sacado_Bairro := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"BAIRRO" ) Sacado_Cidade := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"CIDADE" ) Sacado_Estado := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"ESTADO" ) Sacado_CEP := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"CEP" ) Sacado_EMail := PESQ( STR(CONTAS->IDCLIENTE,5,0), "CLIENTES", 2,"EMAIL" ) Boleto_Juros := PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"JUROS" ) Boleto_Taxa := PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"TAXA" ) Boleto_Instrucao := alltrim( PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"INSTRUCAO1" ) )+"|"+; alltrim( PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"INSTRUCAO2" ) )+"|"+; alltrim( PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"INSTRUCAO3" ) )+"|"+; alltrim( PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"INSTRUCAO4" ) )+"|"+; alltrim( PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"INSTRUCAO5" ) ) ImprimeMRBDOC( Banco________, ; // 001 Banco_Agencia, ; // 3482 Banco_Ag_Dv__, ; // 07 Banco_Ag_Un_A, ; // Conta________, ; // 90090 Conta_DV_____, ; // 7 Conta_OP_____, ; // Carteira_____, ; // 18 Carteira_Tipo, ; // CONTAS->IDBOLETO, ; "NFe", ; Prefixo______, ; // 153454 Prefixo_DV___, ; // 9 CONTAS->DESDOBRA, ; "N", ; "R$", ; CharRem("-/",dtoz(CONTAS->DATA)), ; CharRem("-/",dtoz(CONTAS->ARECEBER)), ; CONTAS->VALOR, ; Boleto_Juros, ; Boleto_Taxa, ; 2, ; // Copias PESQ( str(CONTAS->IDBANCO,5,0), "INSTRU",1,"PRACA" ), ; // Pague em qualquer banco até o limite da data de vencimento Boleto_Instrucao, ; "", ; // Demonstrativo-Vetor: pode a exemplo ser utilizado para se demonstrar o rateio de despesas para condominios||Utiliza Fonte com espaçamento de tamanho fixo ( Courier ), o que permite geração de demostrativos financeiros flexiveis.||O limite é sua criatividade :)||Exiba detalhes importantes para o usuario||Valores em cobrança||Contratos||Informações úteis||Etc... Cl_Nome+"|"+Cl_CNPJ, ; Sacado_Nome+"|"+Sacado_CNPJ+"|"+Sacado_Rua+"|"+Sacado_Bairro+"|"+Sacado_Cidade+"|"+Sacado_Estado+"|"+Sacado_cep, ; "", ; // Avalista: CNPJ|Avalista: Nome|Avalista: Endereço ( Opcional ) Sacado_Email, lEmail ) endif return .t. FUNCTION ImprimeMRBDOC( Banco________, ; Banco_Agencia, ; Banco_Ag_Dv__, ; Banco_Ag_Un_A, ; Conta________, ; Conta_DV_____, ; Conta_OP_____, ; Carteira_____, ; Carteira_Tipo, ; NossoNumero__, ; Doc_Origem___, ; Prefixo______, ; Prefixo_DV___, ; Doc_Numero___, ; Doc_Aceite___, ; Doc_Especie__, ; Doc_Data_____, ; Vencimento___, ; Valor________, ; Multa_Auto___, ; Juros_Mes____, ; Numero_Vias__, ; Local_Pagamen, ; Instrucoes___, ; Demonstrativo, ; Cedente______, ; Sacado_______, ; Avalista_____, ; cEmail, lEmail ) LOCAL nHandle, nLenght, cHeader if file( cPathBLPRO+"\MRBoleto.ini" ) VerifyINI( "MRBoleto", "Banco________","001" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Banco_Agencia","3482" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Banco_Ag_Dv__","07" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Banco_Ag_Un_A","" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Conta________","90090" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Conta_DV_____","7" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Conta_OP_____","" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Carteira_____","18" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Carteira_Tipo","" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "NossoNumero__","62160101", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Doc_Origem___","NFe" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Prefixo______","153454" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Prefixo_DV___","9" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Doc_Numero___","00001234", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Doc_Aceite___","N" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Doc_Especie__","R$" , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Doc_Data_____","20121127", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Vencimento___","20121226", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Valor________",13.37 , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Multa_Auto___",2 , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Juros_Mes____",2 , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Numero_Vias__",2 , cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Local_Pagamen","Pague em qualquer banco até o limite da data de vencimento", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Instrucoes___","Desconto de 5% se pago até o dia 07/12/2012|Não receber após 30 dias da data de vencimento", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Demonstrativo","Vetor: pode a exemplo ser utilizado para se demonstrar o rateio de despesas para condominios||Utiliza Fonte com espaçamento de tamanho fixo ( Courier ), o que permite geração de demostrativos financeiros flexiveis.||O limite é sua criatividade :)||Exiba detalhes importantes para o usuario||Valores em cobrança||Contratos||Informações úteis||Etc...", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Cedente______","Cedente: CNPJ|Cedente: Nome|Cedente: Endereço ( Opcional )", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Sacado_______","Sacado: CNPJ|Sacado: Nome|Sacado: Endereço Completo", cPathBLPRO+"\MRBoleto.ini", .t. ) VerifyINI( "MRBoleto", "Avalista_____","Avalista: CNPJ|Avalista: Nome|Avalista: Endereço ( Opcional )", cPathBLPRO+"\MRBoleto.ini", .t. ) endif cPathBLPRO := VerifyINI( "MRBoleto", "Pasta", "", cPath+"nfw.ini", .f. ) cArquivoLote := VerifyINI( "MRBoleto", "Lote" , "", cPath+"nfw.ini", .f. ) if empty( cPathBLPRO ) if MsgYesNo( "Procurar pasta do componente MRBoleto?" ) cPathBLPRO := cGetDir("Pasta do MRBoleto",cPathBLPRO) + "\" VerifyINI( "MRBoleto", "Pasta", cPathBLPRO, cPath+"nfw.ini", .t. ) endif endif if !file( cArquivoLote ) cArquivoLote := cGetFile( "Arquivo Lote (*.csv) |*.csv|" + "Todos arquivos (*.*) |*.*|", "Selecione o arquivo" ) VerifyINI( "MRBoleto", "Lote" , cArquivoLote, cPath+"nfw.ini", .t. ) endif if file( cPathBLPRO+"\MRBoleto.exe" ) // VerifyINI( "MRBoleto", "Banco________",Banco________, cPathBLPRO+"\MRBoleto.ini", .t. ) // "341" VerifyINI( "MRBoleto", "Banco_Agencia",Banco_Agencia, cPathBLPRO+"\MRBoleto.ini", .t. ) // "3482" VerifyINI( "MRBoleto", "Banco_Ag_Dv__",Banco_Ag_Dv__, cPathBLPRO+"\MRBoleto.ini", .t. ) // "07" VerifyINI( "MRBoleto", "Banco_Ag_Un_A",Banco_Ag_Un_A, cPathBLPRO+"\MRBoleto.ini", .t. ) // "" VerifyINI( "MRBoleto", "Conta________",Conta________, cPathBLPRO+"\MRBoleto.ini", .t. ) // "90090" VerifyINI( "MRBoleto", "Conta_DV_____",Conta_DV_____, cPathBLPRO+"\MRBoleto.ini", .t. ) // "7" VerifyINI( "MRBoleto", "Conta_OP_____",Conta_OP_____, cPathBLPRO+"\MRBoleto.ini", .t. ) // "" VerifyINI( "MRBoleto", "Carteira_____",Carteira_____, cPathBLPRO+"\MRBoleto.ini", .t. ) // "18" VerifyINI( "MRBoleto", "Carteira_Tipo",Carteira_Tipo, cPathBLPRO+"\MRBoleto.ini", .t. ) // "" VerifyINI( "MRBoleto", "NossoNumero__",NossoNumero__, cPathBLPRO+"\MRBoleto.ini", .t. ) // "62160101" VerifyINI( "MRBoleto", "Doc_Origem___",Doc_Origem___, cPathBLPRO+"\MRBoleto.ini", .t. ) // "NFe" VerifyINI( "MRBoleto", "Prefixo______",Prefixo______, cPathBLPRO+"\MRBoleto.ini", .t. ) // "153454" VerifyINI( "MRBoleto", "Prefixo_DV___",Prefixo_DV___, cPathBLPRO+"\MRBoleto.ini", .t. ) // "9" VerifyINI( "MRBoleto", "Doc_Numero___",Doc_Numero___, cPathBLPRO+"\MRBoleto.ini", .t. ) // "00001234" VerifyINI( "MRBoleto", "Doc_Aceite___",Doc_Aceite___, cPathBLPRO+"\MRBoleto.ini", .t. ) // "N" VerifyINI( "MRBoleto", "Doc_Especie__",Doc_Especie__, cPathBLPRO+"\MRBoleto.ini", .t. ) // "R$" VerifyINI( "MRBoleto", "Doc_Data_____",Doc_Data_____, cPathBLPRO+"\MRBoleto.ini", .t. ) // "20121127" VerifyINI( "MRBoleto", "Vencimento___",Vencimento___, cPathBLPRO+"\MRBoleto.ini", .t. ) // "20121226" VerifyINI( "MRBoleto", "Valor________",Valor________, cPathBLPRO+"\MRBoleto.ini", .t. ) // 13.37 VerifyINI( "MRBoleto", "Multa_Auto___",Multa_Auto___, cPathBLPRO+"\MRBoleto.ini", .t. ) // 2 VerifyINI( "MRBoleto", "Juros_Mes____",Juros_Mes____, cPathBLPRO+"\MRBoleto.ini", .t. ) // 2 VerifyINI( "MRBoleto", "Numero_Vias__",Numero_Vias__, cPathBLPRO+"\MRBoleto.ini", .t. ) // 2 VerifyINI( "MRBoleto", "Local_Pagamen",Local_Pagamen, cPathBLPRO+"\MRBoleto.ini", .t. ) // "Pague em qualquer banco até o limite da data de vencimento" VerifyINI( "MRBoleto", "Instrucoes___",Instrucoes___, cPathBLPRO+"\MRBoleto.ini", .t. ) // "Desconto de 5% se pago até o dia 07/12/2012|Não receber após 30 dias da data de vencimento" VerifyINI( "MRBoleto", "Demonstrativo",Demonstrativo, cPathBLPRO+"\MRBoleto.ini", .t. ) // "Vetor: pode a exemplo ser utilizado para se demonstrar o rateio de despesas para condominios||Utiliza Fonte com espaçamento de tamanho fixo ( Courier ), o que permite geração de demostrativos financeiros flexiveis.||O limite é sua criatividade :)||Exiba detalhes importantes para o usuario||Valores em cobrança||Contratos||Informações úteis||Etc..." VerifyINI( "MRBoleto", "Cedente______",Cedente______, cPathBLPRO+"\MRBoleto.ini", .t. ) // "Cedente: CNPJ|Cedente: Nome|Cedente: Endereço ( Opcional )" VerifyINI( "MRBoleto", "Sacado_______",Sacado_______, cPathBLPRO+"\MRBoleto.ini", .t. ) // "Sacado: CNPJ|Sacado: Nome|Sacado: Endereço Completo" VerifyINI( "MRBoleto", "Avalista_____",Avalista_____, cPathBLPRO+"\MRBoleto.ini", .t. ) // "Avalista: CNPJ|Avalista: Nome|Avalista: Endereço ( Opcional )" // if lEmail // MsgYesNo("Voce deseja enviar este boleto por email?") // empty(cEmail) WaitRun( cPathBLPRO+"\MRBoleto.exe -M /E /QM /QE /F:"+cArquivoLote ) else WaitRun( cPathBLPRO+"\MRBoleto.exe -M /P /QM /QE /F:"+cArquivoLote ) endif else MsgStop( "MRBoleto nao instalado." ) endif RETURN .T. Função VerifyINI() FUNCTION VerifyINI( _section_, _entry_, _var_, _inifile_, _grava_ ) oIni := TIni():New( _inifile_ ) if _grava_ = .t. oIni:Set( _section_, _entry_, _var_ ) endif return oIni:Get( _section_, _entry_, _var_, _var_ ) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 13, 2020 Author Report Share Posted August 13, 2020 Dear Rochinha, poste o .RC de RESOURCE "dlgConfirma" Porfa, sim? Quote Link to comment Share on other sites More sharing options...
rochinha Posted August 14, 2020 Report Share Posted August 14, 2020 Amiguinhos, resource: dlgConfirma DIALOG 31, 35, 283, 105 STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Confirmar rotina" FONT 8, "Tahoma" { DEFPUSHBUTTON "Não", 2, 228, 32, 50, 14 PUSHBUTTON "Sim", 1, 175, 32, 50, 14 PUSHBUTTON "Inativar", 3, 174, 86, 104, 14 ICON "icon_lixeira", 100, 6, 5, 21, 20 LTEXT "Tem certeza de que deseja excluir o registro escolhido? Isto não poderá ser revertido posteriormente.", 101, 35, 5, 244, 26 ICON "icon_info", 103, 6, 58, 21, 20 LTEXT "Voce poderá colocar o registro na situação de inativo ou arquivo morto e poderá recuperá-lo posteriormente.", 102, 35, 58, 244, 26 GROUPBOX "", -1, -6, 48, 296, 62, BS_GROUPBOX } Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted August 17, 2020 Report Share Posted August 17, 2020 Tenho uma aqui via código mesmo Kapi, veja se serve... #INCLUDE "FiveWin.ch" #include "barcode.ch" #include "TSButton.ch" // Para testar o codigo de barras // http://evandro.net/codigo_barras.html static oWnd, oImage, oImageSm static oprn, xa, xb, ofon2, ofont, ofontn, ofont2 static x_1, y_1, x, y, i, k, aonde, vnossonm, _mod10, _mod11 static f_venc, c_livre, v_docum, datavenc, valor, dv_codb static cod_dig, cod_barra, mano, ika, kra,vEmpr, vCNPJ, vMens1 static vFant, vEnd, vBai, vCid, vUf, vCep, vCeden, vNNum, vCod, JUROS FUNCTION IBOL(cTitle,mano) PRIVATE oPrn, oFont, oFont1, oFont2, oIni, oPrinter, ct , nColP , nLinP , nLinC , Pag, ika,nlBol,nlBarra,contaBol, oFont, oFont1 IF oNumBolE = 0 MSGSTOP("Não existem boletos a imprimir!","Boletos") RETURN nil ENDI _mod10 := '12121212121212121212121212121212121212121212121212121212121212121212121212121212' _mod11 := '98765432987654329876543298765432987654329876543298765432987654329876543298765432' SELECT Filiais vEmpr := Filiais->cedente vCeden := ALLTRIM(Filiais->cod_ced) vAgenc := Filiais->agencia vesp_doc := Filiais->especie_do vesp_moe := Filiais->especie_mo vcarteir := Filiais->carteira vlocalPg := Filiais->localpg vmodbol := Filiais->modbol vMensBol1:= Filiais->MensBol1 vMensBol2:= Filiais->MensBol2 vMensBol3:= Filiais->MensBol3 vMensBol4:= Filiais->MensBol4 vMensBol5:= Filiais->MensBol5 vMensBol6:= Filiais->MensBol6 vMensBol7:= Filiais->MensBol7 vMensBol8:= Filiais->MensBol8 vMensBol9:= Filiais->MensBol9 vMensBol10:= Filiais->MensBol10 printer oprn DOC "Imprime Boletos "+cTitle preview x_1 := oprn:nhorzres() y_1 := oprn:nvertres() xa := oprn:cmtr2pix(1, 2.5) // Deslocamento xb := oprn:cmtr2pix(2, 3.5) // Deslocamento y := (xb[1] - xa[1]) / 10 x := (xb[2] - xa[2]) / 10 DEFINE FONT oFont NAME "COURIER NEW" SIZE 0,-8 BOLD OF oPrn DEFINE FONT oFont1 NAME "COURIER NEW" SIZE 0,-10 OF oPrn BOLD nRowStep = oPrn:nVertRes() / 60 // We want 20 rows nColStep = oPrn:nHorzRes() / 280 // We want 15 cols conta := 1 contaBol := 0 nlBol := 1.1 // --> Boleto do topo //nlBol := .8 // --> Boleto do topo IF vmodbol = 0 nlBol := 3.24 // --> Boleto do topo ENDIF CABBOL() FOR a := 1 TO oNumBolE IF conta > 3 .OR. ( vmodbol = 0 .AND. conta > 1) oprn:endpage() conta := 1 nlBol := 1.1 // --> Boleto do topo //nlBol := .8 // --> Boleto do topo IF vmodbol = 0 nlBol := 3.24 // --> Boleto do topo ENDIF CABBOL() ENDIF SELECT Clientes vDoc := mano[a,1] datavenc := mano[a,2] valor := mano[a,3] vCod := mano[a,4] vNomeCli := mano[a,5] vCpf := mano[a,6] vEndereco:= mano[a,7] vPerimetr:= mano[a,8] vBairro := mano[a,9] vCidade := mano[a,10] vEstado := mano[a,11] vCep := mano[a,12] vParc := mano[a,13] vnossonm := mano[a,14] vdoc_pro := mano[a,15] vcodclbo := mano[a,16] IF AT(vParc,"/") = 0 vDoc := ALLTRIM(vParc)+"/"+ALLTRIM(vDoc) endif IF conta = 1 nlBarra := 1760 IF vmodbol = 0 nlBarra := 4000 ENDIF ELSEIF conta = 2 nlBarra := 3820 ELSEIF conta = 3 nlBarra := 5870 ENDIF ACAO() conta++ nlBol += 8.7 NEXT oprn:endpage() endprint oFont:END() oFont1:END() return(Nil) FUNCTION VERHISTBOL(aHistBol) LOCAL oFont IF LEN(aHistBol) > 0 DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-6 DEFINE CURSOR oCursor RESOURCE 1 DEFINE DIALOG proccli RESOURCE "histbol" TITLE "Boletos Já Gerados neste Intervalo" REDEFINE LISTBOX oBrw FIELDS aHistBol[oBrw:nat,1],aHistBol[oBrw:nat,2],aHistBol[oBrw:nat,3],aHistBol[oBrw:nat,4],aHistBol[oBrw:nat,5],aHistBol[oBrw:nat,6],aHistBol[oBrw:nat,7]; //Dependente->nomedep,Dependente->grau_dep,DTOC(Dependente->datacad); HEADERS 'Código','Cliente','Vencimento','Prc','Valor','Nosso Número','Proc. em' ; FIELDSIZES 60,236,65,24,45,115,65 ; ID 100 OF proccli CURSOR oCursor COLOR nRGB(179,239,255),RGB(0,0,0) UPDATE oBrw:SetArray(aHistBol) oBrw:REFRESH() REDEFINE SBUTTON ID 201 OF proccli PIXELS FONT oFont ; PROMPT "Ok" TEXT POSITION 4 ACTION proccli:END() ACTIVATE DIALOG proccli CENTER ENDIF RETURN (.t.) STATIC FUNCTION CABBOL() LOCAL aNumBol oprn:startpage() DO CASE CASE vmodbol = 0 oPrn:SayBitmap(8,8,fdefa+"\boletoFL.bmp",4410,6190) //,4190,5990) CASE oNumBolE = 1 oPrn:SayBitmap(8,8,fdefa+"\boleto1.bmp",4410,6190) //,4190,5990) CASE oNumBolE = 2 oPrn:SayBitmap(8,8,fdefa+"\boleto2.bmp",4410,6190) //,4190,5990) CASE oNumBolE >= 3 aNumBol := oNumBolE-contaBol DO CASE CASE aNumBol >= 3 oPrn:SayBitmap(8,8,fdefa+"\boleto3.bmp",4410,6190) //,4190,5990) CASE aNumBol = 1 oPrn:SayBitmap(8,8,fdefa+"\boleto1.bmp",4410,6190) //,4190,5990) CASE aNumBol = 2 oPrn:SayBitmap(8,8,fdefa+"\boleto2.bmp",4410,6190) //,4190,5990) CASE vParcelas = 6 oPrn:SayBitmap(8,8,fdefa+"\boleto3.bmp",4410,6190) //,4190,5990) ENDCASE ENDCASE RETURN nil ****************************************************************** STATIC FUNCTION ACAO() ****************************************************************** vnossonm += '-' + mod11("24"+vnossonm) prepara() monta_codigo() ******************************************************************* * Recibo do Sacado * ******************************************************************* IF vmodbol = 0 //oPrn:CmSay( (nlBol-1.1) ,0.0 , "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ",oFont) oPrn:CmSay( (nlBol-0.85) ,06.35 , transform(cod_dig, '@R 99999.99999 99999.999999 99999.999999 9 99999999999999'),oFont1) oPrn:CmSay( (nlBol ) ,00.94, vEmpr,oFont) oPrn:CmSay( (nlBol ) ,08.74 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) oPrn:CmSay( (nlBol ) ,12.11 , vesp_doc,oFont) oPrn:CmSay( (nlBol ) ,14.35 , "14/"+vnossonm,oFont) nlBol+=0.70 oPrn:CmSay( (nlBol ) ,00.94, ALLTRIM(vdoc),oFont) oPrn:CmSay( (nlBol ) ,05.98 , vcpf,oFont) oPrn:CmSay( (nlBol ) ,09.57 , DTOC(datavenc),oFont) oPrn:CmSay( (nlBol ) ,16.00 , TRANSFORM(valor,'@E 999,999.99'),oFont) nlBol+=1.30 oPrn:CmSay( (nlBol ) ,00.94, vNomeCli,oFont) nlBol+=0.60 IF !EMPTY(vMensBol1) oPrn:CmSay( (nlBol ) ,00.94, vMensBol1,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol2) oPrn:CmSay( (nlBol ) ,00.94, vMensBol2,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol3) oPrn:CmSay( (nlBol ) ,00.94, vMensBol3,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol4) oPrn:CmSay( (nlBol ) ,00.94, vMensBol4,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol5) oPrn:CmSay( (nlBol ) ,00.94, vMensBol5,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol6) oPrn:CmSay( (nlBol ) ,00.94, vMensBol6,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol7) oPrn:CmSay( (nlBol ) ,00.94, vMensBol7,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol8) oPrn:CmSay( (nlBol ) ,00.94, vMensBol8,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol9) oPrn:CmSay( (nlBol ) ,00.94, vMensBol9,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol10) oPrn:CmSay( (nlBol ) ,00.94, vMensBol10,oFont) nlBol+=0.20 ENDIF ELSEIF vmodbol = 1 //oPrn:CmSay( (nlBol-1.1) ,0.0 , "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ",oFont) oPrn:CmSay( (nlBol+1.2) ,0.7 , vdoc,oFont) oPrn:CmSay( (nlBol+1.8) ,0.7 , DTOC(datavenc),oFont) oPrn:CmSay( (nlBol+2.4) ,0.7 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) oPrn:CmSay( (nlBol+3.0) ,0.7 , "24/"+vnossonm,oFont) oPrn:CmSay( (nlBol+3.7) ,0.7 , TRANSFORM(valor,'@E 999,999.99'),oFont) oPrn:CmSay( (nlBol+7.4) ,0.7 , LEFT(vNomeCli,22),oFont) ENDIF ******************************************************************* * Ficha de compensação * ******************************************************************* IF vmodbol = 0 nlBol:=9.88 oPrn:CmSay( (nlBol-0.85),6.35 , transform(cod_dig, '@R 99999.99999 99999.999999 99999.999999 9 99999999999999'),oFont1) oPrn:CmSay( (nlBol ),00.94 , vlocalPg,oFont) oPrn:CmSay( (nlBol ),16.00 , DTOC(datavenc),oFont) nlBol+=0.64 oPrn:CmSay( (nlBol ),00.94, vEmpr,oFont) oPrn:CmSay( (nlBol ),15.50 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) nlBol+=0.70 oPrn:CmSay( (nlBol ),00.94 , DTOC(DATE()),oFont) oPrn:CmSay( (nlBol ),03.99 , ALLTRIM(vdoc),oFont) oPrn:CmSay( (nlBol ),08.10 , vesp_doc,oFont) oPrn:CmSay( (nlBol ),09.85 , "NÃO",oFont) oPrn:CmSay( (nlBol ),10.87 , DTOC(vdoc_pro),oFont) oPrn:CmSay( (nlBol ),14.30 , "24/"+vnossonm,oFont) nlBol+=0.70 oPrn:CmSay( (nlBol ),03.99 , vcarteir,oFont) oPrn:CmSay( (nlBol ),06.29 , vesp_moe,oFont) oPrn:CmSay( (nlBol ),16.00 , TRANSFORM(valor,'@E 999,999.99'),oFont) nlBol+=0.60 IF !EMPTY(vMensBol1) oPrn:CmSay( (nlBol ) ,00.94, vMensBol1,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol2) oPrn:CmSay( (nlBol ) ,00.94, vMensBol2,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol3) oPrn:CmSay( (nlBol ) ,00.94, vMensBol3,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol4) oPrn:CmSay( (nlBol ) ,00.94, vMensBol4,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol5) oPrn:CmSay( (nlBol ) ,00.94, vMensBol5,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol6) oPrn:CmSay( (nlBol ) ,00.94, vMensBol6,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol7) oPrn:CmSay( (nlBol ) ,00.94, vMensBol7,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol8) oPrn:CmSay( (nlBol ) ,00.94, vMensBol8,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol9) oPrn:CmSay( (nlBol ) ,00.94, vMensBol9,oFont) nlBol+=0.20 ENDIF IF !EMPTY(vMensBol10) oPrn:CmSay( (nlBol ) ,00.94, vMensBol10,oFont) nlBol+=0.20 ENDIF //oPrn:CmSay( (nlBol+5.0),4.0 , IIF(Filiais->imp_parcel,'PARCELA '+vParc,""),oFont) nlBol:=15.85 tEndeP := vEndereco+' - '+vBairro+' - '+vCidade+' - '+vEstado+' - '+vcep //oPrn:CmSay( (nlBol+5.5),4.8 , "CÓDIGO: "+vcodclbo,oFont) oPrn:CmSay( (nlBol ),00.94, vNomeCli,oFont) oPrn:CmSay( (nlBol ),13.20 , "CPF/CNPJ: "+vCpf,oFont) nlBol+=0.20 oPrn:CmSay( (nlBol ),00.94, vEndereco,oFont) oPrn:CmSay( (nlBol ),13.20 , "UF: "+VeSTADO,oFont) oPrn:CmSay( (nlBol ),14.60 , "CEP: "+Vcep,oFont) nlBol+=0.20 oPrn:CmSay( (nlBol ),00.94, vBairro,oFont) oPrn:CmSay( (nlBol ),13.20 , "Município: "+vcidade,oFont) @ nlBarra ,085 int25 cod_barra OF oPrn SIZE 1.1 //nlBol+=5.2 //oPrn:CmSay( (nlBol ),00.94, cod_barra,oFont) ELSEIF vmodbol = 1 //oPrn:CmSay( (nlBol-0.1),8.4 , transform(cod_dig, '@R 99999.99999 99999.999999 99999.999999 9 99999999999999'),oFont1) oPrn:CmSay( (nlBol+0.1),8.3 , transform(cod_barra,'@R 99999999999999999999999999999999999999999999999'),oFont1) oPrn:CmSay( (nlBol+0.8),4.0 , vlocalPg,oFont) oPrn:CmSay( (nlBol+0.8),17.3 , DTOC(datavenc),oFont) oPrn:CmSay( (nlBol+1.1),4.0 , vEmpr,oFont) oPrn:CmSay( (nlBol+1.1),16.9 , vAgenc+"/"+vCeden+"-"+c_digCed,oFont) oPrn:CmSay( (nlBol+2.0),4.0 , DTOC(DATE()),oFont) oPrn:CmSay( (nlBol+2.0),6.7 , vdoc,oFont) oPrn:CmSay( (nlBol+2.0),9.8 , vesp_doc,oFont) oPrn:CmSay( (nlBol+2.0),11.7 , "NÃO",oFont) oPrn:CmSay( (nlBol+2.0),13.8 , DTOC(vdoc_pro),oFont) oPrn:CmSay( (nlBol+2.0),16.0 , "24/"+vnossonm,oFont) oPrn:CmSay( (nlBol+2.6),6.6 , vcarteir,oFont) oPrn:CmSay( (nlBol+2.6),8.7 , vesp_moe,oFont) oPrn:CmSay( (nlBol+2.6),17.3 , TRANSFORM(valor,'@E 999,999.99'),oFont) // Comentários com espaço de 92 caracteres oPrn:CmSay( (nlBol+3.0),4.0 , vMensBol1,oFont) oPrn:CmSay( (nlBol+3.2),4.0 , vMensBol2,oFont) oPrn:CmSay( (nlBol+3.4),4.0 , vMensBol3,oFont) oPrn:CmSay( (nlBol+3.6),4.0 , vMensBol4,oFont) oPrn:CmSay( (nlBol+3.8),4.0 , vMensBol5,oFont) oPrn:CmSay( (nlBol+4.0),4.0 , vMensBol6,oFont) oPrn:CmSay( (nlBol+4.2),4.0 , vMensBol7,oFont) oPrn:CmSay( (nlBol+4.4),4.0 , vMensBol8,oFont) oPrn:CmSay( (nlBol+4.6),4.0 , vMensBol9,oFont) oPrn:CmSay( (nlBol+4.8),4.0 , vMensBol10,oFont) oPrn:CmSay( (nlBol+5.0),4.0 , IIF(Filiais->imp_parcel .AND. AT(vParc,"/") > 0,'PARCELA '+vParc,""),oFont) tEndeP := vEndereco+' - '+vBairro+' - '+vCidade+' - '+vEstado+' - '+vcep oPrn:CmSay( (nlBol+6.4),4.8 , "CÓDIGO: "+vcodclbo,oFont) oPrn:CmSay( (nlBol+5.7),4.8 , vNomeCli+' - '+vCpf,oFont) oPrn:CmSay( (nlBol+5.9),4.8 , LEFT(tEndeP,80),oFont) oPrn:CmSay( (nlBol+6.1),4.8 , IIF( LEN(tEndeP) > 80,ALLTRIM(SUBST(tEndep,81,40))+" - ","")+vPerimetr,oFont) @ nlBarra ,872 int25 cod_barra OF oPrn SIZE 1.1 ENDIF contaBol++ return(Nil) *** *** Calcula Módulo 10 *** ************************************************** STATIC function mod10(q_num) ************************************************** local x1, x2, x3, x4, x5, x6, x7 if empty(q_num) return('X') end x1 := len(q_num) x2 := right(_mod10, x1) x3 := 0 for x4 := 1 to x1 x5 := val(substr(q_num, x4, 1)) * val(substr(x2, x4, 1)) x6 := strzero(x5, 2) x7 := val(left(x6, 1)) + val(right(x6, 1)) x3 += x7 next x5 := int(x3 / 10) x7 := x3 - (x5 * 10) x2 := str(iif(x7 = 0, 0, 10 - x7), 1) return(x2) *** *** Calcula Módulo 11 *** ************************************************* STATIC function mod11(q_num,ff) ************************************************* local x1, x2, x3, x4, x5, x6, x7 if empty(q_num) return('X') end x1 := len(q_num) x2 := right(_mod11, x1) x3 := 0 for x4 := 1 to x1 x5 := val(substr(q_num, x4, 1)) * val(substr(x2, x4, 1)) x3 += x5 next x5 := int(x3 / 11) x7 := x3 - (x5 * 11) t:=x7 DO CASE CASE x7 <= 1 IF ff != NIL x2 := str( 1, 1) ELSE x2 := str( 0, 1) ENDIF CASE x7 > 9 x2 := str( 1, 1) OTHER x2 := str( 11 - x7, 1) ENDCASE return(x2) ***************************************************************************************** STATIC function mod11X(q_num) ***************************************************************************************** local x1, x2, x3, x4, x5, x6, x7 if empty(q_num) return('X') end x1 := len(q_num) x2 := right(_mod11, x1) x3 := 0 for x4 := 1 to x1 x5 := val(substr(q_num, x4, 1)) * val(substr(x2, x4, 1)) x3 += x5 next x5 := int(x3 / 11) x7 := x3 - (x5 * 11) g:=x7 //x2 := str(iif(x7 <= 1 , 0, 11 - x7), 1) x2 := str(iif(x7 <= 1 .or. x7 > 9, 0, 11 - x7), 1) return(x2) *** *** ***************************************************************************************** STATIC function monta_codigo ***************************************************************************************** local xcod, xbarra xbarra := '1049' // Código do Banco + Moeda (9 - Real) xbarra += f_venc // Fator de Vencimento xbarra += v_docum // Valor do Documento xbarra += c_livre // Campo Livre dv_codb := mod11(xbarra,1) // xbarra := stuff(xbarra, 5, 0, dv_codb) // Digito Verificador Geral Código de Barras xcod := '1049' + substr(c_livre, 1, 5) xcod += mod10(xcod) // 1o. campo xcod += substr(c_livre, 6, 10) + mod10(substr(c_livre, 6, 10)) // 2o. campo xcod += substr(c_livre, 16, 10) + mod10(substr(c_livre, 16, 10)) // 3o. campo xcod += dv_codb // 4o. campo (digito verificador geral do código de barra) xcod += f_venc // 5o. campo (1/2) xcod += v_docum // 5o. campo (2/2) cod_dig := xcod cod_barra := xbarra return(Nil) *** *** Calcula o fator de vencimento *** Monta Valor Documento *** Monta Campo Livre *** ***************************************************************************************** STATIC function prepara ***************************************************************************************** f_venc := strzero(datavenc - ctod('07/10/1997'), 4) v_docum := strzero(valor * 100, 10) c_digCed:= mod11(vCeden) // Dígto cedente c_livre := ALLTRIM(vCeden)+c_digCed+SUBST(vnossonm,1,3)+"2"+SUBST(vnossonm,4,3)+"4"+SUBST(vnossonm,7,9) c_digLiv:= mod11(c_livre) // Digito campo livre c_livre := c_livre+c_digLiv return(Nil) Antigão mas da uma olhada blz! Abraços Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 18, 2020 Author Report Share Posted August 18, 2020 Ladinilson, dê uma olhada no seu skype, porfa. Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 19, 2020 Author Report Share Posted August 19, 2020 Ladinilson, Rochinha, estou no caminho certo? Quote Link to comment Share on other sites More sharing options...
rochinha Posted August 19, 2020 Report Share Posted August 19, 2020 Amiguinhos, Ladinilson, posta a estrutura do filiais pra nóis, valeu? Quote Link to comment Share on other sites More sharing options...
rochinha Posted August 19, 2020 Report Share Posted August 19, 2020 Amiguinhos, kapiaba muitas das informações contidas num boleto podem sesr automatizadas quando voce fecha o pedido e lança as parcelas financeiras no seu arquivo financeiro. Numa tela como esta você pode apresentar os dados de um boleto existente para possível complemento de informação. Para cadastro, imagine que fuçuários são preguicosos ao ponto de terem pavor de preencher estes documentos. Não sei se você vai colocar uma imagem de um boleto vazio como fundo desta tela, ficaria legal pois o boleto wysewyg ficaria perfeito na apresentação pré-impressão. e muitos dos campos ai teriam de ser suportados por combos para prevenir preguiça(erros de preenchimento) e invalidação do boleto. Não cheguei a completar a compilação do trecho que o Ladinilson postou para verificar a saida final, mas antes de criar a tela, programe a impressão com dados da empresa e proceda a homologação. Passando pela homologação junto ao banco(homologação: nome bonito que define: Você ir até um banco, enfrentar fila, pagar um boleto e o caixa lhe responder que o boleto é inválido ou não). Resumindo, acrescente a opção de Emitir Boleto deste Registro? e complete internamente todos os campos necessários e gere a impressão. Tudo ok? cliente satisfeito? fuçonários felizes, ai pare com tempo, abra uma breja, pegue um torresminho e começe a desenhar a tela. Alguns Fuçuário são chatos o bastante pra colocar tanta exigência que se um sistema pudesse ser baseado no que eles querem ver o sistema teria apenas uma dialogo e um botão no meio dizendo: Aperte aqui que eu faço o Resto. Quote Link to comment Share on other sites More sharing options...
alex2002 Posted August 19, 2020 Report Share Posted August 19, 2020 5 minutos atrás, rochinha disse: Amiguinhos, kapiaba muitas das informações contidas num boleto podem sesr automatizadas quando voce fecha o pedido e lança as parcelas financeiras no seu arquivo financeiro. Numa tela como esta você pode apresentar os dados de um boleto existente para possível complemento de informação. Para cadastro, imagine que fuçuários são preguicosos ao ponto de terem pavor de preencher estes documentos. Não sei se você vai colocar uma imagem de um boleto vazio como fundo desta tela, ficaria legal pois o boleto wysewyg ficaria perfeito na apresentação pré-impressão. e muitos dos campos ai teriam de ser suportados por combos para prevenir preguiça(erros de preenchimento) e invalidação do boleto. Não cheguei a completar a compilação do trecho que o Ladinilson postou para verificar a saida final, mas antes de criar a tela, programe a impressão com dados da empresa e proceda a homologação. Passando pela homologação junto ao banco(homologação: nome bonito que define: Você ir até um banco, enfrentar fila, pagar um boleto e o caixa lhe responder que o boleto é inválido ou não). Resumindo, acrescente a opção de Emitir Boleto deste Registro? e complete internamente todos os campos necessários e gere a impressão. Tudo ok? cliente satisfeito? fuçonários felizes, ai pare com tempo, abra uma breja, pegue um torresminho e começe a desenhar a tela. Alguns Fuçuário são chatos o bastante pra colocar tanta exigência que se um sistema pudesse ser baseado no que eles querem ver o sistema teria apenas uma dialogo e um botão no meio dizendo: Aperte aqui que eu faço o Resto. rsrsrsrs a última frase é fantástica, além de verdadeira é claro. rochinha 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 19, 2020 Author Report Share Posted August 19, 2020 Calma Rochinha, minha flor de lis, por enquanto, esto simulando a classe MRBOLETO. Depois, eu vejo outras opções. Un xeiro no kangotyyy.... kkkkkkkkkkkkk rochinha 1 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.