Histórico da Página
Baixa de Pré-Requisições via Execauto
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||
Segmento: | Manufatura | ||||
Módulo: | Estoque/Custos | ||||
Rotina: |
| ||||
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" | ||||||||||||||||||||||||
Função: | Informe o Nome do(s) produto(s) a ser utilizado ou “Todos” | ||||||||||||||||||||||||
Parâmetros: |
|
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"
UserFunctionMyMata185()
LocalcNum :="000022" // No.da Requisicao
LocalaITEM := {'01','02'}
Localnx
LocalaLinhasSCP := {}
LocalaLinhasSD3 := {}
LocalaAutoSCP := {}
LocalaAutoSD3 := {}
LocalcCod01 :='DETER'
LocalcCod02 :='MPA002'
LocalcUM :='UN'
LocalnQUANT01 :=1
LocalnQUANT02 :=1
LocalcLocal :='01'
LocalcD3TM :='501'
PREPAREENVIRONMENTEMPRESA"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.)
ifMV_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)
fornx:=1to2
IfSCP->(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
nextnx
ReturnNil