Árvore de páginas


IMPORTANTE!

A rotina OMSA100 se utiliza do conceito de MVC do Protheus, portanto, não possui a mesma estrutura de MsExecAuto conforme o modelo antigo utilizado no Protheus.

É possível executar de forma automática a rotina OMSA100 para inclusão do cadastros de Rotas para o módulo SIGAOMS - Gestão da Distribuição, de forma muito semelhante como descrito no exemplo abaixo.

Informações adicionais sobre o padrão MVC podem ser consultadas em: MVC (Model View Controller)


Operação de Inclusão
#Função de modelo para execução da inclusão da rota no módulo SIGAOMS
#INCLUDE 'protheus.ch'
#INCLUDE 'TOTVS.CH' 
#INCLUDE "FWMVCDEF.CH"

User Function IncRota()
Local oModel := Nil 
Local oModelCab := Nil
Local oModelRot := Nil
Local cCodRot := ""
Local nOperat := MODEL_OPERATION_INSERT
Private ALTERA := .F.

	cCodRot	:= GetSxeNum("DA8","DA8_COD")	
	oModel := FWLoadModel("OMSA100") //-- Carrega o modelo
	oModelCab := oModel:GetModel("MdFieldCDA8")
    oModelRot := oModel:GetModel("MdGridDA9F1")
	oModel:SetOperation(nOperat) //-- Seta operação de inclusão
	oModel:Activate() //-- Ativa o Modelo

	//-- Cabeçalho
	oModelCab:SetValue('DA8_FILIAL' , xFilial("DA8") )
	oModelCab:SetValue('DA8_COD' , cCodRot )
	oModelCab:SetValue('DA8_DESC' , "PRACA TESTES" )
	oModelCab:SetValue('DA8_ATIVO' , "1" )
	oModelCab:SetValue('DA8_TIPCAR' , "001" )
	oModelCab:SetValue('DA8_CDRCAL' , "01" )

	//ROtas
	oModelRot:AddLine()
	oModelRot:SetValue('DA9_FILIAL' , xFilial("DA9") )
	oModelRot:SetValue('DA9_ROTEIR' , cCodRot )  
	oModelRot:SetValue('DA9_SEQUEN' , '000010' ) 
	oModelRot:SetValue('DA9_PERCUR' , 'ZSP'   ) 
	oModelRot:SetValue('DA9_ROTA' , '000001' ) 
	oModelRot:SetValue('DA9_REF' , 'INCLUSAO ROTA OMS' ) 

	//-- Validacao e Gravacao do Modelo
	If oModel:VldData()
  	   oModel:CommitData()
	Else
  	  VarInfo("Erro",oModel:GetErrorMessage())
    EndIf

	oModel:DeActivate() //desativa modelo
Return
Operação de Modificação
#Função de modelo para execução da Alteração da Rota no modulo SIGAOMS
#include 'protheus.ch'
#INCLUDE 'TOTVS.CH' 
#Include "FWMVCDEF.CH"

User Function IncRota2()
Local oModel := Nil 
Local oModelCab := Nil
Local oModelRot := Nil
Private ALTERA := .F.

	oModel := FWLoadModel("OMSA100") //-- Carrega o modelo
	oModelCab := oModel:GetModel("MdFieldCDA8")
    oModelRot := oModel:GetModel("MdGridDA9F1")
	
	DA8->(DbSetOrder(1)) // DA8_FILIAL, DA8_COD
   	DA8->(DbSeek(xFilial("DA8")+"JLLE06"))
 
    oModel:SetOperation(MODEL_OPERATION_UPDATE) // Seta operação de modificação
    oModel:Activate() // Ativa o Modelo
   
    oModelCab:SetValue('DA8_DESC' , "PRACA TESTES ALTERA" )

	If oModelRot:SeekLine({{"DA9_ROTEIR",'JLLE06' },{"DA9_SEQUEN",'000002' },{"DA9_PERCUR", 'ZSP' },{"DA9_ROTA",'000002'}})
       oModelRot:SetValue('DA9_REF' , 'ALTERACAO ROTA OMS' ) 
   	EndIf
	//-- Validacao e Gravacao do Modelo
	If oModel:VldData()
  	   oModel:CommitData()
	Else
  	  VarInfo("Erro",oModel:GetErrorMessage())
    EndIf
	oModel:DeActivate() //desativa modelo
Return

Operação de Exclusão
#Função de modelo para execução da Exclusão da Rota no modulo SIGAOMS
#include 'protheus.ch'
#INCLUDE 'TOTVS.CH' 
#Include "FWMVCDEF.CH"

User Function IncRota3()
Local oModel := Nil 
Local oModelCab := Nil
Private ALTERA := .F.

      oModel := FWLoadModel("OMSA100") //-- Carrega o modelo
      oModelCab := oModel:GetModel("MdFieldCDA8")

      DA8->(DbSetOrder(1)) // DA8_FILIAL, DA8_COD
      DA8->(DbSeek(xFilial("DA8")+"JLLE06"))

      oModel:SetOperation(MODEL_OPERATION_DELETE) // Seta operação de modificação
      oModel:Activate() // Ativa o Modelo

      //-- Validacao e Gravacao do Modelo
      If oModel:VldData()
         oModel:CommitData()
      Else
         VarInfo("Erro",oModel:GetErrorMessage())
      EndIf

      oModel:DeActivate() //desativa modelo
Return