Árvore de páginas


CONTEÚDO

  1. Dados Gerais
  2. Visão Geral
  3. Exemplos
  4. Demais Informações
  5. Tabelas Utilizadas
  6. Assuntos Relacionados

01. DADOS GERAIS

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus 

Segmento:

Backoffice SP

Módulo:ESTOQUE E CUSTOS (SIGAEST)
Função:INDICADORES DE PRODUTOS (MATA019)

02. VISÃO GERAL

Exemplo de rotina automática MVC para incluir, alterar e excluir Indicadores de Produtos.

03. EXEMPLOS

Escolha o modelo desejado abaixo conforme a sua necessidade de execução:

Rotina Automática MVC - Indicadores de Produtos (MATA019)
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "FWMVCDef.ch"

//------------------------------------------------------------------------
/*
EXEMPLO DE INCLUSÃO
*/
//------------------------------------------------------------------------
User Function m019Inc1()
Local oModel      := Nil
Private lMsErroAuto := .F.
 
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" USER "Administrador" PASSWORD "" MODULO "EST"
 
If "SBZ" $ SuperGetMv("MV_CADPROD",.F.,"")
    oModel := FwLoadModel("MATA010")
    oModel:SetOperation(MODEL_OPERATION_INSERT)
    oModel:Activate()
    oModel:SetValue("SB1MASTER", "B1_COD", "000000000000001")
    oModel:SetValue("SB1MASTER", "B1_DESC", "PRODUTO TESTE")
    oModel:SetValue("SB1MASTER", "B1_TIPO", "PA")
    oModel:SetValue("SB1MASTER", "B1_UM", "UN")
    oModel:SetValue("SB1MASTER", "B1_LOCPAD", "01")
    oModel:SetValue("SB1MASTER", "B1_LOCALIZ", "N")

    oModel:SetValue("SBZDETAIL","BZ_FILIAL" ,"01") 
    oModel:SetValue("SBZDETAIL","BZ_LOCPAD" ,"01")

    If oModel:VldData()
        oModel:CommitData()
        MsgInfo("Registro INCLUIDO!", "Atenção")
    Else
        VarInfo("",oModel:GetErrorMessage())
    EndIf       
        
    oModel:DeActivate()
    oModel:Destroy()

    oModel := NIL
Else
    MsgInfo("Parâmetro MV_CADPROD deve conter tabela SBZ", "Atenção")
EndIf

RESET ENVIRONMENT

Return Nil

//------------------------------------------------------------------------
/*
EXEMPLO DE INCLUSÃO (Utilizando a função FwMvcRotAuto apenas em caráter didático)
*/
//------------------------------------------------------------------------
User Function m019Inc2()
Local aDadosCab := {}
Local aDadosIte := {}
Local aItens := {}
 
Private oModel := Nil
Private lMsErroAuto := .F.
Private aRotina := {}
 
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" USER "Administrador" PASSWORD "" MODULO "EST"

If "SBZ" $ SuperGetMv("MV_CADPROD",.F.,"") 
    oModel := FwLoadModel("MATA010")
    
    //Adicionando os dados do ExecAuto Cabeçalho
    aAdd(aDadosCab, {"B1_COD", "000000000000001" , Nil})
    aAdd(aDadosCab, {"B1_DESC", "PRODUTO TESTE" , Nil})
    aAdd(aDadosCab, {"B1_TIPO", "PA" , Nil})
    aAdd(aDadosCab, {"B1_UM", "UN" , Nil})
    aAdd(aDadosCab, {"B1_LOCPAD", "01" , Nil})
    aAdd(aDadosCab, {"B1_LOCALIZ", "N" , Nil})
    
    //Adicionando os dados do ExecAuto Item
    aAdd(aDadosIte, {"BZ_FILIAL", "01" , Nil})
    aAdd(aDadosIte, {"BZ_LOCPAD", "01" , Nil})

    //No item o array precisa de um nivel superior.
    aAdd(aItens,aDadosIte)
    
    //Chamando a inclusão - Modelo 2 
    FWMVCRotAuto( oModel,"SB1",MODEL_OPERATION_INSERT,{{"SB1MASTER", aDadosCab},{"SBZDETAIL", aItens}})
    
    //Se houve erro no ExecAuto, mostra mensagem
    If lMsErroAuto
        MostraErro()
    //Senão, mostra uma mensagem de inclusão
    Else
        MsgInfo("Registro INCLUIDO!", "Atenção")
    EndIf
Else
    MsgInfo("Parâmetro MV_CADPROD deve conter tabela SBZ", "Atenção")
EndIf

RESET ENVIRONMENT

Return Nil

