ERP – Controle de Estoque/Diferença Estoque – Qual o script para identificar diferença entre tabela de saldo de estoque (E210EST) e tabela de movimentação de estoque (E210MVP)
Dúvida
Qual o script para identificar diferença entre tabela de saldo de estoque (E210EST) e tabela de movimentação de estoque (E210MVP) no Processo de Controle de Estoque?
Solução
Atenção
- Recomenda-se cautela na utilização desse comando em bases de dados que tenham muitos movimentos registrados na tabela E210MVP, pois como ele só funciona sem ter uma Data Inicial, em bases que tenham muitos registros haverá perda de performance para execução do comando;
- A adição de mais filtros na execução do comando poderá comprometer a busca de informações e trará dados que não são os dados divergentes efetivamente.
Segue abaixo o script para identificar diferença entre tabela de saldo de estoque (E210EST) e tabela de movimentação de estoque (E210MVP):
Select que vai verificar todos os movimentos da tabela E210MVP de todos os depósitos
SELECT
A.*
FROM
E210EST A
WHERE
A.QTDEST <> ((
SELECT
SUM(B.QTDMOV) AS QTDENTRADA
FROM
E210MVP B
WHERE
B.CODEMP = X AND --aqui é definido o código da empresa
B.CODEMP = A.CODEMP AND
B.CODPRO = A.CODPRO AND
B.CODDER = A.CODDER AND
B.CODDEP = A.CODDEP AND
B.ESTMOV IN ('NO','NB','NR') AND
B.QTDMOV > 0 AND
B.ESTEOS = 'E') - (
SELECT
SUM(C.QTDMOV) AS QTDSAIDA
FROM
E210MVP C
WHERE
C.CODEMP = X AND --aqui é definido o código da empresa
C.CODEMP = A.CODEMP AND
C.CODPRO = A.CODPRO AND
C.CODDER = A.CODDER AND
C.CODDEP = A.CODDEP AND
C.ESTMOV IN ('NO','NB','NR') AND
C.QTDMOV > 0 AND
C.ESTEOS = 'S'))
Select que vai verificar todos os movimentos da tabela E210MVP de todos os depósitos, mas agrupando os movimentos por depósito
SELECT
A.CODDEP
FROM
E210EST A
WHERE
A.CODPRO = A.CODPRO AND
A.CODEMP = X AND --aqui é definido o código da empresa
A.QTDEST <> ((
SELECT
COALESCE(SUM(B.QTDMOV),0) AS QTDENTRADA
FROM
E210MVP B
WHERE
B.CODEMP = X AND --aqui é definido o código da empresa
B.CODEMP = A.CODEMP AND
B.CODPRO = A.CODPRO AND
B.CODDER = A.CODDER AND
B.CODDEP = A.CODDEP AND
B.ESTMOV IN ('NO', 'NB', 'NR') AND
B.QTDMOV > 0 AND
B.ESTEOS = 'E') - (
SELECT
COALESCE(SUM(C.QTDMOV),0) AS QTDSAIDA
FROM
E210MVP C
WHERE
C.CODEMP = X AND --aqui é definido o código da empresa
C.CODEMP = A.CODEMP AND
C.CODPRO = A.CODPRO AND
C.CODDER = A.CODDER AND
C.CODDEP = A.CODDEP AND
C.ESTMOV IN ('NO', 'NB', 'NR') AND
C.QTDMOV > 0 AND
C.ESTEOS = 'S')) GROUP BY A.CODDEP
Para mais informações sobre o Processo de Controle de Estoque do Gestão Empresarial | ERP, consulte o artigo ERP - Controle de Estoque - Onde é possível encontrar informações diversas sobre processo de Controle de Estoques.