Para realizar a importação de Regras de Negócio utilizando o MILE, será necessário algumas configurações adicionais, pois a estrutura do MILE não permite realizar a importação utilizando simplesmente a configuração de canais. A rotina de Regras de Negócio (FATA100) recebe os seguintes parâmetros via rotina automática:
FATA100( uAutoCab, uItensACT, uItensACX, uItensACN, nOpcAuto ) Onde:
uAutoCab - Array - Dados do cabeçalho da Regra de Negócio (ACS) uItensACT - Array - Dados dos itens da Negociação (ACT) uItensACX - Array - Dados dos itens da Comercialização (ACX) uItensACN - Array - Dados dos itens de Descontos (ACN) nOpcAuto - Numérico - Opção da rotina a ser executada Neste caso, precisamos criar os canais MASTER (ACS) e os DETAIL (o DETAIL com os campos de forma ordenada das tabelas ACT, ACX e ACN ) para para podermos enviá-los para a rotina automática do FATA100.
No importador MILE quando utilizamos o tipo de adapter "1- MSExecAuto", ele envia os dados para as rotinas automáticas a rotina automática da seguinte maneira: FUNCAOXXX( uAutoCab, uAutoItens, nOpcAuto ) Para que o layout criado funcione corretamente na rotina automática do FATA100, precisaremos manipular o array dos canais através de uma UserFunction que deverá ser informada no campo Pré Execução do layout.
O MILE pode ser adaptado e customizado conforme as necessidades dos clientes. Para maiores detalhes, veja a documentação: MILE - Model Integrator Layout Engine
Exemplo da função de Pré Execução: Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| #INCLUDE "PROTHEUS.CH"
User Function FT100TST(lInterface,aInfos,aLayOut,aSaidas)
/*
lInterface - Lógico - .T. se está sendo executado com interface / .F. se está sendo executado sem interface
aInfos - Array - Vetor com informações adicionais como linha inicial e final lida, nome do arquivo etc.
aLayOut - Array - Informações das definições do layout.
aSaidas - Array - Estrutura do vetor sobre dados de saída
*/
Local aNewVet := Array(4) //Cria um array para separar os dados dos canais.
Local nX := 0
Local nY := 0
Local aACT := {}
Local aACX := {}
Local aACN := {}
//Separa os dados dos canais (DETAIL) para serem enviados para a execauto do FATA100
For nX := 1 To Len(aSaidas[2][4])
For nY := 1 to len(aSaidas[2][4][1nX])
If "ACT_" $ aSaidas[2][4][nX][nY][1]
If "_ITEM" $ aSaidas[2][4][nX][nY][1]
aAdd(aACT Aadd(aACT,{})
EndIf
Aadd(aACT[Len(aACT)],{ Alltrim(aSaidas[2][4][1nX][nXnY][1]), aSaidas[2][4][1nX][nXnY][2], aSaidas[2][4][1nX][nXnY][3] })
ElseIf "ACX_" $ aSaidas[2][4][nX][nY][1]
If "_ITEM" $ aSaidas[2][4][nX][nY][1]
aAdd(aACX Aadd(aACX,{})
EndIf
Aadd(aACX[Len(aACX)],{ Alltrim(aSaidas[2][4][1nX][nXnY][1]), aSaidas[2][4][1nX][nXnY][2], aSaidas[2][4][1nX][nXnY][3] })
ElseIf "ACN_" $ aSaidas[2][4][nX][nY][1]
If "_ITEM" $ aSaidas[2][4][nX][nY][1]
Aadd(aACN,{})
aAdd(aACN EndIf
Aadd(aACN[Len(aACN)],{ Alltrim(aSaidas[2][4][1nX][nXnY][1]), aSaidas[2][4][1nX][nXnY][2], aSaidas[2][4][1nX][nXnY][3] })
EndIf
Next nY
Next nX
//Carregamos os arrays dos dados nas posições corretas da execauto
aNewVet[1] := aSaidas[1][4][1] //uAutoCab (MASTER)
aNewVet[2] := {aACT} //uItensACT
aNewVet[3] := {aACX} //uItensACX
aNewVet[4] := {aACN} //uItensACN
//O parâmetro nOpcAuto será enviado de forma automática pelo importador MILE
Return aNewVet |
A função acima deverá ser compilada no repositório antes da configuração do layout.
Configuração do Layout: 1) Informações gerais;
2) Formatação do arquivo;
3) Tratamentos e Validações; Atente-se para o campo Pré Execução, onde deverá ser informado o nome da função U_FT100TST que irá mudar a posição dos parâmetros, antes da chamada da rotina automática do FATA100.
4) Adapters de Rotina Automática; Neste caso iremos utilizar o Modelo 3. Como a rotina não está em MVC, não será necessário a configuração dos Adapters em MVC.
5) Definição dos Canais; Criar o canal A (MASTER) para receber os dados principais da Regra de Negócio (ACS).
Criar o canal B (DETAIL) para receber os itens da Negociação (ACT). Image Removed Criar o canal C (DETAIL) para receber os itens , da Comercialização (ACX) . Image Removed Criar o canal D (DETAIL) para receber os e dos itens de Descontos (ACN). Image Added Image Added Image Added
Image AddedImage Removed
Exemplo do Arquivo de Importação: Neste exemplo iremos importar uma Regra de Negociação, conforme a customização do rdmake de exemplo. Lembrando que conforme a configuração do layout, a primeira posição de cada registro se refere ao canal. |A|TST MILE IMPORT| |B|001|013| |B|002|014| |B|||001|FAT000000000000000000000000187| |B|||002|FAT000000000000000000000000188| |C|01| |D|01|B|||||001|FAT000000000000000000000000187|5| |B|||||002|FAT000000000000000000000000188|5| Download do exemplo do layout (XML) e do arquivo de importação: View file |
---|
name | LayoutFATA100_Mile_FATA100.zip |
---|
height | 150 |
---|
|
|