Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Exemplo de uso

de

para a rotina automática do Complemento de Produto

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços.

Módulo:

SIGAEST - Estoque e Custos

Rotina:

Rotina

Nome Técnico

MATA180

Complemento de Produto.

Cadastros Iniciais:

MATA010 - Produtos

Parâmetro(s):

Não se aplica

Ponto de Entrada:

Não se aplica

Cadastro de Produtos

País(es):

Todos os países

Banco(s) de Dados:

Bancos de dados homologados pela TOTVS.

Tabelas Utilizadas:

SB5 - Dados Adicionais do Produto.

Sistema(s) Operacional(is):

Sistemas Operacionais homologados pela TOTVS.

Descrição

A finalidade deste documento é exemplificar como o Complemento de produto Produto pode ser feito o por lançamento automático utilizado via através de MsExecAuto (Rotina Automaticarotina automática) ou com MVC (a partir da do release 12.1.17 Outubro/2017).

É obrigatório ter o produto estar cadastrado na tabela SB1 (Descrição descrição genérica de produto).

MsExecAuto

Desenvolvimento com a utilização da

funçao

função MsExecAuto()

Função:

MATA180

Parametros

Parâmetros:

Nome

Tipo

Descrição

Obrigatório

 xAutoCab

Array

Camspos

Campos a serem preenchidos

x

 nCallOpcX

numerico

Numérico

Operação da rotina

,

onde: 3-Incluir; 4-Alterar e 5-Excluir

x

 

Exemplo:

#Include "RwMake.CH"
#include "tbiconn.ch"
User Function TMata180()
Local aCab        := {}
Local cCodigo   cCódigo    := ""

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST"

// define o codigo código do produto a ser utilizado
cCodigo   cCódigo    := "1234"

//
// Para incluir um registro na SB5, obrigatoriamente o codigo código do produto deve estar previsamente previamente cadastrado na tabela SB1
//
dbSelectArea("SB1")
dbSetOrder(1)
If DbSeek(xFilial("SB1")+cCodigo)

    aCab:= {     {"B5_COD"  ,cCodigo  ,Nil},;            // Codigo Código identificador do produto            
                {"B5_CEME"  ,"Nome cientifico"  ,Nil}}    // Nome cientifico científico do produto
    MSExecAuto({|x,y| Mata180(x,y)},aCab,3) //Inclusao   Inclusão 
    conout("Acabou de executar a opcao opção Incluir da na rotina automatica automática do Cadastro de Complemento do Produto")
    
    //-- Retorno de erro na execucao execução da rotina
    If lMsErroAuto    
        conout("erro ao incluir o produto")
        cErro:=MostraErro()
    Else
        conout("Incluido Incluído com sucesso")
    Endif
Else
    conout("Produto não foi encontrado na tabela SB1.")
EndIf

//
// Para alterar um registro na SB5 , não é obrigatorio obrigatório estar posicionado no registro a ser alterado
//
lMsErroAuto := .F.
aCab:= {     {"B5_COD"  ,cCodigo  ,Nil},;                // Codigo Código identificador do produto            
            {"B5_CEME"  ,"Nome cientifico 1234"  ,Nil}}    // Nome cientifico científico do produto
MSExecAuto({|x,y| Mata180(x,y)},aCab,4) //Alteracao   Alteração
conout("Acabou de executar a opcao opção Alterar da rotina automatica automática do Cadastro de Complemento do Produto")

//-- Retorno de erro na execucao execução da rotina
If lMsErroAuto    
    conout("erro ao alterar o produto")
    cErro:=MostraErro()
Else
    conout("Alterado com sucesso")
Endif

//
// Para excluir um registro na SB5, não é obrigatorio obrigatório estar posicionado no registro a ser alterado
//
lMsErroAuto := .F.
aCab:= {     {"B5_COD"  ,cCodigo  ,Nil},;            // Codigo Código identificador do produto            
            {"B5_CEME"  ,"Nome cientifico"  ,Nil}}    // Nome cientifico científico do produto
MSExecAuto({|x,y| Mata180(x,y)},aCab,5) //Exclusao Exclusão  
conout("Acabou de executar a opcao opção Excluir da rotina automatica automática do Cadastro de Complemento do Produto")

//-- Retorno de erro na execucao execução da rotina
If lMsErroAuto    
    conout("erro ao excluir o produto")
    cErro:=MostraErro()
Else
    conout("Excluido Excluído com sucesso")
Endif

RESET ENVIRONMENT
Return

Desenvolvimento com a utilização em MVC (a partir

da

do release 12.1.17 Outubro/2017).

Exemplo:

#include 'protheus.ch'
#INCLUDE "TBICONN.CH"
#INCLUDE 'FWMVCDef.ch'
#INCLUDE "RWMAKE.CH"

//------------------------------------------------------------------------
/*
Função Principal
*/
//------------------------------------------------------------------------
User Function TMAT180MVC()

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST"


