Árvore de páginas

Baixa de Pré-Requisições via Execauto

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

Estoque/Custos

Rotina:

Rotina

Nome Técnico

MATA185

Baixa de Pré-Requisições

País(es):

Todos

Banco(s) de Dados:

Todos

Tabelas Utilizadas:

SCP - Solicitações ao Armazém

SD3 - Movimentações Internas

AFH - Projeto x Solicitação Armazém

Sistema(s) Operacional(is):

Windows / Linux

Descrição

Executar a rotina automática Baixa de Pré-Requisições gerando as Requisições.

Tipo de execução para a rotina automática.
 1 = "Baixar"
 2 = "Estorno"
 5 = "Excluir"
 6 = "Encerrar"


Integração com SIGAPMS
Os itens da baixa de pré-requisição podem ou não possuir vínculo com tarefas do módulo PMS, por esta razão em operações de inclusão podem ser passados os dados do projeto para atualização, caso não seja informado este Array com os dados da tabela AFH a baixa não irá atualizar este vínculo.
Importante: Para rotina automática vinculada com projeto PMS é importante passar o USUÁRIO e SENHA para se conectar ao ambiente, conforme exemplo abaixo, pois o PMS executa validações de permissão de usuário e caso não encontre o usuário a rotina automática não é concluída com sucesso.

É necessário verificar se a permissão para atualização do apontamento do projeto incluindo movimentos internos está habilitada.
Para verificar, acesse o módulo de Gestão de Projétos (módulo 44) no menu Atualizações > Cadastros > Fases do Projeto (PMSA070).
Selecionar a fase atual em que o projeto se encontra e clique em "Alterar".
Na aba "Apontamentos do Projeto" existe o campo Incl.Requi. (AEA_EVEN81) que deve estar como "Sim" para permitir atualizar o projeto.
Verifique a permissão para as demais atualizações e salve a alteração do cadastro.

Ponto de Entrada

Descrição:

Execauto de Baixa de Pré-Requisição

Localização:

MATA185()

Eventos:

1 = "Baixar"
2 = "Estorno"
5 = "Excluir"
6 = "Encerrar"

Função:

Informe o Nome do(s) produto(s) a ser utilizado ou “Todos”

Parâmetros:

Nome

Tipo

Descrição

Obrigatório

ExpA1

Array of Record

Array com lista de campos (SCP)

X

ExpA2

Array of Record

Array com lista de campos (SD3)

X

ExpN1NuméricoNumero da opcao selecionadaX
ExpA3Array of RecordArray contendo parametros p/ perguntas

ExpA4

Array of Record

Array com lista de campos (AFH)


 

Exemplo:

#Include 'Protheus.ch'

User Function MyMata185()

Local aCamposSCP
Local aCamposSD3

Local aRelProj
Local cNum := "000001" // No.da Requisicao
Local cItem := "01" // No.do Item da Req.
LOCAL aRetCQ := {}

RpcSetEnv("01", "01", "USUARIO", "SENHA")

dbSelectArea("SCP")

dbSetOrder(1)
If SCP->(dbSeek(xFilial("SCP")+cNum+cItem))
        aCamposSCP := { {"CP_NUM" ,SCP->CP_NUM ,Nil },;
                                      {"CP_ITEM" ,SCP->CP_ITEM ,Nil },;
                                      {"CP_QUANT" ,SCP->CP_QUANT ,Nil }}

         aCamposSD3 := { {"D3_TM" ,"501" ,Nil },; // Tipo do Mov.
                                      {"D3_COD" ,SCP->CP_PRODUTO,Nil },;
                                      {"D3_LOCAL" ,SCP->CP_LOCAL ,Nil },;
                                      {"D3_DOC" ,"" ,Nil },; // No.do Docto.
                                      {"D3_EMISSAO" ,DDATABASE ,Nil }}


       //Dados para atualização do vinculo com pms (opcional)
        aRelProj := {}
        aAdd(aRelProj,{})
        aAdd(aRelProj[1],{"AFH_PROJET" ,"Projeto1  " ,Nil })
        aAdd(aRelProj[1],{"AFH_TAREFA" ,"01.01       " ,Nil })
        aAdd(aRelProj[1],{"AFH_QBAIX" ,1 ,Nil })

        aAdd(aRelProj,{})
        aAdd(aRelProj[2],{"AFH_PROJ" ,"Projeto2  " ,Nil })
        aAdd(aRelProj[2],{"AFH_TAREFA" ,"01.01       " ,Nil })
        aAdd(aRelProj[2],{"AFH_QBAIX" ,2 ,Nil })



        lMSHelpAuto := .F.
        lMsErroAuto := .F.

        MSExecAuto({|v,x,y,z,w| mata185(v,x,y,z,w)},aCamposSCP,aCamposSD3,1,,aRelProj)   // 1 = BAIXA (ROT.AUT)

        If lMsErroAuto
                MostraErro()
        EndIF

