ÍNDICE


01. VISIÓN GENERAL

Cómo importar los movimientos bancarios para la rutina FINA100 - Movimientos Bancarios utilizando el Mile.


Informaciones

Para más detalles y reglas de uso del MILE vea la documentación: MILE - Model Integrator Layout Engine


02. CONFIGURACIÓN MILE


Para realizar la importación de los datos en la rutina FINA100 - Movimientos Bancarios utilizando el MILE, son necesarias algunas configuraciones adicionales según veremos a continuación, porque el orden de los parámetros recibidos por la rutina FINA100 es diferente de la llamada por la estructura del MILE, y no permite realizar la importación utilizando simplemente la configuración de canales.

Básicamente, el MILE funciona de la siguiente manera: para cada canal creado, se enviará en secuencia a la rutina en cuestión un array como parámetro, seguido del nOpc de 3 de inclusión.

Al realizar la llamada de la MsExecAuto de la rutina FINA100, se enviará de la siguiente manera:

Si tenemos 1 canal (1 Master):

Función100(vector[1], 3)

Si tenemos 2 canales:

Función100(vector[1], vector[2], 3)

Y así por delante.

Por lo tanto, tenemos una incompatibilidad de uso, porque para incluir el movimiento bancario, en la rutina FINA100, los parámetros recibidos están en estas posiciones:

FINA100(nPosArotina,aRotAuto,nOpcAuto)

donde:

nPosArotina - Numérico- Opción deseada del menú sin ejecución de la mBrowse

aRotAuto - Array - Contiene los datos de los campos y sus contenidos para incluir por rutina automática.

nOpcAuto - Numérico - Opción deseada del menú por medio de la rutina automática, donde 3 = Pagar, 4 = Cobrar, 5 = Borrar, 6 = Anular, 7 = Transferencia y 8 = Reversión Transferencia

 

En este caso, necesitamos enviar el vector del canal Master como segundo parámetro (aRotAuto) y la opción del menú como tercer parámetro (nOpcAuto).

Vamos a necesitar manejar el array de canales creado por el MILE a través del user function.

03. EJEMPLO DE CONFIGURACIÓN MILE

Suponiendo la siguiente configuración del layout del MILE:

1) Informaciones sobre la rutina:

2) Defina el formateo del archivo. Esté atento al campo Ejecución previa, donde utilizaremos una función para cambiar el vector creado por el MILE, antes de llamar a MsExecAuto del FINA100.

3) Defina el tipo de MsExecAuto. En este caso podemos utilizar el modelo 1, porque se trata solo de una tabla Como la rutina no está en MVC, no es necesario configurar los Adapters en MVC.

4) Defina el canal A como Master para recibir los datos del movimiento bancario para la tabla SE5.

5) Defina la orden de los campos que estarán dentro del archivo de importación.

04. USER FUNCTION PARA EL MANEJO DE LOS PARÁMETROS

Utilizaremos una User Function en la ejecución previa del Mile. La función debe devolver un nuevo vector con el orden correcto de los parámetros que se enviarán a la rutina FINA100.

En el siguiente ejemplo, estamos creando el array aRotAuto en la segunda posición y el nOpcAuto en la tercera posición.

 

User function UFINA100(lInterfaz, aInfos, aLayOut, aSalidas, aVectores)

Local aNewVet := array(3)

aNewVet[1] := {3}//nPosRotina
aNewVet[2] := aClone(aVetores[1]) //aRotAuto
aNewVet[3] := {3} // nOpcAuto donde 3 = Pagar, 4 = Cobrar, incluso la opción puede ser según la posición de aVectores

Return aClone(aNewVet)

05. EJEMPLO DE ARCHIVO DE IMPORTACIÓN

02/01/2019;M1;3370,09;NAT1;237;1020;102030;BAJA AUTOMÁTICA FONDOS;BRADESCO;P;BA;02/01/2019
02/01/2019;M1;11736,10;NAT1;237;1020;102030;RESCATE INVERSFACIL;BRADESCO;P;BA;02/01/2019


¡IMPORTANTE!

El archivo de importación se debe crear según las reglas definidas en el registro del Mile.

06. EJEMPLO DE CONFIGURACIÓN PARA TRANSFERENCIA


Importante

La herramienta MILE tiene una limitación donde importaciones que no utilizan campos de SX3 tengan una limitación de importación de 10 caracteres.

De esta manera, como la rutina de transferencia necesita que el layout utilice las variables, si existiera la necesidad de importar un campo donde el contenido tenga más de 10 caracteres, en el campo de condición debe informarse la variable de devolución, de acuerdo con lo siguiente:

xContent  := aDataTXT[2], .T. 


Ejemplo:

Suponiendo que en el archivo de importación la posición de beneficiario tenga más de 10 carateres, el layout debe configurarse con la siguinte información:




Para la opción de Tranferencia entre cuentas o cajas (opción 7 del execauto del FINA100) se puede definir un layout de acuerdo con el execauto del FINA100.

Haga clic aquí para más detalles sobre execauto de transferencia.

Vea el siguiente ejemplo de lauyout para transferencia con user function.


Ejemplo de archivo de transferencia:

BC1;BC101;BC101;001;BC2;BC202;BC202;001;CH;DOC400;400;HISTORICO DE TR;ITAU; 2;2;30/01/24




UF100TR
#INCLUDE "TOTVS.ch"
/*/{Protheus.doc} User Function UF100TR
    Realiza tratamentos para processar MILE da rotina FINA100 opção 7 - Transferência
    @type  Function
    @author Totvs
    @since 29/01/2024
    @version 1.0
/*/
User function UF100TR(lInterface, aInfos, aLayOut, aSaidas, aVetores)

Local aNewVet   := array(3)
Local nI        := 0

// retirar espaços dos identificadores e do conteúdo dos campos do Execauto FINA100 (Exemplo: "CBCOORIG " alterar para "CBCOORIG" // , "341       " alterar para "341")
For nI := 1 To Len(aVetores[1])
    aVetores[1][nI][1] := AllTrim(aVetores[1][nI][1])
    If ValType(aVetores[1][nI][2]) == 'C'
        aVetores[1][nI][2] := AllTrim(aVetores[1][nI][2])
    EndIf
Next nI
aNewVet[1] := {0} //nPosRotina
aNewVet[2] := aClone(aVetores[1]) //aRotAuto
aNewVet[3] := {7} // Transferencia

Return aClone(aNewVet)

07. TABLAS UTILIZADAS

  • Movimientos bancarios - SE5