O cadastro de Produtos contém as principais informações sobre produtos e serviços adquiridos, fabricados ou fornecidos pela empresa, realizando o controle desses produtos em todos os módulos do Sistema.
As empresas exclusivamente comerciais tem, possivelmente, apenas produtos para revenda e materiais de consumo.
As empresas industriais tem, possivelmente, todos os tipos de produtos ou materiais utilizados para produção: Produtos Acabados, Produtos Intermediários, Matérias-primas, Materiais de Consumo e Outros, inclusive Mão de Obra ou Serviços Agregados a fabricação que devem compor o custo do produto final.
A definição de produto é genérica e abrange muitos conceitos que podem variar de acordo com o ramo de atuação da organização.
A rotina Produtos permite onde as operações podem ser utilizadas em suas customizações confome exemplos abaixo:
#INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" User Function TMata010() Local aVetor := {} private lMsErroAuto := .F. PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" //--- Exemplo: Inclusao --- // aVetor:= { {"B1_COD" ,"9994" ,NIL},; {"B1_DESC" ,"PRODUTO TESTE - ROTINA AUTOMATICA" ,NIL},; {"B1_TIPO" ,"PA" ,Nil},; {"B1_UM" ,"UN" ,Nil},; {"B1_LOCPAD" ,"01" ,Nil},; {"B1_PICM" ,0 ,Nil},; {"B1_IPI" ,0 ,Nil},; {"B1_CONTRAT" ,"N" ,Nil},; {"B1_LOCALIZ" ,"N" ,Nil}} MSExecAuto({|x,y| Mata010(x,y)},aVetor,3) //--- Exemplo: Alteracao --- // aVetor:= { {"B1_COD" ,"9994" ,NIL},; {"B1_DESC" ,"PRODUTO TESTE - ALTERADO" ,NIL}} MSExecAuto({|x,y| Mata010(x,y)},aVetor,4) //--- Exemplo: Exclusao --- // aVetor:= { {"B1_COD" ,"9994" ,NIL},; {"B1_DESC" ,"PRODUTO TESTE - ROTINA AUTOMATICA" ,NIL}} MSExecAuto({|x,y| Mata010(x,y)},aVetor,5) If lMsErroAuto MostraErro() Else Alert("Ok") Endif Return |
#INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" #INCLUDE 'Protheus.ch' #INCLUDE 'FWMVCDef.ch' //------------------------------------------------------------------------ /* EXEMPLO DE INCLUSÃO MODELO 1 */ //------------------------------------------------------------------------ User Function m010IncRa() Local oModel := Nil Private lMsErroAuto := .F. PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" oModel := FwLoadModel ("MATA010") oModel:SetOperation(MODEL_OPERATION_INSERT) oModel:Activate() oModel:SetValue("SB1MASTER","B1_COD" ,"RASB100") oModel:SetValue("SB1MASTER","B1_DESC" ,"PRODUTO TESTE 00") oModel:SetValue("SB1MASTER","B1_TIPO" ,"PA") oModel:SetValue("SB1MASTER","B1_UM" ,"UN") oModel:SetValue("SB1MASTER","B1_LOCPAD" ,"01") oModel:SetValue("SB1MASTER","B1_LOCALIZ" ,"N") If oModel:VldData() oModel:CommitData() MsgInfo("Registro INCLUIDO!", "Atenção") Else VarInfo("",oModel:GetErrorMessage()) EndIf oModel:DeActivate() oModel:Destroy() oModel := NIL Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE INCLUSÃO MODELO 1 (Utilizando a função FwMvcRotAuto apenas em caráter didático) */ //------------------------------------------------------------------------ User Function m010Inc1Ra() Local aDadoscab := {} Local aDadosIte := {} Local aItens := {} Private oModel := Nil Private lMsErroAuto := .F. Private aRotina := {} PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" oModel := FwLoadModel ("MATA010") //Adicionando os dados do ExecAuto cab aAdd(aDadoscab, {"B1_COD" ,"RASB101" , 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}) //Chamando a inclusão - Modelo 1 lMsErroAuto := .F. FWMVCRotAuto( oModel,"SB1",MODEL_OPERATION_INSERT,{{"SB1MASTER", aDadoscab}}) //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 Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE INCLUSÃO MODELO 2 (Utilizando a função FwMvcRotAuto apenas em caráter didático) */ //------------------------------------------------------------------------ User Function m010Inc2Ra() Local aDadoscab := {} Local aDadosIte := {} Local aItens := {} Private oModel := Nil Private lMsErroAuto := .F. Private aRotina := {} PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" oModel := FwLoadModel ("MATA010") //Adicionando os dados do ExecAuto cab aAdd(aDadoscab, {"B1_COD" ,"RASB102" , 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 //Produtos alternativos (já deve existir na base) If "SGI" $ SuperGetMv("MV_CADPROD",,"|SA5|SBZ|SB5|DH5|SGI|") aAdd(aDadosIte, {"GI_PRODALT" , "RASB101" , Nil}) aAdd(aDadosIte, {"GI_ORDEM" , "1" , Nil}) //no item o array precisa de um nivel superior. aAdd(aItens,aDadosIte) EndIf //Chamando a inclusão - Modelo 2 lMsErroAuto := .F. FWMVCRotAuto( oModel,"SB1",MODEL_OPERATION_INSERT,{{"SB1MASTER", aDadoscab},{"SGIDETAIL", 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 Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE ALTERAÇÃO */ //------------------------------------------------------------------------ User Function m010AltRa() Local oModel := Nil Private lMsErroAuto := .F. PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" //Posiciona SB1->(DbSetOrder(1)) If SB1->(DbSeek(xFilial("SB1") + "RASB101")) oModel := FwLoadModel ("MATA010") oModel:SetOperation(MODEL_OPERATION_UPDATE) oModel:Activate() oModel:SetValue("SB1MASTER","B1_DESC","PRODUTO ALTERADO") 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 Return Nil //------------------------------------------------------------------------ /* EXEMPLO DE EXCLUSÃO */ //------------------------------------------------------------------------ User Function m010ExcRa() Local oModel := Nil Private aRotina := {} PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" //Posiciona SB1->(DbSetOrder(1)) If SB1->(DbSeek(xFilial("SB1") + "RASB101")) oModel := FwLoadModel ("MATA010") 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 Return Nil |
Através da janela principal é possivel consultar os saldos em estoque dos produtos cadastrados. Basta posicionar no produto desejado e pressionar a tecla [F4] para realizar a consulta Saldos em Estoque.
As opções das operações do menu podem ser diferentes se acessados pelo modulo CRM ou com o parâmetro de sistema MV_QALOGIX igual a 1. |
Na página principal da rotina, estão disponíveis as opções:
|
|
Nome | Propósito | Link da documentação |
MV_HISTTAB | Descrição: Histórico de alterações do Cadastro de Produtos | DT MV_HISTTAB |
MV_A010FAC | Informa os campos da tabela SB1 que não são considerados no padrão. | DT MV_A010FAC |
MV_MASCGRD | Indica a máscara da grade. O primeiro item indica o tamanho do Código Fixo do Produto. O segundo e terceiro parâmetros indicam o tamanho dos Códigos Variáveis | DT MV_MASCGRD |
MV_VEICULO | Se existe o módulo de veículos integrado | DT MV_VEICULO |
MV_LJGRINT | Define se está ativa a integração Protheus | DT MV_LJGRINT |
MV_DCLNEW | Utiliza funcionalidade que utiliza no produto padrão as funcionalidades do antigo Template de DCL | DT MV_DCLNEW |
MV_PIMSINT | Habilita integração Protheus x PimsGraos | DT MV_PIMSINT |
MV_GRADE | T = Utiliza Grade / F = Nao Utiliza Grade Caso usuario ative grade incluir tabelas 18 e 19 | DT MV_GRADE |
MV_DAMARCT | Desconsidera checagem da amarracao contabil na inclusao de documento de entrada. .T. = Desconsidera | DT MV_DAMARCT |
MV_EIC0011 | Define se a N.V.A.E será utilizada na fase de PLI e cadastro de produto. Se habilita a opção "Classificação N.V.E." no menu de Produtos | DT MV_EIC0011 |
MV_INTSFC | Indica se há integração entre os módulos de Planejamento e Controle de Produção (PCP) e Chão de Fábrica (SFC). | DT MV_INTSFC |
MV_INTDPR | Define se existe integracao entre o Modulo SIGADPR e outros modulos (0=Não integra; 1=Protheus; 2=Datasul) | DT MV_INTDPR |
MV_CQ | Local (Armazém) do Controle de Qualidade. | DT MV_CQ |
MV_ACDVLBA | Valida se será apresentado mensagem de validação do digito verificador do código de barras. | DT MV_ACDVLBA |
MV_INTPMS | Habilita integração de Gestão de Projetos para outros módulos do Protheus. | DT MV_INTPMS |
MV_RMCOLIG | Código da Coligada do TOP | DT MV_RMCOLIG |
MV_INTACD | Integra ACD 0-Nao 1-SIM | DT MV_INTACD |
MV_LJECOMM | Identifica que o sistema utiliza eCommerce. .T. (Ativo) .F. (Desativado) | DT MV_LJECOMM |
MV_CADPROD | Determina os cadastros complementares que serão apresentados no cadastro de produto | DT MV_CADPROD |
MV_MVCMTHR | Indica se a verificação de relacionamentos do SX9 será efetuada em multithread durante a exclusão de dados via MVC. |
Nome | Propósito | Equivalente em MVC | Link da documentação |
---|---|---|---|
A010BPE | Utilizado para tratamentos de validações de conteúdo de caracteres especiais no código do produto ou descrição, ou validações especificas. | Não alterado | |
A010TOK | Validação para inclusão ou alteração do Produto | FORMPRE | |
M010B5CP | Permite limpar o conteúdo dos campos de complemento de produto | MODELPRE | PE M010B5CP Ponto de entrada para manipulação dos campos de Complementos de Produtos(SB5) |
M010FILB | Permitir que o usuário filtre os dados a serem exibidos | Não alterado | |
MA010BUT | Inclusão de botões do usuário na barra de ferramentas do cadastro de Produtos. | BUTTONBAR | PE MA010BUT Inclusão de Botões de usuário no Cadastro de Produtos |
MA010FIL | Adiciona filtro para o registro do cadastro de produtos | Não alterado | PE MA010FIL Adiciona filtro para o registro do cadastro de produtos |
MT010ALT | Grava/altera Campos de usuário | MODELCOMMITTTS | |
MT010BRW | Adiciona mais opções de menu na Mbrowse | Não alterado | |
MT010CAN | Executa customizações conforme retorno | MODELCOMMITNTTS | |
MT010COR | Ponto de entrada que adiciona legenda de cores na tela de Cadastro de Produtos | Não alterado | |
MT010EXC | Validação de usuário após a validação de exclusão do cadastro de produtos antes da exclusão efetiva | FORMCOMMITTTSPRE | MT010EXC - Validação de Usuário Após Exclusão do Cadastro de Produtos |
MT010GETD | Adiciona Novos Campos na Getdados | Não alterado | MT010GETD - Adiciona Novos Campos na Getdados |
MT010INC | Grava arquivos e campos de usuário | MODELCOMMITTTS | |
MT010LIN | Efetua validações complementares por linha do registro inserido | FORMLINEPOS | MT010LIN - Efetua validações complementares por linha do registro inserido |
MT010MEM | Permite ao usuário que monte um vetor contendo a relação dos campos virtuais do tipo MEMO criados. | MODELPRE | |
MT010SIZ | Utilizado para ajustar o percentual de tamanho do cabeçalho e GetDados na tela de produtos alternativos. | Não alterado | MT010SIZ - Ajuste no tamanho do Cabeçalho e Itens do cadastro de produtos alternativos. |
MT010VCP | Visualização do cadastro de produtos | MODELPRE | |
MT010VLD | Verifica se a cópia do produto está apta para utilização. | MODELPRE | PE MT010VLD Verifica se a copia do produto está apta para utilização |
MTA010E | Ponto de Entrada para complementar a exclusão no cadastro do Produto. | MODELCOMMITTTS | MTA010E - Grava arquivos campos do usuário, após exclusão do produto |
MTA010MNU | Ponto de entrada utilizado para inserir novas opções no array aRotina | Não alterado | |
MTA010NC | Relaciona campos que não devem ser copiados na inclusão | MODELPRE | PE MTA010NC Relaciona campos que não devem ser copiados na inclusão |
MTA010OK | Valida adicionais para a exclusão do produto | FORMCOMMITTTSPRE | MTA010OK - Valida adicionais para a exclusão do produto |
MT010JIN | Inclusão de campos customizados ou padrões na mensagem única de produtos | Não alterado | MT010JIN - Inclusão de campos customizados ou padrões na mensagem única de produtos em estrutura JSON |
Saiba mais: Pontos de Entrada para fontes Advpl desenvolvidos utilizando o conceito MVC
Exemplo de manipulação do modelo de dados em MVC quando é necessário tratar algum submodelo como a tabela SA5 (Amarração Produto x Fornecedor):
#include "protheus.ch" #include "parmtype.ch" User Function ITEM() Local aParam := PARAMIXB Local xRet := .T. Local oObj := "" Local aCampos := {} If aParam <> NIL //Entro na etapa de ativação do modelo If aParam[2] == "MODELVLDACTIVE" oObj := aParam[1] // atribuo o objeto principal //pego os campos do submodelo que não devem ser copiados por padrão aCampos := oObj:getModel('MdGridSA5'):GetFldNoCopy() //adiciono os campos que não quero que sejam copiados aadd(aCampos,'A5_CODPRF') aadd(aCampos,'A5_NOTA') //Faço a inserção dos campos que não serão copiados no submodelo oObj:getModel('MdGridSA5'):SetFldNoCopy(aCampos) endIf EndIf Return xRet |
Para maiores detalhes da utilização desse ponto de entrada: PE MVC MATA010
Para localizar os nomes dos modelos : Fontes em MVC
O recurso Adapter EAI permite estabelecer integrações entre o Microsiga e outro ERP. Utilizando esse recurso, o Administrador do Sistema passa a definir quais rotinas devem ser integradas, marcando condições de Envio e Recebimento de procedimentos e transações a serem efetuadas entre os dois Sistemas relacionados, e orientando os métodos a serem aplicados.
Para que seja possivel utilizar em Produto, deve ser considerada as informações:
Saiba mais em: A camada do EAI
O recurso MILE está disponível para rotina de Cadastro de Produtos para o seguinte evento:
Obs.: Rotina não é compatível com o processo de Alteração.
Saiba mais: MILE - Model Integrator Layout Engine
O recurso do m-messenger esta disponível para rotina de produtos o seguinte evento:
Saiba mais: M-Messenger - MATA045
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |