01. DATOS GENERALES

Línea de producto:Microsiga Protheus®
Segmento:Servicios
Módulo:Financiero


02. SITUACIÓN/REQUISITO

Rutina automática de la liquidación por pagar - Ejemplo de Execauto FINA565.

03. EJEMPLO DE UTILIZACIÓN


Informaciones

FINA565(nPosArotina, aGetAut1, aChvAut, aGetAut2, aColItens, aEdit, lAutomato)

En la rutina automática de Liquidación Cuentas por Pagar (FINA565) se pueden generar nuevos títulos a partir de títulos. Las variables aChvAut e lAutomato son de uso interno y no se deben enviar en la llamada.

Las informaciones utilizadas en esta user function necesitan estar previamente registradas en la base que se utilizará.

Para la anulación de la liquidación, se deben pasar las siguientes informaciones: 

nPosArotina := 4

AADD(aGetAut1,{"CLIQCAN",cNumLiq})

La posición 1 del array, debe ser la string fija "CLIQCAN".

La variable cNumLiq es el número de la liquidación que se anulará, que se puede obtener a través del campo E2_NUMLIQ.

Selección de sucursales

En la rutina automática de Liquidación cuentas por pagar (FINA565) no es posible enviar datos para selección de sucursales y/o realizar la búsqueda multisucursal de los registros deseados. Por ello, la selección de los títulos en el procesamiento se realizará en la apertura del entorno, cuando se llame la rutina.

Ejemplificación del paso a paso por medio del browser. 

Título por liquidar.


Tela 1 - Configuración de los parámetros para filtrar los títulos. 


Selección de títulos filtrados


Pantalla de intereses y descuentos 


Tela 2 - Condición de pago y aCols de cheques.


Resultado final


Título dado de baja:

Titulos generados:

04. EJEMPLOS DE RUTINA AUTOMÁTICA


Liquidación
#INCLUDE 'PROTHEUS.CH'

USER FUNCTION F565EXEC()
    Local aTela1 := {}
    Local aTela2 := {}
    Local aEdtVlr := {}
    Local aCols := {}
    Local aItens := {}
    Local cPrefixo := 'GER'
    Local cFornec  := 'FINC83'
    Local cLoja    := '01'
    Local nRotina  := 2 // Liquidar


    Local nI := 0

    // Variables utilizadas para el control de error de la rutina automática
    Private lMsErroAuto := .F.
    Private lAutoErrNoFile := .T.

	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " USER "admin" PASSWORD "" TABLES "SE1,SA1,SE2" MODULO "FIN"

    // Define la DataBase del movimiento
    dDataBase := cToD("08/09/2016")

    // Define parámetros de la rutina
    Pergunte('FIN565',.F.)

    // Array de desvío de pantalla - Si no se ha pasado ninguno de los parámetros
    // la liquidación considerará el título posicionado
    aAdd(aTela1, {'cFornDe', 'FINC83'}) //- De Proveedor:
    aAdd(aTela1, {'cLojaDe', '01' }) //- De Tienda:
    aAdd(aTela1, {'cFornAte', 'FINC83'}) //- A Proveedor:
    aAdd(aTela1, {'cLojaAte', '01' }) //- A Tienda: 
    aAdd(aTela1, {'cForn565', 'FINC83'}) //- Generar p/:
    aAdd(aTela1, {'cLoja', '01'}) //- Tienda:
    aAdd(aTela1, {'nValorMax', 0.00}) //- Valor:
    aAdd(aTela1, {'nValorDe', 0.00}) //- De Títulos en el valor: 
    aAdd(aTela1, {'nValorAte', 999999999999}) //- Al Valor de:
    aAdd(aTela1, {'cMoeda565', '1'}) //- Moneda:
    aAdd(aTela1, {'cOutrMoed', '1'}) //- Otras monedas:
    aAdd(aTela1, {'cIntervalo', '1'}) //- Intervalo por:
    aAdd(aTela1, {'dData565I', CTOD('08/09/2016')}) //- De Fecha:
    aAdd(aTela1, {'dData565F', CTOD('08/09/2016')}) //- A Fecha:
    aAdd(aTela1, {'cPrefDe', ' '}) //- De Prefj: 
    aAdd(aTela1, {'cPrefAte', 'zzz'}) //- A Prefj:
    aAdd(aTela1, {'cNumDe', 'FIN565001'}) //- De Título:
    aAdd(aTela1, {'cNumAte', 'FIN565001'}) //- A Título:


    //aHeader - Encabezado
    aAdd(aTela2, {'cLoja', cLoja }) //- Tienda
    aAdd(aTela2, {'cCondicao', '003' }) //- Condición (opcional)
    aAdd(aTela2, {'cTipo', 'CH ' }) //- Tipo
    aAdd(aTela2, {'cNatureza', 'FIN001CA' }) //- Modalidad
    aAdd(aTela2, {'NTXLIQ', 4}) //- TX Moneda (opcional)
    aAdd(aTela2, {'cFornece', cFornec }) //- Proveedor

    // Ítems/aCols
    //Utilizando condición de pago se vuelven obligatorios solo estos campos
    aItens := {}
    AADD(aItens, {'E2_PREFIXO', cPrefixo}) //- Prefijo 
    AADD(aItens, {'E2_BCOCHQ' , '001'}) //- Banco
    AADD(aItens, {'E2_AGECHQ' , '0001'}) //- Agencia
    AADD(aItens, {'E2_CTACHQ' , '00001'}) //- Cuenta
    AADD(aItens, {'E2_NUM' , 'CHQ001'}) //- Núm Cheque
    AADD(aCols, ACLONE(aItens))

    //Array que controla edición de los títulos por liquidar.
    aEdtVlr := {}
    AAdd( aEdtVlr, {'Editar', .T. } ) //- Si es necesaario Editar Valores
    aAdd( aEdtVlr, { {'chave','E2_FILIAL+E2_PREFIXO+E2_NUM+E2_PARCELA+E2_TIPO+E2_FORNECE+E2_LOJA'},;
        {'nCotMoed', 3},;
        {'nValJur', 0},;
        {'nValDes', 0},; 
        {'nValLiq', 6005} } )

    MSEXECAUTO( { |a, b, c, d, e, f, g| FINA565( a, b, c, d, e, f, g )}, nRotina, aTela1, Nil, aTela2, aCols, aEdtVlr, .T. )

    If lMsErroAuto
        MostraErro()
    Else
        Conout("¡Liquidación generada con éxito!")
    EndIf

