Árvore de páginas

Importante

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

No entanto é possível adaptar a mesma para funcionar de forma muito semelhante como mostrado no exemplo abaixo.

Maiores detalhes sobre o padrão MVC podem ser consultados em: MVC (Model View Controller)

Função de Adaptação para MVC (User Function OMSA090A)
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"


// ****************************************************************************
// *************** ATENÇÃO: ESTA FUNÇÃO NÃO PODE SER OMSA090¹ *****************
// ****************************************************************************
// nOpcao - Operação a ser realizada. Possíveis valores
//          MODEL_OPERATION_INSERT, MODEL_OPERATION_UPDATE ou MODEL_OPERATION_DELETE
// aCab - Array com a combinação [{Campo,Valor}] para as informações de cabeçalho
// aClientes - Array de Array com a combinação para as informações de clientes
//         [
//           [{Campo,Valor},{Campo,Valor},...],
//           [{Campo,Valor},{Campo,Valor},...],
//           ...
//         ]
// aCeps - Array de Array com a combinação para as informações de CEPs, idem aClientes
// cErro - Mensagem de retorno de erro, deve ser passada por referência @cErro
// ¹ O nome User Function OMSA090 é reservado para o PE padrão do MVC 
User Function OMSA090A(nOpcao, aCab, aClientes, aCeps, cErro)
Local oModel := FwLoadModel("OMSA090")
Local lRet   := .T.
Local nX     := 0
Local aErros := {}

Default aClientes := {}
Default aCeps     := {}

   Private lMsHelpAuto := .T. //Variavel de controle interno do ExecAuto
   Private lMsErroAuto := .F. //Variavel que informa a ocorrência de erros no ExecAuto
   Private lAutoErrNoFile := .T.

   FWMVCRotAuto(oModel,"DA7",nOpcao,{{"MdFieldCDA7",aCab},{"MdGridDA7F1",aClientes},{"MdGridDA7F2",aCeps}},,.T.)

   If lMsErroAuto
      aErros := GetAutoGRLog()
      For nX := 1 To Len(aErros)
         cErro += aErros[nX] + CRLF
      Next
      lRet := .F.
   EndIf

   //Tratamento realizado para evitar Reference counter overflow.
   oModel:Destroy()
   oModel:=Nil

Return lRet
Operação de Inclusão
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"


User Function OMSA090I()
Local nOpcao, aCab, aClientes, aCeps
Local cErro := ""
Local lRet  := .T.

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 "OMS"

   SetFunName("OMSA090")

   nOpcao := MODEL_OPERATION_INSERT

   aCab := Array(0)
   AAdd(aCab, {"DA7_PERCUR","ZONTST"} )
   AAdd(aCab, {"DA7_ROTA"  ,"SET002"} )

   aClientes := Array(0)
   AAdd(aClientes, Array(0))
   AAdd(aClientes[1], {"DA7_SEQUEN","000001"} )
   AAdd(aClientes[1], {"DA7_CLIENT","L00001"} )
   AAdd(aClientes[1], {"DA7_LOJA","01"} )
   // Ou
   AAdd(aClientes, { {"DA7_SEQUEN","000002"}, {"DA7_CLIENT","L00001"}, {"DA7_LOJA","02"} } )
   AAdd(aClientes, { {"DA7_SEQUEN","000003"}, {"DA7_CLIENT","L00001"}, {"DA7_LOJA","03"} } )

   If (lRet := U_OMSA090A(nOpcao, aCab, aClientes, aCeps, @cErro))
      conout("Pontos por setor incluído com sucesso.")
   Else
      conout("Erro na inclusão de pontos por setor: " + cErro)
   EndIf

   RESET ENVIRONMENT
Return 
Operação de Modificação
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"


User Function OMSA090U()
Local nOpcao, aCab, aClientes, aCeps
Local cErro := ""
Local lRet  := .T.

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 "OMS"

   SetFunName("OMSA090")

   nOpcao := MODEL_OPERATION_UPDATE

   aCab := Array(2)
   aCab[1] := {"DA7_PERCUR","ZONTST"}
   aCab[2] := {"DA7_ROTA"  ,"SET002"}

   aClientes := {}
   AAdd(aClientes,{ {"LINPOS","DA7_SEQUEN","000003"}, {"AUTDELETA","S",Nil} } ) 

   aCeps := {}
   AAdd(aCeps, { {"DA7_SEQUEN","000001"}, {"DA7_CEPDE","89200000"}, {"DA7_CEPATE","89299999"} } )

   If (lRet := U_OMSA090A(nOpcao, aCab, aClientes, aCeps, @cErro))
      conout("Pontos por setor alterados com sucesso.")
   Else
      conout("Erro na alteração de pontos por setor: " + cErro)
   EndIf

   RESET ENVIRONMENT
Return 
Operação de Exclusão
#include "tbiconn.ch"
#include "PROTHEUS.CH"
#include "FWMVCDEF.CH"


User Function OMSA090D()
Local nOpcao, aCab
Local cErro := ""
Local lRet  := .T.

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 "OMS"

   SetFunName("OMSA090")

   nOpcao := MODEL_OPERATION_DELETE

   aCab := Array(2)
   aCab[1] := {"DA7_ROTA"  ,"SET002"}
   aCab[2] := {"DA7_PERCUR","ZONTST"}

   If (lRet := U_OMSA090A(nOpcao, aCab, Nil, Nil, @cErro))
      conout("Pontos por setor excluídos com sucesso.")
   Else
      conout("Erro na exclusão de pontos por setor: " + cErro)
   EndIf

   RESET ENVIRONMENT
Return 
  • Sem rótulos