Escolar Documentos
Profissional Documentos
Cultura Documentos
Algumas empresas que possuem várias filias no sistema e têm dificuldade de utilizar a tabela de produtos compartilhada
entre elas, pois determinadas informações são específicas de cada filial, não sendo funcional compartilhar todo o arquivo.
Para atender essas empresas, na versão Protheus 8 – Release 2, foi disponibilizada a rotina “Indicadores de Produtos”
(MATA018.PRX), a qual permite que alguns dos campos relacionados ao produto, chamados de “indicadores de produto”,
sejam separados por filial utilizando uma tabela independente da tabela padrão “SB1 - Produtos”, trata-se da tabela “SBZ –
Indicadores de Produtos”. Desta forma, é possível utilizar o cadastro de produtos como compartilhado e possuir uma tabela
de indicadores de produto exclusiva por filial.
No cadastro indicadores de produtos, foram criados alguns campos comuns ao cadastro de produtos, permitindo que sejam
diferenciados entre as filias da empresa. Assim, ao informar um determinado produto em uma rotina que utilize os
indicadores de produtos, o sistema verifica a sua existência na tabela “SBZ - Indicadores de Produtos” para selecionar os
dados relacionados a ele. Caso não exista, são utilizados os dados informados no cadastro de produtos.
Procedimentos de Implementação
Prefixo SBZ
Descrição Indicadores de Produtos
Modo de Acesso Exclusivo
Cons.
Campo Tipo Tam. Dec. Formato Título Descrição Val. Usuário
Padrão
BZ_FILIAL C 02 Filial Filial do sistema
Existcpo("SB1") .And.
BZ_COD C 15 @! Código Código do Produto SB1 Existchav("SBZ") .And.
FreeForUse("SBZ")
Armazém Padrão
BZ_LOCPAD C 02 @! Armazém Pad.
p/Requis.
BZ_TE C 03 @9 TE Padrão Código de Entrada SF4 Vazio( ) .Or. Existcpo("SF4")
3. Após o cadastramento dos campos, crie também o índice da tabela “SBZ” com as instruções a seguir:
Chave BZ_FILIAL+BZ_COD
Nickname SBZ
Descrição FILIAL+CODIGO
4. Grave os dados da nova tabela, sem que nenhum usuário esteja utilizando o sistema no momento da gravação dos
arquivos SXs.
5. No ambiente Configurador, opção “Ambiente/Cadastros/Menus”, inclua nos menus dos ambientes Estoque/Custos,
Faturamento, PCP e Compras, a opção “Indicadores de Produtos” (menu “Cadastros”), programa “MATA018 “.
Menu Atualizações
Submenu Cadastros
Opção Indicadores Produtos
Programa MATA018
Tabela SBZ
A seguir será apresentado um modelo de utilização desse conceito com telas de exemplo na versão Protheus 8.11.
Exemplo de utilização:
Este exemplo demonstra como cadastrar um novo produto e associar informações utilizando o conceito de “Indicadores de
Produtos por Filial”.
Neste exemplo, serão atualizadas duas filiais, sendo: a filial 01 em Curitiba e a filial 02 em São Paulo. Antes de iniciar, deve-
se configurar o parâmetro “MV_ARQPROD”, para utilizar o novo conceito de indicadores de produtos, com o conteúdo
“SBZ”.
Os campos referentes às informações de indicadores de produtos não precisam ser preenchidos. Observe:
5. No ambiente Estoque/Custos, utilizando a Filial 02 – São Paulo – selecione a opção “Atualizações/ Cadastros/
Indicador de Produtos”, cadastre outro indicador de produto para o produto MP1 / Filial 02, conforme instruções a
seguir:
Já para a tabela “SBZ”, serão gravados dois registros para o produto “MP1”. O primeiro com os dados exclusivos da
filial 01 – Curitiba – e o segundo, com os dados exclusivos da filial 02 – São Paulo.
Portanto, ao executar qualquer rotina que atualize ou consulte os campos do cadastro de indicadores de produtos, serão
selecionadas as informações da tabela “SBZ”. Exemplos: a rotina “Acerto do Custo de Entrada” (“MATA190”) ou a
rotina “Custo de Reposição” (“MATA320”), irão atualizar os valores dos campos da tabela “SBZ” de acordo com a filial
corrente e não irão mais atualizar o campos relacionados no arquivo SB1.
1. RetFldProd(cCodPro,cCampo,cAliasTop)
Exemplo de utilização:
2. RetArqProd(cCodPro)
Retorna a informação se deve gravar os dados referentes aos indicadores de produto na tabela “SB1” ou na tabela
“SBZ” conforme configuração do parâmetro “MV_ARQPROD“ informado no ambiente Configurador.
Exemplo de utilização:
dbSelectArea(“SB1”)
dbSetOrder(1)
If dbSeek(xFilial()+cCodProd)
If RetArqProd(cCodProd)
Aviso(“Tabela SB1”,”A função verificou que será posicionado na tabela
SB1”,{'Ok'})
RecLock("SB1",.F.)
Replace B1_LOCPAD with cLocPad
Replace B1_LE with nLE
MsUnlock()
Else
Aviso(“Tabela SBZ”,”A função verificou que será posicionado na tabela SBZ”,{'Ok'})
RecLock("SBZ",.F.)
Replace BZ_LOCPAD with cLocPad
Replace BZ_LE with nLE
MsUnlock()
EndIf
EndIf
RestArea(aArea)
Return
Importante
No exemplo acima, verifique que a função está selecionando a tabela “SB1” com o comando “dbSelectArea”. Porém, ao
gravar os campos _LOCPAD (“Local Padrão”) e _LE (“Lote Economico”), é necessário utilizar a nova função
“RetArqProd( )” para verificar em qual tabela deve-se gravar o conteúdo das variáveis.
A nova função “RetArqProd( )” verifica em qual tabela deve-se gravar os conteúdos das variáveis através do parâmetro
“MV_ARQPROD”. Quando este estiver preenchido com “SBZ”, a própria função RetArqProd( ) se encarrega de
localizar o produto na tabela SBZ e posicionar no registro correto.