CONTEÚDO
01. VISÃO GERAL
A rotina WMSA030 (Rotina Automática) se utiliza do conceito de MVC do Protheus, portanto não possui a mesma estrutura de MsExecAuto, conforme o modelo antigo utilizado no Protheus.
No entanto é possível, por meio do modelo de dados, utilizar a mesma para funcionar de forma muito semelhante como apresentado nos exemplos abaixo.
Mais detalhes sobre o padrão MVC podem ser consultados em: MVC (Model View Controller).
02. EXEMPLOS
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"
// ****************************************************************************
// *************** ATENÇÃO: ESTA FUNÇÃO NÃO PODE SER WMSA030¹ *****************
// ****************************************************************************
// ¹ O nome User Function WMSA030 é reservado para o PE padrão do MVC
User Function WMSA030I()
Local oModel, oModelCab, oModelDet
Local _cEmpresa := "99" // Código da Empresa que deseja manipular
Local _cFilial := "01" // Código da Filial que deseja manipular
PREPARE ENVIRONMENT EMPRESA _cEmpresa FILIAL _cFilial MODULO "WMS"
SetFunName("WMSA030")
oModel := FwLoadModel("WMSA030")
oModelCab := oModel:GetModel("MdFieldCDC3")
oModelDet := oModel:GetModel("MdGridIDC3")
oModel:SetOperation(MODEL_OPERATION_INSERT) // Seta operação de inclusão
oModel:Activate() // Ativa o Modelo
oModelCab:SetValue("DC3_LOCAL", "01")
oModelCab:SetValue("DC3_CODPRO", "789458965321")
oModelCab:SetValue("DC3_REABAS", "013")
oModelCab:SetValue("DC3_PRIEND", "1")
oModelDet:SetValue("DC3_ORDEM" , "01")
oModelDet:SetValue("DC3_TPESTR", "000001")
oModelDet:SetValue("DC3_CODNOR", "000001")
oModelDet:SetValue("DC3_DESPIC", "PULMAO")
oModelDet:SetValue("DC3_TIPSEP", "1") // Somente Norma
oModelDet:SetValue("DC3_NUNITI", 1)
oModelDet:SetValue("DC3_EMBDES", "1") // Abastecimento
oModelDet:SetValue("DC3_TIPEND", "1") // Endereços Vazios
oModelDet:SetValue("DC3_UMMOV" , "1") // Primeira UM
oModelDet:AddLine()
oModelDet:SetValue("DC3_ORDEM" , "02")
oModelDet:SetValue("DC3_TPESTR", "000002")
oModelDet:SetValue("DC3_CODNOR", "000001")
oModelDet:SetValue("DC3_DESPIC", "PICKING")
oModelDet:SetValue("DC3_TIPREP", "2") // Completar
oModelDet:SetValue("DC3_PERREP", 100)
oModelDet:SetValue("DC3_TIPSEP", "3") // Quantidade Mínima
oModelDet:SetValue("DC3_QTDUNI", 1)
oModelDet:SetValue("DC3_NUNITI", 1)
oModelDet:SetValue("DC3_EMBDES", "1") // Abastecimento
oModelDet:SetValue("DC3_TIPEND", "1") // Endereços Vazios
oModelDet:SetValue("DC3_UMMOV" , "1") // Primeira UM
//Validação e Gravação do Modelo
If oModel:VldData()
oModel:CommitData()
Else
VarInfo("Erro",oModel:GetErrorMessage())
EndIf
RESET ENVIRONMENT
Return
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"
// ****************************************************************************
// *************** ATENÇÃO: ESTA FUNÇÃO NÃO PODE SER WMSA030¹ *****************
// ****************************************************************************
// ¹ O nome User Function WMSA030 é reservado para o PE padrão do MVC
User Function WMSA030U()
Local oModel, oModelDet
Local _cEmpresa := "99" // Código da Empresa que deseja manipular
Local _cFilial := "01" // Código da Filial que deseja manipular]
Local cArmazem := "01"
Local cProduto := "789458965321"
PREPARE ENVIRONMENT EMPRESA _cEmpresa FILIAL _cFilial MODULO "WMS"
SetFunName("WMSA030")
oModel := FwLoadModel("WMSA030")
oModelDet := oModel:GetModel("MdGridIDC3")
// Posiciona no registro que se deseja alterar
DC3->(DbSetOrder(1)) // DC3_FILIAL, DC3_CODPRO, DC3_LOCAL
DC3->(DbSeek(xFilial("DC3")+PadR(cProduto,TamSx3("DC3_CODPRO")[1])+cArmazem))
oModel:SetOperation(MODEL_OPERATION_UPDATE) // Seta operação de modificação
oModel:Activate() // Ativa o Modelo
// Altera o pulmão para separação do saldo restante
If oModelDet:SeekLine( { {"DC3_TPESTR","000001"},{"DC3_CODNOR","000001"} } )
oModelDet:SetValue("DC3_TIPSEP", "2") // Saldo Restante
EndIf
// Adiciona a doca na sequencia de abastecimento
oModelDet:AddLine()
oModelDet:SetValue("DC3_ORDEM" , "03")
oModelDet:SetValue("DC3_TPESTR", "000005")
oModelDet:SetValue("DC3_CODNOR", "000001")
oModelDet:SetValue("DC3_DESPIC", "DOCA")
oModelDet:SetValue("DC3_EMBDES", "2") // Embarque/Desembarque
oModelDet:SetValue("DC3_TIPEND", "4") // Compartilha
//Validação e Gravação do Modelo
If oModel:VldData()
oModel:CommitData()
Else
VarInfo("Erro",oModel:GetErrorMessage())
EndIf
RESET ENVIRONMENT
Return
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"
// ****************************************************************************
// *************** ATENÇÃO: ESTA FUNÇÃO NÃO PODE SER WMSA030¹ *****************
// ****************************************************************************
// ¹ O nome User Function WMSA030 é reservado para o PE padrão do MVC
User Function WMSA030D()
Local oModel
Local _cEmpresa := "99" // Código da Empresa que deseja manipular
Local _cFilial := "01" // Código da Filial que deseja manipular]
Local cArmazem := "01"
Local cProduto := "789458965321"
PREPARE ENVIRONMENT EMPRESA _cEmpresa FILIAL _cFilial MODULO "WMS"
SetFunName("WMSA030")
oModel := FwLoadModel("WMSA030")
// Posiciona no registro que se deseja excluir
DC3->(DbSetOrder(1))
DC3->(DbSeek(xFilial("DC3")+PadR(cProduto,TamSx3("DC3_CODPRO")[1])+cArmazem))
oModel:SetOperation(MODEL_OPERATION_DELETE) // Seta operação de exclusão
oModel:Activate() // Ativa o Modelo
//Validação e Gravação do Modelo
If oModel:VldData()
oModel:CommitData()
Else
VarInfo("Erro",oModel:GetErrorMessage())
EndIf
RESET ENVIRONMENT
Return