Histórico da Página
...
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): |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. |