Incluir1()    // Inclusão utilizando o MVC
Incluir2()    // Inclusão utilizando a função FWMVCRotAuto
Alterar()    // Alteração utilizando o MVC
Excluir()    // Alteração utilizando o MVC

RESET ENVIRONMENT

Return

/*------------------------------------------------------------------------
EXEMPLO DE INCLUSÃO NA TABELA SB5 UTILIZANDO MVC
------------------------------------------------------------------------*/
Static Function Incluir1()
Local oModel    := Nil
Local cCodigo    := ""

// informe o codigo código do produto, a qual já deve estar registrado na tabela SB1
cCodigo := "1234"

oModel := FwLoadModel("MATA180")
oModel:SetOperation(MODEL_OPERATION_INSERT)
oModel:Activate()

oModel:SetValue("SB5MASTER","B5_COD"    ,cCodigo)
oModel:SetValue("SB5MASTER","B5_CEME"    ,"Nome cientificocientífico")

If oModel:VldData()
    oModel:CommitData()
    conout("Registro INCLUIDO!")
Else
    VarInfo("Erro ao incluir",oModel:GetErrorMessage())
EndIf

oModel:DeActivate()
oModel:Destroy()
oModel := NIL

Return Nil

/*------------------------------------------------------------------------
EXEMPLO DE INCLUSÃO NA TABELA SB5 UTILIZANDO A FUNÇÃO FwMVCRotAuto
------------------------------------------------------------------------*/
Static Function Incluir2()
Local aCab        := {}
Local cCodigo    := ""

Private oModel2        := Nil
Private lMsErroAuto    := .F.
Private aRotina        := {}

// informe o codigo código do produto, a qual já deve estar registrado na tabela SB1
cCodigo := "ABC"

//Adicionando os dados do ExecAuto cab
aCab:= {     {"B5_COD"  ,cCodigo  ,Nil},;            // Codigo Código identificador do produto
            {"B5_CEME"  ,"Nome cientifico"  ,Nil}}    // Nome cientifico científico do produto

oModel2 := FwLoadModel("MATA180")

FWMVCRotAuto( oModel2,"SB5",MODEL_OPERATION_INSERT,{{"SB5MASTER", aCab}})

//Se houve erro no ExecAuto, mostra mensagem
If lMsErroAuto
    MostraErro()
//Senão, mostra uma mensagem de inclusão
Else
    conout("Registro INCLUIDO incluído utilizando a função FWMVCRotAuto!")
EndIf

oModel2:DeActivate()
oModel2:Destroy()
oModel2 := NIL

Return Nil

/*------------------------------------------------------------------------
EXEMPLO DE ALTERAÇÃO NA TABELA SB5 COM MVC
------------------------------------------------------------------------*/
Static Function Alterar()
Local oModel    := Nil
Local cCodigo    := ""

// informe o codigo código do produto, a qual já deve estar registrado na tabela SB1
cCodigo := "1234"

// O registro deve estar posicionado para alterar
dbSelectArea("SB5")
DbSetOrder(1)
If DbSeek(xFilial("SB5") + cCodigo)
    oModel := FwLoadModel("MATA180")
    oModel:SetOperation(MODEL_OPERATION_UPDATE)
    oModel:Activate()
    
    oModel:SetValue("SB5MASTER","B5_COD",cCodigo)
    oModel:SetValue("SB5MASTER","B5_CEME","Nome cientifico 1234")

    If oModel:VldData()
        oModel:CommitData()
        conout("Registro ALTERADO!")
    Else
        VarInfo("Erro ao alterar",oModel:GetErrorMessage())
    EndIf

    oModel:DeActivate()
    oModel:Destroy()
    oModel := NIL
Else
    conout("Registro NAO LOCALIZADOnão localizado!")
EndIf

Return Nil

/*------------------------------------------------------------------------
EXEMPLO DE EXCLUSAO EXCLUSÃO NA TABELA SB5 COM MVC
------------------------------------------------------------------------*/
Static Function Excluir()
Local oModel    := Nil
Local cCodigo    := ""

// informe o codigo do produto, a qual já deve estar registrado na tabela SB1
cCodigo := "1234"

// O registro deve estar posicionado para excluir
dbSelectArea("SB5")
DbSetOrder(1)
If DbSeek(xFilial("SB5") + cCodigo)
    oModel := FwLoadModel("MATA180")
    oModel:SetOperation(MODEL_OPERATION_DELETE)
    oModel:Activate()

    If oModel:VldData()
        oModel:CommitData()
        conout("Registro EXCLUIDOexcluído!")
    Else
        VarInfo("Erro ao excluir",oModel:GetErrorMessage())
    EndIf

    oModel:DeActivate()
    oModel:Destroy()
    oModel := NIL
Else
    conout("Registro NAO LOCALIZADOnão localizado!")
EndIf

Return Nil