Return NIL

Anulación Liquidación
#INCLUDE "TOTVS.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
 
USER FUNCTION F565CNCL()    
 
    Local nRotina   As Numeric
    Local aTela1    As ARRAY
    Local cNumLiq   As Character 
 
    Private lMsErroAuto := .F.
    Private lAutoErrNoFile := .T.
 
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " USER "admin" PASSWORD "" TABLES "SE1,SA1,SE2" MODULO "FIN"
  
    nRotina := 4
    aTela1  := {}   
    cNumLiq := "000002"
 
    AADD(aTela1,{"CLIQCAN",cNumLiq})  
     
    // Define la DataBase del movimiento
    dDataBase := CTOD("08/09/2016")
 
    MSEXECAUTO( { |a, b, c, d, e, f, g| FINA565( a, b, c, d, e, f, g )}, nRotina, aTela1, Nil, Nil, Nil, Nil, .T. )
 
    If lMsErroAuto
        MostraErro()
    Else
        Conout("¡Liquidación anulada con éxito!")
    EndIf
  
Return          

¡Aviso!

Si se informa una condición de pago es necesario tan solo informar los campos:

  • E2_PREFIXO
  • E2_BCOCHQ
  • E2_AGECHQ
  • E2_CTACHQ
  • E2_NUM

Si no se informa una condición de pago, se deben informar todos los campos que componen el aCols (Para aumento o disminución utilice esta forma - Títulos Generados).

Si no se informa la condición de pago
Ejemplo de dos cuotas:

For nI := 1 To 2 
    aItens := {}
    AADD(aItens, {'E2_PREFIXO', cPrefixo}) //- Prefijo 
    AADD(aItens, {'E2_TIPO' , 'CH'}) //- Tipo
    AADD(aItens, {'E2_BCOCHQ' , '100'}) //- Banco
    AADD(aItens, {'E2_AGECHQ' , '001'}) //- Agencia
    AADD(aItens, {'E2_CTACHQ' , '1001'}) //- Cuenta
    AADD(aItens, {'E2_NUM' , 'FLQ'+STRZERO(nI,4)}) //- Núm Cheque
    AADD(aItens, {'E2_VENCTO' , dDataBase+(nI*15)}) //- Fch Vencimiento
    AADD(aItens, {'E2_VLCRUZ' , 3002.50}) //- Valor
    AADD(aItens, {'E2_ACRESC' , 0}) //- Aumento
    AADD(aItens, {'E2_DECRESC', 0}) //- Disminución
    AADD(aItens, {'E2_VALOR' , 3002.50}) //- Valor Total
    AADD(aCols, ACLONE(aItens))
Next nI




04. OTRAS INFORMACIONES


¡IMPORTANTE!

La rutina realizará la liquidación de todos los títulos encontrados por el filtro - configurado a través del array que corresponde a los parámetros presentados en la primera pantalla.


05. ASUNTOS RELACIONADOS

       No hay