#include "Protheus.ch"
#INCLUDE 'totvs.ch'
#INCLUDE 'topconn.ch'
// #INCLUDE 'fivewin.ch'
#INCLUDE 'tbiconn.ch'
#INCLUDE "COLORS.CH"
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "RWMAKE.CH"
#define CHR_LINE '
'
#define CHR_CENTER_OPEN ''
#define CHR_CENTER_CLOSE '
'
#define CHR_FONT_DET_OPEN ''
#define CHR_FONT_DET_CLOSE ''
#define CHR_ENTER '
'
#define CHR_NEGRITO ''
#define CHR_NOTNEGRITO ''
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ LF14R ºAutor ³Luis Henrique Robustoº Data ³ 11/10/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ BOLETO BANCARIO ( Imprime o boleto bancario ) º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Administrativo Financeiro º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function LF14R( _aParAuto , _lAlert, _lEnvMail, _lPDFB64, _aPDFSB64, cMsgReenv,cXImpDCD )
Local aArea := GetArea()
Local aAreaSE1 := SE1->(GetArea())
Local aAreaSX5 := SX5->(GetArea())
Local aQuebra := {'Por Cliente','Não Quebrar','Por Parcela'}
Private aTitulos := {}
Private lExec := .F.
Private lRelist := .F.
Private cArqTemp := Criatrab(Nil,.F.)
Private cPerg := 'LF14RXFILT'
Private lEnd := .F.
Private oMark := Nil
Private oPanelB := Nil
Private oPanelA := Nil
Private oTotCab := nil
Private nValTot := 0
Private nQtdTot := 0
Private _nOrdem := 0
Private _oCheckMark := Nil
Private _lCheckMark := .T.
Private _lChckMrkV := .F.
Private _lChckMrkAV := .F.
Private _oSendMail := Nil
Private _lSendMail := .F.
Private _lGPDFB64 := .F.
Private aPDFSB64 := {}
Private _lProcAutoB := IsBlind()
Private _cQuebra := aQuebra[1]
Private cMsgPers := ""
Private cBcoMt := Alltrim(SuperGetMv("RT_BCOMT",.F.,'*'))
Private cBcoJr := Alltrim(SuperGetMv("RT_BCOJR",.F.,'*'))
Private cTpMulta := Alltrim(SuperGetMv("RT_TPMULTA",.F.,'P'))
Private nMulta := SuperGetMv("RT_VLMULTA",.F.,0)
Private cTpJuro := Alltrim(SuperGetMv("RT_TPJUROS",.F.,'C'))
Private nJuros := SuperGetMv("RT_VLJUROS",.F.,3)
Private _aParam := {}
Private _BolBuck := {}
Private cFormBuckt := Alltrim(SuperGetMV("RC_BUCKET",.F.,'',cFilAnt))
Private cXFilialFatAuto := cFilAnt
Private cDocFatAuto := ''
Private cSerieFatAuto := ''
Default _aParAuto := {}
Default _lAlert := .T. // Se deve mostrar mensagem caso não encontre o boleto
Default _lEnvMail := .F.
Default _lPDFB64 := .F. //Se gera PDF's em base64
Default _aPDFSB64 := [] //Armazena os PDFS
Default cMsgReenv := ""
DeFault cXImpDCD := ""
If ( cFormBuckt = 'GATILHO' .and. !(FWIsInCallStack("U_RCBUCGER") .or. FWIsInCallStack("U_RCBUCOLD") ) ) ;
.OR. ;
(cFormBuckt = 'SCHEDULER' .and. ( FWIsInCallStack("U_RCBUCGER") .OR. FWIsInCallStack("U_RCBUCOLD")) )
_cQuebra := aQuebra[3]
EndIf
cXImpFatAuto := cXImpDCD
// Registra que foi usada a rotina pelo usuario
U_EventRec()
// Passa a varievel recebida para uma private
_aParam := _aParAuto
// Query para trazer titulos
// Se vier parametros executa sem mostrar tela
fQryTit( !Empty(_aParam) )
//Seleção dos títulos em Tela
If !Empty(_aParam) .And. (_aParam[15]==1)
DEFINE MSDIALOG oDlg TITLE OemToAnsi('Seleção dos Títulos para impressão dos Boletos.') From 001,001 To 600,900 Of oMainWnd Pixel
oMark := TcBrowse():New(010,010,50,100,,,,oDlg,,,,,,,,,,,,.F.,,.T.,,.F.)
oMark:AddColumn(TCColumn():New("",{|| aTitulos[oMark:nAt,1]},,,,"LEFT",10,.T.,.T.))
oMark:AddColumn(TCColumn():New("Filial",{|| aTitulos[oMark:nAt,2]},,,,"LEFT",27,.F.,.F.))
oMark:AddColumn(TCColumn():New("Dt.Emissão",{|| aTitulos[oMark:nAt,3]},,,,"LEFT",30,.F.,.F.))
oMark:AddColumn(TCColumn():New("Dt.Venc.",{|| aTitulos[oMark:nAt,4]},,,,"LEFT",30,.F.,.F.))
oMark:AddColumn(TCColumn():New("Prefixo",{|| aTitulos[oMark:nAt,5]},,,,"LEFT",05,.F.,.F.))
oMark:AddColumn(TCColumn():New("Numero",{|| aTitulos[oMark:nAt,6]},,,,"LEFT",30,.F.,.F.))
oMark:AddColumn(TCColumn():New("Parcela",{|| aTitulos[oMark:nAt,7]},,,,"LEFT",05,.F.,.F.))
oMark:AddColumn(TCColumn():New("Tipo",{|| aTitulos[oMark:nAt,8]},,,,"LEFT",05,.F.,.F.))
oMark:AddColumn(TCColumn():New("Saldo do Titulo",{|| aTitulos[oMark:nAt,9]},,,,"LEFT",30,.F.,.F.))
oMark:AddColumn(TCColumn():New("Cliente",{|| aTitulos[oMark:nAt,10]},,,,"LEFT",20,.F.,.F.))
oMark:AddColumn(TCColumn():New("Loja",{|| aTitulos[oMark:nAt,11]},,,,"LEFT",10,.F.,.F.))
oMark:AddColumn(TCColumn():New("Nome",{|| aTitulos[oMark:nAt,12]},,,,"LEFT",60,.F.,.F.))
oMark:AddColumn(TCColumn():New("Num. Banco",{|| aTitulos[oMark:nAt,13]},,,,"LEFT",10,.F.,.F.))
oMark:AddColumn(TCColumn():New("Num. Bordero",{|| aTitulos[oMark:nAt,14]},,,,"LEFT",20,.F.,.F.))
oMark:AddColumn(TCColumn():New("Situacao",{|| aTitulos[oMark:nAt,15]},,,,"LEFT",05,.F.,.F.))
oMark:AddColumn(TCColumn():New("Portador",{|| aTitulos[oMark:nAt,16]},,,,"LEFT",10,.F.,.F.))
oMark:AddColumn(TCColumn():New("Ag. Dep.",{|| aTitulos[oMark:nAt,17]},,,,"LEFT",20,.F.,.F.))
oMark:AddColumn(TCColumn():New("Conta",{|| aTitulos[oMark:nAt,18]},,,,"LEFT",30,.F.,.F.))
oMark:AddColumn(TCColumn():New("Conta de E-mail padrao",{|| aTitulos[oMark:nAt,19]},,,,"LEFT",100,.F.,.F.))
oMark:AddColumn(TCColumn():New("Novo Campo E-mail p/ Boleto",{|| aTitulos[oMark:nAt,20]},,,,"LEFT",100,.F.,.F.))
oMark:SetArray(aTitulos)
oMark:bLDblClick := {|| aTitulos[oMark:nAt,1] := Iif(aTitulos[oMark:nAt,1] == "LBOK","LBNO","LBOK") }
oMark:bHeaderClick := {|o,n| xOrdena(@_nOrdem,n,o)}
oMark:Align := CONTROL_ALIGN_ALLCLIENT
//Monta painel superior
oPanelA := TBar():New(oDlg,30,30,.T.,,,,.F.)
oPanelA:Align := CONTROL_ALIGN_TOP
oTotCab:= TSay():New(05,05, { || 'Quantidade de Titulos: ' + cValToChar(nQtdTot) + ' -- Saldo de Titulos: R$' + Transform(nValTot,'@E 999,999,999.99') }, oPanelA,,,.F.,.F.,.F.,.T.,,,200,10,.F.,.F.,.F.,.F.,.F.)
oTotCab:Align := CONTROL_ALIGN_LEFT
//Monta painel inferior
oPanelB:= TPanel():New(000,000,,oDlg,,,,,,300,50)
oPanelB:Align := CONTROL_ALIGN_BOTTOM
@ 002, 002 To 049,200 Of oPanelB Pixel
@ 005, 005 CheckBox _oCheckMark Var _lChckMrkV Prompt OemToAnsi('Vencidos') On Click Processa({|| fQuickSel('VENCIDOS') }) Size 120,10 Of oPanelB Pixel
@ 015, 005 CheckBox _oCheckMark Var _lChckMrkAV Prompt OemToAnsi('À Vencer') On Click Processa({|| fQuickSel('AVENCER') }) Size 120,10 Of oPanelB Pixel
TComboBox():New(004,050,{|u|If(PCount()>0,_cQuebra:=u,_cQuebra)},aQuebra,70,20,oPanelB,,{||},,,,.T.,,,,,,,,,,'Quebrar por?',1)
@ 005, 150 BUTTON OemToAnsi('Inverter Sel') Size 40,12 Action Processa({|| xInvertSel(_aParam[15]==1) }) When .T. Of oPanelB Pixel
@ 020, 150 BUTTON OemToAnsi('&Editar E-mail') Size 40,12 Action xEditMail() When .T. Of oPanelB Pixel
@ 035, 150 BUTTON OemToAnsi('&Filtro') Size 40,12 Action fQryTit() When .T. Of oPanelB Pixel
@ 005, 370 BUTTON OemToAnsi('&Imprimir Boletos') Size 70,25 Action ( FWMsgRun(,{|| xMontaRel()},'Montando os dados do(s) boleto(s)...') ) When .T. Of oPanelB Pixel
@ 035, 370 BUTTON OemToAnsi('&Fechar') Size 70,12 Action (oDlg:End()) When .T. Of oPanelB Pixel
ACTIVATE MSDIALOG oDlg CENTERED
ElseIf !Empty( _aParam ) //Impressão e envio do e-mail automático.
cXFilialFatAuto := cFilAnt
cDocFatAuto := _aParam[3]
cSerieFatAuto := _aParam[1]
_lSendMail := _lEnvMail
_lGPDFB64 := _lPDFB64
cMsgPers := cMsgReenv
xMontaRel()
EndIf
//³Retoma a area anterior ao processamento. !³
RestArea(aAreaSX5)
RestArea(aAreaSE1)
RestArea(aArea)
//Alimenta variavel passada como parametro de referencia
If _lGPDFB64
_aPDFSB64 := aPDFSB64
EndIf
Return( Nil )
/*/{Protheus.doc} LFREEN
Função para reenviar boletos sempre que necessário por alguma mudança de código de barras ou banco
@type function
@version 1.0
@author joao.carvalho
@since 15/03/2022
/*/
User Function LFREEN()
Local _aEmpresas := {}
Local aEmps := U_RtGetAllEmp(5)
Local aDadSM0 := {}
Local _nx := 0
PRIVATE lMsErroAuto := .F.
For _nx:=1 to Len(aEmps)
if SUBSTR(aEmps[_nx][2],1, 5) == '00601'
aDadSM0 := FWSM0Util():GetSM0Data(aEmps[_nx][1],aEmps[_nx][2],{"M0_FILIAL"})
aAdd(_aEmpresas,{aEmps[_nx][1],aEmps[_nx][2],aDadSM0[1][2]})
EndIF
Next _nx
aSort(_aEmpresas,,,{|x,y| x[1]+x[2] < y[1]+y[2] })
// Executa o processo para cada empresa.
For _nx:=1 to Len(_aEmpresas)
u_LogAutoPad("EXECUTANDO A ROTINA AUTOMATICA DE ENVIO DE BOLETOS PELO WORKFLOW: "+_aEmpresas[_nx][1]+"/"+_aEmpresas[_nx][2])
RpcSetType(3)
PREPARE ENVIRONMENT EMPRESA _aEmpresas[_nx][1] FILIAL _aEmpresas[_nx][2] MODULO "FIN"
xPrcReenv()
RESET ENVIRONMENT
Next _nx
Return
/*/{Protheus.doc} xPrcReenv
Função que processa a query de envio e mensagem de reenvio e chama a função de montagem de boleto.
@type function
@version 1.0
@author joao.carvalho
@since 15/03/2022
/*/
Static Function xPrcReenv()
Local _aBoleAuto := {}
Local _lEnvMail := .F. //Envia por e-mail?
Local cMensagem := ""
Local cQuery := ""
cMensagem := ""
cQuery := ""
cQuery += ""
DbUseArea(.T.,"TOPCONN",TCGenQry(,,_cQuery),'REEBOL',.F.,.T.)
While REEBOL->(!EOF())
// _aBoleAuto
aAdd(_aBoleAuto,' ') // 1 Prefixo
aAdd(_aBoleAuto,'ZZZ') // 2 Prefixo Final
aAdd(_aBoleAuto,Space(9)) // 3 Numero
aAdd(_aBoleAuto,'ZZZZZZZZZ') // 4 Numero Final
aAdd(_aBoleAuto,'000') // 5 Portador
aAdd(_aBoleAuto,'ZZZ') // 6 Portador Final
aAdd(_aBoleAuto,Space(6)) // 7 Cliente
aAdd(_aBoleAuto,'ZZZZZZ') // 8 Cliente Final
aAdd(_aBoleAuto,' ') // 9 Loja
aAdd(_aBoleAuto,'ZZ') // 10 Loja Final
aAdd(_aBoleAuto,dDataBase+3) // 11 Vencimento
aAdd(_aBoleAuto,dDataBase+3) // 12 Ate o vencimento
aAdd(_aBoleAuto,dDataBase-365) // 13 Emissao
aAdd(_aBoleAuto,dDataBase) // 14 Ate a emissao
aAdd(_aBoleAuto,2) // 15 (1=Seleciona titulos,2=Nao seleciona)
aAdd(_aBoleAuto,Space(6)) // 16 Bordero
aAdd(_aBoleAuto,"ZZZZZZ") // 17 Bordero Final
aAdd(_aBoleAuto,2) // 18 1=Somente nao impressos, 2=Somente impressos,3=Todos
aAdd(_aBoleAuto,1) // 19 1=Simples/registrado, 2=Carteira,3=Todos
aAdd(_aBoleAuto," ") // 20 Filiais
// Chama rotina de envio de boletos.
U_LF14R( _aBoleAuto,,_lEnvMail, , , cMensagem )
End
Return
User Function fClcJrSf(nSaldo)
Local nReturn := 0
Local nAbatim := 0
Local nVlJur := SuperGetMv("RT_VLJUROS",.F.,3)
Default nSaldo := SE1->E1_SALDO
nAbatim := SomaAbat(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,'R',1,,SE1->E1_CLIENTE,SE1->E1_LOJA)
nReturn := round(((nSaldo - nAbatim) * nVlJur) / 30, 0)
Return nReturn
/*---------------------------------------------------------------------------------------------
{Protheus.doc} FQryTit
Função auxiliar para selecionar os títulos para boleto
@type User Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function fQryTit( lRefresh )
Local cQuery := ' '
Local cQryAlias := GetNextAlias()
Local cPortNot := '' //Portadores que não devem considerar na query.
Default lRefresh := .F.
If !lRefresh
If !Pergunte(cPerg,.T.)
Return( Nil )
Else
_aParam := {}
aAdd(_aParam,mv_par01)
aAdd(_aParam,mv_par02)
aAdd(_aParam,mv_par03)
aAdd(_aParam,mv_par04)
aAdd(_aParam,mv_par05)
aAdd(_aParam,mv_par06)
aAdd(_aParam,mv_par07)
aAdd(_aParam,mv_par08)
aAdd(_aParam,mv_par09)
aAdd(_aParam,mv_par10)
aAdd(_aParam,mv_par11)
aAdd(_aParam,mv_par12)
aAdd(_aParam,mv_par13)
aAdd(_aParam,mv_par14)
aAdd(_aParam,mv_par15)
aAdd(_aParam,mv_par16)
aAdd(_aParam,mv_par17)
aAdd(_aParam,mv_par18)
aAdd(_aParam,mv_par19)
aAdd(_aParam,mv_par20)
aAdd(_aParam,mv_par21)
EndIf
EndIf
// Limpa os titulos e totalizadores
aTitulos := {}
nValTot := 0
nQtdTot := 0
//Portadores que não devem considerar na query.
cPortNot += Iif(!Empty(cPortNot),";","") + '950' //BNDES Ignora.
cPortNot += Iif(!Empty(cPortNot),";","") + ' ' //Em branco.
cPortNot += Iif(!Empty(cPortNot),";","") + 'MOI' //PORTADOR MOIP.
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Monta a query com os registros a serem marcados.!³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cQuery := " SELECT SE1.E1_OK, SE1.E1_FILIAL, SE1.E1_PREFIXO, SE1.E1_NUM, SE1.E1_PARCELA, SE1.E1_TIPO, SE1.E1_EMISSAO, SE1.E1_SALDO, "
cQuery += " SE1.E1_SITUACA, SE1.E1_PORTADO, SE1.E1_AGEDEP, SE1.E1_CONTA, SE1.E1_NUMBCO, SE1.E1_NUMBOR, SE1.E1_VENCREA, "
cQuery += " SA1.A1_INSCR, SA1.A1_COD, SA1.A1_LOJA, SA1.A1_NOME, SA1.A1_COBPAD, SA1.A1_CGC, SA1.A1_EMAIL, SA1.A1_MAILBOL "
cQuery += " FROM " + RetSqlName('SE1') + ' SE1, ' + RetSqlName('SA1') + ' SA1 '
cQuery += " WHERE SA1.A1_COD = SE1.E1_CLIENTE "
cQuery += " AND SA1.A1_LOJA = SE1.E1_LOJA "
cQuery += " AND SE1.E1_FILIAL IN " + U_FwInstrFil() // Essa sintaxe serve para não conseguir filtrar de outras empresas
If !Empty(_aParam[20])
cQuery += " AND SE1.E1_FILIAL BETWEEN '" + _aParam[20] + "' AND '" + _aParam[21] + "' "
Else
cQuery += " AND SE1.E1_FILIAL = '" + xFilial('SE1') + "' "
EndIf
cQuery += " AND SE1.E1_NUM BETWEEN '" + _aParam[03] + "' AND '" + _aParam[04] + "' "
cQuery += " AND SE1.E1_CLIENTE BETWEEN '" + _aParam[07] + "' AND '" + _aParam[08] + "' "
cQuery += " AND SE1.E1_LOJA BETWEEN '" + _aParam[09] + "' AND '" + _aParam[10] + "' "
cQuery += " AND SE1.E1_EMISSAO BETWEEN '" + Dtos(_aParam[13]) + "' AND '" + Dtos(_aParam[14]) + "' "
cQuery += " AND SE1.E1_STATUS IN ('A','R') "
cQuery += " AND SE1.E1_PREFIXO BETWEEN '" + _aParam[01] + "' AND '" + _aParam[02] + "' "
cQuery += " AND SE1.E1_NUMBOR BETWEEN '" + _aParam[16] + "' AND '" + _aParam[17] + "' "
cQuery += " AND SE1.E1_PORTADO BETWEEN '" + _aParam[05] + "' AND '" + _aParam[06] + "' "
cQuery += " AND SE1.E1_VENCTO BETWEEN '" + Dtos(_aParam[11]) + "' AND '" + Dtos(_aParam[12]) + "' "
If Len(_aParam) >= 23
cQuery += " AND SE1.E1_PARCELA BETWEEN '" + _aParam[22] + "' AND '" + _aParam[23] + "' "
EndIf
cQuery += " AND SE1.E1_TIPO IN ('NP','NF ','FAT','BOL','BL ','FT ','DP ', 'BA ', 'TH ') "
If _aParam[18] == 1
cQuery += " AND SE1.E1_NUMBCO = ' ' "
ElseIf _aParam[18] == 2
cQuery += " AND SE1.E1_NUMBCO <> ' ' "
EndIf
/*If _aParam[19] == 1 // Simples Caucionado e Registrado // COmentado temporariamente para resolver impactos em produção.
cQuery += " AND SE1.E1_SITUACA IN ('1','3','4') "
ElseIf _aParam[19] == 2 // Carteira
cQuery += " AND SE1.E1_SITUACA IN ('0') "
EndIf*/
cQuery += " AND SE1.E1_SALDO > 0 "
cQuery += " AND SE1.E1_PORTADO NOT IN " + FormatIn(cPortNot,";") //Desconsidera os portadores passado no parâmetro.
cQuery += " AND SE1.D_E_L_E_T_ = ' ' "
cQuery += " AND SA1.A1_FILIAL = '" + xFilial('SA1') + "' "
cQuery += " AND SA1.D_E_L_E_T_ = ' ' "
cQuery += " ORDER BY SA1.A1_FILIAL, SA1.A1_COD, SE1.E1_PREFIXO, SE1.E1_NUM, SE1.E1_PARCELA, SE1.E1_TIPO "
DbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),cQryAlias,.F.,.T.)
TcSetField(cQryAlias,'E1_EMISSAO','D')
TcSetField(cQryAlias,'E1_VENCREA','D')
TcSetField(cQryAlias,'E1_SALDO','N',TAMSX3("E1_SALDO")[1],TAMSX3("E1_SALDO")[2])
If (cQryAlias)->(!Eof())
While (cQryAlias)->(!Eof())
aAdd(aTitulos,{Iif(_aParam[15]<>1,'LBOK','LBNO'),;
(cQryAlias)->E1_FILIAL,;
(cQryAlias)->E1_EMISSAO,;
(cQryAlias)->E1_VENCREA,;
(cQryAlias)->E1_PREFIXO,;
(cQryAlias)->E1_NUM,;
(cQryAlias)->E1_PARCELA,;
(cQryAlias)->E1_TIPO,;
(cQryAlias)->E1_SALDO,;
(cQryAlias)->A1_COD,;
(cQryAlias)->A1_LOJA,;
(cQryAlias)->A1_NOME,;
(cQryAlias)->E1_NUMBCO,;
(cQryAlias)->E1_NUMBOR,;
(cQryAlias)->E1_SITUACA,;
(cQryAlias)->E1_PORTADO,;
(cQryAlias)->E1_AGEDEP,;
(cQryAlias)->E1_CONTA,;
(cQryAlias)->A1_EMAIL,;
(cQryAlias)->A1_MAILBOL,;
(cQryAlias)->A1_INSCR,;
(cQryAlias)->A1_CGC,;
(cQryAlias)->A1_COBPAD;
})
nValTot += (cQryAlias)->E1_SALDO
nQtdTot++
(cQryAlias)->(DbSkip())
EndDo
EndIf
(cQryAlias)->(DbCloseArea())
If Len(aTitulos) <= 0
If IsBlind()
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , OemToAnsi("Nenhum titulo disponivel para impressão de boletos. VerIfique os Parametros."))
Else
MsgAlert(OemToAnsi("Nenhum titulo disponivel para impressão de boletos. VerIfique os Parametros."))
EndIf
EndIf
If Empty(aTitulos)
aAdd(aTitulos,{'LBNO',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
0,;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'',;
'';
})
EndIf
If ValType(oTotCab) = 'O'
oTotCab:Refresh()
EndIf
If ValType(oMark) = 'O'
oMark:SetArray(aTitulos)
oMark:Refresh()
oMark:DrawSelect()
oMark:nAt := 1
EndIf
Return( .T. )
/*---------------------------------------------------------------------------------------------
{Protheus.doc} fQuickSe l
Selecao em Tela
@type Static Function
@author Robusto
@since 18/12/2020
@version P12
---------------------------------------------------------------------------------------------*/
Static Function fQuickSel(cTypeFil)
Local nTit := 0
Default cTypeFil := ''
If cTypeFil = 'VENCIDOS'
For nTit := 1 to Len(aTitulos)
aTitulos[nTit][1] := Iif(aTitulos[nTit][4] < Date(),'LBOK','LBNO')
Next nTit
_lChckMrkAV := .F.
ElseIf cTypeFil = 'AVENCER'
For nTit := 1 to Len(aTitulos)
aTitulos[nTit][1] := Iif(aTitulos[nTit][4] >= Date(),'LBOK','LBNO')
Next nTit
_lChckMrkV := .F.
EndIf
If ValType(oMark) = 'O'
oMark:Refresh()
oMark:DrawSelect()
EndIf
Return( Nil )
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xInvetSel
Funcao auxiliar para inverter a selecao na tela
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xInvertSel(_lUpdObj)
Local nTit := 0
Default _lUpdObj := .T.
For nTit := 1 to Len(aTitulos)
aTitulos[nTit][1] := Iif(aTitulos[nTit][1]='LBOK','LBNO','LBOK')
Next nTit
If ValType(oMark) = 'O'
oMark:Refresh()
oMark:DrawSelect()
EndIf
Return( Nil )
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xEditMail
Funcao auxiliar para informar e-mail em tela para envio do boleto.
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xEditMail()
Local _aAreaSA1 := SA1->(GetArea())
Local nLin := oMark:nAt
If U_GSTCONTA(aTitulos[nLin][10],aTitulos[nLin][11])
fQryTit(.T.)
EndIf
RestArea(_aAreaSA1)
Return( Nil )
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³xMontaRel ºAutor ³Luis Henrique Robustoº Data ³ 11/10/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ IMPRESSAO DO BOLETO LASER COM CODIGO DE BARRAS º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xMontaRel()
Local nTit := 0
Local _nd := 0
Local nI := 0
Local _nx := 0
Local nXX := 0
Local cNroDoc := ' '
Local cConvenio := ' '
Local cSeqCart := ' '
Local cCarteira := ' '
Local cNomeBanco := ""
Local _cCliLoja := ""
Local _cChvSE1 := ""
Local _cCliente := ""
Local _cLoja := ""
Local _cNome := ""
Local _cEmail := ""
Local _cPrefixo := ""
Local _cTipo := ""
Local _cNumero := ""
Local _cNumLiq := ""
Local _cParcela := ""
Local nPosEmpFil := 0
Local aDadosEmp := {} //[7]I.E
Local aDadosTit
Local aDadosBanco
Local aDatSacado
Local aCB_RN_NN := {}
Local nVlrAbat := 0
Local aEmps := U_RtGetAllEmp(5)
Local _aEmpFull := {}
Local lMacOs := GetRemoteType()==2
Local cLocalFile := ""
Local lUseInncash := SuperGetMv('RC_USEINCS',.f.,.f.)
Local aRet := {}
Private cCmpMark := ''
Private cCmpFil := ''
Private dCmpEmis := ''
Private dCmpVenc := ''
Private cCmpPrefx := ''
Private cCmpNum := ''
Private cCmpParc := ''
Private cCmpTip := ''
Private nCmpSld := 0
Private cCmpCodCli := ''
Private cCmpLojCli := ''
Private cCmpNamCli := ''
Private cCmpNBco := ''
Private cCmpNBor := ''
Private cCmpSitua := ''
Private cCmpPort := ''
Private cCmpAge := ''
Private cCmpConta := ''
Private cCmpMail := ''
Private cCmpMBol := ''
Private cCmpIE := ''
Private cCmpCGC := ''
Private cCmpCob := ''
Private _aNfOrig := {} //Nfes dos boletos.
Private aDadosFat := {} // Dados da Fatura
Private lSend := .F.
Private _aSendMail := {}
Private oPrint := Nil
Private _cPastaSpo := '\spool\lf14r\'
Private _cPastaBuc := SuperGetMV("RC_BUCKPBO",.F.,'\bucket\boletos\') + Iif(IsInCallStack("U_RcBucOld"),'retroativo\','')
Private _cPastaLoc := ''
Private _FileName := ""
Private _FileBuck := ""
Private _FileAnexo := ""
Private l237BBM := .F.
Private lAtuNN := .F.
Private nJrMora := 0
Private cCodBenef := ""
For _nx:=1 to Len(aEmps)
If SubStr(AllTrim(aEmps[_nx][2]),1,3) = FwCodEmp()
aDadSM0 := FWSM0Util():GetSM0Data(aEmps[_nx][1],aEmps[_nx][2],{"M0_FILIAL","M0_CIDCOB","M0_ESTCOB", "M0_BAIRCOB","M0_CEPCOB","M0_INSC","M0_CGC","M0_ENDCOB", "M0_TEL"})
aAdd(_aEmpFull,{aEmps[_nx][1],; // Codigo grupo economico
aEmps[_nx][2],; // Codigo da filial
aDadSM0[1][2],; // Nome da filial
aDadSM0[2][2],; // Cidade
aDadSM0[3][2],; // Estado
aDadSM0[4][2],; // Bairro
aDadSM0[5][2],; // CEP
aDadSM0[6][2],; // IE
aDadSM0[7][2],; // CNPJ
aDadSM0[8][2],; // Endereço
aDadSM0[9][2]}) // Telefone
EndIf
Next _nx
//Referente ao projeto 4.0
If Len(_aEmpFull) == 0
If !IsBlind()
Alert(OemToAnsi('Sem permissão para re-impressão de boletos no grupo de empresas: '+FwCodEmp()+". Entrar em contato com o Suporte Rech."))
EndIf
Return( Nil )
EndIf
If IsBlind() .Or. lMacOs .OR. _lGPDFB64
_cPastaLoc := _cPastaSpo
Else
_cPastaLoc := AllTrim(GetTempPath())
EndIf
//Se não existir cria a pasta no servidor
MakeDir(_cPastaSpo)
For nTit := 1 to Len(aTitulos)
// Atualiza variaveis de controle
cCmpMark := aTitulos[nTit][1]
cCmpFil := aTitulos[nTit][2]
dCmpEmis := aTitulos[nTit][3]
dCmpVenc := aTitulos[nTit][4]
cCmpPrefx := aTitulos[nTit][5]
cCmpNum := aTitulos[nTit][6]
cCmpParc := aTitulos[nTit][7]
cCmpTip := aTitulos[nTit][8]
nCmpSld := aTitulos[nTit][9]
cCmpCodCli := aTitulos[nTit][10]
cCmpLojCli := aTitulos[nTit][11]
cCmpNamCli := aTitulos[nTit][12]
cCmpNBco := aTitulos[nTit][13]
cCmpNBor := aTitulos[nTit][14]
cCmpSitua := aTitulos[nTit][15]
cCmpPort := aTitulos[nTit][16]
cCmpAge := aTitulos[nTit][17]
cCmpConta := aTitulos[nTit][18]
cCmpMail := aTitulos[nTit][19]
cCmpMBol := aTitulos[nTit][20]
cCmpIE := aTitulos[nTit][21]
cCmpCGC := aTitulos[nTit][22]
cCmpCob := aTitulos[nTit][23]
If lEnd
If MsgYesNo(OemToAnsi('Deseja abortar impressão ?'))
Exit
Return( Nil )
EndIf
EndIf
If cCmpMark = 'LBOK' .Or. _lProcAutoB
If Empty(Alltrim(cCmpFil)) .Or. Empty(Alltrim(cCmpNum))
aAdd(aRet,{.F.,'Filial: '+cCmpFil+', e numero nao encontrado .'+ cCmpNum})
Loop
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Posiciona no titulo que sera processado.!³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea('SE1')
SE1->(DbSetOrder(1))
If ! SE1->(DbSeek(cCmpFil+cCmpPrefx+cCmpNum+cCmpParc+cCmpTip))
aAdd(aRet,{.F.,'Chave nao encontrada na SE1: '+ cCmpFil+cCmpPrefx+cCmpNum+cCmpParc+cCmpTip })
Loop
EndIf
//Flag para Indentificação do Registro do Boleto Junto ao Banco com Nosso Numero Incorreto
If SE1->E1_PORTADO == '104' .And. 'CEF REENV' $ SE1->E1_HIST
lAtuNN := .T.
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³VerIfica se o sistema esta preparado ou nao para imprimir³
//³dependendo do portador... ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If !lUseInncash
If ( ! SE1->E1_SITUACA $ '134' )
Alert(OemToAnsi('O Titulo: '+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO+', não está preparado para impressão. Verifique o Portador do titulo.'))
aAdd(aRet,{.F.,'O Titulo: '+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO+', não está preparado para impressão. Verifique o Portador do titulo.' })
Loop
EndIf
Else
If Empty(Alltrim(SE1->E1_PORTADO))
Alert(OemToAnsi('O Titulo: '+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO+', não está preparado para impressão. Verifique o Portador do titulo.'))
aAdd(aRet,{.F.,'O Titulo: '+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO+', não está preparado para impressão. Verifique o Portador do titulo.' })
Loop
EndIf
EndIf
//Referente ao projeto 4.0 - Verificar se a Filial sofreu fusão (tabela ZDJ)
If aScan(_aEmpFull,{|x| Alltrim(x[1]) = Alltrim(cEmpAnt) .and. Alltrim(x[2]) = Alltrim(SE1->E1_FILIAL)}) == 0
If !IsBlind()
Alert(OemToAnsi('Filial: '+Alltrim(SE1->E1_FILIAL)+', sem permissão para re-impressão de boleto. Entrar em contato com o Suporte Rech.'))
Else
aAdd(aRet,{.F.,'Filial: '+Alltrim(SE1->E1_FILIAL)+', sem permissão para re-impressão de boleto. Entrar em contato com o Suporte Rech.'})
EndIf
Loop
EndIf
//ÚÄÄÄ'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Posiciona o SA6 (Bancos)³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea('SA6')
SA6->(DbSetOrder(1))
SA6->(DbSeek(xFilial("SA6") + SE1->E1_PORTADO + SE1->E1_AGEDEP + SE1->E1_CONTA))
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³VerIfica a carteira do titulo !³
//ÀÄÄÄÄÄ'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Do Case
//³BANCO DO BRASIL³
Case ( AllTrim(SE1->E1_PORTADO) == '001' .AND. !U_RtIsEmpFil({{"030"}}) ) // Adicionado - Danillo Nogueira 14/02/2022 especifico franquia 03001 onde sera apenas a Logo
cNomeBanco := "BANCO DO BRASIL SA"
//³BANCO BRADESCO ³
Case ( AllTrim(SE1->E1_PORTADO) == '237' )
cNomeBanco := "BANCO BRADESCO"
//³BANCO BRADESCO ³
//Case ( AllTrim(SE1->E1_PORTADO) == '025' )
// cNomeBanco := "BANCO ALFA"
//³SICOOB ³
Case ( AllTrim(SE1->E1_PORTADO) == '756' )
cNomeBanco := "BANCO SICOOB"
//³BANCO ITAU ³
Case ( AllTrim(SE1->E1_PORTADO) == '341' )
cNomeBanco := "BANCO ITAU"
//³BANCO SAFRA ³
Case ( AllTrim(SE1->E1_PORTADO) == '422' )
cNomeBanco := "BANCO SAFRA"
//³BANCO FIBRA ³
Case ( AllTrim(SE1->E1_PORTADO) == '224' ) //Cesar.gruppe 21/07/2022: Fibra
cNomeBanco := "BANCO FIBRA"
Case ( AllTrim(SE1->E1_PORTADO) == '274' ) //Cesar.gruppe 21/07/2022: Money
cNomeBanco := "BANCO MONEY"
//³BANCO SANTANDER ³
Case ( AllTrim(SE1->E1_PORTADO) == '033' )
cNomeBanco := "BANCO SANTANDER"
//³BANCO SICREDI ³
Case ( AllTrim(SE1->E1_PORTADO) == '748' )
cNomeBanco := "SICREDI"
//³BANCO ABC ³
Case ( AllTrim(SE1->E1_PORTADO) == '246' )
cNomeBanco := "ABC"
Case ( AllTrim(SE1->E1_PORTADO) == '604' ) // ADICIONADO - DANILLO NOGUEIRA DANTAS
cNomeBanco := "BIB"
//Case ( AllTrim(SE1->E1_PORTADO) == '104' ) // ADICIONADO - DANILLO NOGUEIRA DANTAS
// cNomeBanco := "CAIXA"
EndCase
//³Posiciona na Arq de Parametros CNAB³
DbSelectArea('SEE')
SEE->(DbSetOrder(1))
If SEE->(DbSeek(xFilial("SEE")+SE1->(E1_PORTADO+E1_AGEDEP+E1_CONTA)))
cCarteira := AllTrim(SEE->EE_SUBCTA)
If Softlock("SEE")
Do Case
Case SEE->EE_CODIGO $ '001' // Banco do brasil
cConvenio := AllTrim(SEE->EE_CODEMP)
cSeqCart := AllTrim(SEE->EE_FAXATU)
Case SEE->EE_CODIGO $ '422' // Safra
cConvenio := AllTrim(SEE->EE_CODEMP)
cSeqCart := AllTrim(SEE->EE_FAXATU)
Case SEE->EE_CODIGO $ '224' // Fibra //Cesar.gruppe 21/07/2022
cConvenio := AllTrim(SEE->EE_AGENCIA)+StrZero(Val(AllTrim(SEE->EE_CONTA)),7)+AllTrim(SEE->EE_DVCTA)
cCodBenef := AllTrim(SEE->EE_CODEMP) // Beneficiario
cSeqCart := AllTrim(SEE->EE_FAXATU) // numbco
nJrMora := SEE->EE_TXJUROS
Case SEE->EE_CODIGO $ '274' // MONEY //Cesar.gruppe 06/08/2022
cConvenio := AllTrim(SEE->EE_CODEMP) // Convenio
cSeqCart := AllTrim(SEE->EE_FAXATU) // numbco
nJrMora := SEE->EE_TXJUROS
Case SEE->EE_CODIGO $ '237' // Bradesco
cConvenio := Substr(SE1->E1_AGEDEP,1,4)
cSeqCart := AllTrim(SEE->EE_FAXATU)
Case SEE->EE_CODIGO $ '025' // Banco Alfa - Danillo Nogueira 11/01/2022
cConvenio := Substr(SE1->E1_AGEDEP,1,4)
cSeqCart := AllTrim(SEE->EE_FAXATU)
cCarteira := AllTrim(SEE->EE_CARTEIR)
Case SEE->EE_CODIGO $ '756' // Sicoob
cConvenio := StrZero(Val(SEE->EE_CODEMP),10)
cSeqCart := StrZero(Val(SEE->EE_FAXATU),7)
Case SEE->EE_CODIGO = '341' // Itau
cSeqCart := StrZero(Val(SEE->EE_FAXATU),8)
cConvenio := SubStr(SEE->EE_CONTA,1,5) + "-" + SubStr(SEE->EE_CONTA,6,1)
Case SEE->EE_CODIGO = '033' // SANTANDER
cConvenio := right(alltrim(SEE->EE_CODEMP),7) // cedente
cSeqCart := Strzero(Val(Alltrim(SEE->EE_FAXATU)),12) // numbco
Case SEE->EE_CODIGO = '748' // SICREDI
cConvenio := AllTrim(SEE->EE_CODEMP) // cedente
cSeqCart := AllTrim(SEE->EE_FAXATU) // numbco
Case SEE->EE_CODIGO = '246' // ABC
cConvenio := AllTrim(SEE->EE_CODEMP) // cedente
cSeqCart := AllTrim(SEE->EE_FAXATU) // numbco
cCarteira := AllTrim(SEE->EE_CARTEIR)
Case SEE->EE_CODIGO = '604' // BIB - DANILLO NOGUEIRA
cConvenio := AllTrim(SEE->EE_CODEMP) // cedente
cSeqCart := AllTrim(SEE->EE_FAXATU) // numbco
Case SEE->EE_CODIGO = '104' // CAIXA - DANILLO NOGUEIRA
cConvenio := AllTrim(SEE->EE_CODEMP) // cedente
cSeqCart := AllTrim(SEE->EE_FAXATU) // numbco
End Case
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Aqui defino parte do nosso numero. Sao 8 digitos para identIficar o titulo. ³
//³Abaixo apenas uma sugestao ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If ( Empty(SE1->E1_NUMBCO) )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Atualiza a tabela com o numero do proximo boleto. !³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If RecLock('SEE',.F.)
Replace SEE->EE_FAXATU With Soma1(cSeqCart)
SEE->(MsUnLock())
EndIf
Do Case
Case SEE->EE_CODIGO $ '001' //BRASIL BRADESCO
cNroDoc := cConvenio + iif(U_RtIsEmpFil({{"30"},{"22"}}),cSeqCart,StrZero(Val(cSeqCart),10))
Case SEE->EE_CODIGO $ '237' //BRADESCO/BANCO ALFA - alterado Danillo Nogueira Dantas 11/01/2022
If Len(cConvenio) = 4 // Convenio com 4 digitos
If Alltrim(cConvenio) <> '3395' //Se diferente do TMC BRADESCO GARANTIA - Alterado CASSIO DIAS 25/11/2022
cNroDoc := cConvenio + StrZero(Val(cSeqCart),7)
else
cNroDoc := StrZero(Val(cSeqCart),11)
EndIf
ElseIf Len(cConvenio) = 6 // Convenio com 6 digitos
cNroDoc := cConvenio + StrZero(Val(cSeqCart),5)
ElseIf Len(cConvenio) = 7 // Convenio com 7 digitos
cNroDoc := cConvenio + StrZero(Val(cSeqCart),10)
EndIf
Case SEE->EE_CODIGO $ '341' //ITAU
cNroDoc := cSeqCart
Case SEE->EE_CODIGO $ '422' //SAFRA
cNroDoc := cSeqCart
Case SEE->EE_CODIGO $ '224' //FIBRA //Cesar.gruppe 21/07/2022
cNroDoc := StrZero(Val(cSeqCart),10)
Case SEE->EE_CODIGO $ '274' //Money //Cesar.gruppe 06/08/2022
cNroDoc := cSeqCart
Case SEE->EE_CODIGO $ '756' //SICOOB
cNroDoc := cSeqCart
Case SEE->EE_CODIGO $ '033'
cNroDoc := cSeqCart
Case SEE->EE_CODIGO $ '748' // SICREDI
cNroDoc := cSeqCart
Case SEE->EE_CODIGO $ '246' // ABC
cNroDoc := StrZero(Val(cSeqCart),10)
Case SEE->EE_CODIGO $ '604' // BANCO INDUSTRIAL DO BRASIL - ADICIONADO - DANILLO NOGUEIRA DANTAS
cNroDoc := StrZero(Val(cSeqCart),10)
Case SEE->EE_CODIGO $ '104' // CAIXA - ADICIONADO - DANILLO NOGUEIRA DANTAS
cNroDoc := StrZero(Val(cSeqCart),15)
Case SEE->EE_CODIGO $ '025' // ALFA - ADICIONADO - DANILLO NOGUEIRA DANTAS
cNroDoc := StrZero(Val(cSeqCart),11)
EndCase
Else
Msunlock()
Do Case
Case Alltrim(SE1->E1_PORTADO)=="341"
cNroDoc := SubStr(SE1->E1_NUMBCO,4,8)
Case Alltrim(SE1->E1_PORTADO)=="033"
cNroDoc := SubStr(SE1->E1_NUMBCO,1,12)
cSeqCart := SubStr(SE1->E1_NUMBCO,1,12)
Case Alltrim(SE1->E1_PORTADO)=="748"
//cNroDoc := SubStr(SE1->E1_NUMBCO,5,4)
cNroDoc := SubStr(SE1->E1_NUMBCO,4,5)
OtherWise
cNroDoc := SE1->E1_NUMBCO
EndCase
EndIf
//JCS - Retorno de fonte devido a problemas com numeracao de Agencia.
If Alltrim(SE1->E1_PORTADO) $ "246/604" //Tem empresa cadastrada com 4 e outra com 5 digitos - tratar. ADICIONADO BANCO INDUSTRIAL - DANILLO NOGUEIRA DANTAS
If Len(AllTrim(SA6->A6_AGENCIA)) > 4
cAgencia := Right(SA6->A6_AGENCIA,4)
Else
cAgencia := Left(SA6->A6_AGENCIA,4)
EndIf
else
cAgencia := Left(SA6->A6_AGENCIA,4)
EndIf
// [1] Numero do Banco
// [2] Nome do Banco
// [3] Agencia
// [4] Conta Corrente
// [5] Digito da conta corrente
// [6] Codigo da Carteira
// [7] Logotipo do banco
// [8] Codigo do Convenio
// [9] Número do Contrato Bancário (ee_numctr)
aDadosBanco := { SA6->A6_COD,;
cNomeBanco,;
IIf(SA6->A6_COD=='001' .or. SA6->A6_COD=='422' ,AllTrim(SA6->A6_AGENCIA),cAgencia),;
IIf(SA6->A6_COD=='001' .or. SA6->A6_COD=='422',Alltrim(SubStr(AllTrim(SA6->A6_NUMCON),1,7)),SubStr(AllTrim(SA6->A6_NUMCON)+ AllTrim(SA6->A6_DVCTA),1,Len(AllTrim(SA6->A6_NUMCON)+ AllTrim(SA6->A6_DVCTA))-1)),;
IIf(SA6->A6_COD=='001' .or. SA6->A6_COD=='422',AllTrim(SA6->A6_DVCTA),SubStr(SA6->A6_NUMCON,Len(AllTrim(SA6->A6_NUMCON)),1)),;
IIf(SA6->A6_COD=='001',cCarteira+Iif(U_RtIsEmpFil({ {"06"} }),'-043',iif(U_RtIsEmpFil({{"27"} }),'/027','-019')),cCarteira),;
SA6->A6_LOGO,;
cConvenio,;
SEE->EE_NUMCTR;
}
// Danillo Nogueira Dantas - 26/10/2021
// Banco solicitou que no codigo de barras e Agência/Código Beneficiário do boleto
// seja informado o codigo da cooperativa/convenio cadastrado no EE_CODEMP no lugar da conta bancaria A6_NUMCON.
If Len(aDadosBanco) > 0
If SuperGetMV("RC_ATVSBEN",,.T.,) == .T. // RC_ATVSBEN Ativa codigo da cooperativa/convenio no boleto.
If aDadosBanco[1] $ SuperGetMV("RC_BCOCOOP",,"",) // Informe no parametro RC_BCOCOOP Bancos que tenha necessidade de informar cod. cooperativa.
If !Empty(SEE->EE_CODEMP)
aDadosBanco[4] := ALLTRIM(SEE->EE_CODEMP)
EndIf
EndIf
EndIf
EndIf
//EXCLUSIVO PARA BANCO BBM S/A (Importadora)
If Len(aDadosBanco) > 0
If aDadosBanco[1] == "237" .and. AllTrim(aDadosBanco[3]) == "2373"
l237BBM := .T.
EndIf
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Posiciona o SA1 (Cliente)³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea('SA1')
SA1->(DbSetOrder(1))
SA1->(DbSeek(xFilial('SA1')+SE1->E1_CLIENTE+SE1->E1_LOJA,.T.))
// [01] Razao Social
// [02] Codigo
// [03] Endereço
// [04] Cidade
// [05] Estado
// [06] CEP
// [07] CGC
// [08] PESSOA
// [09] EMAIL NF-e
// [10] EMAIL BOLETO
If Empty(SA1->A1_ENDCOB)
aDatSacado := {AllTrim(SA1->A1_NOME),;
AllTrim(SA1->A1_COD)+'-'+SA1->A1_LOJA,;
AllTrim(SA1->A1_END)+'-'+AllTrim(SA1->A1_BAIRRO),;
AllTrim(SA1->A1_MUN),;
SA1->A1_EST,;
SA1->A1_CEP,;
SA1->A1_CGC,;
SA1->A1_PESSOA,;
SA1->A1_EMAIL,;
SA1->A1_MAILBOL}
Else
aDatSacado := {AllTrim(SA1->A1_NOME),;
AllTrim(SA1->A1_COD)+'-'+SA1->A1_LOJA,;
AllTrim(SA1->A1_ENDCOB)+'-'+AllTrim(SA1->A1_BAIRROC),;
AllTrim(SA1->A1_MUNC),;
SA1->A1_ESTC,;
SA1->A1_CEPC,;
SA1->A1_CGC,;
SA1->A1_PESSOA,;
SA1->A1_EMAIL,;
SA1->A1_MAILBOL}
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Posiciona o SE1 (Contas a receber)³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea('SE1')
nVlrAbat := SomaAbat(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,'R',1,,SE1->E1_CLIENTE,SE1->E1_LOJA)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Monta codigo de barras³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If ( AllTrim(SE1->E1_PORTADO) == '001' )
aCB_RN_NN := xBBVerfBar(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_TIPO,;
Subs(aDadosBanco[1],1,3),aDadosBanco[3],aDadosBanco[4],aDadosBanco[5] ,;
cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),cCarteira,'9')
ElseIf ( AllTrim(SE1->E1_PORTADO) == '422' )
aCB_RN_NN := xSfVerfBar(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_TIPO,;
Subs(aDadosBanco[1],1,3),aDadosBanco[3],aDadosBanco[4],aDadosBanco[5] ,;
cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),cCarteira,'9')
ElseIf ( AllTrim(SE1->E1_PORTADO) == '224' ) //Cesar.gruppe 21/07/2022 FIBRA
aCB_RN_NN := xFBrVerfBar(aDadosBanco[1],aDadosBanco[3],aDadosBanco[4],aDadosBanco[5],cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),SE1->E1_vencrea,@aDadosBanco)
ElseIf ( AllTrim(SE1->E1_PORTADO) == '274' ) //Cesar.gruppe 06/08/2022 MONEY
aCB_RN_NN := xMoVerfBar(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_TIPO,;
Subs(aDadosBanco[1],1,3),aDadosBanco[3],aDadosBanco[4],aDadosBanco[5] ,;
cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),cCarteira,'9')
ElseIf ( AllTrim(SE1->E1_PORTADO) == '237' )
aCB_RN_NN := xBraVerfBar(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_TIPO,;
Subs(aDadosBanco[1],1,3),aDadosBanco[3],aDadosBanco[4],aDadosBanco[5] ,;
cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),cCarteira,'9')
ElseIf ( AllTrim(SE1->E1_PORTADO) == '025' ) // adicionado Danillo Nogueira 11/01/2022
aCB_RN_NN := xAlfaCBar(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_TIPO,;
Subs(aDadosBanco[1],1,3),aDadosBanco[3],aDadosBanco[4],aDadosBanco[5] ,;
cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),cCarteira,'9')
ElseIf ( AllTrim(SE1->E1_PORTADO) == '341' )
aCB_RN_NN := xItaVerfBar(Subs(aDadosBanco[1],1,3)+'9',aDadosBanco[3],;
aDadosBanco[4],aDadosBanco[5],cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),;
SE1->E1_vencrea,@aDadosBanco)
ElseIf ( AllTrim(SE1->E1_PORTADO) == '748' )
aCB_RN_NN := xSicrVerfBar(Subs(aDadosBanco[1],1,3)+'9',aDadosBanco[3],;
aDadosBanco[4],aDadosBanco[5],cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),;
SE1->E1_vencrea,SE1->E1_EMISSAO,@aDadosBanco)
ElseIf ( AllTrim(SE1->E1_PORTADO) == '756' )
aCB_RN_NN := xSicoobVrfBar(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,SE1->E1_TIPO,;
Subs(aDadosBanco[1],1,3),aDadosBanco[3],aDadosBanco[4],aDadosBanco[5] ,;
cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC ,2),cCarteira,'9',cConvenio,SE1->E1_VENCTO)//TSCB56 - Rafael de Souza
ElseIf ( AllTrim(SE1->E1_PORTADO) == '033' )
aCB_RN_NN := xSantBar(Subs(aDadosBanco[1],1,3)+"9",aDadosBanco[3],aDadosBanco[4],aDadosBanco[5],cSeqCart,;
Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),SE1->E1_VENCTO,cCarteira,cConvenio)
ElseIf ( AllTrim(SE1->E1_PORTADO) == '246' )
aCB_RN_NN := xAbcVerfBar(aDadosBanco[1],aDadosBanco[3],aDadosBanco[4],aDadosBanco[5],cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),SE1->E1_vencrea,@aDadosBanco)
ElseIf ( AllTrim(SE1->E1_PORTADO) == '604' ) // ADICIONADO - DANILLO NOGUEIRA DANTAS
aCB_RN_NN := xBibVerfBar(aDadosBanco[1],aDadosBanco[3],aDadosBanco[4],aDadosBanco[5],cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),SE1->E1_vencrea,@aDadosBanco)
ElseIf ( AllTrim(SE1->E1_PORTADO) == '104' ) // ADICIONADO - DANILLO NOGUEIRA DANTAS 11/11/2021
aCB_RN_NN := xCaixaCBar(aDadosBanco[1],aDadosBanco[3],aDadosBanco[4],aDadosBanco[5],cNroDoc,Round(SE1->E1_SALDO - nVlrAbat + SE1->E1_SDACRESC + U_AddTxBol(),2),SE1->E1_vencrea,@aDadosBanco)
EndIf
// [01] Numero do titulo
// [02] Data da emissão do titulo
// [03] Data da emissão do boleto
// [04] Data do vencimento
// [05] Valor do titulo
// [06] Nosso numero (Ver formula para calculo)
// [07] Prefixo da NF
// [08] Tipo do Titulo
// [09] Valores de Acrescimo do Titulo
// [10] Valores de Decrescimo do Titulo
If AllTrim(SE1->E1_PORTADO) == '756'
cSE1Acre := SE1->E1_SDACRESC
else
cSE1Acre := SE1->E1_SDACRESC + U_AddTxBol()
EndIf
aDadosTit := {"-"+AllTrim(SE1->E1_NUM)+IIf(!Empty(SE1->E1_PARCELA),"-"+AllTrim(SE1->E1_PARCELA),''),;
SE1->E1_EMISSAO,;
dDataBase,;
SE1->E1_VENCTO,;
(SE1->E1_SALDO - nVlrAbat),;
aCB_RN_NN[3],;
SE1->E1_PREFIXO,;
SE1->E1_TIPO,;
cSE1Acre,;
SE1->E1_SDDECRESC,;
SE1->E1_INSTR1,;
SE1->E1_INSTR2}
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Se for fatura, verIfica os dados dos titulos integrantes. !³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aDadosFat := {}
// Gera a impressao do titulo atual, no mesmo objeto oPrint
If Empty(_cCliLoja) .And. Empty(_cChvSE1)
_cCliLoja := SE1->E1_CLIENTE+SE1->E1_LOJA
_cCliente := SE1->E1_CLIENTE
_cLoja := SE1->E1_LOJA
_cNome := AllTrim(SA1->A1_NOME)
_cEmail := IIf(!Empty(SA1->A1_MAILBOL),AllTrim(SA1->A1_MAILBOL),AllTrim(SA1->A1_EMAIL)) + IIf(IsInCallStack("U_FLXA1FAT"), ";" + GetNewPar("MV_ZFLXBOL", "octavio@gooneconsultoria.com.br;emelin.machado@gruporech.com"), "")
_cPrefixo := SE1->E1_PREFIXO
_cTipo := SE1->E1_TIPO
_cNumero := SE1->E1_NUM
_cNumLiq := SE1->E1_NUMLIQ
_cParcela := SE1->E1_PARCELA
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cCliLoja)
_cChvSE1 := Alltrim(SE1->E1_FILIAL)+"_"+Alltrim(SE1->E1_CLIENTE)+"_"+Alltrim(SE1->E1_LOJA)+"_"+Alltrim(SE1->E1_PREFIXO)+"_"+Alltrim(SE1->E1_NUM)+"_"+Alltrim(SE1->E1_PARCELA)+"_"+Alltrim(SE1->E1_TIPO)
If FWIsInCallStack("U_RTFATA") .or. IsInCallStack("U_RCBUCGER") .or. IsInCallStack("U_RCBUCOLD")
If Type("cPedBol") == "U"
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cCliLoja)
Else
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+cPedBol+_cCliLoja,"Boleto_RechTratores"+cPedBol+_cCliLoja)
EndIf
EndIf
if _cQuebra == "Por Parcela"
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cChvSE1)
endif
_FileAnexo := _cPastaSpo+Lower(_FileName)+'.pdf'
If ( _lSendMail .OR. _lGPDFB64 )
If FWIsInCallStack("U_RTFATA")
FWWriteProfString(GetPrinterSession(),"DEFAULT",cXImpFatAuto,.T.)
oPrint := FWMSPrinter():New(_FileName + ".pdf",IMP_PDF,.T.,_cPastaLoc,.T.,,@oPrint,,.T.,,,.F.,)
oPrint:CPRINTER:=cXImpFatAuto
ElseIf FWIsInCallStack("U_RCBUCGER") .or. FWIsInCallStack("U_RCBUCOLD")
oPrint := FWMSPrinter():New(_FileName + ".pdf",IMP_PDF,.T.,_cPastaLoc,.T.,,@oPrint,,.T.,,,.F.,)
Else
oPrint := FWMSPrinter():New(_FileName+".pdf",IMP_PDF,.T.,_cPastaLoc,.T.,,,,,,,.F.,)
EndIf
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(60,60,60,60)
If FWIsInCallStack("U_RTFATA")
oPrint:nDevice := 6
ElseIf !IsInCallStack("U_FLXA1FAT") .AND. !_lGPDFB64 .and. !IsInCallStack("U_RCBUCGER").and. !IsInCallStack("U_RCBUCOLD")
oPrint:SetViewPDF(.T.) //Indica se o arquivo será exibido após a impressão em PDF.
oPrint:lServer := .F. //Indica impressão via Server (.REL Não será copiado para o Client).
oPrint:SetDevice(IMP_PDF)
oPrint:lInJob := .T. //Seta impressao em JOB (ver documentacao)
Else
oPrint:SetDevice(IMP_PDF)
oPrint:lInJob := .T. //Seta impressao em JOB (ver documentacao)
EndIf
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
Else
oPrint := FWMSPrinter():New(_FileName+".pdf",IMP_PDF,.T.,_cPastaLoc,.T.,,,"PDF",.T.,,.F.,.F.)
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(0,0,0,0)
oPrint:SetDevice(IMP_PDF)
oPrint:SetViewPDF(!lMacOs)
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
EndIf
ElseIf _cCliLoja <> SE1->E1_CLIENTE+SE1->E1_LOJA .and. _cQuebra == "Por Cliente"
If ValType(oPrint) == "O"
If !lMacOs .And. !_lProcAutoB
oPrint:Preview()
ElseIf lMacOs
oPrint:Print()
Sleep(3000)
//Copia o arquivo gerado para pasta Temp do Mac e executa comendo para abrir.
If CpyS2T( _cPastaSpo + Lower(_FileName)+".pdf" , 'l:' + GetTempPath() , .T. , .F. )
Ferase( _cPastaSpo + Lower(_FileName)+".pdf" )
Ferase( _cPastaSpo + Lower(_FileName)+".rel" )
WaitRun("Open " + GetTempPath() + Lower(_FileName)+".pdf" , 0 )
EndIf
EndIf
EndIf
If ( _lSendMail )
If !IsBlind()
CpyT2S( _cPastaLoc+Lower(_FileName)+'.pdf' , _cPastaSpo )
EndIf
xVerOrigTit(_cPrefixo,_cNumero,_cParcela,_cTipo,_cCliente,_cLoja,_cNumLiq)
aAdd(_aSendMail,{_FileAnexo,_cEmail,IIf( U_RtIsEmpFil({ {"09"} }),_cNome,_cNome+" ("+_cCliente+'-'+_cLoja+")"),_aNfOrig})
EndIf
If ( _lGPDFB64 )
oPrint:Print()
cLocalFile := GetTempPath()
CpyS2T( _cPastaSpo + Lower(_FileName)+".pdf" , cLocalFile , .T. , .F. )
cLocalFile += Lower(_FileName)+".pdf"
AAdd(aPDFSB64, {Encode64(,cLocalFile,.F.,.F.), _FileAnexo})
Ferase(cLocalFile)
EndIf
//Excluo os arquivos da pasta local.
Sleep(3000)
If (_cPastaSpo # _cPastaLoc)
Ferase( _cPastaLoc+Lower(_FileName)+'.pdf' )
EndIf
_cCliente := SE1->E1_CLIENTE
_cLoja := SE1->E1_LOJA
_cNome := AllTrim(SA1->A1_NOME)
_cEmail := IIf(!Empty(SA1->A1_MAILBOL),AllTrim(SA1->A1_MAILBOL),AllTrim(SA1->A1_EMAIL)) + IIf(IsInCallStack("U_FLXA1FAT"), ";" + GetNewPar("MV_ZFLXBOL", "octavio@gooneconsultoria.com.br;emelin.machado@gruporech.com"), "")
_cPrefixo := SE1->E1_PREFIXO
_cTipo := SE1->E1_TIPO
_cNumero := SE1->E1_NUM
_cNumLiq := SE1->E1_NUMLIQ
_cParcela := SE1->E1_PARCELA
_cCliLoja := SE1->E1_CLIENTE+SE1->E1_LOJA
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cCliLoja)
_cChvSE1 := Alltrim(SE1->E1_FILIAL)+"_"+Alltrim(SE1->E1_CLIENTE)+"_"+Alltrim(SE1->E1_LOJA)+"_"+Alltrim(SE1->E1_PREFIXO)+"_"+Alltrim(SE1->E1_NUM)+"_"+Alltrim(SE1->E1_PARCELA)+"_"+Alltrim(SE1->E1_TIPO)
If FWIsInCallStack("U_RTFATA")
If Type("cPedBol") == "U"
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cCliLoja)
Else
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+cPedBol+_cCliLoja,"Boleto_RechTratores"+cPedBol+_cCliLoja)
EndIf
Else
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cCliLoja)
EndIf
_FileAnexo := _cPastaSpo+Lower(_FileName)+'.pdf'
//Obs.: Gero em pasta local (_cPastaLoc), pois se gerar no servidor o arquivo temporário .rel não apaga quando gera o pdf.
If ( _lSendMail .OR. _lGPDFB64)
If FWIsInCallStack("U_RTFATA")
oPrint := FWMSPrinter():New(_FileName,IMP_PDF,.T.,_cPastaLoc,.T.,,,,.T.,,,.F.,)
Else
oPrint := FWMSPrinter():New(_FileName+".pdf",2,.T.,_cPastaLoc,.T.)
EndIf
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(60,60,60,60)
If FWIsInCallStack("U_RTFATA")
oPrint:nDevice := 6
ElseIf !IsInCallStack("U_FLXA1FAT") .AND. !_lGPDFB64
oPrint:SetViewPDF(.T.) //Indica se o arquivo será exibido após a impressão em PDF.
oPrint:lServer := .F. //Indica impressão via Server (.REL Não será copiado para o Client).
EndIf
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
Else
//oPrint := FWMSPrinter():New(_FileName+".pdf",IMP_PDF,.T.,_cPastaLoc,.T.,,,"PDF",.T.,,.F.,.F.)
oPrint := FWMSPrinter():New(_FileName+".pdf",2,.T.,_cPastaLoc,.T.)
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(0,0,0,0)
oPrint:SetDevice(IMP_PDF)
oPrint:SetViewPDF(!lMacOs)
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
EndIf
elseIf _cChvSE1 <> (Alltrim(SE1->E1_FILIAL)+"_"+Alltrim(SE1->E1_CLIENTE)+"_"+Alltrim(SE1->E1_LOJA)+"_"+Alltrim(SE1->E1_PREFIXO)+"_"+Alltrim(SE1->E1_NUM)+"_"+Alltrim(SE1->E1_PARCELA)+"_"+Alltrim(SE1->E1_TIPO)) .and. _cQuebra == "Por Parcela"
If ValType(oPrint) == "O"
If !lMacOs .And. !_lProcAutoB
//oPrint:Preview()
oPrint:Print()
Sleep(3000)
If Len(_BolBuck) > 0
For nXX := 1 To Len(_BolBuck)
cLocalFile := _BolBuck[nXX,1]
lCopBuck := .F.
lCopBuck := __CopyFile(_cPastaLoc + Lower(cLocalFile) + ".pdf", _cPastaBuc + Lower(_BolBuck[nXX,3]) + ".pdf")
If lCopBuck
Ferase( _cPastaLoc + Lower(cLocalFile) + ".pdf" )
Endif
Next
_BolBuck := {}
Endif
ElseIf lMacOs
oPrint:Print()
Sleep(3000)
//Copia o arquivo gerado para pasta Temp do Mac e executa comendo para abrir.
If CpyS2T( _cPastaSpo + Lower(_FileName)+".pdf" , 'l:' + GetTempPath() , .T. , .F. )
Ferase( _cPastaSpo + Lower(_FileName)+".pdf" )
Ferase( _cPastaSpo + Lower(_FileName)+".rel" )
WaitRun("Open " + GetTempPath() + Lower(_FileName)+".pdf" , 0 )
EndIf
else
oPrint:Print()
EndIf
EndIf
If ( _lSendMail )
If !IsBlind()
CpyT2S( _cPastaLoc+Lower(_FileName)+'.pdf' , _cPastaSpo )
EndIf
xVerOrigTit(_cPrefixo,_cNumero,_cParcela,_cTipo,_cCliente,_cLoja,_cNumLiq)
aAdd(_aSendMail,{_FileAnexo,_cEmail,IIf( U_RtIsEmpFil({ {"09"} }),_cNome,_cNome+" ("+_cCliente+'-'+_cLoja+")"),_aNfOrig})
EndIf
If ( _lGPDFB64 )
oPrint:Print()
cLocalFile := GetTempPath()
CpyS2T( _cPastaSpo + Lower(_FileName)+".pdf" , cLocalFile , .T. , .F. )
cLocalFile += Lower(_FileName)+".pdf"
AAdd(aPDFSB64, {Encode64(,cLocalFile,.F.,.F.), _FileAnexo})
Ferase(cLocalFile)
EndIf
//Excluo os arquivos da pasta local.
Sleep(3000)
_cCliente := SE1->E1_CLIENTE
_cLoja := SE1->E1_LOJA
_cNome := AllTrim(SA1->A1_NOME)
_cEmail := IIf(!Empty(SA1->A1_MAILBOL),AllTrim(SA1->A1_MAILBOL),AllTrim(SA1->A1_EMAIL)) + IIf(IsInCallStack("U_FLXA1FAT"), ";" + GetNewPar("MV_ZFLXBOL", "octavio@gooneconsultoria.com.br;emelin.machado@gruporech.com"), "")
_cPrefixo := SE1->E1_PREFIXO
_cTipo := SE1->E1_TIPO
_cNumero := SE1->E1_NUM
_cNumLiq := SE1->E1_NUMLIQ
_cParcela := SE1->E1_PARCELA
_cCliLoja := SE1->E1_CLIENTE+SE1->E1_LOJA
_cChvSE1 := Alltrim(SE1->E1_FILIAL)+"_"+Alltrim(SE1->E1_CLIENTE)+"_"+Alltrim(SE1->E1_LOJA)+"_"+Alltrim(SE1->E1_PREFIXO)+"_"+Alltrim(SE1->E1_NUM)+"_"+Alltrim(SE1->E1_PARCELA)+"_"+Alltrim(SE1->E1_TIPO)
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cChvSE1)
If FWIsInCallStack("U_RTFATA") .or. IsInCallStack("U_RCBUCGER") .or. IsInCallStack("U_RCBUCOLD")
If Type("cPedBol") == "U"
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cCliLoja)
Else
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+cPedBol+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cChvSE1)
EndIf
Else
_FileName := IIf(U_RtIsEmpFil({ {"09"} }),"Boleto_Samurai"+getnextalias()+_cCliLoja,"Boleto_RechTratores"+getnextalias()+_cChvSE1)
EndIf
_FileAnexo := _cPastaSpo+Lower(_FileName)+'.pdf'
//Obs.: Gero em pasta local (_cPastaLoc), pois se gerar no servidor o arquivo temporário .rel não apaga quando gera o pdf.
If ( _lSendMail .OR. _lGPDFB64) //.And. !(FWIsInCallStack("U_RTFATA"))
If FWIsInCallStack("U_RTFATA") .or. IsInCallStack("U_RCBUCGER") .or. IsInCallStack("U_RCBUCOLD")
oPrint := FWMSPrinter():New(_FileName,IMP_PDF,.T.,_cPastaLoc,.T.,,,,.T.,,,.F.,)
Else
oPrint := FWMSPrinter():New(_FileName+".pdf",2,.T.,_cPastaLoc,.T.)
EndIf
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(60,60,60,60)
If FWIsInCallStack("U_RTFATA")
oPrint:nDevice := 6
ElseIf !IsInCallStack("U_FLXA1FAT") .AND. !_lGPDFB64
oPrint:SetViewPDF(.T.) //Indica se o arquivo será exibido após a impressão em PDF.
oPrint:lServer := .F. //Indica impressão via Server (.REL Não será copiado para o Client).
EndIf
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
Else
If FWIsInCallStack("U_RTFATA") .or. IsInCallStack("U_RCBUCGER") .or. IsInCallStack("U_RCBUCOLD")
oPrint := FWMSPrinter():New(_FileName,IMP_PDF,.T.,_cPastaLoc,.T.,,,,.T.,,,.F.,)
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(60,60,60,60)
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
Else
oPrint := FWMSPrinter():New(_FileName+".pdf",2,.T.,_cPastaLoc,.T.)
oPrint:SetResolution(72)
oPrint:SetPortrait()
oPrint:SetPaperSize(DMPAPER_A4)
oPrint:SetMargin(0,0,0,0)
oPrint:SetDevice(IMP_PDF)
oPrint:SetViewPDF(!lMacOs)
oPrint:cPathPDF := _cPastaLoc //Caminho do arquivo PDF
EndIf
EndIf
EndIf
// Faz verificação se deve gerar os arquivos do bucket
If (SuperGetMV("RC_BUCKET",.F.,'',SE1->E1_FILIAL) = 'GATILHO' .and. !(FWIsInCallStack("U_RCBUCGER") .or. FWIsInCallStack("U_RCBUCOLD") ) ) .OR. ;
(SuperGetMV("RC_BUCKET",.F.,'',SE1->E1_FILIAL) = 'SCHEDULER' .and. ( FWIsInCallStack("U_RCBUCGER") .OR. FWIsInCallStack("U_RCBUCOLD")) )
aadd(_BolBuck,{_FileName,SE1->E1_FILIAL,_cChvSE1})
EndIf
// Pega a posição da filial na array com dados da empresa e filial
nPosEmpFil := aScan(_aEmpFull,{|x| Alltrim(x[1]) = Alltrim(cEmpAnt) .and. Alltrim(x[2]) = Alltrim(SE1->E1_FILIAL)})
// Adiciona na array apenas os dados da filial do titulo
aDadosEmp:={_aEmpFull[nPosEmpFil][3],; // Nome da filial
_aEmpFull[nPosEmpFil][10],; // Endereço
AllTrim(_aEmpFull[nPosEmpFil][6])+', '+AllTrim(_aEmpFull[nPosEmpFil][4])+', '+_aEmpFull[nPosEmpFil][5] ,; //[3]Complemento
'CEP: '+Subs(_aEmpFull[nPosEmpFil][7],1,5)+'-'+Subs(_aEmpFull[nPosEmpFil][7],6,3),; //[4]CEP,;
'PABX/FAX: '+_aEmpFull[nPosEmpFil][11],; //[5]Telefones
'CNPJ: '+Subs(_aEmpFull[nPosEmpFil][9],1,2)+'.'+Subs(_aEmpFull[nPosEmpFil][9],3,3)+'.'+; //[6]
Subs(_aEmpFull[nPosEmpFil][9],6,3)+'/'+Subs(_aEmpFull[nPosEmpFil][9],9,4)+'-'+; //[6]
Subs(_aEmpFull[nPosEmpFil][9],13,2),; //[6]CGC
'I.E.: '+Subs(_aEmpFull[nPosEmpFil][8],1,3)+'.'+Subs(_aEmpFull[nPosEmpFil][8],4,3)+'.'+; //[7]
Subs(_aEmpFull[nPosEmpFil][8],7,3)+'.'+Subs(_aEmpFull[nPosEmpFil][8],10,3)} //[7]I.E
// Chama impressão do titulo
xImpPdf(aDadosEmp,aDadosTit,aDadosBanco,aDatSacado,aCB_RN_NN)
l237BBM := .F.
Else
Help(' ',1,'REGNOIS')
EndIf
Else
MsgAlert("Não foi encontrado o cadastro do banco na SEE.")
aAdd(aRet,{.F.,'Não foi encontrado o cadastro do banco na SEE.'})
EndIf
EndIf
nI++
Next nTit
//Providencias para impressão do Boleto ( com o objeto oPrint )
If Type("oPrint") == "O"
// Visualiza antes de imprimir
If FWIsInCallStack("U_RTFATA")
oPrint:Print()
__CopyFile("\spool\lf14r\" + AllTrim(Lower(_FileName)) + ".pdf", cXImpFatAuto)
ElseIf FWIsInCallStack("U_RCBUCGER") .or. FWIsInCallStack("U_RCBUCOLD")
oPrint:Print()
ElseIf !lMacOs .And. !_lProcAutoB .AND. !_lGPDFB64
oPrint:Preview()
ElseIf lMacOs
oPrint:Print()
Sleep(3000)
//Copia o arquivo gerado para pasta Temp do Mac e executa comando para abrir.
If CpyS2T( _cPastaSpo + Lower(_FileName)+".pdf" , 'l:' + GetTempPath() , .T. , .F. )
Ferase( _cPastaSpo + Lower(_FileName)+".pdf" )
Ferase( _cPastaSpo + Lower(_FileName)+".rel" )
WaitRun("Open " + GetTempPath() + Lower(_FileName)+".pdf" , 0 )
EndIf
ElseIf IsInCallStack("U_FLXA1FAT")
oPrint:Print()
EndIf
If ( _lSendMail )
If !IsBlind()
CpyT2S(_cPastaLoc+Lower(_FileName)+'.pdf', _cPastaSpo)
EndIf
xVerOrigTit(_cPrefixo,_cNumero,_cParcela,_cTipo,_cCliente,_cLoja,_cNumLiq)
aAdd(_aSendMail,{_FileAnexo,_cEmail,IIf( U_RtIsEmpFil({ {"09"} }),_cNome,_cNome+" ("+_cCliente+'-'+_cLoja+")"),_aNfOrig})
xSendMailCli(_aSendMail)
//Excluo os arquivos do servidor.
Sleep(3000)
If !FWIsInCallStack("U_RTFATA")
if _cQuebra <> "Por Parcela"
For _nd := 1 to Len(_aSendMail)
Ferase(_aSendMail[_nd][1])
Next _nd
endif
EndIf
EndIf
If ( _lGPDFB64 )
oPrint:Print()
cLocalFile := GetTempPath()
CpyS2T( _cPastaSpo + Lower(_FileName)+".pdf" , GetTempPath() , .T. , .F. )
cLocalFile += Lower(_FileName)+".pdf"
AAdd(aPDFSB64, {Encode64(,cLocalFile,.F.,.F.), _FileAnexo})
Ferase(cLocalFile)
Sleep(3000)
if _cQuebra <> "Por Parcela"
For _nd := 1 to Len(aPDFSB64)
Ferase(aPDFSB64[_nd][2])
Next _nd
endif
EndIf
//Copia o PDF para a pasta do BUcket
If Len(_BolBuck) > 0
For nXX := 1 To Len(_BolBuck)
cLocalFile := _BolBuck[nXX,1]
lCopBuck := .F.
lCopBuck := __CopyFile(_cPastaLoc + Lower(cLocalFile) + ".pdf", _cPastaBuc + Lower(_BolBuck[nXX,3]) + ".pdf")
If lCopBuck
Ferase( _cPastaLoc + Lower(cLocalFile) + ".pdf" )
Endif
Next
Endif
Endif
Return( Nil )
/*---------------------------------------------------------------------------------------------
{Protheus.doc} XIMPPDF
Funcao de geracao e impressao do boleto
@type Static Function
@author Luiz Robusto
@since 23/12/2020
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xImpPdf(aDadosEmp,aDadosTit,aDadosBanco,aDatSacado,aCB_RN_NN)
Local nLin := 0
Local nx := 0
Local nInf := 0
Local cFileLogo := 'logo\company\logo_emp_' + fwCodEmp() + '.bmp'//Iif(AllTrim(aDadosBanco[1]) == '756',GetSrvProfString('Startpath',' ') + '/marca_sicoob.bmp',GetSrvProfString('Startpath',' ') + '/logorech' + AllTrim(cEmpAnt) + '.bmp')
// Alteração solicitada pelo financeiro, onde será apresentado no boleto o nome da empresa / nome do banco ( Rech Agricola S.A. / Banco Bocom BBM S.A. ) no campo beneficiario
// criado tratamento para o boleto seja impresso com as configurações solicitada pelo financeiro somente quando o grupo de empresa logado seja a Rech Agricola "06"
Local cBenBBM := IIF(FWCodEmp() $ SuperGetMv("XX_XBENEF",,"006"),AllTrim(Upper(aDadosEmp[1]))+ " / Banco Bocom BBM S.A.","Banco Bocom BBM S/A. CNPJ: 15.114.366/0002-40")
Local cIntBBM := "Crédito cedido ao Banco Bocom BBM SA, o pagamento somente poderá ser feito por este boleto."
Local cSacBBM := AllTrim(UPPER(aDadosEmp[1])) + " - " + aDadosEmp[6]
Local oFont8 := TFont():New('Arial',9,8,.T.,.F.,5,.T.,5,.T.,.F.)
Local oFont9 := TFont():New('Arial',9,9,.T.,.F.,5,.T.,5,.T.,.F.)
Local oFont11c := TFont():New('Courier New',9,11,.T.,.T.,5,.T.,5,.T.,.F.)
Local oFont11 := TFont():New('Arial',9,11,.T.,.T.,5,.T.,5,.T.,.F.)
Local oFont10 := TFont():New('Arial',9,10,.T.,.T.,5,.T.,5,.T.,.F.)
Local oFont10n := TFont():New('Arial',9,10,.T.,.T.,5,.T.,5,.T.,.F.)
Local oFont14 := TFont():New('Arial',9,14,.T.,.T.,5,.T.,5,.T.,.F.)
Local oFont20 := TFont():New('Arial',9,20,.T.,.T.,5,.T.,5,.T.,.F.)
Local oFont15n := TFont():New('Arial',9,15,.T.,.F.,5,.T.,5,.T.,.F.)
Local aBolText := {}
Local nI := 0
Local nQtdPrint := 0
Local nLinhPrin := 1
Local _cMenNf := ""
Local cString := ' '
Local nMultTit := 0
Local nJurTit := 0
Local nDiasVenc := 0
Local cDiasPro := Alltrim(SuperGetMV("RC_DIASPRO",.F.,"05"))
//Inicia nova página.
oPrint:StartPage()
// Altera fontes se for empresa 09 e tira os negritos, seguindo padrão samurai
If U_RtIsEmpFil({ {"09"} })
oFont11 := TFont():New('Arial',9,11,.T.,.F.,5,.T.,5,.T.,.F.)
oFont10 := TFont():New('Arial',9,10,.T.,.F.,5,.T.,5,.T.,.F.)
EndIf
aBolText := {}
// Se o banco estiver configurado multa
If (aDadosBanco[1] $ cBcoMt) .Or. cBcoMt = '*'
// Calculo da muta
If nMulta > 0 .and. aDadosBanco[1] <> '224' .and. aDadosBanco[1] <> '274' //Banco Fibra não terá multa. Cesar.gruppe 25/07/2022
//Banco Money não terá multa. Cesar.gruppe 15/08/2022
Do Case
Case cTpMulta = 'C' //Calculo de valor
nMultTit := (aDadosTit[5] * nMulta)/100
aAdd(aBolText,'Após o vencimento cobrar multa de R$ ' + Alltrim(Transform(nMultTit,'@E 999,999,999.99')) )
Case cTpMulta = 'P' // Percentual
nMultTit := 0
aAdd(aBolText,'Após o vencimento cobrar multa de ' + StrTran(cValToChar(nMulta),'.',',') + " %" )
Case cTpMulta = 'F' // Valor fixo
nMultTit := nMulta
aAdd(aBolText,'Após o vencimento cobrar multa de R$ ' + Alltrim(Transform(nMultTit,'@E 999,999,999.99')) )
EndCase
EndIf
EndIf
// Se o banco estiver configurado para juros
If (aDadosBanco[1] $ cBcoJr) .Or. cBcoJr = '*'
//Calculo de juros
If nJuros > 0
Do Case
Case cTpJuro = 'CM' //Calculo de valor total mês
nJurTit := ((aDadosTit[5] * nJuros)/100)
aAdd(aBolText,'Juros de Mora: R$ ' + Alltrim(Transform(nJurTit,'@E 999,999,999.99')) + " ao mês." )
Case cTpJuro = 'C' //Calculo de valor
nJurTit := ((aDadosTit[5] * nJuros)/100)/30
aAdd(aBolText,'Juros de Mora: R$ ' + Alltrim(Transform(nJurTit,'@E 999,999,999.99')) + " ao dia." )
Case cTpJuro = 'P' // Percentual
If aDadosBanco[1] = '224' .OR. aDadosBanco[1] = '274' //BANCO FIBRA Cesar.gruppe 25/07/2022 //BANCO MONEY Cesar.gruppe 15/08/2022.
aAdd(aBolText,'Juros de Mora: ' + StrTran(cValToChar(nJrMora),'.',',') + " %" + " ao dia.")
Else
nJurTit := 0
aAdd(aBolText,'Juros de Mora: ' + StrTran(cValToChar(nJuros),'.',',') + " %" + " ao dia.")
EndIf
Case cTpJuro = 'F' // Valor fixo
nJurTit := nJuros
aAdd(aBolText,'Juros de Mora: R$ ' + Transform(nJurTit,'@E 999,999,999.99') + " ao dia.")
EndCase
EndIf
EndIf
aAdd(aBolText,'*** VALORES EXPRESSOS EM REAIS ***')
//A pedido da Camila, nenhum banco das empresas 003 / 004 e 006 devem ter instrucao de protesto impressa no Boleto
If !U_RtIsEmpFil({ {"30"},{"25"},{"03"},{"04"},{"06"},{"07"},{"29"} })
aAdd(aBolText,'Sujeito a Protesto após '+cDiasPro+ '('+alltrim(Extenso(Val(cDiasPro),.T.))+') dias do vencimento.')
EndIf
aAdd(aBolText,'*** Atenção: este Boleto poderá ser enviado via e-mail ***')
If ( AllTrim(aDadosBanco[1]) == '246' ) // mensagem abc
aAdd(aBolText,'TITULO TRANSFERIDO A FAVOR DO BANCO ABC BRASIL.')
EndIf
If !U_RtIsEmpFil({{"25"}})
If AllTrim(aDadosBanco[1]) == '756'
aAdd(aBolText,OemToAnsi('SUJEITO A NEGATIVAÇÃO '+cDiasPro+' DIAS APÓS O VENCIMENTO'))
Else
If AllTrim(aDadosBanco[1]) == '025' // Adicionado Danillo Nogueira
aAdd(aBolText,OemToAnsi('APOS '+alltrim(SEE->EE_DIASPRO)+' DIAS DE VENCIDO NEGATIVAR NA SERASA (PEFIN).'))
ElseIf AllTrim(aDadosBanco[1]) == '224' //Banco Fibra Cesar.gruppe 25/07/2022
aAdd(aBolText,OemToAnsi('TÍTULO CEDIDO AO BANCO FIBRA SA A SER PAGO APENAS POR ESTE BOLETO'))
ElseIf AllTrim(aDadosBanco[1]) == '274' //Banco Money Cesar.gruppe 15/08/2022
//aAdd(aBolText,OemToAnsi('TÍTULO CEDIDO AO BANCO FIBRA SA A SER PAGO APENAS POR ESTE BOLETO'))
Else
aAdd(aBolText,OemToAnsi('APOS '+cDiasPro+' DIAS DE VENCIDO NEGATIVAR NA SERASA (PEFIN).'))
EndIf
EndIf
EndIf
If ( AllTrim(aDadosBanco[1]) == '341' ) .And. fwCodEmp() <> '003'
aAdd(aBolText,'Se o boleto estiver vencido acesse o site: https://ww2.itau.com.br/bloqueto/BloquetoVencido.html')
aAdd(aBolText,'e faca a atualizacao do seu boleto para pagamento em qualquer agencia bancaria.')
EndIf
If ( AllTrim(aDadosBanco[1]) $ '341|001|033' ) .And. fwCodEmp() == '003'
aAdd(aBolText,'O boleto mesmo vencido, pode ser pago em qualquer agência bancária,')
aAdd(aBolText,' canais de atendimento e internet banking, sem a necessidade de atualização.')
EndIf
If ( AllTrim(aDadosBanco[1]) == '604' )
aAdd(aBolText,'Titulo Cedido ao Banco Industrial do Brasil S/A')
aAdd(aBolText,'Dúvidas: (11) 3049-9794 ou checagem@bib.com.br')
EndIf
// Adicionado - Danillo Nogueira 31/01/2022 -> Solicitado pela Camila chamado 198094 retirar mensagem abaixao para o banco Alfa
// Adicionado - Danillo Nogueira 03/02/2022 -> Ajuste na regra conforme solicitado pela camila no Chamado 198094 para retirar esta mensagem de todos os bancos.
If ( AllTrim(aDadosBanco[1]) $ SuperGetMV("RC_ATVMSN1",," ",) ) // Se for necessario inserir esta mensagem no boleto, coloque o codigo do banco A6_COD neste parametro RC_ATVMSN1 no formado 033/025/341 ...
aAdd(aBolText,'DEPÓSITO BANCÁRIO NÃO PAGA ESTE BOLETO.')
EndIf
// Imprime o logo da empresa.
oPrint:SayBitmap(035,100,cFileLogo,0480,125) // 1050,260
//---------------------------------------------
//³C O M P R O V A N T E D E E N T R E G A³
//---------------------------------------------
If !U_RtIsEmpFil({ {"09"} })
nRow1 := 130
oPrint:Line(nRow1+0087,0100,nRow1+0087,2300)//primeita linha
oPrint:Line(nRow1+0030,0500,nRow1+0088,0500)//coluna banco
oPrint:Line(nRow1+0030,0710,nRow1+0088,0710)//coluna codigo banco
//Monta a Query para pegar a Observacao da nota que sera impressa no Boleto
If ( AllTrim(SE1->E1_TIPO) == "NF" )
cQuery := " SELECT SC5.C5_MENNOTA, SC5.C5_NOTA, SC5.C5_SERIE "
cQuery += " FROM " + RetSqlName('SC9') + " SC9, " + RetSqlName('SC5') + " SC5 "
cQuery += " WHERE SC9.C9_FILIAL = '" + SE1->E1_FILIAL + "' "
cQuery += " AND SC9.C9_NFISCAL = '" + SE1->E1_NUM + "' "
cQuery += " AND SC9.C9_SERIENF = '" + SE1->E1_PREFIXO + "' "
cQuery += " AND SC9.D_E_L_E_T_ = ' ' "
cQuery += " AND SC5.C5_FILIAL = '" + SE1->E1_FILIAL + "' "
cQuery += " AND SC5.C5_NUM = SC9.C9_PEDIDO "
cQuery += " AND SC5.D_E_L_E_T_ = ' ' "
cQuery += " GROUP BY SC5.C5_MENNOTA, SC5.C5_NOTA, SC5.C5_SERIE "
DbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),'TRB',.F.,.T.)
If TRB->( ! Eof() )
_cMenNf := TRB->C5_MENNOTA
EndIf
TRB->(DbCloseArea())
If !Empty(_cMenNf)
oPrint:Say(nRow1-010,760,OemToAnsi('Documento Fiscal: ')+AllTrim(SE1->E1_PREFIXO)+"/"+SE1->E1_NUM,oFont14)
oPrint:Say(nRow1+050,760,OemToAnsi('Observação da Nota: ')+_cMenNF,oFont14)
EndIf
EndIf
oPrint:Say(nRow1+0084,0100,aDadosBanco[2],oFont11) //Nome do Banco
If aDadosBanco[1] == '748'
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+'-X',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '604' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '104' // ADICIONADO - DANILLO NOGUEIRA DANTAS 11/11/2021
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+'-0',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '422'
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+"-7",oFont20)
ElseIf aDadosBanco[1] == '224' //Cesar.gruppe 21/07/2022
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '274' //Cesar.gruppe 06/08/2022
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] <> '033'
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+If(aDadosBanco[1]='237','-2',If(aDadosBanco[1]='756','-0','-9')),oFont20) //TSCB56 - Rafael de Souza
Else
oPrint:Say(nRow1+0075,0513,aDadosBanco[1]+"-7",oFont20) // [1] Numero do Banco
endIf
oPrint:Say(nRow1+0104,0100,'Beneficiário',oFont8)
oPrint:Say(nRow1+0140,0100,IIf(l237BBM,cBenBBM,AllTrim(Upper(aDadosEmp[1]))),oFont10) // Nome + CNPJ
// Alteração solicitada pelo financeiro, onde será apresentado no boleto o nome da empresa / nome do banco ( Rech Agricola S.A. / Banco Bocom BBM S.A. ) no campo beneficiario
// criado tratamento para o boleto seja impresso com as configurações solicitada pelo financeiro somente quando o grupo de empresa logado seja a Rech Agricola "06"
If l237BBM
If FWCodEmp() $ SuperGetMv("XX_XBENEF",,"006")
oPrint:Say(nRow1+0170,0100,"RUA RIO DE JANEIRO 2809 - PRIMAVERA IV, PRIMAVERA DO LESTE, MT - CEP: 78850-000.",oFont8)
Else
oPrint:Say(nRow1+0170,0100,"Av. Barão de Tefé, 34 – 20º e 21º andar – Saúde – Rio de Janeiro, RJ – CEP: 20220-460.",oFont8)
EndIf
EndIf
oPrint:Say(nRow1+0104,1060,'Agência/Código Beneficiário',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' ) // EspecIfico BB
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'-'+SubStr(aDadosBanco[3],5,1)+ '/' +aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '756' ) // EspecIfico SICOOB
cString := AllTrim(aDadosBanco[3]) + '/' + SubStr(aDadosBanco[8],1,Len(aDadosBanco[8])-1) + "-" + SubStr(aDadosBanco[8],Len(aDadosBanco[8]),1)
Case ( AllTrim(aDadosBanco[1]) == '033' ) // EspecIfico SANTANDER
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[8]
Case ( AllTrim(aDadosBanco[1]) == '422' ) // EspecIfico Safra
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case ( AllTrim(aDadosBanco[1]) == '224' ) // EspecIfico Fibra //Cesar.gruppe 21/07/2022
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+ '/' +AllTrim(cCodBenef))
Case ( AllTrim(aDadosBanco[1]) == '274' ) // Especifico MONEY
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4] //Cesar.gruppe 06/08/2022
Case l237BBM // Específico BBM
cString := aDadosBanco[3]+'-6/'+SubStr(aDadosBanco[4],1,4)+'-'+aDadosBanco[5]
Case ( AllTrim(aDadosBanco[1]) == '246' ) // Específico ABC
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[9]
Case ( AllTrim(aDadosBanco[1]) == '604' ) // Específico BIB - ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'9'+SubStr(aDadosBanco[3],5,1)+ '/' +Substr(aDadosBanco[4],1,2)+Substr(aDadosBanco[4],4,6)+'0')
Case ( AllTrim(aDadosBanco[1]) == '748' ) // Específico SICREDI - ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '104' ) // Específico caixa - ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[8]+'-'+Iif(Alltrim(aDadosBanco[8])=="1148068","8","6"))
OtherWise
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
End Case
oPrint:Say(nRow1+0140,1060,cString,oFont10)//agencia e codigo beneficiário
oPrint:Say(nRow1+0104,1450,'Nro.Documento',oFont8)
oPrint:Say(nRow1+0140,1450,aDadosTit[7]+aDadosTit[1],oFont10) // Prefixo +Numero+Parcela
oPrint:Say(nRow1+0192,100 ,'Pagador',oFont8)
oPrint:Say(nRow1+0228,100 ,aDatSacado[1],oFont10) // Nome Sacado/Pagador
oPrint:Say(nRow1+0192,1060,'Vencimento',oFont8)
oPrint:Say(nRow1+0228,1060,StrZero(Day(aDadosTit[4]),2) +'/'+ StrZero(Month(aDadosTit[4]),2) +'/'+ Right(Str(Year(aDadosTit[4])),4),oFont10)
oPrint:Say(nRow1+0192,1450,'Valor do Documento',oFont8)
oPrint:Say(nRow1+0228,1510,AllTrim(TransForm(aDadosTit[5]+aDadosTit[9],'@E 999,999,999.99')),oFont10)
oPrint:Say(nRow1+0332,0100,'Recebi(emos) o bloqueto/título',oFont10)
oPrint:Say(nRow1+0382,0100,'com as características acima.',oFont10)
oPrint:Say(nRow1+0282,1060,'Carteira',oFont8)
If aDadosBanco[1]<>'033'
If aDadosBanco[1]=='104' // Adicionado Danillo Nogueira Dantas 16/11/2021
oPrint:Say(nRow1+0318,1060,"RG",oFont10)
else
oPrint:Say(nRow1+0318,1060,aDadosBanco[6],oFont10)
Endif
Else
Do Case
Case ( aDadosBanco[6] == '101' )
oPrint:Say(nRow1+0318,1060,"COB. SIMPLES - RCR",oFont10)
Case ( aDadosBanco[6] == '102' )
oPrint:Say(nRow1+0318,1060,"COB. SIMPLES - CSR",oFont10)
Case ( aDadosBanco[6] == '201' )
oPrint:Say(nRow1+0318,1060,"COB. SIMPLES - RCR",oFont10)
end Case
endIf
oPrint:Say(nRow1+282,1450,'Nosso Numero',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' )
cString := aDadosTit[6]
Case ( AllTrim(aDadosBanco[1]) == '422' )
cString := aDadosTit[6]
Case ( AllTrim(aDadosBanco[1]) == '224' ) //Cesar.gruppe 21/07/2022 Fibra
cString := AllTrim(SubStr(aDadosTit[6],1,11))
Case ( AllTrim(aDadosBanco[1]) == '274' ) //Cesar.gruppe 06/08/2022 Money
cString := AllTrim(SubStr(aDadosTit[6],1,12))
Case ( AllTrim(aDadosBanco[1]) == '237' ) //Convenio //cSeq //digito
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
// Adicionado Danillo Nogueira - 11/01/2022
Case ( AllTrim(aDadosBanco[1]) == '025' ) //Convenio //cSeq //digito
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '341' )
cString := AllTrim(SubStr(aDadosTit[6],1,3)) + '/' + AllTrim(SubStr(aDadosTit[6],4,8)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '748' )
cString := AllTrim(SubStr(aDadosTit[6],1,2)) + '/' + AllTrim(SubStr(aDadosTit[6],3,6)) + '-' + SubStr(aDadosTit[6],9,1)
Case ( AllTrim(aDadosBanco[1]) == '033' )
cString := AllTrim(SubStr(aDadosTit[6],1,12)) + '-' + SubStr(aDadosTit[6],13,1)
Case ( AllTrim(aDadosBanco[1]) == '756' ) //TSCB56 - Rafael de Souza
cString := AllTrim(SubStr(aDadosTit[6],1,7)) + '-' + SubStr(Alltrim(aDadosTit[6]),8,1)
Case ( AllTrim(aDadosBanco[1]) == '604' ) // ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := Substr(AllTrim(aDadosTit[6]),1,10)
Case ( AllTrim(aDadosBanco[1]) == '104' ) // ADICIONADO - DANILLO NOGUEIRA DANTAS 11/11/2021
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + AllTrim(SubStr(aDadosTit[6],1,15)) + '-' + SubStr(aDadosTit[6],16,1)
OtherWise
cString := TransForm(Val(aDadosTit[6]),"@R 99999999999-9")
End Case
oPrint:Say(nRow1+0318,1450,cString,oFont10)//Nosso Número
oPrint:Say(nRow1+0372,1060,'Data',oFont8)
oPrint:Say(nRow1+0372,1450,'Entregador',oFont8)
oPrint:Line (nRow1+0175,0100,nRow1+0175,1900)//segunda linha
oPrint:Line (nRow1+0265,0100,nRow1+0265,1900)//terceira linha
oPrint:Line (nRow1+0355,1050,nRow1+0355,1900)//quarta linha
oPrint:Line (nRow1+0445,0100,nRow1+0445,2300)//quinta linha
oPrint:Line (nRow1+0088,1050,nRow1+0445,1050)
oPrint:Line (nRow1+0088,1440,nRow1+0445,1440)
oPrint:Say(nRow1+0102,1910,'( ) Mudou-se',oFont8)
oPrint:Say(nRow1+0142,1910,'( ) Ausente',oFont8)
oPrint:Say(nRow1+0182,1910,'( ) Não existe nº indicado',oFont8)
oPrint:Say(nRow1+0222,1910,'( ) Recusado',oFont8)
oPrint:Say(nRow1+0262,1910,'( ) Não procurado',oFont8)
oPrint:Say(nRow1+0302,1910,'( ) Endereço insuficiente',oFont8)
oPrint:Say(nRow1+0342,1910,'( ) Desconhecido',oFont8)
oPrint:Say(nRow1+0382,1910,'( ) Falecido',oFont8)
oPrint:Say(nRow1+0422,1910,'( ) Outros(anotar no verso)',oFont8)
EndIf
//---------------------------------------------
//³R E C I B O D O S A C A D O³
//---------------------------------------------
If U_RtIsEmpFil({ {"09"} })
nRow2 := 100
//Linhas
oPrint:Line(nRow2+0180,0100,nRow2+0180,2300)
oPrint:Line(nRow2+0270,0100,nRow2+0270,2300)
oPrint:Line(nRow2+0360,0100,nRow2+0360,2300)
oPrint:Line(nRow2+0450,0100,nRow2+0450,2300)
oPrint:Line(nRow2+0520,0100,nRow2+0520,2300)
oPrint:Line(nRow2+0590,0100,nRow2+0590,2300)
oPrint:Line(nRow2+0660,1800,nRow2+0660,2300)
oPrint:Line(nRow2+0730,1800,nRow2+0730,2300)
oPrint:Line(nRow2+0800,1800,nRow2+0800,2300)
oPrint:Line(nRow2+0870,1800,nRow2+0870,2300)
oPrint:Line(nRow2+0940,0100,nRow2+0940,2300)
oPrint:Line(nRow2+1080,0100,nRow2+1080,2300)
//Colunas
oPrint:Line(nRow2+0100,0500,nRow2+0180,0500)
oPrint:Line(nRow2+0100,0710,nRow2+0180,0710)
oPrint:Line(nRow2+0450,0500,nRow2+0590,0500)
oPrint:Line(nRow2+0520,0750,nRow2+0590,0750)
oPrint:Line(nRow2+0450,1000,nRow2+0590,1000)
oPrint:Line(nRow2+0520,1300,nRow2+0590,1300)
oPrint:Line(nRow2+0450,1480,nRow2+0590,1480)
oPrint:Line(nRow2+0180,1800,nRow2+0940,1800)
oPrint:SayBitmap(0200,0100,aDadosBanco[7],060,060)
oPrint:Say(nRow2+0160,0190,aDadosBanco[2],oFont11) // [2] Nome do Banco
If aDadosBanco[1]=='748'
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+'-X',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1]=='604' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1]=='104' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+'-0',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '422'
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+"-7",oFont20)
ElseIf aDadosBanco[1] == '224' //Cesar.gruppe 21/07/2022 Fibra
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '274' //Cesar.gruppe 06/08/2022 Money
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '025' // ADICIONAOD - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+"-2",oFont20)
ElseIf aDadosBanco[1]<>'033'
//oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+IIf(aDadosBanco[1]='237','-2','-9'),oFont20) // [1] Numero do Banco
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+If(aDadosBanco[1]='237','-2',If(aDadosBanco[1]='756','-0','-9')),oFont20) //TSCB56 - Rafael de Souza
Else
oPrint:Say(nRow2+0160,0513,aDadosBanco[1]+'-7',oFont20) // [1] Numero do Banco
EndIf
oPrint:Say(nRow2+0160,1800,'Recibo do Pagador',oFont20)
oPrint:Say(nRow2+0200,0100,'Local de Pagamento',oFont8)
//oPrint:Say(nRow2+0240,0100,'PAGAVEL EM QUALQUER BANCO',oFont10)
//oPrint:Say(nRow2+0240,0100,Iif(aDadosBanco[1]='756','PAGÁVEL PREFERENCIALMENTE NO SICOOB','PAGAVEL EM QUALQUER BANCO'),oFont10) //TSCB56 - Rafael de Souza
If aDadosBanco[1]='104' // Alterado - Danillo Nogueira - 17/11/2021
oPrint:Say(nRow2+0240,0100,'PREFERENCIALMENTE NAS CASAS LOTERICAS ATE O VALOR LIMITE',oFont10) //TSCB56 - Rafael de Souza
ElseIf aDadosBanco[1]='224' // Banco Fibra - Cesar.gruppe 25/07/2022 Fibra
oPrint:Say(nRow2+0240,0100,'PAGÁVEL EM TODA REDE BANCÁRIA',oFont10)
ElseIf aDadosBanco[1]='274' // Banco Money - Cesar.gruppe 06/08/2022 Money
oPrint:Say(nRow2+0240,0100,'PAGÁVEL NA REDE BANCÁRIA OU LOCAIS CREDENCIADOS',oFont10)
Else
oPrint:Say(nRow2+0240,0100,Iif(aDadosBanco[1]='756','PAGÁVEL PREFERENCIALMENTE NO SICOOB','PAGAVEL EM QUALQUER BANCO'),oFont10) //TSCB56 - Rafael de Souza
EndIf
oPrint:Say(nRow2+0200,1810,'Vencimento',oFont8)
cString := StrZero(Day(aDadosTit[4]),2) +'/'+ StrZero(Month(aDadosTit[4]),2) +'/'+ Right(Str(Year(aDadosTit[4])),4)
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow2+0240,nCol,cString,oFont11c)
oPrint:Say(nRow2+0290,100 ,'Beneficiário',oFont8)
oPrint:Say(nRow2+0330,100 ,IIf(l237BBM,cBenBBM,AllTrim(Upper(aDadosEmp[1])))+' '+aDadosEmp[6],oFont10) // Nome + CNPJ
oPrint:Say(nRow2+0290,1810,'Agência/Código Beneficiário',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' ) // EspecIfico BB
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'-'+SubStr(aDadosBanco[3],5,1)+ '/' +aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '756' ) // EspecIfico SICOOB
cString := AllTrim(aDadosBanco[3]) + '/' + SubStr(aDadosBanco[8],1,Len(aDadosBanco[8])-1) + "-" + SubStr(aDadosBanco[8],Len(aDadosBanco[8]),1)
Case ( AllTrim(aDadosBanco[1]) == '033' ) // EspecIfico SANTANDER
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[8]
Case ( AllTrim(aDadosBanco[1]) == '422' ) // EspecIfico Safra
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case ( AllTrim(aDadosBanco[1]) == '224' ) // Especifico FIBRA //Cesar.gruppe 21/07/2022
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+ '/'+ AllTrim(cCodBenef))
Case ( AllTrim(aDadosBanco[1]) == '274' ) // Especifico Money //Cesar.gruppe 06/08/2022
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case l237BBM // Específico BBM
cString := aDadosBanco[3]+'-6/'+SubStr(aDadosBanco[4],1,4)+'-'+aDadosBanco[5]
Case ( AllTrim(aDadosBanco[1]) == '246' ) // Específico ABC
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[9]
Case ( AllTrim(aDadosBanco[1]) == '604' ) // Especifico BIB ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'9'+SubStr(aDadosBanco[3],5,1)+ '/' +Substr(aDadosBanco[4],1,2)+Substr(aDadosBanco[4],4,6)+'0')
Case ( AllTrim(aDadosBanco[1]) == '748' ) // Especifico SICREDI ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '104' ) // Especifico CAIXA ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[8]+'-'+Iif(Alltrim(aDadosBanco[8])=="1148068","8","6"))
OtherWise
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
End Case
oPrint:Say(nRow2+0330,1860,cString,oFont11c)
oPrint:Say(nRow2+0380,100 ,'Endereço Beneficiário / Pagador Avalista',oFont8)
oPrint:Say(nRow2+0420,100 ,AllTrim(Upper(aDadosEmp[2]))+' '+AllTrim(Upper(aDadosEmp[3])) + ' ' + AllTrim(Upper(aDadosEmp[4])),oFont10) // Endereço + Bairro + CEP
oPrint:Say(nRow2+0470,100 ,'Data do Documento',oFont8)
oPrint:Say(nRow2+0500,100, StrZero(Day(aDadosTit[2]),2) +'/'+ StrZero(Month(aDadosTit[2]),2) +'/'+ Right(Str(Year(aDadosTit[2])),4),oFont10)
oPrint:Say(nRow2+0470,505 ,'Nro.Documento',oFont8)
oPrint:Say(nRow2+0500,605 ,aDadosTit[7]+aDadosTit[1],oFont10) // Prefixo + Numero+Parcela
oPrint:Say(nRow2+0470,1005,'Espécie Doc.',oFont8)
oPrint:Say(nRow2+0500,1050,"DM",oFont10) // Tipo do Titulo (aDadosTit[8])
oPrint:Say(nRow2+0470,1305,'Aceite',oFont8)
oPrint:Say(nRow2+0500,1400,'N',oFont10)
oPrint:Say(nRow2+0470,1485,'Data do Processamento',oFont8)
oPrint:Say(nRow2+0500,1550,StrZero(Day(aDadosTit[3]),2) +'/'+ StrZero(Month(aDadosTit[3]),2) +'/'+ Right(Str(Year(aDadosTit[3])),4),oFont10) // Data impressao
oPrint:Say(nRow2+0470,1810,'Nosso Número',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' )
cString := AllTrim(SubStr(aDadosTit[6],1,6)+' '+SubStr(aDadosTit[6],7,5)+' - '+SubStr(aDadosTit[6],12,1))
Case ( AllTrim(aDadosBanco[1]) == '237' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '025' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '341' )
cString := AllTrim(SubStr(aDadosTit[6],1,3)) + '/' + AllTrim(SubStr(aDadosTit[6],4,8)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '422' )
cString := AllTrim(SubStr(aDadosTit[6],1,8)) + '-' + SubStr(aDadosTit[6],9,1)
Case ( AllTrim(aDadosBanco[1]) == '224' ) //Cesar.gruppe 21/07/2022: Fibra
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11))
Case ( AllTrim(aDadosBanco[1]) == '274' ) //Cesar.gruppe 06/08/2022: Money
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11))
Case ( AllTrim(aDadosBanco[1]) == '748' )
cString := AllTrim(SubStr(aDadosTit[6],1,2)) + '/' + AllTrim(SubStr(aDadosTit[6],3,6)) + '-' + SubStr(aDadosTit[6],9,1)
Case ( AllTrim(aDadosBanco[1]) == '033' )
cString := AllTrim(SubStr(aDadosTit[6],1,12)) + '-' + SubStr(aDadosTit[6],13,1)
Case ( AllTrim(aDadosBanco[1]) == '756' )
cString := AllTrim(SubStr(aDadosTit[6],1,7)) + '-' + SubStr(Alltrim(aDadosTit[6]),8,1)
Case ( AllTrim(aDadosBanco[1]) == '104' ) // ADICIONADO - DANILLO NOGUEIRA 11/11/2021
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + AllTrim(SubStr(aDadosTit[6],1,15)) + '-' + SubStr(aDadosTit[6],16,1)
OtherWise
cString := TransForm(Val(aDadosTit[6]),"@R 99999999999-9")
End Case
oPrint:Say(nRow2+0500,1880,cString,oFont11c)
If aDadosBanco[1]<>'033'
oPrint:Say(nRow2+0540,0100,'Uso do Banco',oFont8)
oPrint:Say(nRow2+0540,0505,'Carteira',oFont8)
//oPrint:Say(nRow2+0570,0555,aDadosBanco[6],oFont10)
If aDadosBanco[1]=='104' // Adicionado Danillo Nogueira Dantas 16/11/2021
oPrint:Say(nRow2+0570,0555,"RG",oFont10)
else
oPrint:Say(nRow2+0570,0555,aDadosBanco[6],oFont10)
Endif
Else
oPrint:Say(nRow2+0540,0100,'Carteira',oFont8)
Do Case
Case ( aDadosBanco[6] == '101' )
oPrint:Say(nRow2+0570,0100,"COBRANCA SIMPLES - RCR",oFont10)
Case ( aDadosBanco[6] == '102' )
oPrint:Say(nRow2+0570,0100,"COBRANCA SIMPLES - CSR",oFont10)
Case ( aDadosBanco[6] == '201' )
oPrint:Say(nRow2+0570,0100,"COBRANCA SIMPLES - RCR",oFont10)
end Case
endIf
oPrint:Say(nRow2+0540,0755,'Espécie',oFont8)
oPrint:Say(nRow2+0570,0805,'R$',oFont10)
oPrint:Say(nRow2+0540,1005,'Quantidade',oFont8)
oPrint:Say(nRow2+0540,1485,'Valor',oFont8)
oPrint:Say(nRow2+0540,1810,'(=)Valor do Documento',oFont8)
cString := AllTrim(TransForm(aDadosTit[5],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow2+0570,nCol,cString ,oFont11c)
aBolText := {'APOS O VENCIMENTO COBRAR MORA DE R$ ' + cValToChar(AllTrim(TransForm(nJurTit,'@E 99,999,999.99'))) + ' AO DIA.',;
'MULTA DE R$ ' + cValToChar(AllTrim(TransForm(nMultTit,'@E 99,999,999.99'))) + ' APOS 5 DIAS DE VENCIMENTO.',;
'PROTESTAR APOS 10 DIAS CORRIDOS DO VENCIMENTO',;
'COBRANCA ESCRITURAL'}
oPrint:Say(nRow2+0610,0100,IIf(l237BBM,cIntBBM,'Instruções (Todas informações deste bloqueto são de exclusiva responsabilidade do Beneficiário)'),oFont8)
oPrint:Say(nRow2+0640,0100,aBolText[1],oFont10)
//VerIfica se a empresa cobra multa em seus boletos
If nMulta > 0 .and. (aDadosBanco[1] $ cBcoMt) .Or. cBcoMt = '*'
oPrint:Say(nRow2+0670,0100,aBolText[2],oFont10)
EndIf
if(!U_RtIsEmpFil({ {"09"} }))
oPrint:Say(nRow2+0700,0100,aBolText[3],oFont10)
EndIF
oPrint:Say(nRow2+0730,0100,aBolText[4],oFont10)
If aDadosBanco[1] = '341'
oPrint:Say(nRow2+0925,0100,OemToAnsi('APOS VCTO ACESSE WWW.ITAU.COM.BR/BOLETOS PARA ATUALIZAR SEU BOLETO'),oFont10)
ElseIf aDadosBanco[1] = '033'
oPrint:Say(nRow2+0925,0100,OemToAnsi('APOS VCTO ACESSE WWW.SANTANDER.COM.BR/2-VIA-BOLETO PARA ATUALIZAR SEU BOLETO'),oFont10)
EndIf
If ( Len(aDadosFat) > 0 )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Imprime os titulos que se refere a tal cobrança !³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If ( AllTrim(SE1->E1_PREFIXO) == 'FAT' ) .and. Len(aDadosFat) > 0
oPrint:Say(nRow2+0740,0100,'Referente ao(s) documento(s): ',oFont11)
Else
oPrint:Say(nRow2+0740,0100,'Referente ao(s) Pedido(s): ',oFont11)
EndIf
nLin := 0790 // Posicao da Linha
nCol := 0100 // Posicao da Coluna
For nx := 1 to Len(aDadosFat)
nQtdPrint++
oPrint:Say(nRow2+nLin,nCol,aDadosFat[nx][3]+IIf(!Empty(aDadosFat[nx][4]),'-'+Alltrim(aDadosFat[nx][4]),' ')+', ',oFont9)
nCol += 185
If ( nQtdPrint == 9 )
nLin += 050
nCol := 100
nQtdPrint := 0
nLinhPrin++
EndIf
If ( nLinhPrin > 5 )
Exit
EndIf
Next nx
Else // Outros
nLin := 0790 // Posicao da Linha
nCol := 0100 // Posicao da Coluna
EndIf
oPrint:Say(nRow2+0610,1810,'(-) Desconto/Abatimento',oFont8)
oPrint:Say(nRow2+0680,1810,'(-) Outras Deduções',oFont8)
If ( aDadosTit[10] > 0 )
cString := AllTrim(TransForm(aDadosTit[10],'@E 99,999,999.99'))
nCol := 1810+(374-(Len(cString)*22))
oPrint:Say(nRow2+0710,nCol,cString ,oFont11c)
EndIf
//oPrint:Say(nRow2+0750,1810,'(+) Mora/Multa',oFont8)
oPrint:Say(nRow2+0750,1810,'(+) Mora/Multa/Juros',oFont8) // Alterado - Danillo Nogueira Dantas - 16/11/2021
//Demonstra o valor da mora/multa caso o boleto esteja vencido
If dDataBase > aDadosTit[4]
nDiasVenc := dDataBase - aDadosTit[4]
cString := cValTochar(AllTrim(Transform(nJurTit + IIf(nDiasVenc > 5,nMultTit,0),'@E 99,999,999.99')))
nCol := 1810+(374-(Len(cString)*22))
oPrint:Say(nRow2+0710,nCol,cString, oFont11c)
EndIf
oPrint:Say(nRow2+0820,1810,'(+) Outros Acréscimos',oFont8)
If ( aDadosTit[9] > 0 )
cString := AllTrim(TransForm(aDadosTit[9],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow2+0850,nCol,cString ,oFont11c)
EndIf
oPrint:Say(nRow2+0900,1810,'(=) Valor Cobrado',oFont8)
oPrint:Say(nRow2+0970,0110,"Pagador: "+aDatSacado[1],oFont10)
If ( aDatSacado[8] = 'J' )
oPrint:Say(nRow2+0970,1200,'CNPJ: '+TransForm(aDatSacado[7],'@R 99.999.999/9999-99'),oFont10) // CGC
Else
oPrint:Say(nRow2+0970,1200,'CPF: '+TransForm(aDatSacado[7],'@R 999.999.999-99'),oFont10) // CPF
EndIf
oPrint:Say(nRow2+1000,0110,"Endereço: " + aDatSacado[3] + " " + aDatSacado[6]+' '+aDatSacado[4]+' - '+aDatSacado[5],oFont10) //Endereço+CEP+Cidade+Estado
if(U_RtIsEmpFil({{"09"}}))
oPrint:Say(nRow2+1290,0100,'Sacador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
Else
oPrint:Say(nRow2+1290,0100,'Pagador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
EndIF
If _lSendMail .and. !empty(aDatSacado[9])
oPrint:Say(nRow2+1060,0400,"E-mail: "+aDatSacado[9],oFont14)
EndIf
oPrint:Say(nRow2+1100,2000,'Autenticação Mecânica',oFont8)
Else
nRow2 := 100
//Linhas
oPrint:Line(nRow2+0600,0100,nRow2+0600,2300)
oPrint:Line(nRow2+0690,0100,nRow2+0690,2300)
oPrint:Line(nRow2+0780,0100,nRow2+0780,2300)
oPrint:Line(nRow2+0850,0100,nRow2+0850,2300)
oPrint:Line(nRow2+0920,0100,nRow2+0920,2300)
oPrint:Line(nRow2+0990,1800,nRow2+0990,2300)
oPrint:Line(nRow2+1060,1800,nRow2+1060,2300)
oPrint:Line(nRow2+1130,1800,nRow2+1130,2300)
oPrint:Line(nRow2+1200,1800,nRow2+1200,2300)
oPrint:Line(nRow2+1270,0100,nRow2+1270,2300)
oPrint:Line(nRow2+1450,0100,nRow2+1450,2300)
//Colunas
oPrint:Line(nRow2+0530,0500,nRow2+0600,0500)
oPrint:Line(nRow2+0530,0710,nRow2+0600,0710)
oPrint:Line(nRow2+0780,0500,nRow2+0920,0500)
oPrint:Line(nRow2+0850,0750,nRow2+0920,0750)
oPrint:Line(nRow2+0780,1000,nRow2+0920,1000)
oPrint:Line(nRow2+0780,1300,nRow2+0850,1300)
oPrint:Line(nRow2+0780,1480,nRow2+0920,1480)
oPrint:Line(nRow2+0600,1800,nRow2+1270,1800)
If aDadosBanco[1]=='756'
oPrint:SayBitmap(nRow2+0590,0100,aDadosBanco[7],240,080)
ElseIf aDadosBanco[1]=='104' // Logo caixa Adicionado Danillo Nogueira 21/11/2021
oPrint:SayBitmap(nRow2+0500,0100,aDadosBanco[7],240,080)
ElseIf aDadosBanco[1]=='025' // Logo caixa Adicionado Danillo Nogueira 21/11/2021
oPrint:SayBitmap(nRow2+0500,0100,aDadosBanco[7],240,080)
ElseIf aDadosBanco[1]=='001' .AND. U_RtIsEmpFil({{"030"}}) // Adicionado Danillo Nogueira - Logo Banco do brasil - especifico para franquia 03001 conforme solicitado pela agencia mantenedora da conta
oPrint:SayBitmap(nRow2+0500,0100,aDadosBanco[7],120,080)
Else
oPrint:SayBitmap(0590,0100,aDadosBanco[7],060,060)
oPrint:Say(nRow2+0595,0100,aDadosBanco[2],oFont11) // [2] Nome do Banco
EndIf
If aDadosBanco[1] == '748'
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+'-X',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '604' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '104' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+'-0',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '422'
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+"-7",oFont20)
ElseIf aDadosBanco[1] == '224' //Cesar.gruppe 21/07/2022: Fibra
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1] == '274' //Cesar.gruppe 06/08/2022: Money
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+'-1',oFont20) // [1] Numero do Banco
ElseIf aDadosBanco[1]<>'033'
//oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+IIf(aDadosBanco[1]='237','-2','-9'),oFont20) // [1] Numero do Banco
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+If(aDadosBanco[1]='237','-2',If(aDadosBanco[1]='756','-0','-9')),oFont20) //TSCB56 - Rafael de Souza
Else
oPrint:Say(nRow2+0590,0513,aDadosBanco[1]+'-7',oFont20) // [1] Numero do Banco
endIf
oPrint:Say(nRow2+0590,1800,'Recibo do Pagador',oFont10)
oPrint:Say(nRow2+0620,0100,'Local de Pagamento',oFont8)
If aDadosBanco[1]='104' // Alterado - Danillo Nogueira - 17/11/2021
oPrint:Say(nRow2+0640,0100,'PREFERENCIALMENTE NAS CASAS LOTERICAS ATE O VALOR LIMITE',oFont10) //TSCB56 - Rafael de Souza
ElseIf aDadosBanco[1]='224' // Banco Fibra - Cesar.gruppe 25/07/2022
oPrint:Say(nRow2+0640,0100,'PAGÁVEL EM TODA REDE BANCÁRIA',oFont10)
ElseIf aDadosBanco[1]='274' // Banco Money - Cesar.gruppe 06/08/2022
oPrint:Say(nRow2+0640,0100,'PAGÁVEL NA REDE BANCÁRIA OU LOCAIS CREDENCIADOS',oFont10)
Else
oPrint:Say(nRow2+0640,0100,Iif(aDadosBanco[1]='756','PAGÁVEL PREFERENCIALMENTE NO SICOOB','PAGAVEL EM QUALQUER BANCO'),oFont10) //TSCB56 - Rafael de Souza
EndIf
oPrint:Say(nRow2+0620,1810,'Vencimento',oFont8)
cString := StrZero(Day(aDadosTit[4]),2) +'/'+ StrZero(Month(aDadosTit[4]),2) +'/'+ Right(Str(Year(aDadosTit[4])),4)
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow2+0650,nCol,cString,oFont11c)
oPrint:Say(nRow2+0710,100 ,'Beneficiário',oFont8)
oPrint:Say(nRow2+0730,100 ,IIf(l237BBM,cBenBBM,AllTrim(Upper(aDadosEmp[1]))+' - '+aDadosEmp[6]),oFont10) // Nome + CNPJ
// Alteração solicitada pelo financeiro, onde será apresentado no boleto o nome da empresa / nome do banco ( Rech Agricola S.A. / Banco Bocom BBM S.A. ) no campo beneficiario
// criado tratamento para o boleto seja impresso com as configurações solicitada pelo financeiro somente quando o grupo de empresa logado seja a Rech Agricola "06"
If l237BBM .AND. !(FWCodEmp() $ SuperGetMv("XX_XBENEF",,"006"))
oPrint:Say(nRow2+0755,100,"Av. Barão de Tefé, 34 – 20º e 21º andar – Saúde – Rio de Janeiro, RJ – CEP: 20220-460.",oFont8)
Else
oPrint:Say(nRow2+0755,100 ,AllTrim(Upper(aDadosEmp[2]))+' - '+aDadosEmp[3]+' - '+aDadosEmp[4],oFont8)
EndIf
oPrint:Say(nRow2+0710,1810,'Agência/Código Beneficiário',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' ) // EspecIfico BB
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'-'+SubStr(aDadosBanco[3],5,1)+ '/' +aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '756' ) // EspecIfico SICOOB
cString := AllTrim(aDadosBanco[3]) + '/' + SubStr(aDadosBanco[8],1,Len(aDadosBanco[8])-1) + "-" + SubStr(aDadosBanco[8],Len(aDadosBanco[8]),1)
Case ( AllTrim(aDadosBanco[1]) == '033' ) // EspecIfico SANTANDER
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[8]
Case ( AllTrim(aDadosBanco[1]) == '422' ) // EspecIfico Safra
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case ( AllTrim(aDadosBanco[1]) == '224' ) // EspecIfico FIBRA //Cesar.gruppe 21/07/2022.
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+' /' +AllTrim(cCodBenef))
Case ( AllTrim(aDadosBanco[1]) == '274' ) // Especifico Money //Cesar.gruppe 06/08/2022.
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case l237BBM // Específico BBM
cString := aDadosBanco[3]+'-6/'+SubStr(aDadosBanco[4],1,4)+'-'+aDadosBanco[5]
Case ( AllTrim(aDadosBanco[1]) == '246' ) // Específico ABC
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[9]
Case ( AllTrim(aDadosBanco[1]) == '604' ) // Especifico BIB ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'9'+SubStr(aDadosBanco[3],5,1)+ '/' +Substr(aDadosBanco[4],1,2)+Substr(aDadosBanco[4],4,6)+'0')
Case ( AllTrim(aDadosBanco[1]) == '104' ) // Especifico caixa ADICIONADO - DANILLO NOGUEIRA DANTAS 11/11/2021
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[8]+'-'+Iif(Alltrim(aDadosBanco[8])=="1148068","8","6"))
Case ( AllTrim(aDadosBanco[1]) == '748' ) // Especifico SICREDI ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
OtherWise
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
End Case
oPrint:Say(nRow2+0750,1860,cString,oFont11c)
oPrint:Say(nRow2+0800,100 ,'Data do Documento',oFont8)
oPrint:Say(nRow2+0830,100, StrZero(Day(aDadosTit[2]),2) +'/'+ StrZero(Month(aDadosTit[2]),2) +'/'+ Right(Str(Year(aDadosTit[2])),4),oFont10)
oPrint:Say(nRow2+0800,505 ,'Nro.Documento',oFont8)
oPrint:Say(nRow2+0830,605 ,aDadosTit[7]+aDadosTit[1],oFont10) // Prefixo + Numero+Parcela
oPrint:Say(nRow2+0800,1005,'Espécie Doc.',oFont8)
oPrint:Say(nRow2+0830,1050,"DM",oFont10) // Tipo do Titulo (aDadosTit[8])
oPrint:Say(nRow2+0800,1305,'Aceite',oFont8)
oPrint:Say(nRow2+0830,1400,'N',oFont10)
oPrint:Say(nRow2+0800,1485,'Data do Processamento',oFont8)
oPrint:Say(nRow2+0830,1550,StrZero(Day(aDadosTit[3]),2) +'/'+ StrZero(Month(aDadosTit[3]),2) +'/'+ Right(Str(Year(aDadosTit[3])),4),oFont10) // Data impressao
oPrint:Say(nRow2+0800,1810,'Nosso Número',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' )
cString := aDadosTit[6]
Case ( AllTrim(aDadosBanco[1]) == '422' )
cString := cString := AllTrim(SubStr(aDadosTit[6],1,8)) + '-' + SubStr(Alltrim(aDadosTit[6]),9,1)
Case ( AllTrim(aDadosBanco[1]) == '224' ) //Cesar.gruppe 21/07/2022: Fibra
cString := AllTrim(aDadosBanco[6]) + '/' + SubStr(Alltrim(aDadosTit[6]),1,11)
Case ( AllTrim(aDadosBanco[1]) == '274' ) //Cesar.gruppe 21/07/2022: Money
cString := AllTrim(aDadosBanco[6]) + '/' + SubStr(Alltrim(aDadosTit[6]),1,12)
Case ( AllTrim(aDadosBanco[1]) == '237' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '025' ) // ADICIONADO - DANILLO NOGUEIRA 12/01/2022
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '341' )
cString := AllTrim(SubStr(aDadosTit[6],1,3)) + '/' + AllTrim(SubStr(aDadosTit[6],4,8)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '748' )
cString := AllTrim(SubStr(aDadosTit[6],1,2)) + '/' + AllTrim(SubStr(aDadosTit[6],3,6)) + '-' + SubStr(aDadosTit[6],9,1)
Case ( AllTrim(aDadosBanco[1]) == '604' ) // ADICIONADO - DANILLO NOGUEIRA 02/03/2021
cString := AllTrim(aDadosBanco[6]) + '/' + SubStr(Alltrim(aDadosTit[6]),1,10) + SubStr(Alltrim(aDadosTit[6]),18,1)
Case ( AllTrim(aDadosBanco[1]) == '104' ) // ADICIONADO - DANILLO NOGUEIRA 02/03/2021
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + AllTrim(SubStr(aDadosTit[6],1,15)) + '-' + SubStr(aDadosTit[6],16,1)
Case ( AllTrim(aDadosBanco[1]) == '033' )
cString := AllTrim(SubStr(aDadosTit[6],1,12)) + '-' + SubStr(aDadosTit[6],13,1)
Case ( AllTrim(aDadosBanco[1]) == '756' )
cString := AllTrim(SubStr(aDadosTit[6],1,7)) + '-' + SubStr(Alltrim(aDadosTit[6]),8,1)
OtherWise
cString := TransForm(Val(aDadosTit[6]),"@R 99999999999-9")
End Case
oPrint:Say(nRow2+0830,1880,cString,oFont11c)
If aDadosBanco[1]<>'033'
oPrint:Say(nRow2+0870,0100,'Uso do Banco',oFont8)
oPrint:Say(nRow2+0870,0505,'Carteira',oFont8)
//oPrint:Say(nRow2+0910,0555,aDadosBanco[6],oFont10)
If aDadosBanco[1]=='104' // Adicionado Danillo Nogueira Dantas 16/11/2021
oPrint:Say(nRow2+0910,0555,"RG",oFont10)
else
oPrint:Say(nRow2+0910,0555,aDadosBanco[6],oFont10)
Endif
Else
oPrint:Say(nRow2+0890,0100,'Carteira',oFont8)
Do Case
Case ( aDadosBanco[6] == '101' )
oPrint:Say(nRow2+0920,0100,"COBRANCA SIMPLES - RCR",oFont10)
Case ( aDadosBanco[6] == '102' )
oPrint:Say(nRow2+0920,0100,"COBRANCA SIMPLES - CSR",oFont10)
Case ( aDadosBanco[6] == '201' )
oPrint:Say(nRow2+0920,0100,"COBRANCA SIMPLES - RCR",oFont10)
end Case
endIf
oPrint:Say(nRow2+0870,0755,'Espécie',oFont8)
oPrint:Say(nRow2+0910,0805,'R$',oFont10)
oPrint:Say(nRow2+0870,1005,'Quantidade',oFont8)
oPrint:Say(nRow2+0870,1485,'Valor',oFont8)
oPrint:Say(nRow2+0870,1810,'Valor do Documento',oFont8)
cString := AllTrim(TransForm(aDadosTit[5]+aDadosTit[9],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow2+0910,nCol,cString ,oFont11c)
oPrint:Say(nRow2+0940,0100,IIf(l237BBM,cIntBBM,'Instruções (Todas informações deste bloqueto são de exclusiva responsabilidade do Beneficiário)'),oFont8)
//VerIfica se possui multa de boleto na empresa
nLin := 0
For nInf := 1 to Len(aBolText)
oPrint:Say(nRow2+0980+nLin,0100,aBolText[nInf],oFont10)
nLin += 35
Next nInf
If ( Len(aDadosFat) > 0 )
//³Imprime os titulos que se refere a tal cobrança !³
If ( AllTrim(SE1->E1_PREFIXO) == 'FAT' ) .and. Len(aDadosFat) > 0
oPrint:Say(nRow2+1200,0100,'Referente ao(s) documento(s): ',oFont11)
Else
oPrint:Say(nRow2+1200,0100,'Referente ao(s) Pedido(s): ',oFont11)
EndIf
nLin := 1250 // Posicao da Linha
nCol := 0100 // Posicao da Coluna
For nx:=1 to Len(aDadosFat)
nQtdPrint++
oPrint:Say(nRow2+nLin,nCol,aDadosFat[nx][3]+IIf(!Empty(aDadosFat[nx][4]),'-'+Alltrim(aDadosFat[nx][4]),' ')+', ',oFont9)
nCol += 185
If ( nQtdPrint == 9 )
nLin += 050
nCol := 100
nQtdPrint := 0
nLinhPrin++
EndIf
If ( nLinhPrin > 5 )
Exit
EndIf
Next nx
EndIf
If fwCodEmp() == '003'
oPrint:Say(nRow2+0980+nLin,0100,"SUJEITO A PROTESTO",oFont10)
nLin += 35
EndIf
oPrint:Say(nRow2+0940,1810,'(-) Desconto/Abatimento',oFont8)
oPrint:Say(nRow2+1010,1810,'(-) Outras Deduções',oFont8)
If ( aDadosTit[10] > 0 )
cString := AllTrim(TransForm(aDadosTit[10],'@E 99,999,999.99'))
nCol := 1810+(374-(Len(cString)*22))
oPrint:Say(nRow2+1150,nCol,cString ,oFont11c)
EndIf
//oPrint:Say(nRow2+1080,1810,'(+) Mora/Multa',oFont8)
oPrint:Say(nRow2+1080,1810,'(+) Mora/Multa/Juros',oFont8) // Alterado - Danillo Nogueira Dantas - 16/11/2021
oPrint:Say(nRow2+1150,1810,'(+) Outros Acréscimos',oFont8)
If ( aDadosTit[9] > 0 )
cString := AllTrim(TransForm(aDadosTit[9],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow2+1185,nCol,cString ,oFont11c)
EndIf
oPrint:Say(nRow2+1220,1810,'(=) Valor Cobrado',oFont8)
if(U_RtIsEmpFil({{"09"}}))
oPrint:Say(nRow2+1290,0100,'Sacador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
Else
oPrint:Say(nRow2+1290,0100,'Pagador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
EndIF
oPrint:Say(nRow2+1320,0400,aDatSacado[1]+' ('+aDatSacado[2]+')',oFont10)
oPrint:Say(nRow2+1350,0400,aDatSacado[3],oFont10)
oPrint:Say(nRow2+1380,0400,aDatSacado[6]+' '+aDatSacado[4]+' - '+aDatSacado[5],oFont10) // CEP+Cidade+Estado
If _lSendMail .and. !empty(aDatSacado[9])
oPrint:Say(nRow2+1415,0400,"E-mail: "+aDatSacado[9],oFont14)
EndIf
If ( aDatSacado[8] = 'J' )
oPrint:Say(nRow2+1440,0400,'CNPJ: '+TransForm(aDatSacado[7],'@R 99.999.999/9999-99'),oFont10) // CGC
Else
oPrint:Say(nRow2+1440,0400,'CPF: '+TransForm(aDatSacado[7],'@R 999.999.999-99'),oFont10) // CPF
EndIf
// Adicionado - Danillo Nogueira - 23/11/2021
// Em cumprimento ao disposto no Artigo 7º do decreto 6.523, de 31/07/2008, e na circular BACEN 3.370/07, se o recibo do pagador houver a
// impressão da logomarca CAIXA, é ainda obrigatorio constar "trecho abaixo"
If aDadosBanco[1]='104'
oPrint:Say(nRow2+1470,0100,'SAC CAIXA: 0800 726 0101 ',oFont10n)
oPrint:Say(nRow2+1470,0435,'(Informações, reclamações, sugestões e elogios)',oFont9)
oPrint:Say(nRow2+1500,0130,'Para pessoas com deficiência auditiva ou de fala:',oFont10n)
oPrint:Say(nRow2+1500,0735,'0800 726 2492',oFont9)
oPrint:Say(nRow2+1530,0370,'Ouvidoria:',oFont10n)
oPrint:Say(nRow2+1530,0500,'0800 725 7474',oFont9)
oPrint:Say(nRow2+1560,0450,'caixa.gov.br',oFont10n)
EndIf
//oPrint:Say(nRow2+1705,0100,'',oFont8)
oPrint:Say(nRow2+1470,1500,'Autenticação Mecânica',oFont8)
EndIf
//---------------------------------------------
//³F I C H A D E C O M P E N S A C A O ³
//---------------------------------------------
If U_RtIsEmpFil({ {"09"} })
nRow3 := 100
For nI := 100 to 2300 step 50
oPrint:Line(nRow3+1300, nI, nRow3+1300, nI+30)
Next nI
//Linha
oPrint:Line(nRow3+1400,0100,nRow3+1400,2300)
oPrint:Line(nRow3+1490,0100,nRow3+1490,2300)
oPrint:Line(nRow3+1580,0100,nRow3+1580,2300)
oPrint:Line(nRow3+1650,0100,nRow3+1650,2300)
oPrint:Line(nRow3+1720,0100,nRow3+1720,2300)
oPrint:Line(nRow3+1790,1800,nRow3+1790,2300)
oPrint:Line(nRow3+1860,1800,nRow3+1860,2300)
oPrint:Line(nRow3+1930,1800,nRow3+1930,2300)
oPrint:Line(nRow3+2000,1800,nRow3+2000,2300)
oPrint:Line(nRow3+2070,0100,nRow3+2070,2300)
oPrint:Line(nRow3+2270,0100,nRow3+2270,2300)
//Coluna
oPrint:Line(nRow3+1330,0500,nRow3+1400,0500)
oPrint:Line(nRow3+1330,0710,nRow3+1400,0710)
oPrint:Line(nRow3+1580,0500,nRow3+1720,0500)
oPrint:Line(nRow3+1650,0750,nRow3+1720,0750)
oPrint:Line(nRow3+1580,1000,nRow3+1720,1000)
oPrint:Line(nRow3+1580,1300,nRow3+1650,1300)
oPrint:Line(nRow3+1580,1480,nRow3+1720,1480)
oPrint:Line(nRow3+1400,1800,nRow3+2070,1800)
oPrint:SayBitmap(nRow3+1320,0100,aDadosBanco[7],060,060)
oPrint:Say(nRow3+1380,0200,aDadosBanco[2],oFont11) // [2] Nome do Banco
If aDadosBanco[1] == '748'
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+'-X',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '604' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+'-1',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '104' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+'-0',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '422'
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+"-7",oFont20)
ElseIf aDadosBanco[1] == '224' //Cesar.gruppe 21/07/2022
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+'-1',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '274' //Cesar.gruppe 06/08/2022
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+'-1',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1]<>'033'
//oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+IIf(aDadosBanco[1]='237','-2','-9'),oFont20) // [1]Numero do Banco
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+If(aDadosBanco[1]='237','-2',If(aDadosBanco[1]='756','-0','-9')),oFont20) //TSCB56 - Rafael de Souza
Else
oPrint:Say(nRow3+1380,0513,aDadosBanco[1]+'-7',oFont20) // [1]Numero do Banco
endIf
oPrint:Say(nRow3+1380,0755,aCB_RN_NN[2],oFont15n) // Linha Digitavel do Codigo de Barras
oPrint:Say(nRow3+1420,0100,'Local de Pagamento',oFont8)
//oPrint:Say(nRow3+1460,0100,'PAGAVEL EM QUALQUER BANCO',oFont10)
If aDadosBanco[1]='104' // Alterado - Danillo Nogueira Dantas - 17/11/2021
oPrint:Say(nRow3+1460,0100,'PREFERENCIALMENTE NAS CASAS LOTERICAS ATE O VALOR LIMITE',oFont10) //TSCB56 - Rafael de Souza
ElseIf aDadosBanco[1]='224' // Banco Fibra - Cesar.gruppe 25/07/2022
oPrint:Say(nRow2+1460,0100,'PAGÁVEL EM TODA REDE BANCÁRIA',oFont10)
ElseIf aDadosBanco[1]='274' // Banco Money - Cesar.gruppe 06/08/2022
oPrint:Say(nRow2+1460,0100,'PAGÁVEL NA REDE BANCÁRIA OU LOCAIS CREDENCIADOS',oFont10)
Else
oPrint:Say(nRow3+1460,0100,Iif(aDadosBanco[1]='756','PAGÁVEL PREFERENCIALMENTE NO SICOOB','PAGAVEL EM QUALQUER BANCO'),oFont10) //TSCB56 - Rafael de Souza
EndIf
oPrint:Say(nRow3+1420,1810,'Vencimento',oFont8)
cString := StrZero(Day(aDadosTit[4]),2) +'/'+ StrZero(Month(aDadosTit[4]),2) +'/'+ Right(Str(Year(aDadosTit[4])),4)
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+1460,nCol,cString,oFont11c)
oPrint:Say(nRow3+1510,0100,'Beneficiário',oFont8)
oPrint:Say(nRow3+1550,0100,IIf(l237BBM,cBenBBM,AllTrim(Upper(aDadosEmp[1]))+' - '+aDadosEmp[6]),oFont10) // Nome + CNPJ
If l237BBM
If FWCodEmp() $ SuperGetMv("XX_XBENEF",,"006")
oPrint:Say(nRow3+1580,0100,"RUA RIO DE JANEIRO 2809 - PRIMAVERA IV, PRIMAVERA DO LESTE, MT - CEP: 78850-000.",oFont8)
Else
oPrint:Say(nRow3+1580,0100,"Av. Barão de Tefé, 34 – 20º e 21º andar – Saúde – Rio de Janeiro, RJ – CEP: 20220-460.",oFont8)
EndIf
EndIf
oPrint:Say(nRow3+1510,1810,'Agência/Código Beneficiário',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' ) // EspecIfico BB
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'-'+SubStr(aDadosBanco[3],5,1)+ '/' +aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '756' ) // EspecIfico SICOOB
cString := AllTrim(aDadosBanco[3]) + '/' + SubStr(aDadosBanco[8],1,Len(aDadosBanco[8])-1) + "-" + SubStr(aDadosBanco[8],Len(aDadosBanco[8]),1)
Case ( AllTrim(aDadosBanco[1]) == '033' ) // EspecIfico SANTANDER
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[8]
Case ( AllTrim(aDadosBanco[1]) == '422' ) // EspecIfico Safra
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case ( AllTrim(aDadosBanco[1]) == '224' ) // EspecIfico FIBRA //Cesar.gruppe 21/07/2022
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+ '/' +AllTrim(cCodBenef))
Case ( AllTrim(aDadosBanco[1]) == '274' ) // EspecIfico Money
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case l237BBM // Específico BBM
cString := aDadosBanco[3]+'-6/'+SubStr(aDadosBanco[4],1,4)+'-'+aDadosBanco[5]
Case ( AllTrim(aDadosBanco[1]) == '246' ) // Específico ABC
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[9]
Case ( AllTrim(aDadosBanco[1]) == '604' ) // Especifico BIB ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'9'+SubStr(aDadosBanco[3],5,1)+ '/' +Substr(aDadosBanco[4],1,2)+Substr(aDadosBanco[4],4,6)+'0')
Case ( AllTrim(aDadosBanco[1]) == '104' ) // Especifico caixa ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[8]+'-'+Iif(Alltrim(aDadosBanco[8])=="1148068","8","6"))
Case ( AllTrim(aDadosBanco[1]) == '748' ) // Especifico SICREDI ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
OtherWise
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
End Case
oPrint:Say(nRow3+1550,1860,cString,oFont11c)
oPrint:Say(nRow3+1600,100 ,'Data do Documento',oFont8)
oPrint:Say(nRow3+1630,100, StrZero(Day(aDadosTit[2]),2) +'/'+ StrZero(Month(aDadosTit[2]),2) +'/'+ Right(Str(Year(aDadosTit[2])),4), oFont10)
oPrint:Say(nRow3+1600,505 ,'Nro.Documento',oFont8)
oPrint:Say(nRow3+1630,605 ,aDadosTit[7]+aDadosTit[1],oFont10) // Prefixo +Numero+Parcela
oPrint:Say(nRow3+1600,1005,'Espécie Doc.',oFont8)
oPrint:Say(nRow3+1630,1050,"DM",oFont10) // Tipo do Titulo - aDadosTit[8]
oPrint:Say(nRow3+1600,1305,'Aceite',oFont8)
oPrint:Say(nRow3+1630,1400,'N',oFont10)
oPrint:Say(nRow3+1600,1485,'Data do Processamento',oFont8)
oPrint:Say(nRow3+1630,1550,StrZero(Day(aDadosTit[3]),2) +'/'+ StrZero(Month(aDadosTit[3]),2) +'/'+ Right(Str(Year(aDadosTit[3])),4),oFont10) // Data impressao
oPrint:Say(nRow3+1600,1810,'Nosso Número',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' )
cString := AllTrim(SubStr(aDadosTit[6],1,6)+' '+SubStr(aDadosTit[6],7,5)+' - '+SubStr(aDadosTit[6],12,1))
Case ( AllTrim(aDadosBanco[1]) == '422' )
cString := AllTrim(SubStr(aDadosTit[6],1,8)) + '-' + SubStr(Alltrim(aDadosTit[6]),9,1)
Case ( AllTrim(aDadosBanco[1]) == '224' ) //Cesar.gruppe 21/07/2022
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11))
Case ( AllTrim(aDadosBanco[1]) == '274' ) //Cesar.gruppe 0/608/2022
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11))
Case ( AllTrim(aDadosBanco[1]) == '237' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '025' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '341' )
cString := AllTrim(SubStr(aDadosTit[6],1,3)) + '/' + AllTrim(SubStr(aDadosTit[6],4,8)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '748' )
cString := AllTrim(SubStr(aDadosTit[6],1,2)) + '/' + AllTrim(SubStr(aDadosTit[6],3,6)) + '-' + SubStr(aDadosTit[6],9,1)
Case ( AllTrim(aDadosBanco[1]) == '033' )
cString := AllTrim(SubStr(aDadosTit[6],1,12)) + '-' + SubStr(aDadosTit[6],13,1)
Case ( AllTrim(aDadosBanco[1]) == '756' )
cString := AllTrim(SubStr(aDadosTit[6],1,7)) + '-' + SubStr(Alltrim(aDadosTit[6]),8,1)
Case ( AllTrim(aDadosBanco[1]) == '104' ) // ADICIONADO - DANILLO NOGUEIRA 11/11/2021
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + AllTrim(SubStr(aDadosTit[6],1,15)) + '-' + SubStr(aDadosTit[6],16,1)
OtherWise
cString := TransForm(Val(aDadosTit[6]),"@R 99999999999-9")
End Case
oPrint:Say(nRow3+1630,1880,cString,oFont11c)
If aDadosBanco[1] <> '033'
oPrint:Say(nRow3+1670,0100,'Uso do Banco',oFont8)
oPrint:Say(nRow3+1670,0505,'Carteira',oFont8)
//oPrint:Say(nRow3+1700,0555,aDadosBanco[6],oFont10)
If aDadosBanco[1]=='104' // Adicionado Danillo Nogueira Dantas 16/11/2021
oPrint:Say(nRow3+1700,0555,"RG",oFont10)
else
oPrint:Say(nRow3+1700,0555,aDadosBanco[6],oFont10)
Endif
Else
oPrint:Say(nRow3+1670,0100,'Carteira',oFont8)
Do Case
Case ( aDadosBanco[6] == '101' )
oPrint:Say(nRow3+1700,0100,"COBRANCA SIMPLES - RCR",oFont10)
Case ( aDadosBanco[6] == '102' )
oPrint:Say(nRow3+1700,0100,"COBRANCA SIMPLES - CSR",oFont10)
Case ( aDadosBanco[6] == '201' )
oPrint:Say(nRow3+1700,0100,"COBRANCA PENHOR - RCR",oFont10)
end Case
endIf
oPrint:Say(nRow3+1670,0755,'Espécie',oFont8)
oPrint:Say(nRow3+1700,0805,'R$',oFont10)
oPrint:Say(nRow3+1670,1005,'Quantidade',oFont8)
oPrint:Say(nRow3+1670,1485,'Valor',oFont8)
oPrint:Say(nRow3+1670,1810,'Valor do Documento',oFont8)
cString := AllTrim(TransForm(aDadosTit[5],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+1700,nCol,cString,oFont11c)
aBolText := {'APOS O VENCIMENTO COBRAR MORA DE R$ ' + cValToChar(AllTrim(TransForm(nJurTit,'@E 99,999,999.99'))) + ' AO DIA.',;
'MULTA DE R$ ' + cValToChar(AllTrim(TransForm(nMultTit,'@E 99,999,999.99'))) + ' APOS 5 DIAS DE VENCIMENTO.',;
'PROTESTAR APOS 10 DIAS CORRIDOS DO VENCIMENTO',;
'COBRANCA ESCRITURAL'}
oPrint:Say(nRow3+1740,0100,IIf(l237BBM,cIntBBM,'Instruções de responsabilidade do BENEFICIÁRIO. Qualquer dúvida sobre este boleto contate o Beneficiário'),oFont8)
oPrint:Say(nRow3+1770,0100,aBolText[1],oFont10)
//VerIfica se a empresa cobra multa em seus boletos
If nMulta > 0 .and. (aDadosBanco[1] $ cBcoMt .Or. cBcoMt = '*')
oPrint:Say(nRow3+1800,0100,aBolText[2],oFont10)
EndIf
if(!U_RtIsEmpFil({ {"09"} }))
oPrint:Say(nRow3+1830,0100,aBolText[3],oFont10)
EndIF
oPrint:Say(nRow3+1860,0100,aBolText[4],oFont10)
If aDadosBanco[1] = '341'
oPrint:Say(nRow3+2060,0100,OemToAnsi('APOS VCTO ACESSE WWW.ITAU.COM.BR/BOLETOS PARA ATUALIZAR SEU BOLETO'),oFont11)
ElseIf aDadosBanco[1] = '033'
oPrint:Say(nRow3+2060,0100,OemToAnsi('APOS VCTO ACESSE WWW.SANTANDER.COM.BR/2-VIA-BOLETO PARA ATUALIZAR SEU BOLETO'),oFont11)
EndIf
oPrint:Say(nRow3+1740,1810,'(-) Desconto/Abatimento',oFont8)
oPrint:Say(nRow3+1810,1810,'(-) Outras Deduções',oFont8)
If ( aDadosTit[10] > 0 )
cString := AllTrim(TransForm(aDadosTit[10],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+1840,nCol,cString,oFont11c)
EndIf
//oPrint:Say(nRow3+1880,1810,'(+) Mora/Multa',oFont8)
oPrint:Say(nRow3+1880,1810,'(+) Mora/Multa/Juros',oFont8) // Alterado - Danillo Nogueira Dantas - 16/11/2021
//Demonstra o valor da mora/multa caso o boleto esteja vencido
If dDataBase > aDadosTit[4]
nDiasVenc := dDataBase - aDadosTit[4]
cString := cValTochar(AllTrim(Transform(nJurTit + IIf(nDiasVenc > 5,nMultTit,0),'@E 99,999,999.99')))
nCol := 1810+(374-(Len(cString)*22))
oPrint:Say(nRow3+1910,nCol,cString, oFont11c)
EndIf
oPrint:Say(nRow3+1950,1810,'(+) Outros Acréscimos',oFont8)
If ( aDadosTit[9] > 0 )
cString := AllTrim(TransForm(aDadosTit[9],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+1980,nCol,cString,oFont11c)
EndIf
oPrint:Say(nRow3+2020,1810,'(=) Valor Cobrado',oFont8)
oPrint:Say(nRow3+2110,0100,"Pagador: " + aDatSacado[1],oFont10)
If ( aDatSacado[8] = 'J' )
oPrint:Say(nRow3+2110,1750,'CNPJ: '+TransForm(aDatSacado[7],'@R 99.999.999/9999-99'),oFont10) // CGC
Else
oPrint:Say(nRow3+2110,1750,'CPF: '+TransForm(aDatSacado[7],'@R 999.999.999-99'),oFont10) // CPF
EndIf
oPrint:Say(nRow3+2140,0100,"Endereço: " + aDatSacado[3] + " " + aDatSacado[6]+ ' '+aDatSacado[4]+' - '+aDatSacado[5],oFont10) // Endereço+CEP+Cidade+Estado
if(U_RtIsEmpFil({{"09"}}))
oPrint:Say(nRow2+1290,0100,'Sacador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
Else
oPrint:Say(nRow2+1290,0100,'Pagador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
EndIF
oPrint:Say(nRow3+2290,1950,'Ficha de Compensação',oFont10n)
oPrint:Say(nRow3+2320,1950,'Autenticação Mecânica ',oFont10)
Else
nRow3 := 100
For nI := 100 to 2300 step 50
oPrint:Line(nRow3+1650, nI, nRow3+1650, nI+30)
Next nI
//Linha
oPrint:Line(nRow3+1750,0100,nRow3+1750,2300)
oPrint:Line(nRow3+1840,0100,nRow3+1840,2300)
oPrint:Line(nRow3+1930,0100,nRow3+1930,2300)
oPrint:Line(nRow3+2000,0100,nRow3+2000,2300)
oPrint:Line(nRow3+2070,0100,nRow3+2070,2300)
oPrint:Line(nRow3+2140,1800,nRow3+2140,2300)
oPrint:Line(nRow3+2210,1800,nRow3+2210,2300)
oPrint:Line(nRow3+2280,1800,nRow3+2280,2300)
oPrint:Line(nRow3+2350,1800,nRow3+2350,2300)
oPrint:Line(nRow3+2420,0100,nRow3+2420,2300)
oPrint:Line(nRow3+2550,0100,nRow3+2550,2300)
//Coluna
oPrint:Line(nRow3+1680,0500,nRow3+1750,0500)
oPrint:Line(nRow3+1680,0710,nRow3+1750,0710)
oPrint:Line(nRow3+1930,0500,nRow3+2070,0500)
oPrint:Line(nRow3+2000,0750,nRow3+2070,0750)
oPrint:Line(nRow3+1930,1000,nRow3+2070,1000)
oPrint:Line(nRow3+1930,1300,nRow3+2000,1300)
oPrint:Line(nRow3+1930,1480,nRow3+2070,1480)
oPrint:Line(nRow3+1750,1800,nRow3+2420,1800)
If aDadosBanco[1]=='756'
oPrint:SayBitmap(nRow3+1700,0100,aDadosBanco[7],240,080)
ElseIf aDadosBanco[1]=='104' // Logo caixa Adicionado Danillo Nogueira 21/11/2021
oPrint:SayBitmap(nRow3+1670,0100,aDadosBanco[7],240,080)
ElseIf aDadosBanco[1]=='025' // Logo caixa Adicionado Danillo Nogueira 21/11/2021
oPrint:SayBitmap(nRow3+1670,0100,aDadosBanco[7],240,080)
ElseIf aDadosBanco[1]=='001' .AND. U_RtIsEmpFil({{"030"}}) // Adicionado Danillo Nogueira - Logo Banco do brasil - especifico para franquia 03001 conforme solicitado pela agencia mantenedora da conta
oPrint:SayBitmap(nRow3+1670,0100,aDadosBanco[7],120,080)
Else
oPrint:SayBitmap(nRow3+1700,0100,aDadosBanco[7],060,060)
oPrint:Say(nRow3+1720,0100,aDadosBanco[2],oFont11) // [2] Nome do Banco
EndIf
If aDadosBanco[1] == '748'
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+'-X',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '604' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+'-1',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '104' // ADICIONADO - DANILLO NOGUEIRA DANTAS
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+'-0',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '422'
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+"-7",oFont20)
ElseIf aDadosBanco[1] == '224' // Cesar.gruppe 21/07/2022
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+'-1',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1] == '274' // Cesar.gruppe 06/07/2022
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+'-1',oFont20) // [1]Numero do Banco
ElseIf aDadosBanco[1]<>'033'
//oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+IIf(aDadosBanco[1]='237','-2','-9'),oFont20) // [1]Numero do Banco
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+If(aDadosBanco[1]='237','-2',If(aDadosBanco[1]='756','-0','-9')),oFont20) //TSCB56 - Rafael de Souza
Else
oPrint:Say(nRow3+1720,0513,aDadosBanco[1]+'-7',oFont20) // [1]Numero do Banco
endIf
oPrint:Say(nRow3+1720,0755,aCB_RN_NN[2],oFont15n) // Linha Digitavel do Codigo de Barras
oPrint:Say(nRow3+1770,0100,'Local de Pagamento',oFont8)
If aDadosBanco[1]<>'033'
//oPrint:Say(nRow3+1800,0100,'PAGAVEL EM QUALQUER BANCO',oFont10)
If aDadosBanco[1]='104' // Alterado - Danillo Nogueira - 17/11/2021
oPrint:Say(nRow3+1800,0100,'PREFERENCIALMENTE NAS CASAS LOTERICAS ATE O VALOR LIMITE',oFont10) //TSCB56 - Rafael de Souza
ElseIf aDadosBanco[1]='224' // Banco Fibra - Cesar.gruppe 25/07/2022
oPrint:Say(nRow2+1800,0100,'PAGÁVEL EM TODA REDE BANCÁRIA',oFont10)
ElseIf aDadosBanco[1]='274' // Banco Money - Cesar.gruppe 06/08/2022
oPrint:Say(nRow2+1800,0100,'PAGÁVEL NA REDE BANCÁRIA OU LOCAIS CREDENCIADOS',oFont10)
Else
oPrint:Say(nRow3+1800,0100,Iif(aDadosBanco[1]='756','PAGÁVEL PREFERENCIALMENTE NO SICOOB','PAGAVEL EM QUALQUER BANCO'),oFont10) //TSCB56 - Rafael de Souza
EndIf
Else
oPrint:Say(nRow3+1800,0100,'PAGAR PREFERENCIALMENTE NO BANCO SANTANDER',oFont10)
endIf
oPrint:Say(nRow3+1770,1810,'Vencimento',oFont8)
cString := StrZero(Day(aDadosTit[4]),2) +'/'+ StrZero(Month(aDadosTit[4]),2) +'/'+ Right(Str(Year(aDadosTit[4])),4)
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+1800,nCol,cString,oFont11c)
oPrint:Say(nRow3+1860,0100,'Beneficiário',oFont8)
oPrint:Say(nRow3+1890,0100,IIf(l237BBM,cBenBBM,AllTrim(Upper(aDadosEmp[1]))+' - '+aDadosEmp[6]),oFont10) // Nome + CNPJ
// Alteração solicitada pelo financeiro, onde será apresentado no boleto o nome da empresa / nome do banco ( Rech Agricola S.A. / Banco Bocom BBM S.A. ) no campo beneficiario
// criado tratamento para o boleto seja impresso com as configurações solicitada pelo financeiro somente quando o grupo de empresa logado seja a Rech Agricola "06"
If l237BBM .AND. !(FWCodEmp() $ SuperGetMv("XX_XBENEF",,"006"))
oPrint:Say(nRow3+1920,0100,"Av. Barão de Tefé, 34 – 20º e 21º andar – Saúde – Rio de Janeiro, RJ – CEP: 20220-460.",oFont8)
Else
oPrint:Say(nRow3+1920,0100,AllTrim(Upper(aDadosEmp[2]))+' - '+aDadosEmp[3]+' - '+aDadosEmp[4],oFont8)
EndIf
oPrint:Say(nRow3+1860,1810,'Agência/Código Beneficiário',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' ) // Específico BB
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'-'+SubStr(aDadosBanco[3],5,1)+ '/' +aDadosBanco[4]+'-'+aDadosBanco[5])
Case ( AllTrim(aDadosBanco[1]) == '756' ) // EspecIfico SICOOB
cString := AllTrim(aDadosBanco[3]) + '/' + SubStr(aDadosBanco[8],1,Len(aDadosBanco[8])-1) + "-" + SubStr(aDadosBanco[8],Len(aDadosBanco[8]),1)
Case ( AllTrim(aDadosBanco[1]) == '033' ) // EspecIfico SANTANDER
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[8]
Case ( AllTrim(aDadosBanco[1]) == '422' ) // EspecIfico Safra
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case ( AllTrim(aDadosBanco[1]) == '224' ) // Especifico FIBRA //Cesar.gruppe 21/07/2022
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+ '/' +AllTrim(cCodBenef))
Case ( AllTrim(aDadosBanco[1]) == '274' ) // Especifico Money //Cesar.gruppe 06/08/2022
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[4]
Case l237BBM // Específico BBM
cString := aDadosBanco[3]+'-6/'+SubStr(aDadosBanco[4],1,4)+'-'+aDadosBanco[5]
Case ( AllTrim(aDadosBanco[1]) == '246' ) // Específico ABC
cString := AllTrim(aDadosBanco[3]) + '/' + aDadosBanco[9]
Case ( AllTrim(aDadosBanco[1]) == '604' ) // Especifico BIB ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(SubStr(aDadosBanco[3],1,4)+'9'+SubStr(aDadosBanco[3],5,1)+ '/' +Substr(aDadosBanco[4],1,2)+Substr(aDadosBanco[4],4,6)+'0')
Case ( AllTrim(aDadosBanco[1]) == '104' ) // Especifico caixa ADICIONADO - DANILLO NOGUEIRA DANTAS 11/11/2021
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[8]+'-'+Iif(Alltrim(aDadosBanco[8])=="1148068","8","6"))
Case ( AllTrim(aDadosBanco[1]) == '748' ) // Especifico SICREDI ADICIONADO - DANILLO NOGUEIRA DANTAS
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
OtherWise
cString := AllTrim(aDadosBanco[3]+'/'+aDadosBanco[4]+'-'+aDadosBanco[5])
End Case
oPrint:Say(nRow3+1900,1860,cString,oFont11c)
oPrint:Say(nRow3+1950,100 ,'Data do Documento',oFont8)
oPrint:Say(nRow3+1980,100, StrZero(Day(aDadosTit[2]),2) +'/'+ StrZero(Month(aDadosTit[2]),2) +'/'+ Right(Str(Year(aDadosTit[2])),4), oFont10)
oPrint:Say(nRow3+1950,505 ,'Nro.Documento',oFont8)
oPrint:Say(nRow3+1980,605 ,aDadosTit[7]+aDadosTit[1],oFont10) // Prefixo +Numero+Parcela
oPrint:Say(nRow3+1950,1005,'Espécie Doc.',oFont8)
oPrint:Say(nRow3+1980,1050,"DM",oFont10) // Tipo do Titulo - aDadosTit[8]
oPrint:Say(nRow3+1950,1305,'Aceite',oFont8)
oPrint:Say(nRow3+1980,1400,'N',oFont10)
oPrint:Say(nRow3+1950,1485,'Data do Processamento',oFont8)
oPrint:Say(nRow3+1980,1550,StrZero(Day(aDadosTit[3]),2) +'/'+ StrZero(Month(aDadosTit[3]),2) +'/'+ Right(Str(Year(aDadosTit[3])),4),oFont10) // Data impressao
oPrint:Say(nRow3+1950,1810,'Nosso Número',oFont8)
Do Case
Case ( AllTrim(aDadosBanco[1]) == '001' )
cString := aDadosTit[6]
Case ( AllTrim(aDadosBanco[1]) == '422' )
cString := AllTrim(SubStr(aDadosTit[6],1,8)) + '-' + SubStr(Alltrim(aDadosTit[6]),9,1)
Case ( AllTrim(aDadosBanco[1]) == '224' ) //Cesar.gruppe 21/07/2022
cString := AllTrim(aDadosBanco[6]) + '/' + SubStr(Alltrim(aDadosTit[6]),1,11)
Case ( AllTrim(aDadosBanco[1]) == '274' ) //Cesar.gruppe 06/08/2022
cString := AllTrim(aDadosBanco[6]) + '/' + SubStr(Alltrim(aDadosTit[6]),1,12)
Case ( AllTrim(aDadosBanco[1]) == '237' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '025' )
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + '/' + AllTrim(SubStr(aDadosTit[6],1,11)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '341' )
cString := AllTrim(SubStr(aDadosTit[6],1,3)) + '/' + AllTrim(SubStr(aDadosTit[6],4,8)) + '-' + SubStr(aDadosTit[6],12,1)
Case ( AllTrim(aDadosBanco[1]) == '748' )
cString := AllTrim(SubStr(aDadosTit[6],1,2)) + '/' + AllTrim(SubStr(aDadosTit[6],3,6)) + '-' + SubStr(aDadosTit[6],9,1)
Case ( AllTrim(aDadosBanco[1]) == '604' ) // ADICIONADO - DANILLO NOGUEIRA 02/03/2021
cString := AllTrim(aDadosBanco[6]) + '/' + SubStr(Alltrim(aDadosTit[6]),1,10) + SubStr(Alltrim(aDadosTit[6]),18,1)
Case ( AllTrim(aDadosBanco[1]) == '104' ) // ADICIONADO - DANILLO NOGUEIRA 11/11/2021
cString := AllTrim(StrZero(Val(aDadosBanco[6]),2)) + AllTrim(SubStr(aDadosTit[6],1,15)) + '-' + SubStr(aDadosTit[6],16,1)
Case ( AllTrim(aDadosBanco[1]) == '033' )
cString := AllTrim(SubStr(aDadosTit[6],1,12)) + '-' + SubStr(aDadosTit[6],13,1)
Case ( AllTrim(aDadosBanco[1]) == '756' )
cString := AllTrim(SubStr(aDadosTit[6],1,7)) + '-' + SubStr(Alltrim(aDadosTit[6]),8,1)
OtherWise
cString := TransForm(Val(aDadosTit[6]),"@R 99999999999-9")
End Case
oPrint:Say(nRow3+1980,1880,cString,oFont11c)
If aDadosBanco[1] <> '033'
oPrint:Say(nRow3+2020,0100,'Uso do Banco',oFont8)
oPrint:Say(nRow3+2020,0505,'Carteira',oFont8)
//oPrint:Say(nRow3+2050,0555,aDadosBanco[6],oFont10)
If aDadosBanco[1]=='104' // Adicionado Danillo Nogueira Dantas 16/11/2021
oPrint:Say(nRow3+2050,0555,"RG",oFont10)
else
oPrint:Say(nRow3+2050,0555,aDadosBanco[6],oFont10)
Endif
Else
oPrint:Say(nRow3+2020,0100,'Carteira',oFont8)
Do Case
Case ( aDadosBanco[6] == '101' )
oPrint:Say(nRow3+2050,0100,"COBRANCA SIMPLES - RCR",oFont10)
Case ( aDadosBanco[6] == '102' )
oPrint:Say(nRow3+2050,0100,"COBRANCA SIMPLES - CSR",oFont10)
Case ( aDadosBanco[6] == '201' )
oPrint:Say(nRow3+2050,0100,"COBRANCA PENHOR - RCR",oFont10)
end Case
endIf
oPrint:Say(nRow3+2020,0755,'Espécie',oFont8)
oPrint:Say(nRow3+2050,0805,'R$',oFont10)
oPrint:Say(nRow3+2020,1005,'Quantidade',oFont8)
oPrint:Say(nRow3+2020,1485,'Valor',oFont8)
oPrint:Say(nRow3+2020,1810,'Valor do Documento',oFont8)
cString := AllTrim(TransForm(aDadosTit[5]+aDadosTit[9],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+2050,nCol,cString,oFont11c)
oPrint:Say(nRow3+2090,0100,IIf(l237BBM,cIntBBM,'Instruções (Todas informações deste bloqueto são de exclusiva responsabilidade do beneficiário)'),oFont8)
//VerIfica se possui multa de boleto na empresa
nLin := 0
For nInf := 1 to Len(aBolText)
oPrint:Say(nRow3+2170+nLin,0100,aBolText[nInf],oFont10)
nLin += 35
Next nInf
If fwCodEmp() == '003'
oPrint:Say(nRow3+2170+nLin,0100,"SUJEITO A PROTESTO",oFont10)
nLin += 35
EndIf
oPrint:Say(nRow3+2090,1810,'(-) Desconto/Abatimento',oFont8)
oPrint:Say(nRow3+2160,1810,'(-) Outras Deduções',oFont8)
If ( aDadosTit[10] > 0 )
cString := AllTrim(TransForm(aDadosTit[10],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+2190,nCol,cString,oFont11c)
EndIf
//oPrint:Say(nRow3+2230,1810,'(+) Mora/Multa',oFont8)
oPrint:Say(nRow3+2230,1810,'(+) Mora/Multa/Juros',oFont8) // Alterado - Danillo Nogueira Dantas - 16/11/2021
oPrint:Say(nRow3+2310,1810,'(+) Outros Acréscimos',oFont8)
If ( aDadosTit[9] > 0 )
cString := AllTrim(TransForm(aDadosTit[9],'@E 99,999,999.99'))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say(nRow3+2340,nCol,cString,oFont11c)
EndIf
oPrint:Say(nRow3+2370,1810,'(=) Valor Cobrado',oFont8)
If aDadosBanco[1] <> '033' .Or. aDadosBanco[1] <> '237'
oPrint:Say(nRow3+2440,0100,'Pagador',oFont8)
Else
oPrint:Say(nRow3+2440,0100,'Pagador',oFont8)
endIf
oPrint:Say(nRow3+2470,0400,aDatSacado[1]+' ('+aDatSacado[2]+')',oFont10)
If ( aDatSacado[8] = 'J' )
//oPrint:Say(nRow3+1470,1750,'CNPJ: '+TransForm(aDatSacado[7],'@R 99.999.999/9999-99'),oFont10) // CGC
oPrint:Say(nRow3+2470,1750,'CNPJ: '+TransForm(aDatSacado[7],'@R 99.999.999/9999-99'),oFont10) // CGC
Else
oPrint:Say(nRow3+2470,1750,'CPF: '+TransForm(aDatSacado[7],'@R 999.999.999-99'),oFont10) // CPF
EndIf
oPrint:Say(nRow3+2510,0400,aDatSacado[3],oFont10)
oPrint:Say(nRow3+2540,0400,aDatSacado[6]+' '+aDatSacado[4]+' - '+aDatSacado[5],oFont10) // CEP+Cidade+Estado
if(U_RtIsEmpFil({{"09"}}))
oPrint:Say(nRow2+1290,0100,'Sacador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
Else
oPrint:Say(nRow2+1290,0100,'Pagador/Avalista: ' + IIf(l237BBM,cSacBBM,""),oFont8)
EndIF
If aDadosBanco[1] == '104' // Adicionado - Danillo Nogueira - 29/11/2021
oPrint:Say(nRow2+2570,0100,'Sacador/Avalista: ' + AllTrim(UPPER(aDadosEmp[1])) + " - " + aDadosEmp[6],oFont8)
EndIf
oPrint:Say(nRow3+2570,1500,'Autenticação Mecânica - Ficha de Compensação',oFont8)
EndIf
//Código de Barras do Boleto.
oPrint:FWMsBar('INT25',65.0,2.2,aCB_RN_NN[1],oPrint,.F.,,,0.0280,1.40,,,,.F.)
DbSelectArea('SE1')
If !lAtuNN
If RecLock('SE1',.F.) .AND. EMPTY(SE1->E1_NUMBCO)
Replace SE1->E1_NUMBCO With aCB_RN_NN[3] // Nosso numero (Ver formula para calculo)
If 'CEF REENV' $ SE1->E1_HIST
Replace SE1->E1_HIST With REPLACE(SE1->E1_HIST,'CEF REENV',space(9))
EndIf
Replace SE1->E1_XLINDIG With aCB_RN_NN[2]
// Verifica se o bucket esta por GATILHO ou SCHEDULER
If (SuperGetMV("RC_BUCKET",.F.,'',SE1->E1_FILIAL) = 'GATILHO' .and. !( FWIsInCallStack("U_RCBUCGER") .or. FWIsInCallStack("U_RCBUCOLD") ) ) .OR. ;
(SuperGetMV("RC_BUCKET",.F.,'',SE1->E1_FILIAL) = 'SCHEDULER' .and. ( FWIsInCallStack("U_RCBUCGER") .or. FWIsInCallStack("U_RCBUCOLD") ) )
Replace SE1->E1_XBUCKET With Alltrim(SE1->E1_FILIAL)+"_"+Alltrim(SE1->E1_CLIENTE)+"_"+Alltrim(SE1->E1_LOJA)+"_"+Alltrim(SE1->E1_PREFIXO)+"_"+Alltrim(SE1->E1_NUM)+"_"+Alltrim(SE1->E1_PARCELA)+"_"+Alltrim(SE1->E1_TIPO)+".pdf"
EndIf
SE1->(MsUnlock())
EndIf
EndIf
// Finaliza a página
oPrint:EndPage()
Return( Nil )
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xSfVerfBar ºAutor³ Luis Henrique Robusto º Data ³02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - BANCO DO BRASIL º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º 22/01/14 ³ Luis H. ³ Revisado e colocado dentro do padrao 4, 6 e 7 º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xSfVerfBar(cPrefixo,cNumero,cParcela,cTipo,cBanco,cAgencia,cConta,cDacCC,cNroDoc,nVlrTit,cCart,cMoeda)
Local cNosso := ''
Local nNum := ''
Local cLivre := ''
Local cDigBarra := ''
Local cBarra := ''
Local cParte1 := ''
Local cDig1 := ''
Local cParte2 := ''
Local cDig2 := ''
Local cParte3 := ''
Local cDig3 := ''
Local cParte4 := ''
Local cParte5 := ''
Local cDigital := ''
Local aRet := {}
Local cFatorVct := xFator()
Local cFatorVlr := StrZero(nVlrTit*100,10)
// Formulacao do nosso numero
nNum := Alltrim(cNroDoc)
cNosso := Alltrim(cNroDoc)
cNosso += iif(len(Alltrim(cNosso)) < 9, Alltrim(str(xSFCalcDigN(nNum))), "")
// Campo livre do codigo de barra
cLivre := '7' // 01 a 03 todas situacoes
cLivre += Alltrim(cAgencia)
cLivre += PADL(Alltrim(cConta),9, "0")
cLivre += cNosso
cLivre += '2'
/*// 04 a 04 todas situacoes
cLivre += cFatorVct // 06 a 09 todas situacoes
cLivre += cFatorVlr // 10 a 19 todas situacoes
cLivre += IIf(Len(cNosso)=17,Replicate("0",6),"") // 20 a 25 convenio 7 digitos / nao se aplica aos demais
cLivre += IIf(Len(cNosso)=17,cNosso,SubStr(cNosso,1,11)) // 26 a 42 convenio 7 digitos / 20 a 30 convenio com 4 ou 6 digitos
cLivre += cCart // 43 a 44 todas situacoes*/
// Campo do codigo de barra
cQuaseBarra := Alltrim(cBanco)+Alltrim(cMoeda)+Alltrim(cFatorVct)+Alltrim(cFatorVlr)+Alltrim(cLivre)
cDigBarra := Alltrim(U_Calc_5p(cQuaseBarra))
cBarra := Alltrim(cBanco)+Alltrim(cMoeda)+Alltrim(cDigBarra)+Alltrim(cFatorVct)+Alltrim(cFatorVlr)+Alltrim(cLivre)
// Composicao da linha digitavel
// Parte 1
cParte1 := Alltrim(cBanco)+Alltrim(cMoeda)
cParte1 += SubStr(cLivre,1,5)
cDig1 := Alltrim(str(xClcDvLin(cParte1, 2)))
// Parte 2
cParte2 := SubStr(cLivre,6,10)
cDig2 := Alltrim(str(xClcDvLin(cParte2, 1)))
// Parte 3
cParte3 := cNosso + "2"
cDig3 := Alltrim(str(xClcDvLin(cParte3, 1)))
// Parte 4
cParte4 := ' '+cDigBarra+' '
// Parte 5
cParte5 := Alltrim(cFatorVct)
cParte5 += Alltrim(cFatorVlr)
// Linha digitavel completa
cDigital := SubStr(cParte1,1,5)+'.'+SubStr(cParte1,6,4)+cDig1+' '
cDigital += SubStr(cParte2,1,5)+'.'+SubStr(cParte2,6,5)+cDig2+' '
cDigital += SubStr(cParte3,1,5)+'.'+SubStr(cParte3,6,5)+cDig3+' '
cDigital += cParte4
cDigital += cParte5
// Monta array para retorno.
Aadd(aRet,cBarra) // Codigo de barras (leitor)
Aadd(aRet,cDigital) // Linha digitavel (visual no boleto)
Aadd(aRet,cNosso) // Nosso Numero apenas para visualizacao
Return aRet
/*
_____________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Programa ¦ xFBrVerfBar ¦ Autor ¦ Cesar.gruppe ¦ Data ¦ 21/07/2022 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçào ¦ Monta codigo de barras e linha digital do banco FIBRA. ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦ Uso ¦ ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/
Static Function xFBrVerfBar(cBanco,cAgencia,cConta,cDacCC,cNroDoc,nValor,dVencto,aDadosBanco)
Local cFator := Strzero(dVencto - ctod('07/10/97'),4)
Local cCart := Alltrim(aDadosBanco[6])
Local cMoeda := '9'
Local cValor := Strzero(Round(nValor,2)*100,10)
Local cDigito := ""
If Len(Alltrim(cNroDoc)) = 10
nDvnn := cValToChar(Modulo10(AllTrim(cAgencia)+AllTrim(cCart)+AllTrim(cNroDoc)))
cNroDoc += AllTrim(PadR(nDvnn,1))
EndIf
cNN := cNroDoc
cCampoLivre := cAgencia+cCart+Alltrim(aDadosBanco[9])+AllTrim(cNroDoc)
cBarra := cBanco+cMoeda+cFator+Strzero(Round(nValor,2)*100,10)+cCampoLivre
cDigito := Mod11B9(cBarra)
cCB := Substr(cBarra,1,4)+cValToChar(cDigito)+Substr(cBarra,5,40)
cValor := cBanco+cMoeda+SubStr(cCB,20,5)
nDiv := cValToChar(Modulo10(cValor))
cCampo1 := cValor+nDiv
cValor := SubStr(cCB,25,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo2 := cValor+nDiv
cValor := SubStr(cCB,35,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo3 := cValor+nDiv
cCampo4 := SubStr(cCB,5,1)
cValor := SubStr(cCB,6,4)+SubStr(cCB,10,10)
cCampo5 := cValor
//LINHA DIGITAVEL
cRN := SubStr(cCampo1,1,5) + "." + SubStr(cCampo1,6,5) + " " //primeiro campo
cRN += SubStr(cCampo2,1,5) + "." + SubStr(cCampo2,6,6) + " " //segundo campo
cRN += SubStr(cCampo3,1,5) + "." + SubStr(cCampo3,6,6) //terceiro campo
cRN += " " +cCampo4 //dig verificador geral
cRN += " " +cCampo5 // fator de vencimento e valor nominal do titulo
Return({cCB,cRN,cNN})
Static Function xClcDvLin(cBase, base)
Local dv := 0
Local auxi := 0
Local aux2 := ""
Local lbase := Len(cBase)
Local sumdig := 0
Local iDig := 1
Local n2 := 0
Default base := 2
For iDig := 1 to lbase
If ( base == 0 )
base := 2
EndIf
auxi := Val(SubStr(cBase, iDig, 1)) * base
aux2 := cvaltochar(auxi)
auxi := 0
if(len(aux2) > 1)
for n2 := 1 to len(aux2)
auxi += val(substr(aux2,n2,1))
Next n2
Else
auxi += val(aux2)
EndIf
sumdig += auxi
base--
Next iDig
auxi := mod(sumdig,10)
If ( auxi > 0 )
dv := 10 - auxi
else
dv := 0
EndIf
Return dv
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xBBVerfBar ºAutor³ Luis Henrique Robusto º Data ³02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - BANCO DO BRASIL º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º 22/01/14 ³ Luis H. ³ Revisado e colocado dentro do padrao 4, 6 e 7 º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xBBVerfBar(cPrefixo,cNumero,cParcela,cTipo,cBanco,cAgencia,cConta,cDacCC,cNroDoc,nVlrTit,cCart,cMoeda)
Local cNosso := ''
Local nNum := ''
Local cLivre := ''
Local cDigBarra := ''
Local cBarra := ''
Local cParte1 := ''
Local cDig1 := ''
Local cParte2 := ''
Local cDig2 := ''
Local cParte3 := ''
Local cDig3 := ''
Local cParte4 := ''
Local cParte5 := ''
Local cDigital := ''
Local aRet := {}
Local cFatorVct := xFator()
Local cFatorVlr := StrZero(nVlrTit*100,10)
// Formulacao do nosso numero
nNum := Alltrim(cNroDoc)
cNosso := Alltrim(cNroDoc)
If SEE->EE_NRBYTES == 400
//cNosso += IIf(SEE->EE_TAM_NN==11,IIF(Len(Alltrim(cNroDoc))==17,"",xBBCalcDigN(nNum)),"") // caso o convenio seja com 4 ou com 6 digitos, o nosso numero sera 11 digitos + digito verIficador
cNosso += IIf(SEE->EE_TAM_NN==11,IIF(Len(Alltrim(cNroDoc))==17,"",Modulo11(nNum)),"") // caso o convenio seja com 4 ou com 6 digitos, o nosso numero sera 11 digitos + digito verIficador
Else
cNosso += IIf(Len(Alltrim(cNroDoc))==11,xBBCalcDigN(nNum),"") // caso o convenio seja com 4 ou com 6 digitos, o nosso numero sera 11 digitos + digito verIficador
EndIF
// Campo livre do codigo de barra
cLivre := cBanco // 01 a 03 todas situacoes
cLivre += cMoeda // 04 a 04 todas situacoes
cLivre += cFatorVct // 06 a 09 todas situacoes
cLivre += cFatorVlr // 10 a 19 todas situacoes
cLivre += IIf(Len(cNosso)==17,Replicate("0",6),"") // 20 a 25 convenio 7 digitos / nao se aplica aos demais
cLivre += IIf(Len(cNosso)==17,cNosso,SubStr(cNosso,1,11)) // 26 a 42 convenio 7 digitos / 20 a 30 convenio com 4 ou 6 digitos
cLivre += IIf(Len(cNosso)==17,"",SubStr(cAgencia,1,4)+ Padl(Alltrim(cConta),8,'0')) //31 a 42 conta e agencia em casos de convenio com 6 digitos
cLivre += cCart // 43 a 44 todas situacoes
// Campo do codigo de barra
cDigBarra := U_Calc_5p(cLivre)
cBarra := SubStr(cLivre,1,4)+cDigBarra+SubStr(cLivre,5,40)
// Composicao da linha digitavel
// Parte 1
cParte1 := cBanco+cMoeda
cParte1 += SubStr(cBarra,20,5)
cDig1 := xDACBB( cParte1 )
// Parte 2
cParte2 := SubStr(cBarra,25,10)
cDig2 := xDACBB( cParte2 )
// Parte 3
cParte3 := SubStr(cBarra,35,10)
cDig3 := xDACBB( cParte3 )
// Parte 4
cParte4 := ' '+cDigBarra+' '
// Parte 5
cParte5 := cFatorVct
cParte5 += cFatorVlr
// Linha digitavel completa
cDigital := SubStr(cParte1,1,5)+'.'+SubStr(cParte1,6,4)+cDig1+' '
cDigital += SubStr(cParte2,1,5)+'.'+SubStr(cParte2,6,5)+cDig2+' '
cDigital += SubStr(cParte3,1,5)+'.'+SubStr(cParte3,6,5)+cDig3+' '
cDigital += cParte4
cDigital += cParte5
// Monta array para retorno.
Aadd(aRet,cBarra) // Codigo de barras (leitor)
Aadd(aRet,cDigital) // Linha digitavel (visual no boleto)
Aadd(aRet,cNosso) // Nosso Numero apenas para visualizacao
Return aRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xBraVerfBarºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - BRADESCO º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xBraVerfBar(cPrefixo,cNumero,cParcela,cTipo,cBanco,cAgencia,cConta,cDacCC,cNroDoc,nVlrTit,cCart,cMoeda)
Local cNosso := ' ',;
nNum := ' ',;
cCampoL := ' ',;
cFatorValor := ' ',;
cLivre := ' ',;
cDigBarra := ' ',;
cBarra := ' ',;
cParte1 := ' ',;
cDig1 := ' ',;
cParte2 := ' ',;
cDig2 := ' ',;
cParte3 := ' ',;
cDig3 := ' ',;
cParte4 := ' ',;
cParte5 := ' ',;
cDigital := ' ',;
aRet := {}
cAgencia := StrZero(Val(cAgencia),4)
cNosso := ' '
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Formulacao do nosso numero³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If ( Len(AllTrim(cNroDoc)) == 12 ) // Ja esta pronto nao precisa verIficar digito
nNum := SubStr(cNroDoc,1,11)
cNosso := cNroDoc
Else
nNum := StrZero(Val(cNroDoc),11)
cNosso := nNum + xBraCalcDigN(StrZero(Val(cCart),2)+nNum)
EndIf
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Numero s/ digito..:' + nNum,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Numero c/ digito..:' + cNosso,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo Livre - VerIficar a conta e carteira³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// 01 a 04 - 04 - Agencia Cedente
// 05 a 06 - 02 - Carteira
// 07 a 17 - 11 - Nosso Numero sem o digito
// 18 a 24 - 07 - Conta Corrente sem o digito
// 25 a 25 - 01 - Zero
cCampoL := cAgencia + StrZero(Val(cCart),2) + nNum + StrZero(Val(cConta),7) + '0'
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Agencia..:' + cAgencia ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Carteira.:' + StrZero(val(cCart),2) ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Num s/digito.:' + nNum ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Conta Cedente..:' + StrZero(Val(cConta),7) ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Formado campo-livre..:' + cCampoL ,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo livre do codigo de barra - verIficar a conta³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cFatorValor := xFator()+StrZero(nVlrTit*100,10)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Monta o campo Livre:³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// 000000000111111111122222222223333333333444444444455555555556
// 123456789012345678901234567890123456789012345678901234567890
// 2379?XXXX$$$$$$$$$$LLLLLLLLLLLLLLLLLLLLLLLLL
// x xx x x x
cLivre := cBanco + cMoeda + cFatorValor + cCampoL
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Banco..:' + cBanco ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Moeda..:' + cMoeda ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Fator+Valor..:' + cFatorValor ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Campo Livre..:' + cCampoL ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Codigo para gerar o codigo de barras..:' + cLivre ,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo do codigo de barra³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cDigBarra := xCalc_5pBarra(cLivre)
cBarra := SubStr(cLivre,1,4)+cDigBarra+SubStr(cLivre,5,43)
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Digito Calculado..:' + cDigBarra ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Codigo Completo...:' + cBarra ,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Composicao da linha digitavel³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cParte1 := cBanco + cMoeda + SubStr(cCampoL,1,5)
cDig1 := xCalcDAC( cParte1 )
cParte2 := SubStr(cCampoL,6,10)
cDig2 := xCalcDAC( cParte2 )
cParte3 := SubStr(cCampoL,16,10)
cDig3 := xCalcDAC( cParte3 )
cParte4 := ' '+cDigBarra+' '
cParte5 := cFatorValor
cDigital := SubStr(cParte1,1,5)+'.'+SubStr(cParte1,6,4)+cDig1+' '+;
SubStr(cParte2,1,5)+'.'+SubStr(cParte2,6,5)+cDig2+' '+;
SubStr(cParte3,1,5)+'.'+SubStr(cParte3,6,6)+cDig3+;
cParte4+;
cParte5
Aadd(aRet,cBarra)
Aadd(aRet,cDigital)
Aadd(aRet,cNosso)
Return aRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xBraVerfBarºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - BRADESCO º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xMoVerfBar(cPrefixo,cNumero,cParcela,cTipo,cBanco,cAgencia,cConta,cDacCC,cNroDoc,nVlrTit,cCart,cMoeda)
Local cNosso := ' ',;
nNum := ' ',;
cCampoL := ' ',;
cFatorValor := ' ',;
cLivre := ' ',;
cDigBarra := ' ',;
cBarra := ' ',;
cParte1 := ' ',;
cDig1 := ' ',;
cParte2 := ' ',;
cDig2 := ' ',;
cParte3 := ' ',;
cDig3 := ' ',;
cParte4 := ' ',;
cParte5 := ' ',;
cDigital := ' ',;
aRet := {}
cAgencia := StrZero(Val(cAgencia),4)
cNosso := ' '
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Formulacao do nosso numero³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If ( Len(AllTrim(cNroDoc)) == 12 ) // Ja esta pronto nao precisa verIficar digito
nNum := SubStr(cNroDoc,1,11)
cNosso := cNroDoc
Else
nNum := StrZero(Val(cNroDoc),11)
cNosso := nNum + xMoCalcDigN(StrZero(Val(cCart),2)+nNum)
EndIf
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Numero s/ digito..:' + nNum,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Numero c/ digito..:' + cNosso,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo Livre - VerIficar a conta e carteira³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// 01 a 04 - 04 - Agencia Cedente
// 05 a 06 - 02 - Carteira
// 07 a 17 - 11 - Nosso Numero sem o digito
// 18 a 24 - 07 - Conta Corrente sem o digito
// 25 a 25 - 01 - Zero
cCampoL := cAgencia + StrZero(Val(cCart),2) + nNum + StrZero(Val(cConta),7) + '0'
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Agencia..:' + cAgencia ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Carteira.:' + StrZero(val(cCart),2) ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Num s/digito.:' + nNum ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Conta Cedente..:' + StrZero(Val(cConta),7) ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Formado campo-livre..:' + cCampoL ,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo livre do codigo de barra - verIficar a conta³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cFatorValor := xFator()+StrZero(nVlrTit*100,10)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Monta o campo Livre:³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// 000000000111111111122222222223333333333444444444455555555556
// 123456789012345678901234567890123456789012345678901234567890
// 2379?XXXX$$$$$$$$$$LLLLLLLLLLLLLLLLLLLLLLLLL
// x xx x x x
cLivre := cBanco + cMoeda + cFatorValor + cCampoL
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Banco..:' + cBanco ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Moeda..:' + cMoeda ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Fator+Valor..:' + cFatorValor ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Campo Livre..:' + cCampoL ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Codigo para gerar o codigo de barras..:' + cLivre ,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo do codigo de barra³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cDigBarra := xCalc_5pBarra(cLivre)
cBarra := SubStr(cLivre,1,4)+cDigBarra+SubStr(cLivre,5,43)
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Digito Calculado..:' + cDigBarra ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Codigo Completo...:' + cBarra ,0,0,{})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Composicao da linha digitavel³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cParte1 := cBanco + cMoeda + SubStr(cCampoL,1,5)
cDig1 := xDACBB(cParte1) //xCalcDAC( cParte1 )
cParte2 := SubStr(cCampoL,6,10)
cDig2 := xDACBB(cParte2) //xCalcDAC( cParte2 )
cParte3 := SubStr(cCampoL,16,10)
cDig3 := xDACBB(cParte3) //xCalcDAC( cParte3 )
cParte4 := ' '+cDigBarra+' '
cParte5 := cFatorValor
cDigital := SubStr(cParte1,1,5)+'.'+SubStr(cParte1,6,4)+cDig1+' '+;
SubStr(cParte2,1,5)+'.'+SubStr(cParte2,6,5)+cDig2+' '+;
SubStr(cParte3,1,5)+'.'+SubStr(cParte3,6,6)+cDig3+;
cParte4+;
cParte5
Aadd(aRet,cBarra)
Aadd(aRet,cDigital)
Aadd(aRet,cNosso)
Return aRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xItaVerfBar ºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - ITAU º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xItaVerfBar(cBanco,cAgencia,cConta,cDacCC,cNroDoc,nValor,dVencto,aDadosBanco)
Local cValorFinal := Strzero(nValor*100,10)
Local cFator := Strzero(dVencto - ctod('07/10/97'),4)
Local cCart := Alltrim(aDadosBanco[6])
//Carteira
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicao do NOSSO NUMERO³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cNosso := cAgencia+cConta+cCart+cNroDoc
nDvnn := Modulo10(cNosso)
cNN := cCart+cNroDoc+AllTrim(Str(nDvnn))
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo utilizado para calculo do Codigo de Barras e linha digitavel³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampoLivre := cCart+cNroDoc+AllTrim(Str(nDvnn))+cAgencia+cConta+cDacCC+'000'
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicao do CODIGO DE BARRAS³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cBarra := (SubStr(cBanco,1,4)+cFator+cValorFinal+cCampoLivre)
nDvcb := Mod11B9(cBarra)
// Codigo do Banco+Moeda+DAC Codigo de Barras+Vencimento+Valor+Carteira+Nosso numero+DAC Nosso Numero+Agencia+Conta Cedente+DAC Conta Cedente+000
cCB := SubStr(cBanco,1,4)+AllTrim(Str(nDvcb))+cFator+cValorFinal+cCampoLivre
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicao da LINHA DIGITAVEL (Representacao Numerica) ³
//³Campo 1 Campo 2 Campo 3 Campo 4 Campo 5 ³
//³AAABC.CCDDX DDDDD.DDFFFY FGGGG.GGHHHZ K UUUUVVVVVVVVVV ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 1: ³
//³AAA = Codigo do banco na Camara de Compensacao ³
//³ B = Codigo da moeda, sempre 9 ³
//³CCC = Codigo da Carteira de Cobranca ³
//³ DD = Dois primeiros digitos no nosso numero ³
//³ X = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampo1 := cBanco+Left(cCampoLivre,5)
nDigito := modulo10(cCampo1)
cRN := SubStr(cCampo1,1,5)+'.'+SubStr(cCampo1,6,4)+AllTrim(Str(nDigito))+Space(02)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 2: ³
//³DDDDDD = Restante do Nosso Numero ³
//³ E = DAC do campo Agencia/Conta/Carteira/Nosso Numero ³
//³ FFF = Tres primeiros numeros que identIficam a agencia ³
//³ Y = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampo2 :=SubStr(cCampoLivre,6,10)
nDigito := modulo10(cCampo2)
cRN += SubStr(cCampo2,1,5)+'.'+SubStr(cCampo2,6,5)+AllTrim(Str(nDigito))+Space(02)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 3: ³
//³ F = Restante do numero que identIfica a agencia ³
//³GGGGGG = Numero da Conta + DAC da mesma ³
//³ HHH = Zeros (Nao utilizado) ³
//³ Z = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampo3 := SubStr(cCampoLivre,16,10)
nDigito := modulo10(cCampo3)
cRN += SubStr(cCampo3,1,5)+'.'+SubStr(cCampo3,6,5)+AllTrim(Str(nDigito))+Space(02)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 4: ³
//³ K = DAC do Codigo de Barras³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cRN += Space(01)+AllTrim(Str(nDvcb))+Space(01)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 5: ³
//³ UUUU = Fator de Vencimento ³
//³VVVVVVVVVV = Valor do Titulo ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cRN += cFator + StrZero(nValor * 100,14-Len(cFator))
Return({cCB,cRN,cNN})
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xAbcVerfBar
Funcao Auxiliar calculo cod barras banco ABC
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xAbcVerfBar(cBanco,cAgencia,cConta,cDacCC,cNroDoc,nValor,dVencto,aDadosBanco)
Local cFator := Strzero(dVencto - ctod('07/10/97'),4)
Local cCart := Alltrim(aDadosBanco[6])
Local cConvenio := Alltrim(aDadosBanco[8])
Local cMoeda := '9'
Local cValor := Strzero(Round(nValor,2)*100,10)
cNosso := cAgencia+cCart+SubStr(cNroDoc,1,10)
nDvnn := cValToChar(Modulo10(cNosso))
cNN := cNroDoc+AllTrim(PadR(nDvnn,1))
cCampoLivre := cAgencia+cCart+cConvenio+Alltrim(cNroDoc)+AllTrim(nDvnn)
cCBSemDig := cBanco+cMoeda+cFator+cValor+cCampoLivre
cBarra := cBanco+cMoeda+Modulo11Abc(cCBSemDig)+cFator+cValor+ cCampoLivre
cCB := cBarra
cValor := cBanco+cMoeda+SubStr(cAgencia,1,4)+SubStr(cCart,1,1)
nDiv := cValToChar(Modulo10(cValor))
cCampo1 := cValor+nDiv
cValor := SubStr(cBarra,25,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo2 := cValor+nDiv
cValor := SubStr(cBarra,35,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo3 := cValor+nDiv
cCampo4 := SubStr(cBarra,5,1)
cValor := SubStr(cBarra,6,4)+SubStr(cBarra,10,10)
cCampo5 := cValor
//LINHA DIGITAVEL
cRN := SubStr(cCampo1,1,5) + "." + SubStr(cCampo1,6,5) + " " //primeiro campo
cRN += SubStr(cCampo2,1,5) + "." + SubStr(cCampo2,6,6) + " " //segundo campo
cRN += SubStr(cCampo3,1,5) + "." + SubStr(cCampo3,6,6) //terceiro campo
cRN += " " +cCampo4 //dig verificador geral
cRN += " " +cCampo5 // fator de vencimento e valor nominal do titulo
Return( {cCB , cRN , cNN })
/*
_____________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Programa ¦ xBibVerfBar ¦ Autor ¦ Danillo Nogueira ¦ Data ¦ 11/03/2021 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçào ¦ Monta codigo de barras e linha digital do banco BIB . ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦ Uso ¦ ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/
Static Function xBibVerfBar(cBanco,cAgencia,cConta,cDacCC,cNroDoc,nValor,dVencto,aDadosBanco)
Local cFator := Strzero(dVencto - ctod('07/10/97'),4)
Local cCart := Alltrim(aDadosBanco[6])
Local cConvenio := Alltrim(aDadosBanco[8])
Local cMoeda := '9'
Local cValor := Strzero(Round(nValor,2)*100,10)
Local cDigito := ""
cNosso := cAgencia+cCart+SubStr(cNroDoc,1,10)
nDvnn := cValToChar(Modulo10(cNosso))
cNN := cNroDoc+AllTrim(PadR(nDvnn,1))
cCampoLivre := cAgencia+cCart+cConvenio+Alltrim(cNroDoc)+AllTrim(nDvnn)
cBarra := cBanco+cMoeda+cFator+Strzero(Round(nValor,2)*100,10)+Substr(cCampoLivre,1,7)+Substr(cCampoLivre,15,18)
cDigito := Mod11B9(cBarra)
cCB := Substr(cBarra,1,4)+cValToChar(cDigito)+Substr(cBarra,5,40)
cValor := cBanco+cMoeda+SubStr(cAgencia,1,4)+SubStr(cCart,1,1)
nDiv := cValToChar(Modulo10(cValor))
cCampo1 := cValor+nDiv
cValor := SubStr(cCB,25,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo2 := cValor+nDiv
cValor := SubStr(cCB,35,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo3 := cValor+nDiv
cCampo4 := SubStr(cCB,5,1)
cValor := SubStr(cCB,6,4)+SubStr(cCB,10,10)
cCampo5 := cValor
//LINHA DIGITAVEL
cRN := SubStr(cCampo1,1,5) + "." + SubStr(cCampo1,6,5) + " " //primeiro campo
cRN += SubStr(cCampo2,1,5) + "." + SubStr(cCampo2,6,6) + " " //segundo campo
cRN += SubStr(cCampo3,1,5) + "." + SubStr(cCampo3,6,6) //terceiro campo
cRN += " " +cCampo4 //dig verificador geral
cRN += " " +cCampo5 // fator de vencimento e valor nominal do titulo
Return({cCB,cRN,cNN})
/*
_____________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Programa ¦ xCaixaCBar ¦ Autor ¦ Danillo Nogueira ¦ Data ¦ 11/11/2021 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçào ¦ Monta codigo de barras e linha digital do banco Caixa. ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦ Uso ¦ ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/
Static Function xCaixaCBar(cBanco,cAgencia,cConta,cDacCC,cNroDoc,nValor,dVencto,aDadosBanco)
Local cFator := Strzero(dVencto - ctod('07/10/97'),4)
Local cCart := Alltrim(aDadosBanco[6])
Local cConvenio := Alltrim(aDadosBanco[8])
Local cMoeda := '9'
Local cValor := Strzero(Round(nValor,2)*100,10)
Local cDigito := ""
Local nInic := IIf(!lAtuNN,1,2)
cNosso := cCart+SubStr(cNroDoc,nInic,15)
//nDvnn := cValToChar(mod11b9(cNosso))
nDvnn := cValToChar(Modu11(cNosso,,"CX"))
cNN := alltrim(SubStr(cNroDoc,nInic,15))+AllTrim(nDvnn)
cCampoLivre := alltrim(cConvenio)+Substr(cNosso,3,3)+Substr(cNosso,1,1)+Substr(cNosso,6,3)+Substr(cNosso,2,1)+Substr(cNosso,9,9)
cBarra := cBanco+cMoeda+cFator+Strzero(Round(nValor,2)*100,10)+alltrim(cCampoLivre)+cValToChar(Modu11(cCampoLivre))
cDigito := Mod11B9(cBarra)
cCB := Substr(cBarra,1,4)+cValToChar(cDigito)+Substr(cBarra,5,40)
cValor := cBanco+cMoeda+SubStr(cConvenio,1,5)
nDiv := cValToChar(Modulo10(cValor))
cCampo1 := cValor+nDiv
cValor := SubStr(cCB,25,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo2 := cValor+nDiv
cValor := SubStr(cCB,35,10)
nDiv := cValToChar(Modulo10(cValor))
cCampo3 := cValor+nDiv
cCampo4 := SubStr(cCB,5,1)
cValor := SubStr(cCB,6,4)+SubStr(cCB,10,10)
cCampo5 := cValor
//LINHA DIGITAVEL
cRN := SubStr(cCampo1,1,5) + "." + SubStr(cCampo1,6,5) + " " //primeiro campo
cRN += SubStr(cCampo2,1,5) + "." + SubStr(cCampo2,6,6) + " " //segundo campo
cRN += SubStr(cCampo3,1,5) + "." + SubStr(cCampo3,6,6) //terceiro campo
cRN += " " +cCampo4 //dig verificador geral
cRN += " " +cCampo5 // fator de vencimento e valor nominal do titulo
Return({cCB,cRN,cNN})
/*
_____________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Programa ¦ xAlfaCBar ¦ Autor ¦ Danillo Nogueira ¦ Data ¦ 18/01/2022 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçào ¦ Monta codigo de barras e linha digital do banco Alfa. ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦ Uso ¦ ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/
Static Function xAlfaCBar(cPrefixo,cNumero,cParcela,cTipo,cBanco,cAgencia,cConta,cDacCC,cNroDoc,nVlrTit,cCart,cMoeda)
Local cNosso := ' ',;
nNum := ' ',;
cCampoL := ' ',;
cFatorValor := ' ',;
cLivre := ' ',;
cDigBarra := ' ',;
cBarra := ' ',;
cParte1 := ' ',;
cDig1 := ' ',;
cParte2 := ' ',;
cDig2 := ' ',;
cParte3 := ' ',;
cDig3 := ' ',;
cParte4 := ' ',;
cParte5 := ' ',;
cDigital := ' ',;
aRet := {}
cCartAux := "00"
cAgencia := StrZero(Val(cAgencia),4)
cNosso := ' '
//Formulacao do nosso numero
If ( Len(AllTrim(cNroDoc)) == 12 ) // Ja esta pronto nao precisa verIficar digito
nNum := SubStr(cNroDoc,1,11)
cNosso := cNroDoc
Else
nNum := StrZero(Val(cNroDoc),11)
// (BOLETOS 025): Caso a carteira indicada por Alfa a ser utilizada for 11, 21, 31 ou 41, considerar, neste caso a carteira como sendo “00”.
// (utilize somente para cálculo do dígito do nosso número)
If cCart $ '011/021/031/041'
cNosso := nNum + Modulo11(StrZero(Val(cCartAux),2)+nNum)
Else
cNosso := nNum + Modulo11(StrZero(Val(cCart),2)+nNum)
EndIf
EndIf
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Numero s/ digito..:' + nNum,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Numero c/ digito..:' + cNosso,0,0,{})
//Campo Livre - VerIficar a conta e carteira
// 01 a 04 - 04 - Agencia Cedente
// 05 a 06 - 02 - Carteira
// 07 a 17 - 11 - Nosso Numero sem o digito
// 18 a 24 - 07 - Conta Corrente sem o digito
// 25 a 25 - 01 - Zero
cCampoL := cAgencia + StrZero(Val(cCart),2) + Substr(Alltrim(cNosso),2,11) + StrZero(Val(cConta),7) + '0'
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Agencia..:' + cAgencia ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Carteira.:' + StrZero(val(cCart),2) ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Nosso Num s/digito.:' + nNum ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Conta Cedente..:' + StrZero(Val(cConta),7) ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Formado campo-livre..:' + cCampoL ,0,0,{})
//Campo livre do codigo de barra - verIficar a conta
cFatorValor := xFator()+StrZero(nVlrTit*100,10)
//Monta o campo Livre
// 000000000111111111122222222223333333333444444444455555555556
// 123456789012345678901234567890123456789012345678901234567890
// 2379?XXXX$$$$$$$$$$LLLLLLLLLLLLLLLLLLLLLLLLL
// x xx x x x
cLivre := cBanco + cMoeda + cFatorValor + cCampoL
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Banco..:' + cBanco ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Moeda..:' + cMoeda ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Fator+Valor..:' + cFatorValor ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Campo Livre..:' + cCampoL ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Codigo para gerar o codigo de barras..:' + cLivre ,0,0,{})
//Campo do codigo de barra
cDigBarra := xCalc_5pBarra(cLivre)
cBarra := SubStr(cLivre,1,4)+cDigBarra+SubStr(cLivre,5,43)
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Digito Calculado..:' + cDigBarra ,0,0,{})
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Codigo Completo...:' + cBarra ,0,0,{})
//Composicao da linha digitavel
cParte1 := cBanco + cMoeda + SubStr(cCampoL,1,5)
cDig1 := xCalcDAC( cParte1 )
cParte2 := SubStr(cCampoL,6,10)
cDig2 := xCalcDAC( cParte2 )
cParte3 := SubStr(cCampoL,16,10)
cDig3 := xCalcDAC( cParte3 )
cParte4 := ' '+cDigBarra+' '
cParte5 := cFatorValor
cDigital := SubStr(cParte1,1,5)+'.'+SubStr(cParte1,6,4)+cDig1+' '+;
SubStr(cParte2,1,5)+'.'+SubStr(cParte2,6,5)+cDig2+' '+;
SubStr(cParte3,1,5)+'.'+SubStr(cParte3,6,6)+cDig3+;
cParte4+;
cParte5
Aadd(aRet,cBarra)
Aadd(aRet,cDigital)
Aadd(aRet,cNosso)
Return aRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xSicrVerfBar ºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - SICREDI º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xSicrVerfBar(cBanco,cAgencia,cConta,cDacCC,cNroDoc,nValor,dVencto,dEmissa,aDadosBanco)
Local cValorFinal := Strzero(nValor*100,10)
Local cFator := Strzero(dVencto - ctod('07/10/97'),4)
Local cCart := Alltrim(aDadosBanco[6])
//Carteira
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicao do NOSSO NUMERO³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cNroDoc := StrZero(val(cNroDoc),5)
nDvnn := Modulo11Sc(cAgencia+cCart+SubStr(cConta,1,5)+SubString(Alltrim(Str(Year(dEmissa))),3,2)+"2"+cNroDoc)
cNosso := SubString(Alltrim(Str(Year(dEmissa))),3,2)+"2"+cNroDoc+nDvnn
cNN := cCart+cNroDoc+nDvnn
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Campo utilizado para calculo do Codigo de Barras e linha digitavel³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampoLivre := "11"+cNosso+cAgencia+cCart+SubStr(cConta,1,5)+"10"
cCampoLivre += DVCPOLSc(cCampoLivre)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicao do CODIGO DE BARRAS³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//Dados para Calcular o Dig Verificador Geral
/*
TSCB56 - Rafael de Souza
Ajustes no dv geral e no div3
*/
cBarra := cBanco + DVGerSc(cBanco+cFator+cValorFinal+cCampoLivre) + cFator + cValorFinal + cCampoLivre
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicao da LINHA DIGITAVEL (Representacao Numerica) ³
//³Campo 1 Campo 2 Campo 3 Campo 4 Campo 5 ³
//³AAABC.CCDDX DDDDD.DDFFFY FGGGG.GGHHHZ K UUUUVVVVVVVVVV ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 1: ³
//³AAA = Codigo do banco na Camara de Compensacao ³
//³ B = Codigo da moeda, sempre 9 ³
//³CCC = Codigo da Carteira de Cobranca ³
//³ DD = Dois primeiros digitos no nosso numero ³
//³ X = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampo1 := cBanco + SubStr(cBarra,20,5)
nDigito := Alltrim(Str(Modulo10(cCampo1)))
cRN := SubStr(cCampo1,1,5)+'.'+SubStr(cCampo1,6,4)+AllTrim((nDigito))+Space(02)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 2: ³
//³DDDDDD = Restante do Nosso Numero ³
//³ E = DAC do campo Agencia/Conta/Carteira/Nosso Numero ³
//³ FFF = Tres primeiros numeros que identIficam a agencia ³
//³ Y = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cCampo2 := SubStr(cBarra,25,10)
nDigito := Alltrim(Str(Modulo10(cCampo2)))
cRN += SubStr(cCampo2,1,5)+'.'+SubStr(cCampo2,6,5)+AllTrim((nDigito))+Space(02)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 3: ³
//³ F = Restante do numero que identIfica a agencia ³
//³GGGGGG = Numero da Conta + DAC da mesma ³
//³ HHH = Zeros (Nao utilizado) ³
//³ Z = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//3o campo: composto pelas posições 16 a 25 do campo livre e o dígito verificador desse 3o campo;
cCampo3 := SubStr(cBarra,35,10)
nDigito := Alltrim(Str(Modulo10(cCampo3)))
cRN += SubStr(cCampo3,1,5)+'.'+SubStr(cCampo3,6,5)+AllTrim(nDigito)+Space(02)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 4: ³
//³ K = DAC do Codigo de Barras³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cRN += Space(01)+DVGerSc(cBanco+cFator+cValorFinal+cCampoLivre)+Space(01)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³CAMPO 5: ³
//³ UUUU = Fator de Vencimento ³
//³VVVVVVVVVV = Valor do Titulo ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cRN += SubStr(cBarra,6,4)+SubStr(cBarra,10,10)
Return({cBarra,cRN,cNosso})
/*/{Protheus.doc} xSFCalcDigN
Calculo do DV do nosso número, banco safra
@type function
@version 1.0
@author JF
@since 23/06/2021
@param cVariavel, character, nosso número
/*/
Static Function xSFCalcDigN(cVariavel)
Local ni := 0
Local Auxi := 0,;
SumDig := 0,;
dv := 0
cbase := cVariavel
lbase := Len(cBase)
base := 9
sumdig := 0
Auxi := 0
iDig := 1
For ni := 1 to lbase
If ( base == 1 )
base := 9
EndIf
auxi := Val(SubStr(cBase, ni, 1)) * base
sumdig += auxi
base--
Next ni
auxi := mod(Sumdig,11)
If ( auxi > 1 )
dv := 11 - auxi
Elseif( auxi == 0)
dv := 1
else
dv := 0
EndIf
Return(dv)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xBBCalcDigNºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Para calculo do nosso numero do banco do brasil º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xBBCalcDigN(cVariavel)
Local Auxi := 0,;
SumDig := 0
cbase := cVariavel
lbase := Len(cBase)
base := 9
sumdig := 0
Auxi := 0
iDig := lBase
While iDig >= 1
If ( base == 1 )
base := 9
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig += auxi
base--
iDig--
End
auxi := mod(Sumdig,11)
If ( auxi == 10 )
auxi := 'X'
Else
auxi := str(auxi,1,0)
EndIf
Return(auxi)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³xBraCalcDigNºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Para calculo do nosso numero do Bradesco.... º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xBraCalcDigN(cVariavel)
Local Auxi := 0,;
SumDig := 0
cbase := cVariavel
lbase := Len(cBase)
base := 2
sumdig := 0
Auxi := 0
iDig := lBase
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Vou Calcular o Digito de..:' + cBase ,0,0,{})
While iDig >= 1
If ( base == 8 )
base := 2
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig += auxi
base++
iDig--
End
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Somado..:' + Str(sumdig) ,0,0,{})
auxi := 11 - mod(Sumdig,11)
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Digito inicial..:' + Str(auxi) ,0,0,{})
If ( auxi == 10 )
auxi := 'P'
ElseIf ( auxi == 11 )
auxi := '0'
Else
auxi := str(auxi,1,0)
EndIf
Return(auxi)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao xMoCalcDigN º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Para calculo do nosso numero do Money.... º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xMoCalcDigN(cVariavel)
Local Auxi := 0,;
SumDig := 0
cbase := cVariavel
lbase := Len(cBase)
base := 2
sumdig := 0
Auxi := 0
iDig := lBase
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Vou Calcular o Digito de..:' + cBase ,0,0,{})
While iDig >= 1
If ( base == 8 )
base := 2
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig += auxi
base++
iDig--
End
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Somado..:' + Str(sumdig) ,0,0,{})
auxi := 11 - mod(Sumdig,11)
FwLogMsg( "INFO", " ", "INFO" , FunName(), "" , "01" , 'Digito inicial..:' + Str(auxi) ,0,0,{})
If ( auxi == 10 )
auxi := 'P'
ElseIf ( auxi == 11 )
auxi := '0'
Else
auxi := str(auxi,1,0)
EndIf
Return(auxi)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ xCalcDAC ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Para calculo da linha digitavel do Banco do Brasil º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xCalcDAC(cVariavel)
Local Auxi := 0
Local sumdig := 0
cbase := cVariavel
lbase := LEN(cBase)
umdois := 2
sumdig := 0
Auxi := 0
iDig := lBase
While ( iDig >= 1 )
auxi := Val(SubStr(cBase, idig, 1)) * umdois
sumdig := SumDig + If (auxi < 10, auxi, (auxi-9))
umdois := 3 - umdois
iDig := iDig-1
End
cValor := AllTrim(Str(sumdig,12))
nDezena := Val(AllTrim(Str(Val(SubStr(cvalor,1,1))+1,12))+'0')
auxi := nDezena - sumdig
If ( auxi >= 10 )
auxi := 0
EndIf
Return(str(auxi,1,0))
Static Function xDACBB(cVariavel)
Local Auxi := 0
Local sumdig := 0
//A representação numérica do código de barras é composta, por cinco campos, sendo os
//três primeiros amarrados por DVs e calculados pelo módulo 10, conforme segue:
//a) O módulo 10 deverá ser utilizado para calcular o DV dos 03 (três) primeiros campos
//da linha digitável;
cbase := cVariavel
lbase := LEN(cBase)
umdois := 2 //b) Os multiplicadores começam com o número 2 (dois), sempre pela direita, alternandose 1 e 2;
sumdig := 0
Auxi := 0
iDig := lBase
While ( iDig >= 1 )
//c) Multiplicar cada algarismo que compõe o número pelo seu respectivo peso (multiplicador)
auxi := Val(SubStr(cBase, idig, 1)) * umdois
//d) Caso o resultado da multiplicação seja maior que 9 (nove) deverão ser somados os
//algarismos do produto, até reduzi-lo a um único algarismo:
//Exemplo: Resultado igual a 18, então 1+8 = 9
//e) Subtrair o total apurado no item anterior, da dezena imediatamente superior ao total apurado:
//Exemplo: Resultado da soma igual a 25, então 30 - 25
sumdig := SumDig + If (auxi < 10, auxi, (auxi-9))
umdois := 3 - umdois //alternando-se 1 e 2
iDig := iDig-1
End
//f) O resultado obtido será o dígito verIficador do número;
//Exemplo: 30-25 = 5 então 5 é o Dígito VerIficador
cValor := AllTrim(Str(sumdig,12))
//nDezena := Val(AllTrim(Str(Val(SubStr(cvalor,1,1))+1,12))+'0')
nDezena := IIf(Val(cValor) < 10,10,Val(cValToChar(Val(SubStr(cValor,1,1))+1)+'0'))
auxi := nDezena - sumdig
//g) Se o resultado da subtração for igual a 10 (dez), o dígito verIficador será igual a 0 (zero).
If ( auxi >= 10 )
auxi := 0
EndIf
Return(str(auxi,1,0))
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍ????ÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ FATOR ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Calculo do FATOR de vencimento para linha digitavel. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xFator()
If Len(AllTrim(SubStr(DTOC(SE1->E1_VENCTO),7,4))) = 4
cData := SubStr(DTOC(SE1->E1_VENCTO),7,4)+SubStr(DTOC(SE1->E1_VENCTO),4,2)+SubStr(DTOC(SE1->E1_VENCTO),1,2)
Else
cData := '20'+SubStr(DTOC(SE1->E1_VENCTO),7,2)+SubStr(DTOC(SE1->E1_VENCTO),4,2)+SubStr(DTOC(SE1->E1_VENCTO),1,2)
EndIf
cFator := STR(1000+(STOD(cData)-STOD('20000703')),4)
Return(cFator)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³ CALC_5p ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Calculo do digito do nosso numero º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function CALC_5p(cVariavel)
Local Auxi := 0,;
sumdig := 0
cbase := cVariavel
lbase := LEN(cBase)
base := 2
sumdig := 0
Auxi := 0
iDig := lBase
While ( iDig >= 1 )
If ( base >= 10 )
base := 2
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig := SumDig+auxi
base++
iDig--
End
auxi := mod(sumdig,11)
If ( auxi == 0 ) .Or. ( auxi == 1 ) .Or. ( auxi >= 10 )
auxi := 1
Else
auxi := 11 - auxi
EndIf
Return(Str(auxi,1,0))
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³xCalc_5pBarraºAutor³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Calculo do digito verIficador da 5 posicao /Codigo de barraº±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA ³ ANALISTA ³ MOTIVO º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º ³ ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xCalc_5pBarra(cVariavel)
Local Auxi := 0,;
sumdig := 0
cbase := cVariavel
lbase := LEN(cBase)
base := 2
sumdig := 0
Auxi := 0
iDig := lBase
While ( iDig >= 1 )
If ( base >= 10 )
base := 2
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig := SumDig+auxi
base++
iDig--
End
auxi := mod(sumdig,11)
If ( auxi == 0 ) .Or. ( auxi == 1 ) .Or. ( auxi > 9 )
auxi := 1
Else
auxi := 11 - auxi
EndIf
Return(Str(auxi,1,0))
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ Modulo10 ³ Autor ³ Danyel Bernuci ³ Data ³ 22/09/05 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descriçào ³ Calculo do Modulo 10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ EspecIfico para Integral Seguranca ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function Modulo10(cData)
LOCAL L,D,P := 0
LOCAL B := .F.
L := Len(cData)
B := .T.
D := 0
While L > 0
P := Val(SubStr(cData, L, 1))
If (B)
P := P * 2
If P > 9
P := P - 9
EndIf
EndIf
D := D + P
L := L - 1
B := !B
End
D := 10 - (Mod(D,10))
If D = 10
D := 0
End
Return(D)
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ Mod11B9 ³ Autor ³ Danyel Bernuci ³ Data ³ 22/09/05 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descriçào ³ Calculo do Modulo 11 na Base 9 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ EspecIfico para Integral Seguranca ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function Mod11B9(cData)
LOCAL L, D, P := 0
L := Len(cdata)
D := 0
P := 1
While L > 0
P := P + 1
D := D + (Val(SubStr(cData, L, 1)) * P)
If P = 9 //Base 9
P := 1
End
L := L - 1
End
D := 11 - (mod(D,11))
If (D == 0 .Or. D == 1 .Or. D == 10 .Or. D == 11)
D := 1
End
Return(D)
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ Modu11 ³ Autor ³ Danillo Nogueira ³ Data ³ 19/11/2021³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descriçào ³ Calculo do Modulo 11 na Base 9 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ EspecIfico para Ciaxa Economica ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function Modu11(cLinha,cBase,cTipo)
Local cDigRet
Local nSoma:= 0
Local nResto
Local nCont
Local nFator:= 9
Local nResult
Local _cBase := If( cBase = Nil , 9 , cBase )
Local _cTipo := If( cTipo = Nil , '' , cTipo )
For nCont:= Len(cLinha) TO 1 Step -1
nFator++
If nFator > _cBase
nFator:= 2
EndIf
nSoma += Val(Substr(cLinha, nCont, 1)) * nFator
Next nCont
nResto:= Mod(nSoma, 11)
nResult:= 11 - nResto
If _cTipo = 'P'
If nResto == 0
cDigRet:= "0"
ElseIf nResto == 1
cDigRet:= "P"
Else
cDigRet:= StrZero(11 - nResto, 1)
EndIf
Else
If nResult > 9
cDigRet:= "0"
Else
cDigRet:= StrZero(11 - nResto, 1)
EndIf
EndIf
Return cDigRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³xSicoobVrfBarºAutor³Luis Henrique RobustoºData³ 27/12/2011 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ CALCULA E MONTA CODIGO DE BARRAS - SICOOB º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xSicoobVrfBar(cPrefixo,cNumero,cParcela,cTipo,cBanco,cAgencia,cConta,cDacCC,cNroDoc,nVlrTit,cCart,cMoeda,cConvenio,dVencto)
Local cFatVenc := (dVencto - ctod('03/07/2000'))+1000
Local blvalorfinal := Strzero(Round(nVlrTit,2)*100,10)
Local cNosso := ' '
Local nNum := ' '
cAgencia := StrZero(Val(cAgencia),4)
cNosso := ' '
nTamNN := SEE->EE_TAM_NN
nNum := SubStr(cNroDoc,1,nTamNN)
_NumSICOOB := AllTrim(cAgencia) + StrZero(Val(AllTrim(cConvenio)),10) + AllTrim(nNum)
_Converte := AllTrim(ConvParc(AllTrim(cParcela)))
_Parc := IIF(Empty(_Converte),"001",STRZERO(VAL(_Converte),3))
cDvn := xSicMod11(_NumSICOOB,SubStr(cBanco,1,3),.F.)
cCpoLivre := "1" + AllTrim(cAgencia) + "01" + StrZero(Val(AllTrim(cConvenio)),7) + AllTrim(nNum)+ cDvn + _Parc
cCBSemDig := cBanco + cMoeda + cValToChar(cFatVenc) + cValToChar(blvalorfinal) + cValToChar(cCpoLivre)
cCodBarra := cBanco + cMoeda + xSicMod11(cCBSemDig,cBanco,.T.) + cValToChar(cFatVenc) + cValToChar(blvalorfinal) + cValToChar(cCpoLivre)
//Digito Verificador do Primeiro Campo
cPrCpo := cBanco + cMoeda + SubStr(cCodBarra,20,5)
cDvPrCpo := AllTrim(Str(Modulo10(cPrCpo)))
//Digito Verificador do Segundo Campo
cSgCpo := SubStr(cCodBarra,25,10)
cDvSgCpo := AllTrim(Str(Modulo10(cSgCpo)))
//Digito Verificador do Terceiro Campo
cTrCpo := SubStr(cCodBarra,35,7)+SubStr(cCodBarra,42,3)//SubStr(cCodBarra,35,10)
cDvTrCpo := AllTrim(Str(Modulo10(cTrCpo)))
//Digito Verificador Geral
cDvGeral := SubStr(cCodBarra,5,1)
//LINHA DIGITAVEL
cLindig := SubStr(cPrCpo,1,5) + "." + SubStr(cPrCpo,6,4) + cDvPrCpo + " " //primeiro campo
cLinDig += SubStr(cSgCpo,1,5) + "." + SubStr(cSgCpo,6,5) + cDvSgCpo + " " //segundo campo
cLinDig += SubStr(cTrCpo,1,5) + "." + SubStr(cTrCpo,6,5) + cDvTrCpo + " " //terceiro campo
cLinDig += " " + cDvGeral //dig verificador geral
cLinDig += " " + SubStr(cCodBarra,6,4)+SubStr(cCodBarra,10,10)
Return({cCodBarra,cLinDig,nNum+cDvn})
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xSendMailCli
Funcao Auxiliar para enviar e-mail para o cliente com o boleto
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xSendMailCli(_aMails)
Local _nxT := 0
Local _nLin := 0
Local _cMensagem := ""
Local _cFrom := AllTrim(GetNewPar("MV_COBRBOL",,cFilAnt))
Local aDadSM0 := {}
// Tratamento específico para HARDEN, pois está na mesma base da HELI e é identificado pelos produtos
Local lHarden := .F.
If IsInCallStack("U_FLXA1FAT")
lHarden := IsHarden(_aMails[1][4][1][3]) // Envia a primeira chave apenas
EndIf
aDadSM0 := FWSM0Util():GetSM0Data(cEmpAnt,cFilAnt,{"M0_TEL","M0_FILIAL","M0_CIDCOB","M0_ESTCOB"})
For _nxT := 1 to Len(_aMails)
_cMensagem := ""
If File(_aMails[_nxT][1])
// Monta o corpo da mensagem
_cMensagem := ""
_cMensagem += CHR_CENTER_OPEN + CHR_CENTER_CLOSE + CHR_ENTER
_cMensagem += CHR_FONT_DET_OPEN
Do Case
Case SubStr(Time(),1,2) <= "12"
_cMensagem += OemToAnsi('Bom dia, ') + CHR_ENTER + CHR_ENTER
Case SubStr(Time(),1,2) > "12" .and. SubStr(Time(),1,2) <= "17"
_cMensagem += OemToAnsi('Boa Tarde, ') + CHR_ENTER + CHR_ENTER
OtherWise
_cMensagem += OemToAnsi('Boa Noite, ') + CHR_ENTER + CHR_ENTER
End Case
//Corpo do e-mail
If ! _lProcAutoB // Nao for automatico
if !Empty(cMsgPers)
_cMensagem += cMsgPers
elseIf U_RtIsEmpFil({ {"06"} })
_cMensagem += OemToAnsi('Você acaba de receber um boleto da Rech.') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Sempre estamos pensando em formas de tornar tudo mais fácil e prático.') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Caso você precise de esclarecimentos sobre o boleto ou até mesmo ') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('solicitar outra cópia impressa, entre em contato com a unidade que lhe faz atendimento. ') + CHR_ENTER + CHR_ENTER
_cMensagem += " O pagamento pontual evita a cobrança de encargos moratórios e o bloqueio de seu limite de crédito. "+ CHR_ENTER + CHR_ENTER
_cMensagem += " A Rech agradece."+ CHR_ENTER + CHR_ENTER
Else
_cMensagem += CHR_NEGRITO + _aMails[_nxT][3] + CHR_NOTNEGRITO + CHR_ENTER + CHR_ENTER
_cMensagem += ''
_cMensagem += ""
_cMensagem += ""+OemToAnsi('FIQUE ATENTO A FRAUDE DO BOLETO!')+"
"
_cMensagem += OemToAnsi('A RECH IMPORTADORA E DISTRIBUIDORA S/A. alerta seus clientes sobre o envio de boletos bancários fraudulentos por e-mail utilizando o nome da empresa. VerIfique se o remetente do e-mail enviado é .....@rechtratores.com.br. Se suspeitar de alguma mensagem eletrônica NÃO PAGUE O BOLETO e entre em contato conosco através do telefone (47) 3248-6000. Recomendamos que qualquer e-mail recebido por outro remetente ou formato dIferente do especIficado acima, seja desconsiderado. ')+" |
"+ CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Você acaba de receber um boleto do Grupo Rech.') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Sempre estamos pensando em formas de tornar tudo mais fácil e prático.') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Caso você precise de esclarecimentos sobre o boleto ou até mesmo ') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('solicitar outra cópia impressa, entre em contato com a ') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('unidade que lhe faz atendimento, pelo telefone ' + AllTrim(aDadSM0[1][2]) + ' ou e-mail: ' + AllTrim(GetNewPar("MV_COBRBOL",,cFilAnt))) + CHR_ENTER + CHR_ENTER
_cMensagem += CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Caso este boleto já tenha sido quitado, por favor, aceite nossas desculpas e desconsidere-o.') + CHR_ENTER + CHR_ENTER + CHR_NEGRITO
_cMensagem += OemToAnsi('ATENÇÃO: Este mesmo boleto foi enviado juntamente com as mercadorias. Confira e evite pagamento em duplicidade.') + CHR_ENTER + CHR_ENTER + CHR_ENTER + CHR_NOTNEGRITO
EndIf
Else
if !Empty(cMsgPers)
_cMensagem += cMsgPers
else
_cMensagem += OemToAnsi('Para sua comodidade estamos novamente enviando o nosso boleto bancário,') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Lembre-se que até a data de vencimento, o boleto poderá ser pago em qualquer agência bancária ou lotérica.') + CHR_ENTER + CHR_ENTER
_cMensagem += OemToAnsi('Caso você já tenha recebido este boleto, desconsidere este e-mail ou entre em contato com nossa central de cobranças para maiores detalhes, ') + CHR_ENTER + CHR_ENTER
If lHarden
_cMensagem += OemToAnsi('pelo telefone (47) 3349-6204 ou e-mail: cobranca.maquinas@rechtratores.com.br ou contato@hardenferramentas.com.br ') + CHR_ENTER + CHR_ENTER
Else
_cMensagem += OemToAnsi('pelo telefone ' + AllTrim(aDadSM0[1][2]) + ' ou e-mail: ' + AllTrim(GetNewPar("MV_COBRBOL",,cFilAnt))) + CHR_ENTER + CHR_ENTER
EndIf
EndIF
_cMensagem += CHR_ENTER + CHR_ENTER
If Len(_aMails[_nxT][4]) > 0
_cMensagem += OemToAnsi('Documentos relacionados a este boleto:') + CHR_ENTER
_cMensagem += ''
_cMensagem += ""
_cMensagem += "Documento | "
_cMensagem += "Especie | "
_cMensagem += "Chave Nf-e | "
_cMensagem += "
"
For _nLin := 1 to Len(_aMails[_nxT][4])
_cMensagem += ""
_cMensagem += ""+_aMails[_nxT][4][_nLin][1]+" | "
_cMensagem += ""+_aMails[_nxT][4][_nLin][2]+" | "
_cMensagem += ''+_aMails[_nxT][4][_nLin][3]+' | '
_cMensagem += "
"
Next _nLin
_cMensagem += "
"
_cMensagem += CHR_ENTER + CHR_ENTER
EndIf
_cMensagem += OemToAnsi('Não deixe de acompanhar nossas promoções e novos produtos.') + CHR_ENTER + CHR_ENTER + CHR_NEGRITO
_cMensagem += OemToAnsi('Estamos a cada dia melhorando, para que você tenha a melhor solução.') + CHR_ENTER + CHR_ENTER + CHR_ENTER + CHR_NOTNEGRITO
EndIf
//Rodopé da mensagem
_cMensagem += CHR_LINE + CHR_ENTER + CHR_NEGRITO
_cMensagem += OemToAnsi('Empresa: ') + AllTrim(aDadSM0[2][2]) + CHR_NOTNEGRITO + CHR_ENTER
_cMensagem += OemToAnsi('Cidade: ') + AllTrim(aDadSM0[3][2])+'/'+AllTrim(aDadSM0[4][2]) + CHR_NOTNEGRITO + CHR_ENTER
_cMensagem += CHR_NEGRITO + OemToAnsi('Equipe de Faturamento e Cobranças') + CHR_ENTER + CHR_NOTNEGRITO
_cMensagem += CHR_ENTER + CHR_LINE
_cMensagem += CHR_FONT_DET_CLOSE
// Chama funcao customizada do grupo rech para enviar e-mail
If ! Empty(_aMails[_nxT][2])
If ! U_RtMailNow(,OemToAnsi('Boleto para Pagamento - ' + IIf(lHarden, 'HARDEN FERRAMENTAS', 'Rech')),,,_cFrom,{_aMails[_nxT][1]},,_aMails[_nxT][2],_cMensagem,,.t.)
If _lProcAutoB
U_LogAutoPad("BOLETO COM ALERTA (-3) ERRO DE ENVIO ",,,"fin003w")
EndIf
elseif SuperGetMV("MV_ENVFRD",,.F.)
xAlertFrd(_cFrom, _aMails[_nxT][2])
EndIf
EndIf
// Exclui o arquivo, para que seja gerado o próximo e nao fique lixo.
_cMensagem := ""
EndIf
Next _nxT
Return( Nil )
Static Function xAlertFrd(_cFrom, cMailDst)
Local _cMensagem := ""
Default cMailDst := ""
Default _cFrom := AllTrim(GetNewPar("MV_COBRBOL",,cFilAnt))
Do Case
Case SubStr(Time(),1,2) <= "12"
_cMensagem += OemToAnsi('Bom dia, ') + CHR_ENTER + CHR_ENTER
Case SubStr(Time(),1,2) > "12" .and. SubStr(Time(),1,2) <= "17"
_cMensagem += OemToAnsi('Boa Tarde, ') + CHR_ENTER + CHR_ENTER
OtherWise
_cMensagem += OemToAnsi('Boa Noite, ') + CHR_ENTER + CHR_ENTER
End Case
_cMensagem += "Em razão de FRAUDE que vem ocorrendo no mercado, ressaltamos que todos os nossos boletos são enviados por e-mail com domínio rech.com/ rechagricola.com.br / rechtratores.com.br / agrocompetence.com " + CHR_ENTER
_cMensagem += "Caso você receba boleto de outro e-mail que não possua um dos domínios acima ou algum contato mencionando ser do jurídico com informação de protesto, pedimos que entre em contato com o nosso departamento de CONTAS A RECEBER imediatamente. " + CHR_ENTER
_cMensagem += "É de extrema importância e responsabilidade, após a leitura do código de barras confirmar o nome do beneficiário final, sendo sempre RECH TRATORES ou RECH AGRÍCOLA. " + CHR_ENTER
_cMensagem += "Agradecemos a compreensão. " + CHR_ENTER
_cMensagem += "Qualquer dúvida entrar em contato com a Unidade de faturamento ou com Camila, no e-mail: camila.amadei@rech.com " + CHR_ENTER + CHR_ENTER
_cMensagem += "Atenciosamente, " + CHR_ENTER + CHR_ENTER
_cMensagem += "Financeiro Rech"
U_RtMailNow(cMailDst,OemToAnsi('RECH INFORMA: Comunicado Importante: Alerta de Fraude!'),,,_cFrom,,,,_cMensagem)
Return
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³xVerOrigTitºAutor³Douglas Adams º Data ³ 15/07/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Funcao para checar a origem do titulo. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Funcao Principal º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xVerOrigTit(__cPref,__cNum,__cParc,__cTipo,__cCli,__cLoj,_cNumLiq)
Local _aAreaOld := SF2->(GetArea())
Local _aAreaE1O := SE1->(GetArea())
Local _cQuery1 := ' '
Local _Chave := ' '
// VerIfica o Tipo de Título.
Do Case
//Se tipo NF gera direto os dados da Nota Fiscal
Case __cTipo = "NF"
DbSelectArea("SF2")
SF2->(DbSetOrder(1))
If SF2->(DbSeek(xFilial("SF2")+__cNum+__cPref+__cCli+__cLoj))
aAdd(_aNfOrig,{SF2->F2_DOC,SF2->F2_ESPECIE,SF2->F2_CHVNFE})
EndIf
//Se tipo BL e prefixo FAT busca dados da Nota Fiscal filtrando pelo númedo da fatura
Case (__cTipo = "BL") .AND. (__cPref = "FAT")
DbSelectArea("SE1")
SE1->(DbSetOrder(10))
If SE1->(DbSeek(xFilial("SE1")+__cCli+__cLoj+__cPref+__cNum))
While SE1->( ! Eof() ) .and. ;
( SE1->E1_FILIAL+SE1->E1_CLIENTE+SE1->E1_LOJA+SE1->E1_FATPREF+SE1->E1_FATURA == xFilial("SE1")+__cCli+__cLoj+__cPref+__cNum )
If SE1->E1_TIPO = "NF"
DbSelectArea("SF2")
SF2->(DbSetOrder(1))
If SF2->(DbSeek(xFilial("SF2")+SE1->E1_NUM+SE1->E1_PREFIXO+SE1->E1_CLIENTE+SE1->E1_LOJA))
If _Chave <> SF2->F2_CHVNFE
_Chave := SF2->F2_CHVNFE
aAdd(_aNfOrig,{SF2->F2_DOC,SF2->F2_ESPECIE,SF2->F2_CHVNFE})
EndIf
EndIf
EndIf
SE1->(DbSkip())
End
EndIf
//Se prefixo Liquidacao monta a query para busca os dados da Nota Fiscal de Liquidacao
Case (__cPref = "LIQ")
_cQuery1 := " SELECT SE1.E1_FILIAL, SE1.E1_CLIENTE, SE1.E1_LOJA, SE1.E1_NUM, SE5.E5_TIPO, SE1.E1_PREFIXO "
_cQuery1 += " FROM " + RetSqlName('SE5') + ' SE5, ' + RetSqlName('SE1') + ' SE1 '
_cQuery1 += " WHERE SE1.E1_PREFIXO = SE5.E5_PREFIXO "
_cQuery1 += " AND SE1.E1_NUM = SE5.E5_NUMERO "
_cQuery1 += " AND SE1.E1_PARCELA = SE5.E5_PARCELA "
_cQuery1 += " AND SE5.E5_FILIAL = '" + xFilial('SE5') + "' "
_cQuery1 += " AND SE5.E5_DOCUMEN = '" + _cNumLiq + "' "
_cQuery1 += " AND SE5.E5_RECPAG = 'R' "
_cQuery1 += " AND SE5.E5_TIPODOC = 'BA' "
_cQuery1 += " AND SE5.E5_SITUACA <> 'C' "
_cQuery1 += " AND SE5.E5_MOTBX = 'LIQ' "
_cQuery1 += " AND SE5.D_E_L_E_T_ = ' ' "
_cQuery1 += " AND SE1.E1_FILIAL = '" + xFilial('SE1') + "' "
_cQuery1 += " AND SE1.D_E_L_E_T_ = ' ' "
_cQuery1 += " ORDER BY SE1.E1_FILIAL, SE1.E1_CLIENTE, SE1.E1_LOJA, SE1.E1_NUM, SE1.E1_TIPO, SE1.E1_PREFIXO "
DbUseArea(.T.,"TOPCONN",TCGenQry(,,_cQuery1),'TRD',.F.,.T.)
While TRD->( ! Eof() )
If TRD->E5_TIPO = "NF"
DbSelectArea("SF2")
SF2->(DbSetOrder(1))
If SF2->(DbSeek(xFilial("TRD")+TRD->E1_NUM+TRD->E1_PREFIXO+TRD->E1_CLIENTE+TRD->E1_LOJA))
aAdd(_aNfOrig,{SF2->F2_DOC,SF2->F2_ESPECIE,SF2->F2_CHVNFE})
EndIf
EndIf
TRD->(DbSkip())
End
TRD->(DbCloseArea())
End Case
// Restaura a area anterior ao procedimento.
RestArea(_aAreaE1O)
RestArea(_aAreaOld)
Return(_aNfOrig)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xSantBar
Funcao auxiliar para codigo barras Santander
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function XSANTBAR(cBanco,cAgencia,cConta,cDacCC,cNumNN,nValor,dVencto,cCart,cCedente)
LOCAL cValorFinal := strzero((nValor - U_AddTxBol())*100,10)
LOCAL nDvcb := 0
LOCAL cRN := ''
LOCAL cCB := ''
LOCAL cS := ''
LOCAL cFator := strzero(dVencto - ctod("07/10/97"),4)
Local cNrBancario := ""
Local cDVNrBanc := ""
cNumNN := Alltrim(cNumNN)
cDVNrBanc := Modulo11Nn(Alltrim(cNumNN))
cNrBancario := Alltrim(cNumNN) + Alltrim(str(cDVNrBanc))
//----------------------------------
// Definicao do CODIGO DE BARRAS
//----------------------------------
// cBanco está igual a 0339
cS:= cBanco + cFator + cValorFinal + "9" + cCedente + cNrBancario + "0" + cCart
nDvcb := Mod11B9(cS)
cCB := SubStr(cS, 1, 4) + AllTrim(Str(nDvcb)) + SubStr(cS,5,39)
//-------- Definicao da LINHA DIGITAVEL (Representacao Numerica)
// Campo 1 Campo 2 Campo 3 Campo 4 Campo 5
// AAABC.DDDDX EEEFF.FFFFFY GGGGG.GHJJJZ K UUUUVVVVVVVVVV
// CAMPO 1:
// AAA = Codigo do banco na Camara de Compensacao
// B = Codigo da moeda, sempre 9
// C = Fixo "9"
// DDDD = 4 Primeiras posicoes do codigo do cedente padrao Santander Banespa
// X = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo
cS1 := cBanco + "9" + SubStr(cCedente,1,4)
nDv1 := modulo10(cS1)
cRN1 := SubStr(cS1, 1, 5) + '.' + SubStr(cS1, 6, 4) + AllTrim(Str(nDv1)) + ' '
// CAMPO 2:
// EEE = Restante do Codigo do Cedente padrao Santander Banesp
// FFFFFFF = Sete primeiros campos do Nosso Numero
// Y = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo
cS2 := SubStr(cCedente,5,3) + SubStr(cNrBancario,1,7)
nDv2:= modulo10(cS2)
cRN2:= SubStr(cS2, 1, 5) + '.' + SubStr(cS2, 6, 5) + AllTrim(Str(nDv2)) + ' '
// CAMPO 3:
// GGGGGG = Restante do Nosso Numero
// H = 0 (Conteudo Fixo)
// JJJ = Carteira
// Z = DAC que amarra o campo, calculado pelo Modulo 10 da String do campo
cS3 := Subs(cNrBancario,8,6) + "0" + cCart
nDv3 := modulo10(cS3)
cRN3 := SubStr(cS3, 1, 5) + '.' + SubStr(cS3, 6, 5) + AllTrim(Str(nDv3)) + ' '
// CAMPO 4:
// K = DAC do Codigo de Barras
cRN4 := AllTrim(Str(nDvcb)) + ' '
// CAMPO 5:
// UUUU = Fator de Vencimento
// VVVVVVVVVV = Valor do Titulo
cRN5 := cFator + cValorFinal
cRN := cRN1 + cRN2 + cRN3 + cRN4 + cRN5
Return({cCB,cRN,cNrBancario})
/*---------------------------------------------------------------------------------------------
{Protheus.doc} Modulo11Nn
Função Auxiliar para cálculo do módulo 11
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function Modulo11Nn(cData)
LOCAL L, D, P,R := 0
L := Len(cdata)
D := 0
P := 1
While L > 0
P := P + 1
D := D + (Val(SubStr(cData, L, 1)) * P)
If P = 9
P := 1
End
L := L - 1
End
R := mod(D,11)
If (R == 10)
D := 1
ElseIf (R == 0 .Or. R == 1)
D := 0
Else
D := (11 - R)
End
Return(D)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} Modulo11Sc
Função Auxiliar para Cálculo Módulo 11 Banco Sicredi
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function Modulo11Sc(cData)
Local nI := 0
Local nS := 0
Local nP := 0
Local nDig := 0
Local nBase := 0
Local nTotB := 0
Local nMod1 := 0
cFator := "4329876543298765432"
nS := 0
nP := 0
nDig := 0
// Calcula o PRIMEIRO digito
For nI := 1 To Len(cData)
nP := Val(SubStr(cData, nI, 1)) * Val(SubStr(cFator, nI, 1))
nS := nS + nP
Next nI
nBase := NoRound((nS/11),0)
//nBase := Mod(nS,11)
nTotB := nBase * 11
nMod1 := nS - nTotB
D := 11 - nMod1
If D > 9
D := 0
EndIf
D := Alltrim(Str(D))
Return(D)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} Modulo11Abc
Função Auxiliar parar Cálculo Módulo 11 Banco ABC
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function Modulo11Abc(cData,cBanc,cCarteira)
Local L
Local D
Local P
Private nBase
L := Len(cdata)
D := 0
P := "4329876543298765432987654329876543298765432"
While L > 0
D := D + (Val(SubStr(cData, L, 1)) * Val(SubStr(P, L, 1)))
L := L - 1
End
D := Mod(D,11)
If D == 0 .Or. D == 1 .Or. D == 10
D := 1
Else
D := 11 - D
Endif
D := AllTrim(Str(D))
Return(D)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} DbCpoLSc
Função Auxiliar para Cálculo do DV do Campo Livre do BAnco Sicredi
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function DVCPOLSc(cData)
Local nI := 0
Local nS := 0
Local nP := 0
Local nDig := 0
Local nResto := 0
Local D := 0
cFator := "987654329876543298765432"
nS := 0
nP := 0
nDig := 0
nResto := 0
// Calcula o PRIMEIRO digito
For nI := 1 To Len(cData)
nP := Val(SubStr(cData, nI, 1)) * Val(SubStr(cFator, nI, 1))
nS := nS + nP
Next nI
nResto := Mod(nS,11)
//TSCB56 - Rafael de Souza
If nResto <= 1
D := 0
D := Alltrim(Str(D))
Return(D)
EndIf
D := 11 - nResto
D := Alltrim(Str(D))
Return(D)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} DVGerSc
Função Auxiliar para Cálculo do DV Geral do BAnco Sicredi
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function DVGerSc(cData)
Local nI := 0
Local nS := 0
Local nP := 0
Local nDig := 0
Local nResto := 0
Local D := 0
cFator := "4329876543298765432987654329876543298765432"
nS := 0
nP := 0
nDig := 0
// Calcula o PRIMEIRO digito
For nI := 1 To Len(cData)
nP := Val(SubStr(cData, nI, 1)) * Val(SubStr(cFator, nI, 1))
nS := nS + nP
Next nI
//nBase := NoRound((nS/11),0)
nResto := Mod(nS,11)
D := 11 - nResto
If ((D == 0).Or.(D == 1).Or.(D > 9))
D := 1
EndIf
D := Alltrim(Str(D))
Return(D)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} ConvParc
Função Auxiliar para Converter Letras em Números
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function ConvParc(cParc)
Local _Letras:="ABCDEFGHIJKLMNOPQRSTUVWXYZ" // Coloque o alfabeto corretamente
Local _nParc := 0
_nParc:=At(cParc,_Letras)
If _nParc > 0
_nParc:=Str(_nParc,1)
Else
_nParc := cParc
EndIf
Return(_nParc)
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xSicMod11
Função Auxiliar para Cálculo Módulo 11 do Banco Sicredi
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xSicMod11(cData,cBanc,lGeral)
L := Len(cdata)
D := 0
cSum := 0
If lGeral
P := "4329876543298765432987654329876543298765432"
Else
P := "319731973197319731973" // Constante Conforme Manual Sicoob
EndIf
While L > 0
D := D + (Val(SubStr(cData, L, 1)) * Val(SubStr(P, L, 1)))
L := L - 1
End
D := Mod(D,11)
If lGeral
D := 11 - D
If D <= 1 .Or. D > 9
D := 1
Endif
D := AllTrim(Str(D))
Else
If D == 0 .Or. D == 1
D := 0
Else
D := 11 - D
Endif
D := AllTrim(Str(D))
EndIf
Return D
/*---------------------------------------------------------------------------------------------
{Protheus.doc} IsHarden
Função Auxiliar para Determinar a empresa do produto
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function IsHarden(cChave)
Local cQuery := ""
Local cAli
Local lHarden := .F.
cQuery := " SELECT B1.B1_FABRIC FROM " + RetSqlName("SF2") + " F2 "
cQuery += " INNER JOIN " + RetSqlName("SD2") + " D2 ON D2.D2_FILIAL = F2.F2_FILIAL AND D2.D2_DOC = F2.F2_DOC AND D2.D2_SERIE = F2.F2_SERIE AND D2.D2_CLIENTE = F2.F2_CLIENTE AND D2.D2_LOJA = F2.F2_LOJA AND D2.D_E_L_E_T_ = ' ' "
cQuery += " INNER JOIN " + RetSqlName("SB1") + " B1 ON B1.B1_FILIAL = '" + xFilial("SB1") + "' AND B1.B1_COD = D2.D2_COD AND B1.D_E_L_E_T_ = ' ' "
cQuery += " WHERE F2.D_E_L_E_T_ = ' ' AND F2.F2_CHVNFE = '" + cChave + "' AND B1.B1_FABRIC <> ' ' "
cAli := MPSysOpenQuery(cQuery)
If !(cAli)->( Eof() ) .And. AllTrim((cAli)->B1_FABRIC) == "HARDEN"
lHarden := .T.
EndIf
(cAli)->( dbCloseArea() )
Return lHarden
/*---------------------------------------------------------------------------------------------
{Protheus.doc} xOrdena
Ordena grid conforme clique na coluna
@type Static Function
@author Julio Storino
@since 07/01/2021
@version P12
---------------------------------------------------------------------------------------------*/
Static Function xOrdena(_nOrdem,nHeader,oHeader)
Local aArray := oHeader:aArray
Default _nOrdem := 1
//Altero a seta de acordo com a ordem
If _nOrdem == 1
aSort(aArray,,,{|x,y| x[nHeader] > y[nHeader] })
_nOrdem :=2
Else
aSort(aArray,,,{|x,y| x[nHeader] < y[nHeader] })
_nOrdem :=1
EndIf
oHeader:DrawSelect()
oHeader:Refresh()
Return( Nil )