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_ )