Tempo aproximado para leitura: 06:00 min
Ocorrência
Ao tentar incluir ou copiar um produto na rotina Cadastro de Produtos (MATA010), a rotina apresenta extrema lentidão para abrir a tela de inclusão, ou trava e não abre a mesma.
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - Estoque/Custos - Todas as versões.
Causa
A rotina MATA010 foi concebida para ser digitada a numeração (B1_COD) manualmente. No momento de gravação há uma validação que verifica a possível existência de cadastro já gravado com a mesma numeração, exibindo então o help "Código" ao usuário (caso exista) e solicitando a troca da numeração, de modo a evitar duplicidade.
O cadastro de produto (MATA010), de forma nativa, não possui controle de numeração.
Por que hoje o código de produto não tem controle de numeração de maneira nativa?
É fundamental destacar que não há exigência de controle automático de numeração para o código de produto. Isso se deve, em grande medida, às diversas regras de negócios adotadas por cada cliente, o que possibilita o tratamento genérico do código.
A título de exemplo:
- É possível ter produtos que comecem com a letra "M" - MaterialA001 e outros com a letra "P" - PA001;
- Ou ainda, que seja configurado com base no grupo de produtos acrescido do código desejado, como por exemplo: Grupo 001, então o código será 001MaterialA001
- Como também, produtos do tipo MO (mão de obra), que tem como regra estabelecida, para o cadastro no B1_COD, que caso inicie com a sigla MOD é obrigatório relacionar ao centro de custo.
Detalhes na Doc referencia: SIGAEST - Processo de configuração de MOD e GGF com e sem integração contábil
Com isso, inserir um sequencial automático de numeração não seria viável, podendo ocorrer falhas ainda não mapeadas, dada a extensiva variedade de regras possíveis.
Portanto, atualmente, o campo não trata nativamente o controle de numeração.
RECOMENDAÇÃO para implementar um controle de numeração personalizado:
A decisão de personalizar um controle automático de numeração, utilizando das recomendações apresentadas a seguir, fica a critério do cliente.
Caso haja de fato interesse em implementar uma personalização para o controle automático de numeração, deve ser estudado a fundo e bem elaborado o código personalizado, contemplando os diferentes cenários de uso. Por exemplo, a reserva simultânea de numeração no License Server, por usuários distintos. O uso por múltiplos usuários ocasiona a concorrência entre obter uma numeração e gravação. Para que dois usuários não locken a mesma numeração a personalização deve prever e tratar a recuperação de um novo número. Assim como também, no caso de um cadastro ser cancelado sem efetivar a gravação, a personalização deveria tratar liberando a numeração lockada. Dentre outros cenários, como por exemplo existência de lacunas nas numerações já gravadas no banco.
Por isso é altamente recomendável a consulta a um especialista Protheus, a fim de garantir a conformidade com as diretrizes estabelecidas para o controle automático, uma vez que a rotina não é nativamente preparada para tal, visando minimizar problema de performance, erros por duplicidades, travamento e consequentes manutenções no controle de numeração.
Ciente dos possíveis impactos que podem ocasionar, caso opte por acionar um especialista para de fato elaborar a personalização, por ser essencial à sua regra de negócio, é importante considerar algumas recomendações:
- Sugerimos que sejam utilizadas as funções NEXTNUMERO ou SOMA1.
Com isso é necessário o desenvolvimento de uma UserFunction (linkados exemplos em cada função) considerando os diferentes cenários, como explicado acima, evitando falhas.
Principais falhas mapeadas com a utilização do controle de numeração personalizado no B1_COD através do dicionário X3_VLDUSER ou X3_RELACAO
Há clientes que optam por personalizar o controle de numeração de forma simplista, diretamente no Dicionário de dados (X3_VLDUSER ou X3_RELACAO), ao invés de através da chamada de uma UserFunction, não se atentando a todos os critérios e cenários de lock da numeração no License Server.
Exemplo, utilizando-se da função GETSXENUM no Inicializador padrão
Porém, essa função trabalha em conjunto com as funções padrões ConfirmSX8 e RollBackSX8 de modo que pode ocasionar falhas, uma vez que a rotina padrão não trata esse conceito de numeração sequencial, conforme explicado em detalhes acima. Algumas ocorrências mapeadas:
- Lentidão na inclusão do cadastro;
- Travamento na própria utilização do cadastro de produto, uma vez que a numeração se perde no License Server;
- Perda de referência do código sequencial utilizado (gerando a necessidade de efetuar manutenções frequentes no controle de numeração);
- Problemas de sequencial já gravados nativamente;
- Em cenários em que mais de um usuário pode cadastrar produtos, gerando assim reservas simultâneas de numeração, pode ocorrer da numeração de perder.
Por isso ressaltamos mais uma vez que, havendo o interesse em automatizar o controle de numeração sequencial, é muito importante que a personalização seja bem elaborada por um especialista, evitando estas, dentre outras falhas não mapeadas.
Como sanar problemas relacionados a utilização do controle de numeração personalizado:
Devido a impactos possivelmente ocasionados com a utilização das funções GETSXENUM ou GETSX8NUM, por vezes é necessário ajustar a numeração através da rotina de Controle de Numeração APCFG110 pelo módulo Configurador - SIGACFG, onde podem haver dois cenários:
Primeiro cenário: ao localizar na chave Alias SB1, o número que consta na seção "Números em uso" é um número que já possui cadastrado na SB1 de seu ambiente.
Seria necessário informar manualmente o número correto na aba "Números em uso" e sua sequência na aba "Próximos Números".
Exemplo:
Número em uso/liberado já cadastrado na SB1:
Segundo cenário: ao localizar linhas duplicadas para a mesma chave - Alias SB1 - (com numerações diferentes ou iguais), tanto na aba "Próximos Números" quanto na aba "Números em uso":
Veja também um How To orientando no ajuste de controle de numeração: https://youtu.be/BhEo-9FFUIQ?si=hFMX9f6ACiSOWFKF
IMPORTANTE: Suporte e Manutenção
Problemas ocasionados pelo uso de controle automático de numeração personalizado para o Cadastro de Produtos no campo B1_COD não recebem atendimento de Suporte / Manutenção uma vez que não se tratam de soluções padrões nativas (conforme conceito explicado acima). Independente de quais funções foram utilizadas (GETSXENUM/ GETSX8NUM/ NEXTNUMERO/ SOMA1/ etc).
É necessário acionar um consultor Protheus programador para mapear os impactos, conforme sua regra de uso, e personalizar o controle de numeração atendendo à todos os critérios e boas práticas.
Caso não disponha de analista programador em seu dpto de TI, para realizar a análise e elaboração da personalização, deixamos sugestão da área HUB Plataformas (hub.plataformas@totvs.com.br), a qual dispõe de consultores TOTVS, e pode ser acionada para obtenção de orçamento. Além também de poder acionar seu ESN solicitando orçamento para alocação de um recurso.
Caso possua dúvidas/inconsistências pontuais sobre a proposta oficial de Funções ADVPL liberadas pra uso, você também pode entrar em contato com nossa equipe de Suporte ADVPL.
Conheça também a plataforma colaborativa DEVFORUM da TOTVS para trocar recomendações entre programadores Protheus.
Para mais informações: Ajuste de Numeração automática dos Formulários (Tabelas / ALIAS) no Protheus
Saiba mais:
Como realizar o ajuste no controle de numeração
Clique aqui e veja mais artigos sobre Cadastros e Configurações Gerais no Estoque
0 Comentários