Como configurar o MILE para importação dos dados no FINA050 utilizando rateio contábil
Produto: | Microsiga Protheus |
Versões: | P12.1.7, P12.1.16, P12.1.17 |
Ocorrência: | Como configurar o layout no MILE para importar os dados da rotina FINA050 com rateio contábil? |
Ambiente: | Padrão |
Passo a passo: | Para realizar a importação dos dados na rotina de Contas a Pagar (FINA050) com rateio contábil utilizando o MILE, é necessário algumas configurações adicionais que veremos a seguir, pois atualmente, a estrutura do MILE não permite realizar a importação utilizando simplesmente a configuração de canais. Basicamente o MILE funciona da seguinte forma: para cada canal criado, será enviado sequencialmente para a rotina em questão um array como um parâmetro. Então se temos 2 canais (1 Master e 1 Detail), ao realizar a chamada da MsExecAuto da rotina, será enviado da seguinte forma: FuncaoXXX(vetor[1], vetor[2], 3) Se tivermos 3 canais , será desta forma: FuncaoXXX(vetor[1], vetor[2],vetor[3], 3) E assim por diante. Visto isso, temos uma incompatibilidade de uso, para a inclusão do rateio, pois na rotina FINA050 o parâmetro que recebe os dados do rateio está na oitava posição. Veja os parâmetros recebidos pela rotina FINA050: Fina050(aRotAuto,nOpcion,nOpcAuto,bExecuta,aDadosBco,lExibeLanc,lOnline,aDadosCTB,aTitPrv,lMsBlQl,lPaMovBco) onde: aRotAuto - Array - Contém os dados dos campos e conteúdo do título para inclusão via rotina automática nOpcion - Numérico - Opção desejada do menu nOpcAuto -Numérico - Opção desejada do menu via rotina automática bExecuta - bloco de código - Permite executar uma função diferente ao invés da chamada da mbrowse aDadosBco - Array - Somente para integração com o módulo SIGATMS para informar os dados do banco do adiantamento lExibeLanc - Lógico - Define se exibe os Lançamentos Contábeis lOnline - Lógico - Define se contabiliza On-Line aDadosCTB - Array - Contém os dados do rateio contábil aTitPrv - Array - Informações do título provisório lMsBlQl - Lógico - Define se irá validar o campo E2_MSBLQL lPaMovBco - Lógico - Define se PA gera movimento bancário Neste caso, precisamos enviar o vetor do canal Master como primeiro parâmetro (aRotAuto) e o vetor do canal Detail como oitavo parâmetro (aDadosCTB). Vamos precisar manipular o array de canais criado pelo MILE através de user function. Configuração do LayoutSupondo a seguinte configuração de layout do MILE: 1) Informações sobre a rotina: 2) Defina a formatação do arquivo. Atente-se para o campo Pré-Execução, onde iremos utilizar uma função para mudar o vetor criado pelo MILE, antes de chamar a ExecAuto do Fina050. 3) Defina o tipo de MsExecAuto, e neste caso podemos utilizar os Modelos 2 ou 3. Como a rotina não está em MVC, não necessita a configuração do Adapters em MVC. 4) Defina os canais. Será necessário um canal Master para receber os dados do título (Canal A). 5) E um canal Detail para receber os dados do rateio (Canal B). Pronto, o layout do MILE está configurado. Agora veremos sobre a user function utilizada na Pré-Execução. A função configurada na pré-execução receberá os seguintes parâmetros do MILE: [1] - Lógico - .T. se está sendo executado com interface / .F. se está sendo executado sem interface [2] - Array - Vetor com informações adicionais como linha inicial e final lida, nome do arquivo etc. [3] - Array - Informações das definições do layout. [4] - Array - Estrutura do vetor sobre dados de saída [5] - Array - Vetores de rotina automática (MSExecAuto). Exemplo da função de Pré-ExecuçãoA função deverá retornar um novo vetor dos canais a serem enviados para a rotina. No exemplo abaixo, para cada parâmetro recebido pela rotina FINA050, estamos criando um array e colocamos na oitava posição, que seria o parâmetro dos dados do rateio, o vetor do canal B - Detail. User Function vetor050(lInterface, aInfos, aLayOut, aSaidas, aVetores)
aNewVet[1] := aClone(aVetores[1]) // aRotAuto
Return aClone(aNewVet) Exemplo de Arquivo de ImportaçãoVeja neste exemplo de arquivo onde temos uma inclusão de um título (A) com dois rateios (B): Lembrando que, conforme a configuração do layout, a primeira posição de cada registro se refere ao canal. |A|D MG 01 |999|||NF|SEMIMPOSTO|000001|01|20170731|20170830|20170830|1000|S| Agora basta processar o arquivo, que o mesmo deverá realizar a importação. 1) Processando o arquivo TXT: 2) Informando o caminho do arquivo TXT: 3) Final de processamento: 4) Acessando a rotina Fina050, veja que o título foi incluído com rateio contábil: Visualizando o rateio: |
Observações: | Este tratamento é exclusivo para a rotina Contas a Pagar (FINA050) pois a mesma foi adaptada para receber as informações do MILE que estão no formato array. Este é somente um exemplo de configuração do layout, podendo ser adaptado conforme a necessidade do cliente. |
Ocorrência: | Como importar títulos para várias filiais diferentes no mesmo arquivo? |
Passo a passo: | Ao realizar a importação do arquivo no MILE, a execução da MsExecAuto será realizada pela filial logada. Para trocar a filial (CFILANT) conforme a filial do registro a ser incluso, é necessário configurar o MILE para que realize a troca da variável global CFILANT para a filial do registro conforme exemplo abaixo. Na aba Variáveis é possível manipular o conteúdo da variável informada e em Origem Dado, informe a posição do dado onde se encontra no arquivo de importação que irá setar o conteúdo da variável. Utilizando o exemplo do arquivo acima, a informação da filial se encontra na segunda posição do arquivo. Observação: a informação de Origem Dado depende da configuração do separador de campo, seja por largura fixa ou por separador. |