16535 - Geração de movimento de acerto automatico
Problema: Esta sendo geramos movimentos de acertos automáticos pelo sistema, precisamos saber porque são gerados
Solução: Solução 16535: Este movimento de acerto é um procedimento padrão, executado pelo fechamento dos estoques, com o objetivo de gerar um valor (entrada/saída) para tentar corrigir situações em que o preço médio tende a ficar desproporcional aos valores dos movimentos. Estas situações ocorrem em virtude da existência de movimentos de estoque feitos pelos usuários que deixaram os valores e/ou quantidade por filial negativos. Lembrando que: estas situações tendem a ser esporádicas e que não devem ser vistas como movimentos normais do sistema. Se o fechamento gerou estes movimentos é porque existe algum problema nas movimentações de estoque.
Como o sistema percebe que o acerto precisa ser gerado?
O processo é iniciado quando o movimento anterior ao movimento que está sendo processado no momento, deixou a quantidade menor que zero ou o valor de estoque menor ou igual a zero. Portanto é sempre analisado o saldo do movimento anterior. Ao perceber que o saldo ficou negativo e que o identificador EST-215NAOAC01 não está ativo o processo começa.
-> novo_preço_médio: valor do movimento / quantidade (se a quantidade for superior a zero)
-> se for um movimento de entrada o valor do acerto será calculado:
novo_valor := ((valor anterior(negativo) + valor do movimento) - (novo_preço_médio * (quantidade anterior + quantidade do movimento)));
-> se for um movimento de saída o valor do acerto será calculado:
novo_valor := ((valor anterior(negativo) - valor do movimento) - (novo_preço_médio * (quantidade anterior - quantidade do movimento)));
Se este cálculo retornar algum valor diferente de zero e o movimento atual tiver quantidade, o acerto será feito da seguinte forma:
-> se o novo valor for negativo, será gerado uma entrada, caso contrário será feito uma saída.
-> a data do movimento será a do movimento atual, mas com hora -1, para que fique ordenado na frente do movimento atual
-> o movimento é gravado e uma observação é inserida
É desta forma que o sistema percebe e gera um movimento de acerto de valor.
O que pode distorcer este valor ?
-> diferença muito grande entre o valor do movimento e a quantidade. Ex: 4331,25 / 20 = 216,5625 (preço médio muito elevado)
-> quantidade da filial positiva e valor de estoque negativo
-> valor da filial positivo e quantidade em estoque negativo
-> preço médio anterior muito baixo. Ex: 0,016251
-> estouro de valores em casas decimais em cálculos muito elevados
Solução: Solução 16535: Este movimento de acerto é um procedimento padrão, executado pelo fechamento dos estoques, com o objetivo de gerar um valor (entrada/saída) para tentar corrigir situações em que o preço médio tende a ficar desproporcional aos valores dos movimentos. Estas situações ocorrem em virtude da existência de movimentos de estoque feitos pelos usuários que deixaram os valores e/ou quantidade por filial negativos. Lembrando que: estas situações tendem a ser esporádicas e que não devem ser vistas como movimentos normais do sistema. Se o fechamento gerou estes movimentos é porque existe algum problema nas movimentações de estoque.
Como o sistema percebe que o acerto precisa ser gerado?
O processo é iniciado quando o movimento anterior ao movimento que está sendo processado no momento, deixou a quantidade menor que zero ou o valor de estoque menor ou igual a zero. Portanto é sempre analisado o saldo do movimento anterior. Ao perceber que o saldo ficou negativo e que o identificador EST-215NAOAC01 não está ativo o processo começa.
-> novo_preço_médio: valor do movimento / quantidade (se a quantidade for superior a zero)
-> se for um movimento de entrada o valor do acerto será calculado:
novo_valor := ((valor anterior(negativo) + valor do movimento) - (novo_preço_médio * (quantidade anterior + quantidade do movimento)));
-> se for um movimento de saída o valor do acerto será calculado:
novo_valor := ((valor anterior(negativo) - valor do movimento) - (novo_preço_médio * (quantidade anterior - quantidade do movimento)));
Se este cálculo retornar algum valor diferente de zero e o movimento atual tiver quantidade, o acerto será feito da seguinte forma:
-> se o novo valor for negativo, será gerado uma entrada, caso contrário será feito uma saída.
-> a data do movimento será a do movimento atual, mas com hora -1, para que fique ordenado na frente do movimento atual
-> o movimento é gravado e uma observação é inserida
É desta forma que o sistema percebe e gera um movimento de acerto de valor.
O que pode distorcer este valor ?
-> diferença muito grande entre o valor do movimento e a quantidade. Ex: 4331,25 / 20 = 216,5625 (preço médio muito elevado)
-> quantidade da filial positiva e valor de estoque negativo
-> valor da filial positivo e quantidade em estoque negativo
-> preço médio anterior muito baixo. Ex: 0,016251
-> estouro de valores em casas decimais em cálculos muito elevados