ERP – Cadastro Produtos/Serviços – A máscara de produto XXX configurada na família XX da empresa XX, está definida como auto-incremento, porém o código de produto XXX apresenta na posição definida pela máscara um valor (XX) incompatível com o próximo valo
Incidente
No módulo de Cadastros, ao tentar alterar o cadastro de um serviço é apresentada a mensagem abaixo:
A máscara de produto XXX configurada na família XX da empresa XX, está definida como auto-incremento, porém o código de produto XXX apresenta na posição definida pela máscara um valor (XX) incompatível com o próximo valor (XX) esperado.
Exemplo prático:
Ao tentar alterar um serviço com o código PROD0015 já cadastrado, onde a sua família possua uma máscara de produto/serviço do tipo incremento, e o campo E084MPR.UltCod está com o valor 0010.
Causa
Essa situação ocorre quando o serviço cadastrado está somente na tabela E080SER e não na E075PRO.
Observação
Todo cadastro de serviço tem um cadastro de produto equivalente - E075PRO = E080SER. Na verdade, o serviço é tecnicamente um tipo de produto - E012FAM.TipPro = S.
A mensagem em questão ocorre porque para o serviço editado não há um registro correspondente na tabela de produto. Isto não é uma situação normal. Trata-se de uma inconsistência.
Como não há um registro correspondente na E075PRO, o sistema tentar fazer um insert nesta tabela buscando o sufixo do código do serviço na máscara. Pela máscara, o próximo número é 0014, mas este número ainda não está gravado na E080SER, gerando a crítica.
Atenção
Segue comando para identificar registros nesta situação:
SELECT E080SER.CODSER FROM E080SER
WHERE CODSER NOT IN
(SELECT CODPRO FROM E075PRO WHERE
E080SER.CODEMP = E075PRO.CODEMP AND
E080SER.CODSER = E075PRO.CODPRO)
Observação
Se o serviço PROD0015 é o último gerado da sua família, o campo E084MPR.UltCod deveria ser 0010.
Solução
Para que a mensagem não seja apresentada, realize os passos a seguir:
1. Verifique se a máscara de produto é utilizada por uma única família;
2. Verifique qual é o último cadastro de serviço para essa família;
3. Utilize uma ferramenta de banco para fazer um comando semelhante ao comando abaixo:
SELECT * FROM E084MPR WHERE CODEMP = {CODEMP} AND CODMPR = {CODMPR}
CODMPR = Código da Máscara de Produto
4. Execute o comando update para realizar o ajuste do valor do campo E084MPR.UltCod;
UPDATE E084MPR SET ULTCOD = 0010 WHERE CODEMP = {CODEMP} AND CODMPR = {CODMPR}
Observação
Valide se há serviços cadastrados antes do serviço PROD0015 que estão na mesma situação. Se houver será necessário ajustar o campo UltCod para o primeiro serviço que estiver nessa situação.
Se não houver, basta fazer o ajuste somente para 0014 no campo E084MPR.UltCod, assim ao editar o serviço o sistema tentará fazer um INSERT na tabela E075PRO, pegando o último código gravado + 1.
5. Valide se a mensagem será apresentada novamente após o procedimento acima.
Importante
Neste caso, é primordial garantir que nenhum outro usuário edite estes registros inconsistentes ou inclua um novo serviço para a família que está ligada à máscara em questão.