Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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 Layout

Supondo a seguinte configuração de layout do MILE:

1) Informações sobre a rotina:

Image Modified


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.

Image Modified


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.

Image Modified


4) Defina os canais. Será necessário um canal Master para receber os dados do título (Canal A).

Image Modified


Image Added


Image Added


5) E um canal Detail para receber os dados do rateio (Canal B).

Image Modified


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ção

A 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)
Local aNewVet := array(11)

 

aNewVet[1] := aClone(aVetores[1]) // aRotAuto
aNewVet[2] := {} // nOpcion
aNewVet[3] := {3} // nOpcAuto
aNewVet[4] := {} // bExecuta
aNewVet[5] := {} // aDadosBco
aNewVet[6] := {} // lExibeLanc
aNewVet[7] := {} // lOnline
aNewVet[8] := aClone(aVetores[2]) // aDadosCTB
aNewVet[9] := {} // aTitPrv
aNewVet[10] := {} // lMsBlQl
aNewVet[11] := {} // lPaMovBco

 

Return aClone(aNewVet)

Exemplo de Arquivo de Importação

Veja 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|
|B|100|200|60|600|
|B|200|100|40|400

 

|


Agora basta processar o arquivo, que o mesmo deverá realizar a importação.

 


1) Processando o arquivo TXT:

Image Modified


2) Informando o caminho do arquivo TXT:

Image Modified


3) Final de processamento:

Image Modified


4) Acessando a rotina Fina050, veja que o título foi incluído com rateio contábil:

Image Modified


Visualizando o rateio:

Image Modified

 


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.

Image Added