#INCLUDE "PROTHEUS.CH"
/*
BaixaBaja Automáticaautomática
BaixaBaja Automáticaautomática
----------------------
Estrutura da
Estructura de aRetAuto - baixabaja automática
---------------------------------------------------------
aRetAuto [1] := aRecnos (array contendoconteniendo oslos Recnos de doslos registros apor darse seremde baixadosbaja)
aRetAuto [2] := cBanco (Banco de dala baixabaja)
aRetAuto [3] := cAgencia (Agencia dade la baixabaja)
aRetAuto [4] := cConta (ContaCuenta de dala baixabaja)
aRetAuto [5] := cCheque (Cheque dade la Baixabaja - apenassolamente ContasCuentas apor Pagarpagar)
aRetAuto [6] := cLoteFin (Lote financiero Financeirode dala baixabaja)
aRetAuto [7] := cNatureza (NaturezaModalidad dodel movimentomovimiento bancario - apenassolamente ContasCuentas apor Pagarpagar)
aRetAuto [8] := dBaixa (DataFecha de dala baixabaja)
aRetAuto [9] := nTipoBx (1 = BaixaBaja somentesolamente titulostítulos que nãono estaoestán emen borderoel ouborderó o nTipoBx -> 2 = BaixaBaja somentesolamente titulostítulos emen borderoborderó)
aRetAuto [10]:= cBcoDe (De Portador de)
aRetAuto [11]:= cBcoAte (A Portador Até)
aRetAuto [12]:= dVencIni (VencimentoVencimiento Inicialinicial)
aRetAuto [13]:= dVencFim (VencimentoVencimiento Finalfinal)
aRetAuto [14]:= cBord090I (BorderôBorderó Inicialinicial)
aRetAuto [15]:= cBord090F (BorderôBorderó Finalfinal)
aRetAuto [16]:= cBenef090 (BeneficiárioBeneficiario dodel Chequecheque)
aRetAuto [17]:= cHistor (HistoricoHistorial dodel Chequecheque)
aRetAuto [18]:= lMultNat (RateioProrrateo Multiplasmúltiples naturezasmodalidades)
aRetAuto [19]:= aVendor (Array para ala baixabaja de vendor)
ExemploEjemplo: MSExecAuto({|x, y| FINA090(x, y)}, 3, aRetAuto)
Para definir oel Motivo de Baixabaja (caso nãosi no se hubiera informado, oel default ées NORMAL):
Private _cAutoMotBx := "DEBITO CC"
CancelamentoAnulación de baixabaja:
----------------------
EstruturaEstructura dade aRetAuto - CancelamentoAnulación automáticoautomática de baixasbajas
---------------------------------------------------------
nRadio := aRetAuto[1] //1 = CancelaAnula Baixabaja de titulostítulos titulostítulos 2 = cancelaanula baixabaja solamente somentede titulostítulos emen borderoborderó
cBord1 := aRetAuto[2] // BorderôDe DeBorderó
cBord2 := aRetAuto[3] // BorderôA AtéBorderó
cDatB1 := aRetAuto[4] // DtFch. BaixaBaja Inicialinicial
cDatB2 := aRetAuto[5] // DtFch. BaixaBaja Finalfinal
cFor1 := aRetAuto[6] // FornecedorDe DeProveedor
cFor2 := aRetAuto[7] // FornecedorA AtéProveedor
aSelFil := aRetAuto[8] // Array con las comsucursales asque filiaisse aconsiderarán seremen consideradasla naselección seleçãode doslos titulostítulos
*/
/*
------------------------------------------------------------------------------------
FAut090
ExemplosEjemplos de processosprocesos dodel FINA090 Automático
------------------------------------------------------------------------------------
*/
User Function FAut090()
Local nOpca := 0
Local nRadio := 1
While .T.
DEFINE MSDIALOG oDlg FROM 094,1 TO 230,293 TITLE "BaixaBaja Automaticaautomática" PIXEL
@ 05,07 TO 40, 140 OF oDlg PIXEL
@ 10,10 RADIO oRadio VAR nRadio;
ITEMS "BaixaBaja Automaticaautomática","BaixaBaja Automaticaautomática - Vendor","CancelamentoAnulación Automaticoautomática de Baixasbajas";
3D SIZE 100,10 OF oDlg PIXEL
DEFINE SBUTTON FROM 45,085 TYPE 1 ENABLE OF oDlg ACTION (nOpca := 1, oDlg:End())
DEFINE SBUTTON FROM 45,115 TYPE 2 ENABLE OF oDlg ACTION (nOpca := 0, oDlg:End())
ACTIVATE MSDIALOG oDlg CENTERED
If nOpca == 1
If nRadio == 1 //BaixaBaja Automáticaautomática
FBx090Aut()
Loop
ElseIf nRadio == 2 //BaixaBaja Automáticaautomática - Vendor
FBx090VEN()
Loop
Else //CancelamentoAnulación Automáticoautomática de Baixabaja
FBx090Can()
Loop
Endif
Else
Exit
Endif
EndDo
Return
/*
------------------------------------------------------------------------------------
FBx090Aut
FunçãoFunción para realizar baixabaja automática - Multi-FiliaisMultisucursales
Ajustar perguntapregunta SelecionaSelecciona Filiaissucursales - SIMSÍ
------------------------------------------------------------------------------------
*/
Static Function FBx090Aut()
Local aRecnos := {}
Local cPref := "091"
Local cFil1 := "D MG 01 "
Local cTitulo1 := "FIN000001"
Local cFil2 := "D MG 02 "
Local cTitulo2 := "FIN000002"
Local cParcel := " "
Local cTipo := "NF "
Local cForne := "FIN102"
Local cLoja := "01"
Local cBanco := "001"
Local cAgencia := "00001"
Local cConta := "0000000001"
Local cCheque := ""
Local dBaixa := dDataBase
Local nTipoBx := 1
Local cBcoDe := " "
Local cBcoAte := "ZZZ"
Local dVencIni := dDataBase
Local dVencFim := dDataBase
Local cBordIni := " "
Local cBordFim := "ZZZZZZ"
Local cBenef090 := ""
Local cHistor := ""
Local lMultNat := .F.
Local cLoteFin := ""
Local cNatureza := PadR("PEQ000",Len( SE2->E2_NATUREZ))
Local aFilBx := {cFil1,cFil2}
Private _cAutoMotBx := "DEBITO CC" //CasoSi no nãose informeinforma esta variávelvariable, oel motivo de baixabaja será NORMAL
//-- variaveisvariables utilizadas para oel controlecontrol de erroerror de dala rotinarutina automaticaautomática
Private lMsErroAuto := .F.
Private lAutoErrNoFile := .T.
//-- Data base
dDataBase := CTOD("14/07/2016")
dBaixa := dDataBase
dVencIni := dDataBase
dVencFim := dDataBase
//-- Array comcon asla informaçõesinformación para selecionarseleccionar oslos títulos
aAdd(aRecnos,PesqSE2(cFil1,cPref, cTitulo1, cParcel, cTipo, cForne, cLoja))
aAdd(aRecnos,PesqSE2(cFil2,cPref, cTitulo2, cParcel, cTipo, cForne, cLoja))
aRetAuto := {}
aAdd(aRetAuto,aRecnos ) //(array contendoconteniendo oslos Recnos dosde los registros por adarse seremde baixadosbaja)
aAdd(aRetAuto,cBanco ) //(Banco dade la baixabaja)
aAdd(aRetAuto,cAgencia ) //(Agencia de dala baixabaja)
aAdd(aRetAuto,cConta ) //(ContaCuenta de dala baixabaja)
aAdd(aRetAuto,cCheque ) //(Cheque de dala Baixabaja - apenassolamente ContasCuentas apor Pagarpagar)
aAdd(aRetAuto,cLoteFin ) //(Lote Financeirofinanciero de dala baixabaja)
aAdd(aRetAuto,cNatureza ) //(NaturezaModalidad dodel movimentomovimiento bancario - apenassolamente ContasCuentas apor Pagarpagar)
aAdd(aRetAuto,dBaixa ) //(DataFecha de dala baixabaja)
aAdd(aRetAuto,nTipoBx ) //(1 = BaixaBaja somentesolamente titulostítulos que no nãoestán estaoen emel borderoborderó ouo nTipoBx -> 2 = Baja Baixasolamente somentetítulos titulosen emel borderoborderó)
aAdd(aRetAuto,cBcoDe ) //(De Portador de)
aAdd(aRetAuto,cBcoAte ) //(A Portador Até)
aAdd(aRetAuto,dVencIni ) //(VencimentoVencimiento Inicialinicial)
aAdd(aRetAuto,dVencFim ) //(VencimentoVencimiento Finalfinal)
aAdd(aRetAuto,cBordIni ) //(BorderôBorderó Inicialinicial)
aAdd(aRetAuto,cBordFim ) //(BorderôBorderó Finalfinal)
aAdd(aRetAuto,cBenef090 ) //(BeneficiárioBeneficiario dodel Chequecheque)
aAdd(aRetAuto,cHistor ) //(HistoricoHistorial dodel Chequecheque)
aAdd(aRetAuto,lMultNat ) //(RateioProrrateo MultiplasMúltiples naturezasmodalidades)
aAdd(aRetAuto,aFilBx ) //(FiliaisSucursales para seleçãoselección de doslos títulos paraapara la baixabaja - apenasSolamente se Selecionaselecciona Filiaissucursales = SimSí)
//-- Realiza baixabaja
//3 = inclusaoinclusión
MSExecAuto({|x, y| FINA090(x, y)}, 3, aRetAuto)
If lMsErroAuto
MOSTRAERRO()
Endif
Return
/*
------------------------------------------------------------------------------------
FBx090VEN
FunçãoFunción para realizar la baixabaja automática pelopor el motivo Vendor
------------------------------------------------------------------------------------
*/
Static Function FBx090VEN()
Local aRetAuto := {}
Local aRecnos := {}
Local cPref := "PEQ"
Local cTitulo := "CT090A090"
Local cTituloV := "CT090V090"
Local cParcel := PadR(" ",Len( SE2->E2_PARCELA ))
Local cTipo := "DP "
Local cNatureza := "PEQ000 "
Local cForne := "PEQ000"
Local cLoja := "00"
Local cCheque := ""
Local cLoteFin := ""
Local cBanco := "001"
Local cAgencia := "00001"
Local cConta := "0000000001"
Local dBaixa := dDatabase
Local cFil := "D MG 01 "
Local nTipoBx := 1
Local cBcoDe := " "
Local cBcoAte := "ZZZ"
Local dVencIni := dDatabase
Local dVencFim := dDatabase
Local cBordIni := " "
Local cBordFim := "ZZZZZZ"
Local cBenef090 := ""
Local cHistor := "BAIXABAJA POR VENDOR"
Local lMultNat := .F.
Local cContrato := "FINA090_CT090"
Local dDtVencV := CTOD("20/12/2021")
Local nTxAcresV := 5
Local nValorV := 1000
Local cNatV := "VENDOR "
Local aFilBx := {}
Local aVendor := {cContrato, cBanco, cAgencia, cPref, cTituloV, cParcel, cTipo, dDtVencV, nTxAcresV, cNatV, nValorV}
Private _cAutoMotBx := "VENDOR"
//-- variaveisvariables utilizadas para oel controlecontrol de erroerror de dala rotinarutina automaticaautomática
Private lMsErroAuto := .F.
Private lAutoErrNoFile := .T.
//-- Data base
dDataBase := CTOD("14/12/2021")
dBaixa := dDataBase
dVencIni := dDataBase
dVencFim := dDataBase
aAdd(aRecnos,PesqSE2(cFil,cPref, cTitulo,cParcel, cTipo, cForne, cLoja))
aAdd(aRetAuto,aRecnos ) //(array contendoconteniendo oslos Recnos dosde los registros por adarse seremde baixadosbaja)
aAdd(aRetAuto,cBanco ) //(Banco dade la baixabaja)
aAdd(aRetAuto,cAgencia ) //(Agencia de dala baixabaja)
aAdd(aRetAuto,cConta ) //(ContaCuenta de dala baixabaja)
aAdd(aRetAuto,cCheque ) //(Cheque de dala Baixabaja - apenassolamente ContasCuentas apor Pagarpagar)
aAdd(aRetAuto,cLoteFin ) //(Lote Financeirofinanciero dade la baixabaja)
aAdd(aRetAuto,cNatureza ) //(NaturezaModalidad dodel movimentomovimiento bancario - apenassolamente ContasCuentas apor Pagarpagar)
aAdd(aRetAuto,dBaixa ) //(DataFecha de dala baixabaja)
aAdd(aRetAuto,nTipoBx ) //(1 = BaixaBaja somentesolamente titulostítulos que no nãoestán estaoen emel borderoborderó ouo nTipoBx -> 2 = BaixaBaja solamente somentetítulos titulosen emel borderoborderó)
aAdd(aRetAuto,cBcoDe ) //(De Portador de)
aAdd(aRetAuto,cBcoAte ) //(A Portador Até)
aAdd(aRetAuto,dVencIni ) //(VencimentoVencimiento Inicialinicial)
aAdd(aRetAuto,dVencFim ) //(VencimentoVencimiento Finalfinal)
aAdd(aRetAuto,cBordIni ) //(BorderôBorderó Inicialinicial)
aAdd(aRetAuto,cBordFim ) //(BorderôBorderó Finalfinal)
aAdd(aRetAuto,cBenef090 ) //(BeneficiárioBeneficiario dodel Chequecheque)
aAdd(aRetAuto,cHistor ) //(HistoricoHistorial dodel Chequecheque)
aAdd(aRetAuto,lMultNat ) //(RateioProrrateo MultiplasMúltiples naturezasmodalidades)
aAdd(aRetAuto,aFilBx ) //(FiliaisSucursales para seleçãoselección de doslos títulos paraapara la baixabaja - apenasSolamente se Selecionaselecciona Filiaissucursales = SimSí)
aAdd(aRetAuto,aVendor ) //(Array comcon dadosdatos dodel Vendor)
//-- Realiza baixabaja
//3 = inclusaoinclusión
MSExecAuto({|x, y| FINA090(x, y)}, 3, aRetAuto)
If lMsErroAuto
MOSTRAERRO()
Endif
Return
/*
------------------------------------------------------------------------------------
FBx090Can
FunçãoFunción para realizar cancelamentoanulación automáticoautomática de baixasbajas
------------------------------------------------------------------------------------
*/
Static Function FBx090Can()
Local cFil1 := "M PR 01 "
Local cFil2 := "M PR 02 "
Local cForne := "FICN13"
Local cForne2 := "FICN14"
Local aFiliais := {cFil1,cFil2}
//-- variaveisvariables utilizadas para oel controlecontrol de erroerror de dala rotinarutina automaticaautomática
Private lMsErroAuto := .F.
Private lAutoErrNoFile := .T.
//Data base
dDataBase := CTOD("09/08/2019")
dBaixa := dDataBase
aRetAuto := {}
aAdd(aRetAuto,1 ) //1 = BaixaBaja somentesolamente titulostítulos que nãono están estaoen emel borderoborderó ouo nTipoBx -> 2 = BaixaBaja solamente somentetítulos titulosen emel borderoborderó
aAdd(aRetAuto," " ) // BorderoDe DeBorderó
aAdd(aRetAuto,"ZZZZZ" ) // BorderoA AtéBorderó
aAdd(aRetAuto,dDataBase ) // DtFch. BaixaBaja Inicialinicial
aAdd(aRetAuto,dDataBase ) // DtFch. BaixaBaja Finalfinal
aAdd(aRetAuto,cForne ) // FornecedorDe DeProveedor
aAdd(aRetAuto,cForne2 ) // FornecedorA AteProveedor
aAdd(aRetAuto,aFiliais ) //Títulos Baixadosdados de baja
//-- Realiza anulación Cancelamentode dala baixabaja
//4 = CancelamentoAnulación
MSExecAuto({|x, y| FINA090(x, y)}, 4, aRetAuto)
If lMsErroAuto
MOSTRAERRO()
Endif
Return
/*
------------------------------------------------------------------------------------
PesqSE2
FunçãoFunción para retornardevolver oel Recno dodel título apor darse serde baixadobaja
@param cFilOri , Character, FilialSucursal de origemorigen dodel título (E2_FILORIG)
@param cPrefOri , Character, PrefixoPrefijo dodel titulotítulo (E2_PREFIXO)
@param cNumOri , Character, Número dodel titulotítulo (E2_NUM)
@param cParcOri , Character, ParcelaCuota dodel titulotítulo (E2_PARCELA)
@param cTipoOri , Character, Tipo dodel titulotítulo (E2_TIPO)
@param cCfOri , Character, FornecedorProveedor dodel titulotítulo (E2_FORNECE)
@param cLojaOri , Character, LojaTienda dodel titulotítulo (E2_LOJA)
@retorno nRec, Numeric, Recno dodel registro por adarse serde baixadobaja
------------------------------------------------------------------------------------
*/
Static Function PesqSE2(cFilOri, cPref, cTitulo, cParcel, cTipo, cForne, cLoja )
Local aAreaSE2 := SE2->(GetArea())
Local nRec := 0
DEFAULT cFilOri := cFilAnt
SE2->(DbSetOrder(1))
If DbSeek (xFilial("SE2", cFilOri) + cPref + cTitulo + cParcel + cTipo + cForne + cLoja)
nRec := SE2-> (RECNO())
Endif
RestArea(aAreaSE2)
Return nRec
|