Índice
...
Ejecución
...
Execução automática (ExecAuto) da rotina de liquidação a receber de la rutina de liquidación por cobrar (FINA460).
...
Posição Posición | Tipo | Nome Nombre | DescriçãoDescripción | |||||
---|---|---|---|---|---|---|---|---|
1 | Numérico | nPosArotina | Utilizado Se utiliza para indicar a operação a ser executada. Utilizada apenas pela chamada da rotina padrão pelo menula operación que se ejecutará. Solamente se utiliza por la llamada de la rutina estándar por el menú. Enviar NIL ou o 0 (zerocero). | |||||
2 | Vetor Vector | aAutoCab | Utilizado Se utiliza para enviar dados referentes ao processodatos referente al proceso, como:
| |||||
3 | Vetor Vector | aAutoItens | Vetor Vector utilizado para envio dos dados referentes aos títulos a serem geradosenvío de los datos referentes a los títulos que se generarán, como:
ExemploEjemplo: Aadd(aItens,{; | |||||
4 | Numérico | nOpcAuto | Processo Proceso que se desejadesea realizar: Liquidación Reliquidación Anulación de Liquidaçãoliquidación | |||||
5 | Caractere Carácter | cAutoFil | Expressão Expresión ADVPL para filtro de seleção dos títulos geradores da liquidação (a serem liquidados). Será utilizado se o parâmetro cFilSQL não for informadode selección de los títulos generadores de la liquidación (que se liquidarán). Se utilizará si el parámetro cFilSQL no se informara.
| |||||
6 | Caractere Carácter | cNumLiqCan | Número da liquidaçãode la liquidación que se quer cancelar. Enviado apenas em caso dequiere anular. Solamente se envía si nOpcAuto = 5 | |||||
7 | Vetor Vector | aRotAutoVA | Vetor utilizado para envio dos valores acessórios dos títulos que serão gerados Vector utilizado para envío de los valores adicionales de los títulos que se generarán. | |||||
8 | Numérico | nOutrMoed | Tratamento Tratamiento para outras moedas (idêntico à telaotras monedas (idéntico a la pantalla de filtro). 1 = ConverteConvierte No considera Variación monetaria | |||||
9 | Numérico | nTxNegoc | Taxa da moeda da negociaçãoTasa de la moneda de la negociación.
| |||||
10 | Numérico | nTpTaxa | Tipo da taxa da negociaçãode tasa de la negociación. 1=FixaFija
| |||||
11 | Caractere Carácter | cFunOrig | O valor desta variável será gravada no El valor de esta variable se grabará en el campo E1_ORIGEM.
| |||||
12 | Numérico | nTxCalJur | ||||||
13 | Caractere Carácter | cFilSQL | Expressão Expresión SQL para filtro de seleção dos títulos geradores da liquidação (a serem liquidados). Substitui o filtro em de selección de los títulos generadores de la liquidación (que se liquidarán). Sustituye el filtro en ADVPL (cAutoFil). |
...
...
1) Se enviado condição de pagamento no Si se envía la condición de pago en el array aAutoCab
A customização do cliente deve criar o La personalización del cliente debe crear el array aAutoItens de acordo com a condição e enviar para acuerdo con la condición y enviar a execauto devidamente debidamente parametrizado. Deve ser utilizada a função Debe utilizarse la función 'Condicao' para retornar a quantidade de parcelasdevolver la cantidad de de cuotas.
2) Se NÃO enviado condição de pagamento no Si NO se envía la condición de pago en el array aAutoCab
A customização do cliente deve criar o La personalización del cliente debe crear el array aAutoItens manualmente e y enviar para a execauto devidamente debidamente parametrizado.
3) Se enviado a) Si se envía(n) la(s) parcelacuota(s) no en el array aAutoItens
A rotina irá gravar essa informação no La rutina grabará esta información en el campo E1_PARCELA dos de los títulos geradosgenerados.
4) Se NÃO enviado parcela no Si NO se envía la cuota en el array aAutoItens
A rotina irá gravar o La rutina grabará el campo E1_PARCELA dos de los títulos gerados de acordo com o parâmetro generados de acuerdo con el parámetro MV_1DUP, DE FORMA sequencialsecuencial.
...
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#include "PROTHEUS.CH" User Function UFINA460() Local cNum := "" Local nZ := 0 Local aCab := {} Local aItens := {} Local nOpc := 3 //3-LiquidaçãoLiquidación,4-ReliquidacaoReliquidación,5-CancelamentoAnulación de dala liquidaçãoliquidación Local cFiltro := "" Local cLiqCan := Space(6) //numero da liquidacao a cancelarnúmero de la liquidación que se anulará Local aParcelas := {} Local nValor := 2000 //Valor aque se liquidarliquidará Local cCond := '001' //CondicaoCondición de pagamentopago 1x Local nRadio := 1 Local oRadio Local oLiqCan Local lAutoPix := .F. cNum := padr("200", tamSx3("E1_NUM")[1]) //TelaPantalla utilizada apenassolamente para exemploejemplo nOpca := 0 DEFINE MSDIALOG oDlg FROM 094,1 TO 240,300 TITLE "LiquidaçãoLiquidación Automaticaautomática" PIXEL @ 010,010 Radio oRadio VAR nRadio; ITEMS "Liquidar",; "Reliquidar",; "CancelarAnular"; 3D SIZE 50,10 OF oDlg PIXEL ; ON CHANGE ( oLiqCan:lReadOnly := If(nRadio != 3, .T., .F.)) @ 022,070 SAY "Cancel. LiquidaçãoLiquidación:" SIZE 49, 07 OF oDlg PIXEL @ 030,070 MSGET oLiqCan VAR cLiqCan Valid !Empty(cLiqCan) SIZE 49, 11 OF oDlg PIXEL hasbutton DEFINE SBUTTON FROM 55,085 TYPE 1 ENABLE OF oDlg ACTION ( nOpca := 1, oDlg:End()) DEFINE SBUTTON FROM 55,115 TYPE 2 ENABLE OF oDlg ACTION ( nOpca := 0, oDlg:End()) ACTIVATE MSDIALOG oDlg CENTERED If nOpca == 1 If nRadio == 1 .or. nRadio == 2 If nRadio == 1 //liquidacaoliquidación nOpc := 3 //Filtro dodel Usuáriousuario cFiltro := "E1_FILIAL == '"+xFilial("SE1") + "' .And. " cFiltro += "E1_CLIENTE == '000100' .And. E1_LOJA == '01' .And. " cFiltro += "E1_SITUACA $ '0FG' .And. E1_SALDO > 0 .and. " cFiltro += 'Empty(E1_NUMLIQ)' Else nOpc := 4 //reliquidacaoreliquidación //Filtro dodel Usuáriousuario cFiltro := "E1_FILIAL == '"+xFilial("SE1") + "' .And. " cFiltro += "E1_CLIENTE == '000100' .And. E1_LOJA == '01' .And. " cFiltro += "E1_SITUACA $ '0FG' .And. E1_SALDO > 0 .and. " cFiltro += '!Empty(E1_NUMLIQ)' Endif //Array dodel processoproceso automaticoautomático (aAutoCab) aCab := { {"cCondicao" ,cCond },; {"cNatureza" ,"001" },; {"E1_TIPO" ,"NF " },; {"cCLIENTE" ,"000100"},; {"nMoeda" ,1 },; {"cLOJA" ,"01" },; {"AUTMRKPIX", lAutoPix }} //------------------------------------------------------------ //MontaElabora aslas parcelascuotas de acordoacuerdo comcon ala condiçãocondición de pagamentopago //------------------------------------------------------------ aParcelas := CondicaoCondición( nValor, cCond,, dDataBase) //-------------------------------------------------------------- //NãoNo ées possivelposible mandarenviar AcrescimoAumento ey DecrescimoDescuento juntojuntos. //SeSi se mandarenvían oslos doisdos valores maioresmayores que zerocero, considera AcrescimoAumento //-------------------------------------------------------------- For nZ := 1 to Len(aParcelas) //DadosDatos de daslas parcelascuotas aque seremse geradasgenerarán Aadd(aItens,{{ "E1_PREFIXO", "LIQ" },; //PrefixoPrefijo {"E1_BCOCHQ" , "CX1" },; //Banco {"E1_AGECHQ" , "00001" },; //Agencia {"E1_CTACHQ" , "0000000001" },; //ContaCuenta {"E1_NUM" , cNum },; //Nro.Nº chequeCheque (dará origemorigen aoal numeronúmero dodel titulotítulo) {"E1_EMITCHQ" , "EXECAUTO" },; //EmitenteEmisor dodel cheque {"E1_VENCTO" , aParcelas[nZ,1]},; //DataFecha boabuena {"E1_VLCRUZ" , aParcelas[nZ,2]},; //Valor dodel cheque/titulotítulo {"E1_ACRESC" , 0 },; //AcrescimoAumento {"E1_DECRESC" , 0 }}) //DecrescimoDescuento cNum := Soma1(cNum, Len( Alltrim(cNum))) Next nZ If Len( aParcelas) > 0 //LiquidacaoLiquidación ey reliquidacaoreliquidación //FINA460(nPosArotina,aAutoCab,aAutoItens,nOpcAuto,cAutoFil,cNumLiqCan) FINA460(, aCab, aItens, nOpc, cFiltro) //InclusaoInclusión // Este aviso solamente funciona apenas para testeprueba monousuario Alert("LiquidacaoLiquidación Incluidaincluida -> " + GetMv("MV_NUMLIQ")) Endif Else nOpc := 5 //CancelamentoAnulación FINA460(,,, nOpc,, cLiqCan) //CancelamentoAnulación Alert("LiquidacaoLiquidación Canceladaanulada -> " + cLiqCan) Endif EndIf Return |
Bloco de código | ||||||
---|---|---|---|---|---|---|
language | java | |||||
theme | Midnight | firstline | 1||||
| ||||||
#INCLUDE 'Protheus.ch' User Function TST460() Local nX := 0 Local aCab := {} Local aItens := {} Local cFilSQL := "" //filtro quemque conterácontendrá oslos títulos que serãose liquidadosliquidarán, geradogenerados comcon base en noel array aTitOri Local aTitOri := {} Local cNaturez := '000001' Local nMoeda := 1 Local cTipoLiq := 'FT ' Local cCond := "" local cLiqPref := 'FIN' local cLiqNum := '000000242' local cLiqParcela := 'A' Local cLiqTipo := "FT " local cLiqCli := '000001' local cLiqLoja := '01' local nValLiq := 2000 Local lAutoPix := .F. Private lMsErroAuto := .F. Private lAutoErrNoFile := .T. Aadd(aTitOri,{'D MG 01 ', 'FIN', '000000001', 'A', 'NF ', '000001', '01'}) Aadd(aTitOri,{'D MG 01 ', 'FIN', '000000001', 'B', 'NF ', '000001', '01'}) Aadd(aItens,{{"E1_PREFIXO",cLiqPref}, {'E1_NUM', cLiqNum}, {'E1_PARCELA', cLiqParcela}, {'E1_VENCTO', dDatabase}, {'E1_VLCRUZ', nLiqVal}}) cFilSQL := " (" For nX := 1 To Len(aTitOri) If nX > 1 cFilSQL += " OR " EndIf cFilSQL += " (" cFilSQL += " E1_FILIAL = '" + aTitOri[nX][1] + "' AND " cFilSQL += " E1_PREFIXO = '" + aTitOri[nX][2] + "' AND E1_NUM = '" + aTitOri[nX][3] + "' AND " cFilSQL += " E1_PARCELA = '" + aTitOri[nX][4] + "' AND E1_TIPO = '" + aTitOri[nX][5] + "' AND " cFilSQL += " E1_CLIENTE = '" + aTitOri[nX][6] + "' AND E1_LOJA = '" + aTitOri[nX][7] + "' )" Next nX cFilSQL += ") AND E1_SITUACA IN ('0','F','G') AND E1_SALDO > 0 AND LTRIM(E1_NUMLIQ) = '' " aCab := {} aAdd(aCab, {"cCondicao", cCond}) //CondiçãoCondición de pagamentopago aAdd(aCab, {"cNatureza", cNaturez}) //NaturezaModalidad aAdd(aCab, {"E1_TIPO", cLiqTipo}) //Tipo aAdd(aCab, {"cCliente", cLiqCli}) //Cliente aAdd(aCab, {"cLoja", cLiqLoja}) //LojaTienda aAdd(aCab, {"nMoeda", nMoeda}) //MoedaMoneda aAdd(aCab, {"AUTMRKPIX", lAutoPix}) //Pix Fina460(/*nPosArotina*/,aCab,aItens,3,/*cFiltroADVPL*/,/*xNumLiq*/,/*xRotAutoVa*/,/*xOutMoe*/,/*xTxNeg*/,/*xTpTaxa*/,/*xFunOrig*/,/*xTxCalJur*/,cFilSQL) Return |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#Include "Protheus.ch" #Include "rwmake.ch" #Include "FWMVCDEF.ch" Static nValTot := 0 Static lCpoFK7 := Nil Static FunName := Nil Static aIDDOC := {} User Function FINA460A() Local aParam := PARAMIXB Local xRet := .T. Local oObj := NIL Local cIdPonto := '' Local cIdModel := '' Local nDescon := 10 Local nI := 0 Local cCli460 := "" Local nValAux := 0 Local nLenFO2 := 0 Local nValParc := 0 Local nTxMul := 10 Local nTxJur := 1 If FunName == Nil FunName := AllTrim(FunName()) EndIf If FunName != "FINA460" If lCpoFK7 == Nil lCpoFK7 := FK7->(ColumnPos("FK7_CLIFOR")) > 0 EndIf /*TaxaTasa de Jurosinterés" (FO1_TXJUR), "TaxaTasa de dala Multamulta" (FO1_TXMUL), "Val. DescontoDescuento" (FO1_DESCON) ey "VlrVal.Adic.Neg" (FO1_VLADIC), */ If aParam <> NIL oObj := aParam[1] cIdPonto := aParam[2] cIdModel := aParam[3] If cIdPonto == 'FORMLINEPOS' If cIdModel == 'TITSELFO1' cTit := PosicioneMarque( "FK7", 1, xFilial("FK7") + oObj:GetValue( "FO1_IDDOC" ), "FK7_NUM" ) cCli460 := PosicioneMarque( "FK7", 1, xFilial("FK7") + oObj:GetValue( "FO1_IDDOC" ), "FK7_CLIFOR" ) If aScan( aIDDOC, oObj:GetValue( "FO1_IDDOC" ) ) == 0 aAdd(aIDDOC, oObj:GetValue( "FO1_IDDOC" ) ) For nI := 1 to oObj:Length() oObj:GoLine(nI) nValAux := 0 If cCli460 == 'CDESCO' .And. cTit == oObj:GetValue("FO1_NUM") // Cliente comcon descontodescuento nValAux := oObj:GetValue("FO1_TOTAL") - nDescon oObj:LoadValue("FO1_DESCON", nDescon) oObj:LoadValue("FO1_TOTAL", nValAux) EndIf If cCli460 == 'JURMUL' .And. cTit == oObj:GetValue("FO1_NUM")// Cliente comcon Jurosinterés ey Multamulta nValAux := oObj:GetValue("FO1_TOTAL") nDias := dDataBase - FDtVento() oObj:LoadValue("FO1_TXJUR", nTxJur) oObj:LoadValue("FO1_VLJUR", ( nValAux * nTxJur * nDias ) / 100 ) oObj:LoadValue("FO1_TXMUL", nTxMul) oObj:LoadValue("FO1_VLMUL", ( nValAux * nTxMul ) / 100 ) oObj:LoadValue("FO1_VLADIC", 14.5) nValAux := nValAux + oObj:GetValue("FO1_VLADIC") + oObj:GetValue("FO1_VLMUL") + oObj:GetValue("FO1_VLJUR") oObj:LoadValue("FO1_TOTAL", nValAux) EndIf nValTot += nValAux Next EndIf EndIf ElseIf cIdPonto == 'MODELPOS' If cIdModel == "FINA460A" oObjFO2 := oObj:GetModel("TITGERFO2") nLenFO2 := oObjFO2:Length() nValParc := ( nValTot / nLenFO2 ) For nI := 1 to nLenFO2 oObjFO2:GoLine(nI) oObjFO2:LoadValue("FO2_TXJUR", 2 ) oObjFO2:LoadValue("FO2_VALOR", nValTot) oObjFO2:LoadValue("FO2_TOTAL", nValTot) Next EndIf EndIf EndIf EndIf Return xRet Static Function FDtVento() Local dData := CTOD(" / / ") Local aArea := SE1->(GetArea()) dData := Posicione( "SE1", 1, xFilial("SE1") + FK7->(FK7_PREFIXO + FK7_NUM + FK7_PARCELA + FK7_TIPO + FK7_CLIFOR + FK7_LOJA ), "E1_VENCREA" ) RestArea(aArea) Return dData |