Índice minLevel 2 exclude ÍNDICE
Configure y ejecute la importación de registros para la rutina FINA040 - Cuentas por Cobrar mediante MILE.
Informações | ||
---|---|---|
| ||
El parámetro MV_MULNATR debe estar habilitado .T. para que los registros se importen con éxito. |
Para realizar la importación de los datos en la rutina FINA040 - Cuentas por Cobrar utilizando el MILE, son necesarias algunas configuraciones adicionales de acuerdo con lo siguiente.
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 FINA040, se enviará de la siguiente manera:
Si tenemos 1 canal (1 Master):
Si tenemos 2 canales:
Y así por delante.
Aviso | ||
---|---|---|
| ||
La rutina FINA040 tiene soporte al tipo de Adapter Función (Vea en el documento de referencia el ítem - tópico Composición del Layout - General) |
Modelo de configuración del layout del MILE:
1) Informaciones sobre el tipo de Adapter, el nombre de la función Adapter, la Tabla Principal (SE1 en este modelo) y el Tipo de Layout (Importación):
2) Defina el formateo del archivo.
Obs.:
La ilustración de este modelo de configuración:
3) Configurando el tipo Adapter Función los siguientes campos no estarán disponibles para modificación:
4) Definición de los Canales: Por involucrar más de una tabla en el destino (SE1/SEV/SEZ) de los datos utilizaremos el modelo de Multicanales (Vea Doc. Referencia: Exemplificando alguns Layouts). Para este modelo se configurarán 2 canales, según lo siguiente:
Utilizaremos una User Function para ejecutar el Adapter.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
User Function MileF040(lInterface, aInfos, aLayOut, aSaidas) //-- Declaraciones - Propiedades Local nPosVl As Numeric Local nPosPc As Numeric Local nPosNt As Numeric Local nPosCc As Numeric Local nI As Numeric Local lNewNt As Logical Local cNat As Char Local aVetorRat As Array Local aTitulo As Array Local aRatNtCc As Array Local aRatNt As Array Local aRatCc As Array Local aLstRatCc As Array Default lInterface := .F. Default aInfos := {} Default aLayOut := {} Default aSaidas := {} //- Control y separación de los prorrateos aLstRatCc := {} //-- Lista de los prorrateos de CC por modalidad aRatCc := {} //-- Un registro - prorrateo CC aRatNt := {} //-- Un prorrateo origen aRatNtCc := {} //-- Lista de los prorrateos Modalidad con respectivos CCs aTitulo := {} //-- Datos del título aVetorRat := {} //-- Auxiliar en el procesamiento de los prorrateos Nt/Cc cNat := "" //-- Auxiliar en el procesamiento de los prorrateos Nt lNewNt := .T. //-- Auxiliar en el procesamiento de los prorrateos Nt nI := 0 //-- Auxiliar en el procesamiento de los prorrateos Nt/Cc nPosCc := 0 //-- Auxiliar en el procesamiento de los prorrateos Cc nPosNt := 0 //-- Auxiliar en el procesamiento de los prorrateos Nt nPosPc := 0 //-- Auxiliar en el procesamiento de los prorrateos Nt/Cc nPosVl := 0 //-- Auxiliar en el procesamiento de los prorrateos Nt/Cc //-- Control de error de la rutina automática Private lMsErroAuto := Empty(aSaidas) Private lAutoErrNoFile := .T. //-- Inicio del proceso de separación de datos If !Empty(aSaidas) aTitulo := {} AEVAL(aSaidas[1,4,1],{|e| AAdd(aTitulo,e)}) AAdd(aVetorRat,aSaidas[2,4]) nPosNt := ASCAN(aVetorRat[1,1],{|a| alltrim(a[1]) == "EZ_NATUREZ"}) nPosCc := ASCAN(aVetorRat[1,1],{|a| alltrim(a[1]) == "EZ_CCUSTO"}) nPosVl := ASCAN(aVetorRat[1,1],{|a| alltrim(a[1]) == "EZ_VALOR"}) nPosPc := ASCAN(aVetorRat[1,1],{|a| alltrim(a[1]) == "EZ_PERC"}) For nI := 1 To Len(aVetorRat[1]) If lNewNt //-- Agrega ítem prorrateo origen cNat := aVetorRat[1][Ni][nPosNt][2] AAdd(aRatNt,{"EV_NATUREZ",cNat,Nil}) AAdd(aRatNt,{"EV_VALOR",0,NIL}) AAdd(aRatNt,{"EV_PERC",0,NIL}) AAdd(aRatNt,{"EV_RATEICC","1",NIL}) EndIf //-- Actualiza valores del prorrateo de orígenes aRatNt[2][2] += aVetorRat[1][Ni][nPosVl][2] aRatNt[3][2] += aVetorRat[1][Ni][nPosPc][2] //-- Agrega Ítem Prorrateo Centro Costo AAdd(aRatCc,aVetorRat[1][Ni][nPosNt]) AAdd(aRatCc,aVetorRat[1][Ni][nPosCc]) AAdd(aRatCc,aVetorRat[1][Ni][nPosVl]) AAdd(aLstRatCc,AClone(aRatCc)) FwFreeArray(aRatCc) aRatCc := {} //-- Verifica si es último ítem de la lista general o si es nuevo ítem de origen lNewNt := (nI == Len(aVetorRat[1])) .Or. (aVetorRat[1][Ni+1][nPosNt][2] <> cNat) //-- Si es nuevo ítem o el último de la lista, finaliza la inclusión del prorrateo del origen actual. If lNewNt AAdd(aRatNt,{"AUTRATEICC", aLstRatCc, Nil }) AAdd(aRatNtCc,AClone(aRatNt)) FwFreeArray(aRatNt) aRatNt := {} FwFreeArray(aRatCc) aRatCc := {} FwFreeArray(aLstRatCc) aLstRatCc := {} EndIf Next nI //-- Fim //-- Ejecución del Adapter por rutina automática. MsExecAuto({ |x,y,z,a| FINA040(x,y,z,a)},aClone(aTitulo),3,,aClone(aRatNtCc)) //-- Tratamiento para el caso de errores If lMsErroAuto MOSTRAERRO() EndIf EndIf Return !lMsErroAuto |
Bloco de código | ||||
---|---|---|---|---|
| ||||
E1;D MG 01;GRV;MILE00001;C;NF;001;001;01;20230113;20230113;1000;1 NTCC;000003;000001;500;100 NTCC;000001;000002;500;100 E1;D MG 01;GRV;MILE00001;D;NF;001;001;01;20230113;20230113;1000;1 NTCC;000003;000001;250;50 NTCC;000003;000002;250;50 NTCC;000001;000002;500;100 E1;D MG 01;GRV;MILE00001;E;NF;001;001;01;20230113;20230113;1000;1 NTCC;000003;000001;500;100 NTCC;000001;000001;250;50 NTCC;000001;000002;250;50 |
View file | ||||
---|---|---|---|---|
|
Card documentos | ||||
---|---|---|---|---|
|
MILE - Model Integrator Layout Engine
HTML |
---|
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |