Árvore de páginas


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


Operação de Inclusão
#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 

Operação de Modificação
#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 

Operação de Exclusão
#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