BAIXA ESTOQUE COM PRODUCAO
Boa noite pessoal
Estou tentando mas ainda não encontrei algo aqui no fórum que se assemelhe à minha dor de cabeça aqui. Dêem uma olhada nas tabelas (imagem anexa)
Aqui eu pretendo em uma trigger na tabela produção2 seja dada baixa no estoque do material utilizado para o produto.
relacionamentos: MATERIAL.CODIGO -- INGR.COD_MATERIAL; MATERIAL.UND --UND.CODIGO; PRODUCAO2.COD_PRODUTO -- INGR.COD_PRODUTO
Para fazer isso seria o estoque do material - a quantidade produzida * quantidade de ingrediente / unidade base.
ainda teria mais um Ãtem nesse cálculo que seria o rendimento, mas se eu conseguisse resolver até aqui, não teria problema.
Estou tentando mas ainda não encontrei algo aqui no fórum que se assemelhe à minha dor de cabeça aqui. Dêem uma olhada nas tabelas (imagem anexa)
Aqui eu pretendo em uma trigger na tabela produção2 seja dada baixa no estoque do material utilizado para o produto.
relacionamentos: MATERIAL.CODIGO -- INGR.COD_MATERIAL; MATERIAL.UND --UND.CODIGO; PRODUCAO2.COD_PRODUTO -- INGR.COD_PRODUTO
Para fazer isso seria o estoque do material - a quantidade produzida * quantidade de ingrediente / unidade base.
ainda teria mais um Ãtem nesse cálculo que seria o rendimento, mas se eu conseguisse resolver até aqui, não teria problema.
boa tarde pessoal
até agora o mais próximo da soluçaõ que cheguei foi criar uma cópia da tabela mercadoria (fiz mas não gostei muito), coloquei o rendimento em uma variável e o seguinte:
agora o problema aqui é que quando insiro um registro na tabela producao2 dá erro de subqueries resutando mais de uma linha.
até agora o mais próximo da soluçaõ que cheguei foi criar uma cópia da tabela mercadoria (fiz mas não gostei muito), coloquei o rendimento em uma variável e o seguinte:
update material set material.estoque = (select material_copy.estoque - (new.qtde/@rendimento) * (ingr.qtde /und.base) from ingr left join material_copy on ingr.cod_material = material_copy.codigo left join und on material_copy.und = und.codigo where ingr.cod_produto = new.cod_produto);
agora o problema aqui é que quando insiro um registro na tabela producao2 dá erro de subqueries resutando mais de uma linha.
ok pessoal, eu agradeço a quem passou por aqui e deu uma olhada. Graças a Deus resolvi a questão.
esse é o código da trigger que vou usar pra que meu sistema de produção dê baixa no estoque de materia prima.
precisei usar mesmo uma cópia da tabela material, mas apenas os campos codigo, estoque, und. ao efetuar a produção, ele atualiza apenas os Ãtens dessa tabela material_copy que vou usar, então faz o cálculo e baixa da tabela material.
esse é o código da trigger que vou usar pra que meu sistema de produção dê baixa no estoque de materia prima.
precisei usar mesmo uma cópia da tabela material, mas apenas os campos codigo, estoque, und. ao efetuar a produção, ele atualiza apenas os Ãtens dessa tabela material_copy que vou usar, então faz o cálculo e baixa da tabela material.
begin
update material_copy set material_copy.estoque = (select material.estoque from ingr inner join material on ingr.cod_material = material.codigo where ingr.cod_produto = new.cod_produto and ingr.cod_material = material_copy.codigo);
select rendimento into @rendimento from produto where codigo = new.cod_produto;
update material set material.estoque = (select material_copy.estoque - new.qtde * ingr.qtde / @rendimento / und.base from ingr inner join material_copy on ingr.cod_material = material_copy.codigo left join und on material_copy.und = und.codigo where ingr.cod_produto = new.cod_produto and material.codigo = ingr.cod_material);
update produto set produto.QTDE = produto.QTDE + new.qtde where produto.CODIGO = new.cod_produto;
end
Tópico encerrado , respostas não são mais permitidas