Exemplo de uso de rotina automática do Complemento de Produto

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços.

Módulo:

Estoque

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

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 pode ser feito o lançamento automático utilizado via MsExecAuto(Rotina Automatica) ou com MVC (a partir da release 12.1.17 Outubro/2017).

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


MsExecAuto

Desenvolvimento com a utilização da funçao MsExecAuto()

Função:

MATA180

Parametros:

Nome

Tipo

Descrição

Obrigatório

 xAutoCab

Array

Camspos a serem preenchidos

x

 nCallOpcX

numerico

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    := ""

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "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:= {     {"B5_COD"  ,cCodigo  ,Nil},;            // Codigo identificador do produto            
                {"B5_CEME"  ,"Nome cientifico"  ,Nil}}    // Nome cientifico do produto
    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")
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


 

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:= {     {"B5_COD"  ,cCodigo  ,Nil},;            // Codigo identificador do produto            
                {"B5_CEME"  ,"Nome cientifico"  ,Nil}}    // Nome cientifico do produto
    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")
Endif


RESET ENVIRONMENT

Return