EndIf

RpcClearEnv() 

Return Nil


Exemplo 2 Baixa por toda a requisição :

#Include "RwMake.CH"
#include "tbiconn.ch"



User Function MyMata185()

Local cNum     := "000022"  // No.da Requisicao
Local aITEM         := {'01','02'}
Local nx
Local aLinhasSCP    := {}
Local aLinhasSD3    := {}
Local aAutoSCP      := {}
Local aAutoSD3      := {}
Local cCod01        := 'DETER'  
Local cCod02        := 'MPA002'
Local cUM           := 'UN'
Local nQUANT01      := 1
Local nQUANT02      := 1
Local cLocal        := '01'
Local cD3TM         := '501'

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01010001" MODULO "EST"

// Não é necessario mudar o F12, este trecho abaixo é apenas para mostrar que mesmo estando
// o parametro 1 = baixa por item, e montando corretamente os arrays e laço da execauto,
// a baixa ocorrerá de acordo com os itens

pergunte ('MTA185',.f.)
if MV_PAR01 = 1
    conout ('o F12 da rotina mata185 "BAIXA POR ?" esta como "baixa por item"')
else
    conout ('o F12 da rotina mata185 "BAIXA POR ?" esta como "baixa por Toda a pre-req"')
endif
aadd(aLinhasSCP,{"CP_NUM"       ,cNUM               ,Nil})
aadd(aLinhasSCP,{"CP_ITEM"      ,aITEM[1]           ,Nil})
aadd(aLinhasSCP,{"CP_PRODUTO"   ,cCod01             ,Nil})
aadd(aLinhasSCP,{"CP_UM"        ,cUM                ,Nil})
aadd(aLinhasSCP,{"CP_QUANT"     ,nQUANT01           ,Nil})

aAdd(aAutoSCP,aClone(aLinhasSCP))
aLinhasSCP:= {}

aadd(aLinhasSD3,{"D3_TM"        ,cD3TM              ,Nil})
aadd(aLinhasSD3,{"D3_COD"       ,cCod01             ,Nil})
aadd(aLinhasSD3,{"D3_LOCAL"     ,cLocal             ,Nil})
aadd(aLinhasSD3,{"D3_EMISSAO"   ,ddatabase          ,Nil})
//aadd(aLinhasSD3,{"D3_ESTORNO"     ,'S'                ,Nil})

aAdd(aAutoSD3,aClone(aLinhasSD3))
aLinhasSD3:={}

aadd(aLinhasSCP,{"CP_NUM"       ,cNUM               ,Nil})
aadd(aLinhasSCP,{"CP_ITEM"      ,aITEM[2]           ,Nil})
aadd(aLinhasSCP,{"CP_PRODUTO"   ,cCod02             ,Nil})
aadd(aLinhasSCP,{"CP_UM"        ,cUM                ,Nil})
aadd(aLinhasSCP,{"CP_QUANT"     ,nQUANT02           ,Nil})

aAdd(aAutoSCP,aClone(aLinhasSCP))

   
aadd(aLinhasSD3,{"D3_TM"        ,cD3TM              ,Nil})
aadd(aLinhasSD3,{"D3_COD"       ,cCod02             ,Nil})
aadd(aLinhasSD3,{"D3_LOCAL"     ,cLocal             ,Nil})
aadd(aLinhasSD3,{"D3_EMISSAO"   ,ddatabase          ,Nil})
//aadd(aLinhasSD3,{"D3_ESTORNO"     ,'S'                ,Nil})
aAdd(aAutoSD3,aClone(aLinhasSD3))


//1 = "Baixar"
//2 = "Estorno"
//5 = "Excluir"
//6 = "Encerrar"

dbSelectArea("SCP")
dbSelectArea("SCQ")
dbSelectArea("SD3")

// Baixa de Pré-Requisições.    

dbSelectArea("SCP")
dbSetOrder(1)
for nx:=1 to 2
    If SCP->(dbSeek(xFilial("SCP")+cNUM+aITEM[nx]))
        lMSHelpAuto := .F.
        lMsErroAuto := .F.
        MSExecAuto({|v,x,y,z| mata185(v,x,y)},aAutoSCP[nx],aAutoSD3[nx],1)  // 1 = BAIXA (ROT.AUT)
    Else
        Aviso("SIGAEST", "Req. nao encontrada", {" Ok "})  
    EndIf
next nx

Return Nil