Histórico da Página
Exemplo de uso
depara 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: |
| ||||
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 já estar cadastrado na tabela SB1 (Descrição descrição genérica de produto).
MsExecAuto
Desenvolvimento com a utilização da
funçaofunção MsExecAuto()
Função: | MATA180 |
Parâmetros: |
|
|
|
|
Exemplo:
#Include "RwMake.CH"
#include "tbiconn.ch"
User Function TMata180()
Local aCab := {}
Local cCodigo cCodigo := ""
Private lMsErroAuto := .F.
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST"
// define o codigo código do produto a ser utilizado
cCodigo cCodigo := "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
Função:
Informe o Nome do(s) produto(s) a ser utilizado ou “Todos”
Retorno:
Nome
Tipo
Descrição
Obrigatório
xAutoCab
Array
Camspos a serem preenchidos
nCallOpcX
numerico
Operação da rotina, onde:3-Incluir;4-Alterar e 5- Excluir
(a partir 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
Exemplo:
#Include "RwMake.CH"
#include "tbiconn.ch"
User Function TMata180()
Local aCab := {}
Local cCodigo := ""
Private lMsErroAuto := .F.
//PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "FIS"
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "EST"
// define o codigo do produto a ser utilizado
cCodigo := "1234"
//
// Para incluir um registro na SB5, obrigatoriamente o codigo do produto deve estar previsamente cadastrado na tabela SB1
//
dbSelectArea("SB1")
dbSetOrder(1)
If DbSeek(xFilial("SB1")+cCodigo)
aCab
// informe o código do produto, a qual já deve estar registrado na tabela SB1
cCodigo := "1234"
//Para utilização da mesma, o modelo de dados chama-se MATA180M e nao MATA180
oModel := FwLoadModel("MATA180M")
oModel:SetOperation(MODEL_OPERATION_INSERT)
oModel:Activate()
oModel:SetValue("SB5MASTER","B5_COD" ,cCodigo)
oModel:SetValue("SB5MASTER","B5_CEME" ,"Nome cientí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 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 produto
{"B5_CEME" ,"Nome cientifico" ,Nil}} // Nome cientifico científico do produto
//Para utilização da mesma, o modelo de dados chama-se MATA180M e nao MATA180
oModel2 := FwLoadModel("MATA180M")
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 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 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)
//Para utilização da mesma, o modelo de dados chama-se MATA180M e nao MATA180
oModel := FwLoadModel("MATA180M")
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 não localizado!")
EndIf
Return Nil
/*------------------------------------------------------------------------
EXEMPLO DE 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)
//Para utilização da mesma, o modelo de dados chama-se MATA180M e nao MATA180
oModel := FwLoadModel("MATA180M")
oModel:SetOperation(MODEL_OPERATION_DELETE)
oModel:Activate()
If oModel:VldData()
oModel:CommitData()
conout("Registro excluído!")
Else
VarInfo("Erro ao excluir",oModel:GetErrorMessage())
EndIf
oModel:DeActivate()
oModel:Destroy()
oModel := NIL
Else
conout("Registro não localizado!")
EndIf
Return Nil MSExecAuto({|x,y| Mata180(x,y)},aCab,3) //Inclusao
conout("Acabou de executar a opcao Incluir da rotina automatica do Cadastro de Complemento do Produto")
//-- Retorno de erro na execucao da rotina
If lMsErroAuto
conout("erro ao incluir o produto")
cErro:=MostraErro()
Else
conout("Incluido com sucesso")
Endif
Else
conout("Produto não foi encontrado na tabela SB1.")
EndIf
//
// Para alterar um registro na SB5, não é obrigatorio estar posicionado no registro a ser alterado
//
lMsErroAuto := .F.
aCab:= { {"B5_COD" ,cCodigo ,Nil},; // Codigo identificador do produto
{"B5_CEME" ,"Nome cientifico 1234" ,Nil}} // Nome cientifico do produto
MSExecAuto({|x,y| Mata180(x,y)},aCab,4) //Alteracao
conout("Acabou de executar a opcao Alterar da rotina automatica do Cadastro de Complemento do Produto")
//-- Retorno de erro na execucao 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 estar posicionado no registro a ser alterado
//
lMsErroAuto := .F.
aCab:= { {"B5_COD" ,cCodigo ,Nil},; // Codigo identificador do produto
{"B5_CEME" ,"Nome cientifico" ,Nil}} // Nome cientifico do produto
MSExecAuto({|x,y| Mata180(x,y)},aCab,5) //Exclusao
conout("Acabou de executar a opcao Excluir da rotina automatica do Cadastro de Complemento do Produto")
//-- Retorno de erro na execucao da rotina
If lMsErroAuto
conout("erro ao excluir o produto")
cErro:=MostraErro()
Else
conout("Excluido com sucesso")
EndifRESET ENVIRONMENT
Return