Ejecución automática (ExecAuto) de la rutina de liquidación por cobrar (FINA460).
Posición | Tipo | Nombre | Descripción |
---|---|---|---|
1 | Numérico | nPosArotina | Se utiliza para indicar la operación que se ejecutará. Solamente se utiliza por la llamada de la rutina estándar por el menú. Enviar NIL o 0 (cero). |
2 | Vector | aAutoCab | Se utiliza para enviar datos referente al proceso, como:
|
3 | Vector | aAutoItens | Vector utilizado para envío de los datos referentes a los títulos que se generarán, como:
Ejemplo: Aadd(aItens,{; |
4 | Numérico | nOpcAuto | Proceso que se desea realizar: |
5 | Carácter | cAutoFil | Expresión ADVPL para filtro de 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. Importante Se recomienda el uso del filtro en SQL (cFilSQL - posición 13), pues el filtro en ADVPL está limitado a 2000 caracteres. Más información en: Filter greater than 2000 bytes |
6 | Carácter | cNumLiqCan | Número de la liquidación que se quiere anular. Solamente se envía si nOpcAuto = 5 |
7 | Vector | aRotAutoVA | Vector utilizado para envío de los valores adicionales de los títulos que se generarán. |
8 | Numérico | nOutrMoed | Tratamiento para otras monedas (idéntico a la pantalla de filtro). 1 = Convierte |
9 | Numérico | nTxNegoc | Tasa de la moneda de la negociación. Importante Es obligatorio solamente para nOutrMoed = 3 - Variación monetaria. Se inicializa con la tasa del día de la negociación. |
10 | Numérico | nTpTaxa | Tipo de tasa de la negociación. 1=Fija Importante Es obligatorio solamente para nOutrMoed = 3 - Variación monetaria. Se inicializa con 2 - Variable. |
11 | Carácter | cFunOrig | El valor de esta variable se grabará en el campo E1_ORIGEM. Importante Si esta variable no se informara, se grabará la información de la función activadora de Execauto. |
12 | Numérico | nTxCalJur | |
13 | Carácter | cFilSQL | Expresión SQL para filtro de selección de los títulos generadores de la liquidación (que se liquidarán). Sustituye el filtro en ADVPL (cAutoFil). |
1) Si se envía la condición de pago en el array aAutoCab
La personalización del cliente debe crear el array aAutoItens de acuerdo con la condición y enviar a execauto debidamente parametrizado. Debe utilizarse la función 'Condicao' para devolver la cantidad de de cuotas.
2) Si NO se envía la condición de pago en el array aAutoCab
La personalización del cliente debe crear el array aAutoItens manualmente y enviar a execauto debidamente parametrizado.
3) Si se envía(n) la(s) cuota(s) en el array aAutoItens
La rutina grabará esta información en el campo E1_PARCELA de los títulos generados.
4) Si NO se envía la cuota en el array aAutoItens
La rutina grabará el campo E1_PARCELA de los títulos generados de acuerdo con el parámetro MV_1DUP, DE FORMA secuencial.
#INCLUDE 'Protheus.ch' User Function TST460() Local nX := 0 Local aCab := {} Local aItens := {} Local cFilSQL := "" //filtro que contendrá los títulos que se liquidarán, generados con base en el 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}) //Condición de pago aAdd(aCab, {"cNatureza", cNaturez}) //Modalidad aAdd(aCab, {"E1_TIPO", cLiqTipo}) //Tipo aAdd(aCab, {"cCliente", cLiqCli}) //Cliente aAdd(aCab, {"cLoja", cLiqLoja}) //Tienda aAdd(aCab, {"nMoeda", nMoeda}) //Moneda aAdd(aCab, {"AUTMRKPIX", lAutoPix}) //Pix Fina460(/*nPosArotina*/,aCab,aItens,3,/*cFiltroADVPL*/,/*xNumLiq*/,/*xRotAutoVa*/,/*xOutMoe*/,/*xTxNeg*/,/*xTpTaxa*/,/*xFunOrig*/,/*xTxCalJur*/,cFilSQL) Return