Escolar Documentos
Profissional Documentos
Cultura Documentos
ch"
#include "PROTHEUS.ch"
//--------------------------------------------------------------------------------
/*/{Protheus.doc} FINA190
Private cFil190
Private aRotina := MenuDef()
Private nValor := 0
Private valor := 0 // Variavel do Sistema
Private StrLctPad := "" // Variavel c/ Historico do chq p/
Contabilizar
Private NumCheque := "" // Variavel c/ Nro do Cheque p/
contabilizar
Private OrigCheq := "" // Variavel c/ Origem do Cheque p/
Contabilizar
Private nQtdTit := 1
Private nContador := 0
Private cCadastro := STR0006 //"Cadastro de Cheques"
Private cArquivo
Private nTotal :=0
Private nHdlPrv :=0
Private cMarca
Private cCtBaixa := GetMv("MV_CTBAIXA")
Private cBanco190 := CriaVar( "EF_BANCO")
Private cAgencia190 := CriaVar( "EF_AGENCIA")
Private cConta190 := CriaVar( "EF_CONTA")
Private cCheque190 := CriaVar( "EF_NUM")
Private lFa190Mk := ExistBlock("FA190MK")
Private cTit190 := ""
Private lGestaoCorp := .F.
//----------------------------------------------
// Variaveis utilizadas para parametros
// mv_par01 // Mostra Lanc Contabil
// mv_par02 // Aglutina Lancamento
// mv_par03 // Filtra por Banco
// mv_par04 // Contabiliza On-Line ?
// mv_par05 // Considera Loja ?
//----------------------------------------------
pergunte("AFI190",.F.)
SetKey (VK_F12,{|a,b| F190SetPerg() })
dbSelectArea("SEF")
IF ExistBlock("F190BROW")
ExecBlock("F190BROW",.f.,.f.)
Endif
DEFAULT nPosArotina := 0
If nPosArotina > 0 // Sera executada uma opcao diretamento de aRotina, sem passar
pela mBrowse
dbSelectArea("SEF")
//-----------------------------------------------------------------
//Muda a ordem de passagem de par�metro quando for Cancelamento
//-----------------------------------------------------------------
If nPosArotina <> 4
bBlock := &( "{ |a,b,c,d,e| " + aRotina[ nPosArotina,2 ] + "(a,b,c,d,e)
}" )
Eval( bBlock, Alias(), (Alias())->(Recno()),nPosArotina, lAutomato)
Else
bBlock := &( "{ |a,b,c,d,e,f,g| " + aRotina[ nPosArotina,2 ] +
"(a,b,c,d,e,f,g) }" )
Eval( bBlock, Alias(),
(Alias())->(Recno()),nPosArotina,/*aEncho*/,/*lExterno*/, lAutomato)
EndIf
Else
mBrowse( 6, 1,22,75,"SEF",,,,,, Fa190Legenda("SEF"))
Endif
Return
//--------------------------------------------------------------------------------
/*/{Protheus.doc} fa190Jun
Gera��o de cheques
//REESTRUTURA��O - SE5
Local oModelBxP := NIL //FWLoadModel("FINM020") //Baixa a pagar
Local oModelMov := NIL //FWLoadModel("FINM030") //Mov. Bancaria Manual
Local oSubFK5
Local oFKA
Local cLog := ""
Local cChaveCH := ""
Local cChaveFK5 := ""
Local cCamposE5 := ""
Local lRet := .T.
Local lChequeRA := .F.
Private oDlg
Private lInverte
Private dVencIni := dDataBase
Private dVencFim := dDataBase
Private cFornec190 := CriaVar( "EF_FORNECE",.F.)
Private cLoja190 := CriaVar( "EF_LOJA",.F.)
Private cPortado := CriaVar( "EF_BANCO",.F.)
Private cBenef := CriaVar( "EF_BENEF")
Private lCarteira := .T.
Private lCobranca := .T.
Private cLote := ""
Private cSequenc := Space(TamSX3("E5_SEQ")[1])
Private dEmissao := dDataBase
Private cHistorico := CriaVar( "EF_HIST" )
Private nLimit190 := 0
Private cNatur190 := Space(10)
Private dBaixa := dDataBase
//-----------------------------------------------------------------------
// PONTO DE ENTRADA FA190POS
//
// Permite a altera��o de vari�veis apos carga de dados do cheque a ser
// gerado, antes das informa�oes serem mostradas na Tela.
// Vari�veis disponiveis para serem alteradas :
// // cBanco190 , cAgencia190, cConta190, cCheque190
//-----------------------------------------------------------------------
If lF190Pos
ExecBlock("FA190POS",.F.,.F.)
Endif
aSize := MSADVSIZE()
If lPanelFin //Chamado pelo Painel Financeiro
oPanelDados := FinWindow:GetVisPanel()
oPanelDados:FreeChildren()
aDim := DLGinPANEL(oPanelDados)
DEFINE MSDIALOG oDlg OF oPanelDados:oWnd FROM 0,0 To 0,0 PIXEL
STYLE nOR( WS_VISIBLE, WS_POPUP )
//---------------------------------------------------------------
---
// Observacao Importante quanto as coordenadas calculadas abaixo:
//---------------------------------------------------------------
---
// a funcao DlgWidthPanel() retorna o dobro do valor da area do
// painel, sendo assim este deve ser dividido por 2 antes da
// subtracao e redivisao por 2 para a centralizacao.
//---------------------------------------------------------------
---
nEspLarg := (((DlgWidthPanel(oPanelDados)/2) - 276) /2)-4
nEspLin := 0
Else
nEspLarg := 5
nEspLin := 6
DEFINE MSDIALOG oDlg FROM 38,16 TO 310,590 TITLE STR0007 PIXEL
//"Gera��o de Cheques"
Endif
oDlg:lMaximized := .F.
oPanel := TPanel():New( 0, 0, '', oDlg, , .T., .T., , , 20, 20 )
oPanel:Align := CONTROL_ALIGN_ALLCLIENT
cAlias := FinWindow:cAliasFile
dbSelectArea(cAlias)
FinVisual(cAlias,FinWindow,(cAlias)->(Recno()),.T.)
Else
//GESTAO
If lGestaoCorp
DEFINE SBUTTON Var oBtnFil FROM 120, 191 TYPE 05 ACTION
{ || aSelFil := Fa190Fil()} ENABLE OF oPanel
oBtnFil:cCaption := STR0082
//"Filiais"
oBtnFil:cToolTip := STR0083
//"Seleciona filiais"
Endif
If nOpca == 0
Exit
EndIf
If !lAutomato
MsgRun(STR0042,STR0007,{|| cArqSEF :=
Fa190SEF(@aSelFil)}) //"Selecionando Registros..."###"Geracao de cheques"
If Empty(cArqSEF)
Help(" ",1,"RECNO")
Loop
EndIf
If !lAutomato
DEFINE MSDIALOG oDlg1 TITLE STR0007 From aSize[7],0 To
aSize[6],aSize[5] OF oMainWnd PIXEL //"Gera��o de Cheques"
oDlg1:lMaximized := .T.
oMark:bMark := {||
Fa190Exibe(cAlias,@nValor,@nQtdTit,cMarca,oValor,oQtdTit)}
oMark:oBrowse:lhasMark = .t.
oMark:oBrowse:lCanAllmark := .t.
oMark:bAval := {||
Fa190bAval(cAlias,cMarca,oValor,oQtdTit,aChaveLbn)}
oMark:oBrowse:bAllMark := { ||
FA190Inverte(cAlias,cMarca,oValor,oQtdTit,aChaveLbn) }
oMark:oBrowse:Align := CONTROL_ALIGN_ALLCLIENT
Else
//-----------------------------------------------
// Retira a sele��o para nova marca��o
//-----------------------------------------------
FA190Inverte( cAlias, cMarca, oValor, oQtdTit, aChaveLbn,
/*cChaveLbn*/, /*lTodos*/, lAutomato )
If FindFunction( "GetParAuto" )
aRetAuto := GetParAuto( "FINA190TESTCASE" )
//-----------------------------------------------
// Simula sele��o manual
//-----------------------------------------------
Fa190bAval( cAlias, cMarca, oValor, oQtdTit, aRetAuto[2]
[1], lAutomato )
EndIf
EndIf
Else
Help(" ",1,"ARQVAZIO")
Loop
EndIf
If lBenef
cBenef := Execblock("FA190BEN",.f.,.f.)
Endif
If !Empty(aChaveLbn)
aEval(aChaveLbn, {|e| UnLockByName(e,.T.,.F.) } ) // Libera Lock
Endif
Loop
Elseif nOpca == 3 .or. nOpca == 0
If !Empty(aChaveLbn)
aEval(aChaveLbn, {|e| UnLockByName(e,.T.,.F.) } ) // Libera Lock
Endif
Exit
Endif
If nOpcA == 1
nC := 0
cTipoCheque := ""
lLanc := .F.
nContador := 0
valor := 0
cHist190La := cHistorico
If SEF->EF_TIPO $ MVRECANT+"/"+MV_CRNEG
lChequeRA := .T.
E5_FILIAL+E5_PREFIXO+E5_NUMERO+E5_PARCELA+E5_TIPO
IF SE5->E5_MOTBX == "CMP"
dbSkip()
Loop
Endif
oModelBxP := FWLoadModel("FINM020")
//Recarrega o Model de baixa para pegar o campo do relacionamento (SE5->E5_IDORIG)
oModelBxP:SetOperation( 4 ) //Altera
oModelBxP:Activate()
oModelBxP:SetValue( "MASTER", "E5_GRV", .T. )
//Informa se vai gravar SE5 ou n�o
Help( ,,"M020VALID",,cLog, 1, 0 )
Endif
Endif
oModelBxP:DeActivate()
oModelBxP:Destroy()
oModelBxP := NIL
EndIf
dbSkip()
Enddo
Else
// Grava Numero do Cheque no SE2
dbSelectArea("SE2")
dbSetOrder(1)
If SE2->(dbSeek(Iif(!Empty(SEF-
>EF_FILORIG),xFilial("SE2",SEF->EF_FILORIG), xFilial("SE2"))+SEF->EF_PREFIXO+SEF-
>EF_TITULO+SEF->EF_PARCELA+SEF->EF_TIPO+SEF->EF_FORNECE+SEF->EF_LOJA))
Reclock("SE2")
SE2->E2_BCOPAG := cBanco190
SE2->E2_NUMBCO := cCheque190
MsUnlock()
dbSelectArea("SED")
dbSeek(xFilial("SED",SE2->E2_FILORIG)+SE2-
>E2_NATUREZ)
dbSelectArea( "SA2" )
SA2->( dbSeek(xFilial("SA2",SE2->E2_FILORIG)
+SE2->E2_FORNECE+SE2->E2_LOJA))
dbSelectArea("SE5")
SE5->( dbSetOrder(7))
SE5->(dbSeek(Iif(!Empty(SEF-
>EF_FILORIG),xFilial("SE5",SEF->EF_FILORIG),xFilial("SE5"))+SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO)))
E5_FILIAL+E5_PREFIXO+E5_NUMERO+E5_PARCELA+E5_TIPO
If SE5->E5_MOTBX == "CMP"
SE5->(dbSkip())
Loop
Endif
If Alltrim(SE5->E5_TIPODOC) $ "CH|ES"
SE5->(dbSkip())
Loop
Endif
If !Empty(SE5->E5_NUMCHEQ)
SE5->(dbSkip())
Loop
EndIf
If SEF->EF_FORNECE == SE5-
>E5_CLIFOR .And. SE5->E5_RECPAG == "P".And. (SE5->E5_TIPODOC == "PA" .Or.
AllTrim(SE5->E5_TIPO) == "PA")
// Anula movimenta�ao bancaria do
PA
If AllTrim( SE5->E5_TABORI ) ==
"FK2"
FK2->(DbSetOrder(1))
If FK2->(dbseek(SE5-
>E5_FILIAL+SE5->E5_IDORIG))
Reclock("FK2", .F.)
FK2->FK2_LA :=
Iif(mv_par04==1 .and. lPadrao .and. cCtBaixa$"AC","S"," ")
FK2->(MsUnlock())
Endif
EndIf
nValMod2 += SE5->E5_VLMOED2
ElseIf SE5->(E5_CLIFOR+E5_LOJA) == SE2-
>(E2_FORNECE+E2_LOJA) .And. SE5->E5_SEQ == SEF->EF_SEQUENC
//Grava o n�mero do Cheque nos
registros do SE5 se nao for caixa, considerando E5_SEQ
If !SE5->E5_BANCO $ cCarteira .And.
Substr(SE5->E5_BANCO, 1, 2) != "CX"
RecLock("SE5",.F.)
SE5->E5_BANCO := cBanco190
SE5->E5_AGENCIA :=
cAgencia190
SE5->E5_CONTA := cConta190
SE5->E5_NUMCHEQ :=
cCheque190
SE5->(MsUnlock())
Endif
Endif
SE5->(dbSkip())
Enddo
Endif
EndIf
NumCheque := EF_NUM
MsUnlock()
cSequenc := EF_SEQUENC
If lCtCheqLib
If SEF->EF_LIBER <> "S"
lCtbCheq := .F.
EndIf
EndIf
DbSelectArea(cArqSEF)
(cArqSEF)->(DbSkip())
Else
dbSkip()
Endif
EndDo
EndIf
If nQtdTit > 0
//------------------------------------------------------------
// Gera o Cheque totalizador
//------------------------------------------------------------
Reclock("SEF", .T.)
//---------------------------------------------------------------------
---------------------------------------
// Atualiza��o da Movimenta��o Bancaria, somente se o cheque for
efetivo (sem * na primeira posi�ao).
// Obs: Se o cheque foi criado por uma devolu��o de adiantamento n�o
precisa movimentar o saldo, pois isto
// foi feito pela rotina de baixa de adiantamentos. �
// Tamb�m s� atualiza a Movimenta��o bancaria se o parametro
MV_LIBCHEQ for "S", caso contrario a
// movimenta�ao banc�ria so ser� atualizada na op��o
Conf.Cheque do Cheq s/ Titulos (FINA390).
//---------------------------------------------------------------------
---------------------------------------
If SubStr( SEF->EF_NUM,1,1 ) != "*" .And. cLiberado == "S"
cCamposE5 := "{"
cCamposE5 += " {'E5_BENEF' , '" + cBenef + "'}"
cCamposE5 += " ,{'E5_DTDIGIT' , dDatabase }"
cCamposE5 += "}"
oModelMov := FWLoadModel("FINM030") //Recarrega o Model de
movimento para pegar o campo do relacionamento (SE5->E5_IDORIG)
oModelMov:SetOperation( 3 ) //Inclusao
oModelMov:Activate()
oModelMov:SetValue( "MASTER", "E5_GRV", .T. ) //Informa se vai
gravar SE5 ou n�o
oModelMov:SetValue( "MASTER", "E5_CAMPOS", cCamposE5 ) //Informa
os campos da SE5 que ser�o gravados indepentes de FK5
oModelMov:SetValue( "MASTER", "NOVOPROC", .T. ) //Informa que a
inclus�o ser� feita com um novo n�mero de processo
oSubFK5 := oModelMov:GetModel("FK5DETAIL")
cChaveFK5 := FWUUIDV4()
//Dados do Cheque
If !oFKA:IsEmpty()
oFKA:AddLine()
Endif
oFKA:SetValue( "FKA_IDORIG", cChaveCH )
oFKA:SetValue( "FKA_TABORI", "SEF" )
If oModelMov:VldData()
oModelMov:CommitData()
Else
lRet := .F.
cLog := cValToChar(oModelMov:GetErrorMessage()[4]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()[5]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()[6])
Help( ,,"M030VALID",,cLog, 1, 0 )
Endif
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := NIL
If msSeek(xFilial("SEF")
+cBanco190+cAgencia190+cConta190+cCheque190)
If Empty(SEF->EF_IDSEF)
cChaveCH := FWUUIDV4()
Reclock( "SEF", .F. )
SEF->EF_IDSEF := cChaveCH
SEF->( msUnlock() )
Else
cChaveCH := SEF->EF_IDSEF
Endif
Endif
If oModelMov:VldData()
oModelMov:CommitData()
Else
lRet := .F.
cLog := cValToChar(oModelMov:GetErrorMessage()
[4]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()
[5]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()
[6])
Help( ,,"M030VALID",,cLog, 1, 0 )
Endif
Endif
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := NIL
EndIf
If lF190Chq
Execblock("FA190CH",.f.,.f.)
Endif
// Contabiliza��o do cheque
If cCtBaixa $ "CA" .And. lPadrao .And. lCtbCheq .And. mv_par04 == 1
FA190Cont(cPadrao,SEF->(RecNo()))
End
End
If !Empty(aChaveLbn)
aEval(aChaveLbn, {|e| UnLockByName(e,.T.,.F.) } ) // Libera Lock
Endif
Exit
EndDo
//--------------------------------------------------------------------------------
/*/{Protheus.doc} fa190Jun
If Empty(cFornecedor)
If ExistBlock("F190FOR")
lRet := (ExecBlock("F190FOR",.F.,.F.))
Endif
Else
cAlias:=Alias()
dbSelectArea("SA2")
dbSetOrder(1)
cLoja:=Iif(cLoja == Nil,"",cLoja)
If SA2->( !(dbSeek(xFilial("SA2")+cFornecedor+cLoja)) )
Return .f.
Endif
cBenef := SA2->A2_NOME
cLoja190 := SA2->A2_LOJA
dbSelectArea(cAlias)
Endif
Return lRet
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Port
SA6->(dbSetOrder( 1 ))
If SA6->( !dbSeek( cFilial + cPortado ) )
lRet := .F.
Endif
If !Empty (cFornec190)
cBenef:=SA2->A2_NOME
lRet := .T.
Else
If !Empty(cPortado) .and. SA6->(!dbSeek(xFilial("SA6")+cPortado ))
lRet := .F.
Else
If Empty(cPortado) .and. Empty (cFornec190)
SA6->( dbSeek ( xFilial("SA6") +
cBanco190+cAgencia190+cConta190 ) )
cBenef:=SA6->A6_NOME
lRet := .T.
Else
SA6->( dbSeek ( xFilial("SA6") + cPortado ) )
cBenef:=SA6->A6_NOME
lRet := .T.
Endif
Endif
Endif
SA6->(dbGoto(nRegSa6))
Return ( lRet )
//--------------------------------------------------------------------------------
/*/{Protheus.doc} fa190dele
cTitulo := ""
If lExterno
//Variaveis utilizadas para parametros
//mv_par01 // Mostra Lanc Contabil
//mv_par02 // Aglutina Lancamento
//mv_par03 // Filtra por Banco
//mv_par04 // Contabiliza On-Line
//mv_par05 // Considera Loja
pergunte("AFI190",.F.)
Private cCtBaixa := GetMv("MV_CTBAIXA")
EndIf
lDigita := mv_par01 == 1
lAglut := mv_par02 == 1
dbSelectArea(cAlias)
Return(.F.)
EndIf
If SEF->EF_IMPRESS == "A"
If !lExterno
Help(" ",1,"AGLUTINADO")
Endif
Return(.F.)
EndIf
SE5->(dbSetOrder(11))
If SE5->(DbSeek(xFilial("SE5")+SEF->(EF_BANCO+EF_AGENCIA+EF_CONTA+EF_NUM), .T. ))
cChavSE5 := xFilial("SE5")+SEF->(EF_BANCO+EF_AGENCIA+EF_CONTA+EF_NUM)
SE5->(dbSkip())
EndDo
EndIf
dbSelectArea("SEF")
If lGestaoCorp
SEF->(dbSetOrder(11))
Else
SEF->(dbSetOrder(1))
Endif
While .T.
nOpcA := 0
nContador := 0
If !SoftLock( "SEF" )
Return .F.
EndIf
nOpca := 1
RegToMemory(cAlias,.T.,,,FunName())
oPanelDados := FinWindow:GetVisPanel()
oPanelDados:FreeChildren()
aDim := DLGinPANEL(oPanelDados)
nOpcA := AxVisual(cAlias,nReg,nOpc,,,,,,,,.T.,,.T.,.T.,aDim)
Else
nOpcA := AxVisual(cAlias,nReg,nOpc)
Endif
SEF->(DbGoto(nPosSEF))
Endif
dbSelectArea(cAlias)
If nOpcA == 1
//Verifica bloqueio de conta corrente
If CCBLOCKED(SEF->EF_BANCO, SEF->EF_AGENCIA, SEF->EF_CONTA)
Return .F.
Endif
cFilialSef := xFilial("SEF")
lDeleta := .F.
cBanco := SEF->EF_BANCO
cAgencia := SEF->EF_AGENCIA
cConta := SEF->EF_CONTA
cNumero := SEF->EF_NUM
cChave := SEF->EF_FILIAL+cBanco+cAgencia+cConta+cNumero
aTitulo := {}
nEfValor := 0
VALOR := 0
StrLctPad := ""
NumCheque := ""
OrigCheq := ""
lCtblizou := AllTrim(SEF->EF_LA) =="S"
cSeqBaixa := SEF->EF_SEQUENC
lFINA091 := AllTrim(SEF->EF_ORIGEM) == "FINA091"
If !AllTrim(SEF->EF_ORIGEM) $ "FINA100PAG"
DbSelectArea("SEF")
SEF->(DbSetOrder(1))
SEF->(dbSeek(cChave,.F.))
EndIf
SEF->(DbSkip())
nProxChq := SEF->(Recno())
SEF->(dbSkip(-1))
If lF190Can
ExecBlock("F190CAN",.f.,.f.)
EndIf
If SEF->EF_IMPRESS == "A"
//Quando o Cheque for Aglutinado deve-se limpar seus dados,
mas n�o pode-se apaga-lo, pois nao foi gerado pelo FINA190
Reclock("SEF")
SEF->EF_NUM := ""
SEF->EF_IMPRESS := ""
SEF->EF_LIBER := ""
SEF->EF_FILCHQ := Iif(lGestaoCorp, "", SEF->EF_FILCHQ)
SEF->EF_NATUR := cNatur190
MsUnlock()
SE2->(dbSetOrder(1))
If SE2->(dbSeek(cFilialSe2+SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO+EF_FORNECE+EF_LOJA)))
dbSelectArea("SE5")
cFilialSe5 := xFilial("SE5")
SE5->(dbSetOrder(7))
If SE5->(dbSeek(cFilialSe5+SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO)+SE2->E2_FORNECE+SE2->E2_LOJA+SEF-
>EF_SEQUENC))
nRegBaixa := SE5->(Recno())
If SE5->(E5_CLIFOR+E5_LOJA) == SE2-
>(E2_FORNECE+E2_LOJA) .And. ;
Substr(SE5->E5_BANCO, 1, 2) !
= "CX" .And. !(SE5->E5_BANCO $ cCarteira) .And. SE5->E5_SEQ == SEF->EF_SEQUENC
SE5->(dbSkip())
Enddo
EndIf
Endif
If SEF->EF_IMPRESS == "S"
Reclock("SEF")
SEF->EF_IMPRESS := "C"
SEF->EF_NATUR := cNatur190
MsUnlock()
lDeleta := .F.
dbSelectArea("SE2")
cFilialSe2 := xFilial("SE2")
If !Empty(SEF->EF_FILORIG) .And. !
( Empty( cFilFwSE2 ) )
cFilialSe2 := SEF->EF_FILORIG
Endif
SE2->(DbSetOrder(1))
If SE2->(dbSeek(cFilialSe2+SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO+EF_FORNECE+EF_LOJA)))
RecLock("SE2")
SE2->E2_NUMBCO := ""
MsUnlock()
Endif
dbSelectArea("SEF")
EndIf
SE5->(DbSetOrder(11))
nRecSE5 := FINFK5BUSCA(,"SEF")
cChavSEF := SEF->(EF_BANCO+EF_AGENCIA+EF_CONTA+ALLTRIM(SEF-
>EF_NUM))
If Alltrim(SE5->E5_NUMCHEQ) != Alltrim(SEF->EF_NUM)
SE5->(dbSkip())
Loop
EndIf
If !SE5->E5_TIPODOC $
"VL/BA/CM/MT/DC/JR/TL/V2/D2/V2/IS/ES/EC" .And. (!EMPTY(SE5->E5_TIPODOC) .Or. SE5-
>E5_MOEDA $ "C1/C2/C3/C4/C5/CH ")
lDeletaSE5 := .T. //controla da exclus�o quando
for cheque da baixa ou da mov bancaria
dEfData := dDatabase
nRegSE5 := SE5->(Recno())
If SE5->E5_SEQ == SEF->EF_SEQUENC
EXIT
Endif
EndIf
SE5->(dbSkip())
EndDo
nRecSE5 := 0
SE2->(dbSetOrder(1))
If SE2->(dbSeek(cFilialSe2+SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO+EF_FORNECE+EF_LOJA)))
dbSelectArea("SE5")
cFilialSe5 := xFilial("SE5")
SE5->(dbSetOrder(7))
SE5->(dbSeek(cFilialSe5+SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO+EF_SEQUENC)))
If SE5->(E5_CLIFOR+E5_LOJA) == SE2-
>(E2_FORNECE+E2_LOJA) .And. Substr(SE5->E5_BANCO,1,2) != "CX" .And. ;
!(SE5->E5_BANCO $ cCarteira) .And.
SE5->E5_SEQ == SEF->EF_SEQUENC .And. SE5->E5_TIPODOC != "VL"
oModelMov := FWLoadModel("FINM030")
//Recarrega o Model de movimentos para pegar o campo do relacionamento (SE5-
>E5_IDORIG)
oModelMov:SetOperation( 4 ) //Altera
oModelMov:Activate()
oModelMov:SetValue("MASTER", "E5_GRV", .T. )
//Informa se vai gravar SE5 ou n�o
oModelMov:SetValue("MASTER", "HISTMOV", STR0064 )
oFKA := oModelMov:GetModel("FKADETAIL")
If oModelMov:VldData()
oModelMov:CommitData()
Else
lRet := .F.
cLog :=
cValToChar(oModelMov:GetErrorMessage()[4]) + ' - '
cLog +=
cValToChar(oModelMov:GetErrorMessage()[5]) + ' - '
cLog +=
cValToChar(oModelMov:GetErrorMessage()[6])
Help( ,,"M030VALID",,cLog, 1, 0 )
Endif
Endif
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := Nil
EndIf
SE5->(DbSkip())
Enddo
Endif
dbSelectArea("SEF")
SEF->(dbGoto(nProxChq))
EndDo
dbSelectarea("SEF")
SEF->(dbGoTo(nReg))
dbSelectArea("SA6")
SA6->(dbSeek(xFilial()+cBanco+cAgencia+cConta))
NumCheque := SEF->EF_NUM
dbSelectArea("SE2")
cFilialSe2 := xFilial("SE2")
cTitulo := aTitulo[nCntFor][1]+aTitulo[nCntFor]
[2]+aTitulo[nCntFor][3]+aTitulo[nCntFor][4]+aTitulo[nCntFor][6]+aTitulo[nCntFor][7]
SE2->(dbSetOrder(1))
If SE2->(dbSeek(cFilialSe2+cTitulo))
dbSelectArea("SED")
SED->(dbSeek(xFilial("SED",SE2->E2_FILORIG)+SE2-
>E2_NATUREZ))
dbSelectArea("SA2")
SA2->(dbSetOrder(1))
If SA2->(dbSeek(xFilial("SA2",SE2->E2_FILORIG)+SE2-
>E2_FORNECE+SE2->E2_LOJA))
If nContador == 0 .And. lPadrao .And. cCtBaixa
$ "CA".and. lCtblizou
nHdlPrv := HeadProva(cLote,
"FINA190", Substr(cUsuario, 7, 6), @cArquivo)
nContador++
EndIf
Endif
Next nCntFor
dbSelectArea("SEF")
SEF->(dbGoTo(nReg))
dbSelectArea("SE2")
SE2->(DbGoto(0))
Else
//-----------------------------------------------------------
// Aqui e contabilizado os cheques que possuem apenas um
// titulo ou os cheques gerados pela movitacao Banc.Pag.
// Assim o SEF/SE2/SA2 devem estar posicionados para serem
// utilizados.
// Esta contabilizacao tem como objetivo desfazer a
// contabilizacao do cheque e do titulo.
//-----------------------------------------------------------
dbSelectArea("SE2")
cFilialSe2 := xFilial("SE2")
SE2->(dbSetOrder(1))
cTitulo := SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO+EF_FORNECE)
If SE2->(dbSeek(cFilialSe2+cTitulo))
dbSelectArea("SED")
dbSeek(xFilial("SED",SE2->E2_FILORIG)+SE2->E2_NATUREZ)
dbSelectArea("SA2")
SA2->(dbSetOrder(1))
If SA2->(dbSeek(xFilial("SA2",SE2->E2_FILORIG)+SE2-
>E2_FORNECE+SE2->E2_LOJA))
If nContador == 0 .And. lPadrao .And. cCtBaixa $ "CA"
.And. lCtblizou
nHdlPrv :=
HeadProva(cLote,"FINA190",Substr(cUsuario,7,6),@cArquivo)
nContador++
Endif
Endif
Endif
dbSelectArea("SEF")
SEF->(dbGoto(nReg))
Valor := SEF->EF_VALOR
StrLctPad := SEF->EF_HIST
NumCheque := SEF->EF_NUM
OrigCheq := SEF->EF_ORIGEM
cSeqBaixa := SEF->EF_SEQUENC
If lCtblizou
nTotal += DetProva(nHdlPrv,cPadrao,"FINA190",cLote)
EndIf
If nTotal > 0
RodaProva(nHdlPrv,nTotal)
//Envia para Lan�amento Contabil
cA100Incl(cArquivo,nHdlPrv,3,cLote,lDigita,lAglut)
Endif
dbSelectArea("SEF")
SEF->(dbGoto(nReg))
EndIf
dbSelectArea(cAlias)
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := Nil
Else
dbSelectArea("SE5")
SE5->(dbGoto(nRegSE5) )
If oModelMov:VldData()
oModelMov:CommitData()
Else
lRet := .F.
cLog := cValToChar(oModelMov:GetErrorMessage()
[4]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()
[5]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()
[6])
Help( ,,"M050VALID",,cLog, 1, 0 )
Endif
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := Nil
Else
RecLock("SE5")
dbDelete()
MsUnlock()
Endif
Endif
Endif
If (dbSeek(cFilialSe2+SEF->EF_PREFIXO+SEF->EF_TITULO+SEF-
>EF_PARCELA+SEF->EF_TIPO+SEF->EF_FORNECE))
Reclock("SE2")
SE2->E2_NUMBCO := ""
MsUnlock()
Endif
EndIf
Reclock("SEF",.F.,.T.)
SEF->( dbDelete() )
MsUnlock()
dbSelectArea(aArea[1])
dbSetOrder(aArea[2])
dbGoto(aARea[3])
Return .T.
//--------------------------------------------------------------------------------
/*/{Protheus.doc} FA190Cont
Monta lan�amento contabil em fun��o dos titulos pagos
dbSelectArea("SE2")
dbSelectArea("SEF")
SE2->(DbGoto(0))
SEF->(DbGoTo(nSefRec))
Valor := SEF->EF_VALOR
StrLctPad := SEF->EF_HIST
NumCheque := SEF->EF_NUM
OrigCheq := SEF->EF_ORIGEM
cSeqBaixa := SEF->EF_SEQUENC
SEF->(DbGoto(0))
nTotal += DetProva(nHdlPrv, cPadrao, "FINA190", cLote)
RodaProva(nHdlPrv, nTotal)
dbSelectArea("SEF")
SEF->(dbGoTo(nSefRec))
dbSelectArea(cAlias)
Return
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Lib
//REESTRUTURA��O - SE5
Local oModelMov := NIL //FWLoadModel("FINM030") //Mov. Bancaria Manual
Local oSubFK5
Local oFKA
Local cLog := ""
Local cChaveCH := ""
Local cChaveFK5 := ""
Local cCamposE5 := ""
Local lRet := .T.
Local nOrdSA6 := 1
Local cMoedaBco := 1
Local nRegCheq := 0
Local lOk := .F.
Local nRegTit := nRegAnt := 0
If "R" $ SEF->EF_CART
Help(,,"FA190CARTEIRA",,STR0087,1,0) //Este cheque n�o pertence ao contas a
pagar, n�o pode ser liberado.
Return .F.
EndIf
While .T.
If lF190Hist
cHist190 := ExecBlock( "F190HIST", .F., .F., { cHist190 } )
EndIf
cNatur190 := SEF->EF_NATUR
nOpca := 0
If !lAutomato
aSize := MSADVSIZE()
Else
nEspLarg := 5
nEspLin := 0
DEFINE MSDIALOG oDlg FROM 10,5 TO 260,567 TITLE STR0052
PIXEL //"Liberar Cheque"
Endif
oDlg:lMaximized := .F.
oPanel := TPanel():New(0,0,'',oDlg,, .T., .T.,, ,20,20)
oPanel:Align := CONTROL_ALIGN_ALLCLIENT
cAlias := FinWindow:cAliasFile
dbSelectArea(cAlias)
FinVisual(cAlias,FinWindow,(cAlias)->(Recno()),.T.)
Else
If !lAutomato
DEFINE SBUTTON FROM 110,217 TYPE 1 ACTION ;
If(Fa190Naturz(cNatur190),(nOpca := 1,If(!
Empty(cBanco190),oDlg:End(),nOpca:=0)),) ENABLE OF oPanel
DEFINE SBUTTON FROM 110,244.1 TYPE 2 ACTION (lRet := .F.,
oDlg:End() ) ENABLE OF oPanel
ACTIVATE MSDIALOG oDlg Valid(Fa190Nat(cNatur190)) CENTERED
Else
If FindFunction("GetParAuto")
aRetAuto := GetParAuto("FINA190TESTCASE")
If lRet
IF nOpca != 0
lRetorna := .T.
EndIF
If nOpcA == 2
Loop
ElseIf nOpca == 1
Reclock("SEF")
SEF->EF_LIBER := "S"
SEF->EF_HIST := cHist190
If Empty(SEF->EF_IDSEF)
SEF->EF_IDSEF := cChaveCH
Else
cChaveCH := SEF->EF_IDSEF
Endif
MsUnlock()
If EF_IMPRESS != "A"
nValor := SEF-> EF_VALOR
nRegCheq := SEF->(Recno())
Else
If Empty(cNatur190) .And. !("FINA390AVU" $
Upper(EF_ORIGEM))
SEF->(MsUnlock())
EndIf
SEF->(dbGoto(nRegAnt))
lOk := .F.
EndIf
SEF->( dbSkip() )
Enddo
SEF->( dbGoto(nReg) )
If !lF190Chq .OR. lF190Se5
nOrdSA6:=SA6->( IndexOrd() )
DbSetOrder( 1 )
SA6->( msSeek( xFilial("SA6") + cBanco190 +
cAgencia190 + cConta190 ) )
cMoedaBco := STRZERO( Max( SA6->A6_MOEDA, 1 ), 2 )
SA6->( DbSetOrder( nOrdSA6 ) )
oModelMov := FWLoadModel("FINM030")
oModelMov:SetOperation( 3 ) //Inclusao
oModelMov:Activate()
oModelMov:SetValue( "MASTER", "E5_GRV", .T. )
//Informa se vai gravar SE5 ou n�o
oModelMov:SetValue( "MASTER", "NOVOPROC", .T. )
//Informa que a inclus�o ser� feita com um novo n�mero de processo
oSubFK5 := oModelMov:GetModel("FK5DETAIL")
cChaveFK5 := FWUUIDV4()
If !(SEF->EF_ORIGEM $ "FINA390TIT")
cCamposE5 += " ,{'E5_PREFIXO' , '" + SEF-
>EF_PREFIXO + "'}"
cCamposE5 += " ,{'E5_NUMERO' , '" +
SEF->EF_TITULO + "'}"
cCamposE5 += " ,{'E5_PARCELA' , '" + SEF-
>EF_PARCELA + "'}"
cCamposE5 += " ,{'E5_TIPO' , '" + SEF-
>EF_TIPO + "'}"
Endif
If SEF->EF_TIPO == MVPAGANT .And. lContrRet .And.
lPccBaixa
cCamposE5 += " ,{'E5_VRETPIS' , SE2-
>E2_VRETPIS}"
cCamposE5 += " ,{'E5_VRETCOF' , SE2-
>E2_VRETCOF}"
cCamposE5 += " ,{'E5_VRETCSL' , SE2-
>E2_VRETCSL}"
Endif
If SpbInUse()
oSubFK5:SetValue( "FK5_MODSPB" , "3" )
Endif
//Dados do Cheque
//Posiciono no registro do CHEQUE
AGLUTINADOR/LIBERADO
SEF->( dbGoto(nRegCheq) )
If !oFKA:IsEmpty()
oFKA:AddLine()
Endif
oFKA:SetValue( "FKA_IDORIG", cChaveCH )
oFKA:SetValue( "FKA_TABORI", "SEF" )
cCamposE5 += "}"
oModelMov:SetValue( "MASTER", "E5_CAMPOS",
cCamposE5 ) //Informa os campos da SE5 que ser�o gravados indepentes de FK5
If oModelMov:VldData()
oModelMov:CommitData()
Else
lRet := .F.
cLog := cValToChar(oModelMov:GetErrorMessage()
[4]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()
[5]) + ' - '
cLog += cValToChar(oModelMov:GetErrorMessage()
[6])
Help( ,,"M030VALID",,cLog, 1, 0 )
Endif
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := NIL
AtuSalBco(cBanco190,cAgencia190,cConta190,SE5-
>E5_DTDISPO,nValor,"-")
If lF190Se5
ExecBlock("F190SE5",.F.,.F.)
Endif
Endif
nValorSef := nValor // para rdmake J.Santos
If nTotal > 0
Do While SEF->( !Eof() .And.;
EF_FILIAL ==
cFilial .And. EF_BANCO == cBanco190 .And.;
EF_AGENCIA ==
cAgencia190 .And. EF_CONTA == cConta190 .And.;
EF_NUM == cCheque190
)
Return(.T.)
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190SEF
aArea := GetArea()
If !lAutomato
MsgRun(STR0084,STR0007,{|| cFilSEF := GetRngFil( aSelFil, "SEF", .T.,
@cTmpFil ) } ) //"Favor Aguardar..."###"Geracao de cheques"
Else
cFilSEF := GetRngFil( aSelFil, "SEF", .T., @cTmpFil )
EndIf
TcSetField(cAliasTmp,aEstrSEF[nX,1],aEstrSEF[nX,2],aEstrSEF[nX,3],aEstrSEF[nX,4])
EndIf
Next nX
Aadd(aEstrSEF,{"REGSEF","N",10,0})
_oFINA190:Delete()
_oFINA190 := NIL
EndIF
_oFINA190 := FwTemporaryTable():New(cArqSEF)
_oFINA190:SetFields(aEstrSEF)
_oFINA190:AddIndex("1",Strtokarr2( SEF->(Indexkey(1)), "+"))
_oFINA190:Create()
While !((cAliasTmp)->(Eof()))
RecLock(cArqSEF,.T.)
For nX := 1 to nLenEstr
If (cAliasTmp)->(FieldPos(aEstrSEF[nX,1])) > 0
Replace (cArqSEF)->(&(aEstrSEF[nX,1])) With (cAliasTmp)-
>(&(aEstrSEF[nX,1]))
EndIf
Next
Replace (cArqSEF)->REGSEF With (cAliasTmp)->R_E_C_N_O_
(cAliasTmp)->(DbSkip())
Enddo
DbSelectArea(cArqSEF)
(cArqSEF)->(DbGoTop())
Else
cArqSEF := ""
Endif
DbSelectArea(cAliasTmp)
DbCloseArea()
If !lAutomato
If !Empty(cTmpFil)
MsgRun(STR0084,STR0007,{|| CtbTmpErase(cTmpFil)}) //"Favor
Aguardar..."###"Geracao de cheques"
Endif
Else
If !Empty( cTmpFil )
CtbTmpErase( cTmpFil )
EndIf
EndIf
RestArea(aArea)
Return(cArqSEF)
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Ok
If ExistBlock("FA190TOK")
lRet := Execblock("FA190TOK",.F.,.F.,oDlg)
Endif
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Ok
If lRet
If Empty( cCheque190 )
Help(" ",1,"FA190CHEQ")
Return .f.
Endif
dbSelectArea( "SEF" )
nOrdSEF := IndexOrd()
dbSetOrder(1)
If SEF->( (dbSeek( cFilial + cBanco190 + cAgencia190 + cConta190 + cCheque190
) ) )
If nNum == 1
Help( " ",1,"fa390Cheq" )
lRet := .f.
Endif
Else
If nNum == 2
Help( " ",1,"fa390NoXeq" )
lRet := .f.
Endif
SEF->( dbGoto(nReg) )
Endif
Endif
dbSelectArea("SEF")
SEF->( dbSetOrder(nOrdSEF) )
dbSelectArea( cAlias )
Return lRet
//--------------------------------------------------------------------------------
/*/{Protheus.doc} fa190Banco
dbSelectArea( cAlias )
Return lRet
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Exibe
If ( IsMark("EF_OK",ThisMark(),ThisInv()) )
If lfa190Mk
SEF->(DbGoTo((cAlias)->REGSEF))
If Execblock("FA190MK",.f.,.f.)
nValor := nValor + (cAlias)->EF_VALOR
nQtdTit++
Endif
Else
nValor := nValor + (cAlias)->EF_VALOR
nQtdTit++
Endif
Else
nValor := nValor - (cAlias)->EF_VALOR
nQtdTit--
nValor := Iif(nValor<0,0,nValor)
nQtdTit:= Iif(nQtdTit<0,0,nQtdTit)
EndIF
oValor:Refresh()
oQtdTit:Refresh()
Return
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Exibe
dbSelectArea(cAlias)
If cNivel>=SX3->X3_NIVEL
Return .T.
End
Return .F.
//--------------------------------------------------------------------------------
/*/{Protheus.doc} fa190Marca
Trata o valor para marcar e desmarcar item
nValor := Iif(Empty(nValor),0,nValor)
nQtdTit:= Iif(Empty(nQtdTit),0,nQtdTit)
aOldRec := {}
dbSelectArea(cAlias)
nRec := Recno()
While !((cAlias)->(Eof()))
SEF->(DbGoTo((cAlias)->REGSEF))
cChaveLbn := "JUN" + (cAlias)->(EF_FILIAL + EF_BANCO + EF_AGENCIA + EF_CONTA
+ EF_PREFIXO + EF_TITULO + EF_PARCELA + EF_TIPO)
If (nValor1 <= nLimite) .Or. Empty(nLimite)
nValor1 += (cAlias)->EF_VALOR
If nValor1 <= nLimite .Or. Empty(nLimite)
If LockByName(cChaveLbn,.T.,.F.) .and. SEF->(MsRLock()) // Se
conseguir travar o registro
RecLock(cAlias,.F.)
(cAlias)->EF_OK := cMarca
nValor += (cAlias)-> EF_VALOR
nQtdTit++
If Ascan(aChaveLbn, cChaveLbn) == 0
Aadd(aChaveLbn,cChaveLbn)
Endif
If !Empty(cMarca) .And. lF190Chq
aAreaAtu := GetArea()
RecLock("SEF",.F.)
SEF->EF_OK := cMarca
SEF->(MsUnlock())
RestArea(aAreaAtu)
EndIf
Endif
Else
RecLock(cAlias)
(cAlias)->EF_OK := " "
MsUnlock()
nAscan := Ascan(aChaveLbn, cChaveLbn )
If nAscan > 0
UnLockByName(aChaveLbn[nAscan],.T.,.F.) // Libera Lock
Endif
EndIf
Else
RecLock(cAlias)
(cAlias)->EF_OK := " "
MsUnlock()
nAscan := Ascan(aChaveLbn, cChaveLbn )
If nAscan > 0
UnLockByName(aChaveLbn[nAscan],.T.,.F.) // Libera Lock
Endif
EndIf
(calias)->(dbSkip())
EndDo
dbGoto(nRec)
dbSelectArea(cAliasAnt)
Return
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190bAval
Bloco de marca��o
If !lAutomato
cChaveLbn := "JUN" + (cAlias)-
>(EF_FILIAL+EF_BANCO+EF_AGENCIA+EF_CONTA+EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO)
Else
cChaveLbn := aChaveLbn[1]
EndIf
SEF->(DbGoTo((cAlias)->REGSEF))
Return lRet
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Inverte
Marca e Desmarca Titulos, invertendo a marca��o existente
If lTodos
(cAlias)->(DbGoTop())
EndIf
If !lAutomato
oValor:Refresh()
oQtda:Refresh()
oMark:oBrowse:Refresh(.t.)
EndIf
Return Nil
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Inverte
Return(cRetorno)
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Legenda
Return uRetorno
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190CLib
//Define Variaveis
Local lPanelFin := IsPanelFin()
LOCAL cPadrao := If ("FINA390" $ SEF->EF_ORIGEM,"571","591") // 571 -
Cancel. CH s/ Tit. Aberto | 591 - Cancel. CH s/ Tit. Baixado
LOCAL cLiberado := GetMv("MV_LIBCHEQ")
LOCAL lBxConc := GetNewPar("MV_BXCONC","2") == "1"
LOCAL nValor := 0
LOCAL nTotal := 0
LOCAL nHdlPrv := 0
LOCAL nOpca := 0
LOCAL cArquivo
Local oDlg := Nil
LOCAL cHist190 := Space(40)
LOCAL lPadrao := VerPadrao( cPadrao )
Local lDigita := IIF(mv_par01 == 1,.T.,.F.)
Local lAglut := IIf(mv_par02 == 1,.T.,.F.)
SE5->(dbSetOrder(11) )
If SE5->(MsSeek(xFilial("SE5")+cBanco190+cAgencia190+cConta190+cCheque190) )
cChavSE5 := xFilial("SE5")
+cBanco190+cAgencia190+cConta190+alltrim(cCheque190)
SE5->(DbSkip())
EndDo
Endif
While .T.
//Verifica se data do movimento n�o � menor que data limite de movimentacao
no financeiro
If !DtMovFin(,,"1")
Exit
Endif
nOpca := 0
If !lAutomato
aSize := MSADVSIZE()
oDlg:lMaximized := .F.
oPanel := TPanel():New(0,0,'',oDlg,, .T., .T.,, ,20,20)
oPanel:Align := CONTROL_ALIGN_ALLCLIENT
@ 003+nEspLin,001+nEspLarg TO 105+nEspLin,270+nEspLarg OF oPanel PIXEL
cAlias := FinWindow:cAliasFile
dbSelectArea(cAlias)
FinVisual(cAlias,FinWindow,(cAlias)->(Recno()),.T.)
Else
If !lAutomato
DEFINE SBUTTON FROM 110,217 TYPE 1 ACTION (nOpca := 1,;
If(!Empty(cBanco190), oDlg:End(), nOpca:=0)) ENABLE OF oDlg
DEFINE SBUTTON FROM 110,244.1 TYPE 2 ACTION oDlg:End() ENABLE OF
oDlg
ACTIVATE MSDIALOG oDlg CENTERED
Else
If FindFunction("GetParAuto")
aRetAuto := GetParAuto("FINA190TESTCASE")
If !Empty(cBanco190)
nOpca := 1
EndIf
EndIf
Endif
IF nOpca != 0
lRetorna := .T.
EndIF
If nOpcA == 2
Loop
ElseIf nOpca == 1
//Posiciona no registro aglutinador do SEF
SEF->(DbSetOrder(1))
SEF->(MsSeek(xFilial("SEF")
+cBanco190+cAgencia190+cConta190+cCheque190))
If EF_IMPRESS != "A"
nValor += SEF-> EF_VALOR
nRegCheq := SEF->(Recno())
Endif
SEF->(dbSkip())
Enddo
SEF->(dbGoto(nReg))
VALOR := nValor //Para contabiliza��o pela variavel VALOR
utilizando o LP571
dbSelectArea("SE5")
dbSetOrder(11)
If MsSeek(xFilial("SE5")
+cBanco190+cAgencia190+cConta190+cCheque190)
cChavSE5 := xFilial("SE5")
+cBanco190+cAgencia190+cConta190+alltrim(cCheque190)
oModelMov:SetValue("MASTER", "HISTMOV",
cHist190)
oModelMov:SetValue("MASTER", "E5_OPERACAO", 1)
If oModelMov:VldData()
oModelMov:CommitData()
Else
lRet := .F.
cLog :=
cValToChar(oModelMov:GetErrorMessage()[4]) + ' - '
cLog +=
cValToChar(oModelMov:GetErrorMessage()[5]) + ' - '
cLog +=
cValToChar(oModelMov:GetErrorMessage()[6])
Help( ,,"M030VALID",,cLog, 1, 0 )
Endif
oModelMov:DeActivate()
oModelMov:Destroy()
oModelMov := Nil
EndIf
SE5->(dbSkip())
EndDo
EndIf
cFilialSe2 := xFilial("SE2")
SE2->(DbSetOrder(1))
cTitulo := SEF-
>(EF_PREFIXO+EF_TITULO+EF_PARCELA+EF_TIPO+EF_FORNECE)
RodaProva(nHdlPrv,nTotal)
//Envia para Lancamento Contabil
cA100Incl(cArquivo,nHdlPrv,3,cLote,lDigita,lAglut)
Endif
MsgInfo(STR0079)
ElseIf SEF->EF_DATA > dDataBase
Help("
",1,"Fa190DLib",,STR0073+CHR(10)+CHR(10)+CHR(10)+STR0074,1,0)
ElseIf SEF->EF_LIBER $ "N "
Help("
",1,"Fa190NLib",,STR0075+CHR(10)+CHR(10)+CHR(10)+STR0076,1,0)
ElseIf cLiberado == "S"
Help("
",1,"Fa190MvLb",,STR0073+CHR(10)+CHR(10)+CHR(10)+STR0077+CHR(10)+STR0078,1,0)
Endif
dbSelectArea( "SE2" )
EndIf
Exit
EndDo
Return .T.
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Naturz
If lF190Natu
lRet := ExecBlock("F190NATU",,,{cNaturez})
EndIf
Return lRet
//--------------------------------------------------------------------------------
/*/{Protheus.doc} F190EstCh
SE5->(dbSetOrder(11))
If SE5->(DbSeek(cDadosBco))
While SE5->(!EOF()) .AND. SE5-
>(E5_FILIAL+E5_BANCO+E5_AGENCIA+E5_CONTA+E5_NUMCHEQ) == cDadosBco
If Alltrim(SE5->E5_TIPODOC) $ "EC|ES" .and. cSeqSe5 == SE5-
>E5_SEQ //Se houver estorno do cheque
lRet := .T.
Exit
Else
SE5->(DBSKIP())
Endif
Enddo
Endif
SE5->(DBGOTO(nRecAtu))
Return lRet
//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
Utilizacao de menu Funcional
//--------------------------------------------------------------------------------
/*/{Protheus.doc} FinA190T
INCLUI := .F.
ALTERA := .F.
Return .T.
//--------------------------------------------------------------------------------
/*/{Protheus.doc} F190SetPerg
Funcao que define as perguntas da tecla F12 para a rotina de Geracao de Cheques
If !lF190Perg
AcessaPerg("AFI190",.T.)
Else
ExecBlock("F190PERG",.F.,.F.,{"AFI190"})
EndIf
Return
//--------------------------------------------------------------------------------
/*/{Protheus.doc} Fa190Fil
AdmSelecFil("",,.F.,@aRet,"SEF",.T.,.F.)
If Empty(aRet)
Aadd(aRet,cFilAnt)
Endif
Return(Aclone(aRet))
//-------------------------------------------------------------------
/*/{Protheus.doc}Fa190Nat
Tornar o campo FK5_NATURE obrigat�rio
@author Thiago Murakami
@since 15/07/2014
@version 12
/*/
//-------------------------------------------------------------------
Function Fa190Nat(cNatur)
If Empty(cNatur)
lRet:= .F.
Help(" ",1,"FA190NAT",,STR0086,1,0) //Campo natureza obrigat�rio
Endif
Return lRet
//--------------------------------------------------------------------------------
/*/{Protheus.doc} F190FilOri
cAliasQry := GetNextAlias()
cQuery := "SELECT "
cQuery += "SEF.EF_FILORIG "
cQuery += "FROM "
cQuery += RetSqlName("SEF") + " SEF "
cQuery += "WHERE "
cQuery += "SEF.EF_BANCO = '" +cBanco+ "' AND "
cQuery += "SEF.EF_AGENCIA = '" +cAgencia+ "' AND "
cQuery += "SEF.EF_CONTA = '" +cConta+ "' AND "
cQuery += "SEF.EF_NUM = '" +cNumChq+ "' AND "
cQuery += "SEF.EF_DATA = '" + DtoS(dDataEmis) + "' AND "
cQuery += "SEF.D_E_L_E_T_ = '' "
cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),cAliasQry,.F.,.T.)
dbSelectArea(cAliasQry)
(cAliasQry)->(dbGoTop())
While !(cAliasQry)->(EOF())
// Adiciona filiais dos cheques aglutinados e do cheque aglutinador
cFils += (cAliasQry)->EF_FILORIG + "|"
(cAliasQry)->(dbSkip())
EndDo
(cAliasQry)->(dbCloseArea())
MsErase(cAliasQry)
SEF->(dbClearFilter())
RestArea(aArea)
Return (cFils)
//---------------------------------------------------------------------------------
----------------------------
/*/{Protheus.doc} F190MaxSeq
Esta fun��o Verifica se o calculo da fun��o SumAbatPag() j� foi efetuado para o
registro atual de cAliasSE2
cQuery := ChangeQuery(cQuery)
If (cTmp)->( !EoF() )
cRet := (cTmp)->SEQMAX
EndIf
Return cRet