Importación de Reglas de negocio vía MILE

Producto:Microsiga Protheus®
Entorno:Todos
Ocurrencia:

¿Cómo configurar el layout del MILE para importar Reglas de negocio?

Paso a paso:

Para realizar la importación de Reglas de negocio utilizando el MILE, son necesarias algunas configuraciones adicionales, pues la estructura del MILE no permite realizar la importación utilizando simplemente la configuración de canales.

La rutina Reglas de negocio (FATA100) recibe los siguientes parámetros vía rutina automática:

FATA100( uAutoCab, uItensACT, uItensACX, uItensACN, nOpcAuto )


Donde:

uAutoCab - Array - Datos del encabezado de la Regla de negocio (ACS)

uItensACT - Array - Datos de los ítems de la negociación (ACT)

uItensACX - Array - Datos de los ítems de la comercialización (ACX)

uItensACN - Array - Datos de los ítems de descuentos (ACN)

nOpcAuto - Numérico - Opción de la rutina que se ejecutará


En este caso, necesitamos crear los canales MASTER (ACS) y el DETAIL con los campos de forma ordenada de las tablas ACT, ACX y ACN  para que podamos enviarlos a la rutina automática do FATA100.

En el importador MILE cuando utilizamos el tipo de adapter "1- MSExecAuto", este envía los datos a la rutina automática de la siguiente manera:

FUNCAOXXX(  uAutoCab, uAutoItens, nOpcAuto )


Para que el layout creado funcione correctamente en la rutina automática del
FATA100, necesitaremos manejar el array de los canales por medio de una UserFunction que debe informarse en el campo Ejecución previa del layout.

El MILE puede adaptarse y personalizarse de acuerdo con las necesidades de los clientes. Para más detalles vea la documentación:

MILE - Model Integrator Layout Engine


Ejemplo de la función Ejecución previa:

#INCLUDE "PROTHEUS.CH"
 
User Function FT100TST(lInterface,aInfos,aLayOut,aSaidas)
 
/*
lInterface - Lógico - .T. si se está ejecutando con interfaz / .F. si está ejecutándose sin interfaz
aInfos    - Array - Vector con información adicional como línea inicial y final leída, nombre del archivo, etc.
aLayOut   - Array - Información de la definición del layout.
aSaidas   - Array - Estructura del vector sobre datos de salida
*/
 
Local aNewVet   := Array(4)   //Crea un array para separar los datos de los canales.
Local nX        := 0
Local nY        := 0
Local aACT      := {}
Local aACX      := {}
Local aACN      := {}

//Separa los datos de los canales (DETAIL) para que se envíen a la execauto del FATA100
For nX := 1 To Len(aSaidas[2][4])
    For nY := 1 to len(aSaidas[2][4][nX])
        If "ACT_" $ aSaidas[2][4][nX][nY][1]
            If "_ITEM" $ aSaidas[2][4][nX][nY][1]
                Aadd(aACT,{})
            EndIf
            Aadd(aACT[Len(aACT)],{ Alltrim(aSaidas[2][4][nX][nY][1]), aSaidas[2][4][nX][nY][2], aSaidas[2][4][nX][nY][3] })
        ElseIf "ACX_" $ aSaidas[2][4][nX][nY][1]
            If "_ITEM" $ aSaidas[2][4][nX][nY][1]
                Aadd(aACX,{})
            EndIf
            Aadd(aACX[Len(aACX)],{ Alltrim(aSaidas[2][4][nX][nY][1]), aSaidas[2][4][nX][nY][2], aSaidas[2][4][nX][nY][3] })
        ElseIf "ACN_" $ aSaidas[2][4][nX][nY][1]
            If "_ITEM" $ aSaidas[2][4][nX][nY][1]
                Aadd(aACN,{})
            EndIf
            Aadd(aACN[Len(aACN)],{ Alltrim(aSaidas[2][4][nX][nY][1]), aSaidas[2][4][nX][nY][2], aSaidas[2][4][nX][nY][3] })
        EndIf
    Next nY
Next nX

//Cargamos los arrays de los datos en las posiciones correctas de la execauto
aNewVet[1] := aSaidas[1][4][1]  //uAutoCab (MASTER)
aNewVet[2] := aACT              //uItensACT
aNewVet[3] := aACX              //uItensACX
aNewVet[4] := aACN              //uItensACN
 
//El parámetro nOpcAuto se enviará de forma automática por el importador MILE
 
Return aNewVet


La función anterior debe compilarse en el repositorio antes de la configuración del layout.


Configuración del ayout:

1) Informaciones generales

2) Formateo del archivo

3) Tratamientos y validaciones
Observe e campo Ejecución previa, donde debe informarse el nombre de la función U_FT100TST que cambiará la posición de los parámetros, antes de la activación de la rutina automática del FATA100.

4) Adapters de Rutina automática
En este caso utilizaremos el Modelo 3. Como la rutina no está en MVC, no será necesario configurar los Adapters en MVC.

5) Definición de los canales
Crear el canal A (MASTER) para recibir los datos principales de la Regla de negocio (ACS).

Crear el canal B (DETAIL) para recibir los ítems de la Negociación (ACT), de la Comercialización (ACX) y de los ítems de Descuentos (ACN). 

Crear el canal C (DETAIL) para recibir los ítems de la comercialización (ACX).


Ejemplo del archivo de importación:

En este ejemplo importaremos una Regla de negociación, de acuerdo con la personalización del rdmake de ejemplo.
Recordando que de acuerdo con la configuración del layout, la primera posición de cada registro se refiere al canal.

|A|TST MILE IMPORT|
|B|001|013|
|B|002|014|
|B|||001|FAT000000000000000000000000187|
|B|||002|FAT000000000000000000000000188|
|B|||||001|FAT000000000000000000000000187|5|
|B|||||002|FAT000000000000000000000000188|5|

Download del ejemplo del layout (XML) y del archivo de importación:

Layout_Mile_FATA100.zip


Puede ser de su interés:Para más detalles sobre el MILE, vea la documentación: MILE - Model Integrator Layout Engine