//------------------------------------------------------------------------
/*
EXEMPLO DE INCLUSÃO QUANDO JÁ EXISTE PRODUTO CADASTRADO
*/
//------------------------------------------------------------------------
User Function m019Inc3()
Local oModel := Nil
Local aFils  := {}
Local aArmz  := {}
Local nI     := 0
Private lMsErroAuto := .F.
  
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " USER "Administrador" PASSWORD "" MODULO "EST"
  
//Posiciona
SB1->(DbSetOrder(1))
If SB1->(DbSeek(xFilial("SB1") + "TESTE"))
    oModel := FwLoadModel("MATA019")
    oModel:SetOperation(MODEL_OPERATION_UPDATE)
    oModel:Activate()

    aFils := {"D MG 01 ", "D MG 02 ", "M SP 01 ", "M SP 02 "}
    aArmz := {"04", "02", "03", "01"}

    //Altera a primeira linha
    oModelGrid := oModel:GetModel('SBZDETAIL')
    If oModelGrid:Length() > 0
        oModelGrid:GoLine(1)
        oModelGrid:SetValue("BZ_FILIAL",aFils[1])
        oModelGrid:SetValue("BZ_LOCPAD",aArmz[1])
    EndIf

    //Adiciona mais 3 linhas
    For nI := 2 To 4
        If oModelGrid:Length() < nI
            oModelGrid:AddLine()
        EndIf
        oModelGrid:GoLine(nI)
        oModelGrid:SetValue("BZ_FILIAL", aFils[nI])
        oModelGrid:SetValue("BZ_LOCPAD", aArmz[nI])
    Next
  
    If oModel:VldData()
        oModel:CommitData()
        MsgInfo("Registro ALTERADO!", "Atenção")
    Else
        Conout(VarInfo("",oModel:GetErrorMessage()))
    EndIf
     
    oModel:DeActivate()
Else
    MsgInfo("Registro NAO LOCALIZADO!", "Atenção")
EndIf
 
RESET ENVIRONMENT
 
Return Nil

//------------------------------------------------------------------------
/*
EXEMPLO DE ALTERAÇÃO / INCLUSÃO QUANDO JÁ EXISTE PRODUTO CADASTRADO
*/
//------------------------------------------------------------------------
User Function m019Alt()
Local oModel := Nil
Private lMsErroAuto := .F.
 
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" USER "Administrador" PASSWORD "" MODULO "EST"
 
//Posiciona
SB1->(DbSetOrder(1))
If SB1->(DbSeek(xFilial("SB1") + "000000000000001"))
    oModel := FwLoadModel("MATA019")
    oModel:SetOperation(MODEL_OPERATION_UPDATE)
    oModel:Activate()
    oModel:SetValue("SBZDETAIL","BZ_FILIAL","E1U102")
    oModel:SetValue("SBZDETAIL","BZ_LOCPAD","02")
 
    If oModel:VldData()
        oModel:CommitData()
        MsgInfo("Registro ALTERADO!", "Atenção")
    Else
        VarInfo("",oModel:GetErrorMessage())
    EndIf
    
    oModel:DeActivate()
Else
    MsgInfo("Registro NAO LOCALIZADO!", "Atenção")
EndIf

RESET ENVIRONMENT

Return Nil
 
//------------------------------------------------------------------------
/*
EXEMPLO DE EXCLUSÃO
*/
//------------------------------------------------------------------------
User Function m019Exc()
Local oModel := Nil
Private aRotina := {}
 
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" USER "Administrador" PASSWORD "" MODULO "EST"

//Posiciona
SB1->(DbSetOrder(1))
If SB1->(DbSeek(xFilial("SB1") + "000000000000001"))
    oModel := FwLoadModel ("MATA019")
    oModel:SetOperation(MODEL_OPERATION_DELETE)
    oModel:Activate()
 
    If oModel:VldData()
        oModel:CommitData()
        MsgInfo("Registro EXCLUIDO!", "Atenção")
    Else
        VarInfo("",oModel:GetErrorMessage())
    EndIf

    oModel:DeActivate()
Else
    MsgInfo("Registro NAO LOCALIZADO!", "Atenção")
EndIf

RESET ENVIRONMENT
 
Return Nil

04. DEMAIS INFORMAÇÕES

IMPORTANTE!

Ao utilizar a rotina MATA010 como modelo, é necessário que o parâmetro MV_CADPROD contenha a tabela SBZ para que o submodelo da rotina MATA019 também seja carregado e possibilite a manipulação dos dados.

05. TABELAS UTILIZADAS

  • SB1
  • SBZ

06. ASSUNTOS RELACIONADOS

Cross Segmento - Backoffice (Linha Protheus) - SIGAEST - MATA019 - Indicador de Produtos

PEST018 - MV_CADPROD - Parâmetro para informar quais cadastros complementares devem ser apresentados no cadastro de produto

FWFormGridModel