atualizar estoque apos exclusao de vendas
16/08/2012
0
CREATE TRIGGER `Atualiza_Estoque_Devolucao` AFTER DELETE ON `itens2`
FOR EACH ROW
update produtos p
set estoque = estoque + old.quantidade
where p.codprod = old.codprod;
aguardo retorno...
Jose Maria
Posts
16/08/2012
Romulo Contro
e um conselho: não deleta a venda do banco, coloca um campo APAGADO ou DELETADO, e marca ele como S ou N... pois se precisar mostrar um relatório depois, vc pode exibir pro cliente que houve compra, e que houve cancelamento... se ele tiver algum problema com estoque, ou mesmo até dinheiro em caixa algum dia, ele vai poder consultar as vendas que foram canceladas... aí na tabela de vendas vc lança um valor negativo lá... e no estoque subtrai a quantidade cancelada por dentro do delphi mesmo.
16/08/2012
Joel Rodrigues
17/08/2012
Jose Maria
resposta 1 -como fazer este cancelamento dentro da venda, pois se cancelar tem q voltar para o estoque...
resposta 2 -nao apresenta erro..mas nao devolve as qtd...
aguardo retorno..
17/08/2012
Romulo Contro
pois o que vc poderia fazer, é lançar mais um registro na tabela de vendas com quantidade negativa... assim ficaria um registro da venda, e outro registro do cancelamento... entende?
mas se tiver uma tabela diferente pra estoque, vc lê o estoque atual e depois faz a soma com a quantidade do cancelamento... tudo junto na rotina de cancelamento do seu programa...
exemplo:
estoque inicial 2
16/08 - venda de 1 ... estoque anterior 2 - 1 da venda ... estoque = 1
17/08 - cancelamento da venda (1) ... estoque 1 + 1 cancelamento da venda = estoque 2
daí vc teria uma tabela separada pra salvar o estoque... pode ser na de produtos mesmo...
ficaria mais ou menos isso...
aí se quiser colocar um campo na tabela de vendas, como CANCELADO = S/N... facilita depois pra vc emitir relatórios... por exemplo, se o cliente quiser tirar um relatório só de cancelamentos... ou só de vendas sem cancelamentos...
daí no cancelamento, vc da um update nesse registro da venda pra cancelado = S;
depois cria um novo registro negativo referente a essa venda cancelada;
depois vc faz a alteração do estoque.
17/08/2012
Romulo Contro
CREATE TRIGGER `Atualiza_Estoque_Devolucao` BEFORE DELETE ON `itens2`
FOR EACH ROW
begin
update produtos p
set estoque = estoque + old.quantidade
where p.codprod = old.codprod;
end
pq sei lá... AFTER delete... vai fazer DEPOIS que deletar... não tenho certeza, mas pode ser que por já ter deletado, ele nao ta passando nenhum valor na trigger... desse novo jeito ele vai atualizar o estoque ANTES de deletar... mas não sei, tenta fazer desse jeito aí e fala pra gente.
abraço!
17/08/2012
William
delimiter $$ CREATE TRIGGER `Atualiza_Estoque_Devolucao` AFTER DELETE ON `itens2` FOR EACH ROW begin update produtos set estoque = estoque + old.quantidade where codprod = old.codprod; end $$ delimiter ;
Fiz um teste ak e funcionou, MySQL 5.5.
20/08/2012
Jose Maria
20/08/2012
William
Existe o campo estoque na tabela PRODUTOS, e o tipo desse campos é int?
Existe o campo codprod na tabela PRODUTOS?
Existe o campos quantidade na tabela ITENS2 o tipo desse campos é int?
Existe o campo codprod na tabela ITENS2 ?
08/12/2019
Jefferson Quinelatto
e um conselho: não deleta a venda do banco, coloca um campo APAGADO ou DELETADO, e marca ele como S ou N... pois se precisar mostrar um relatório depois, vc pode exibir pro cliente que houve compra, e que houve cancelamento... se ele tiver algum problema com estoque, ou mesmo até dinheiro em caixa algum dia, ele vai poder consultar as vendas que foram canceladas... aí na tabela de vendas vc lança um valor negativo lá... e no estoque subtrai a quantidade cancelada por dentro do delphi mesmo.
Boa tarde, como ficaria direto no programa? Estou tentando fazer pela Trigger, porém não estou conseguindo passar a condição para verificar se a venda foi CANCELADA para retornar o Estoque... Se puder ajudar, agradeço!! (Obs: estou criando a Trigger em cima da tabela vendas_itens)...
09/12/2019
Emerson Nascimento
Sugiro a manter no banco.
Isso reduz muito a manutenção de código fonte e de paradas de sistema.
CREATE TRIGGER Atualiza_Estoque_Devolucao AFTER INSERT ON itens2 FOR EACH ROW BEGIN UPDATE Produtos SET Estoque = Estoque - OLD.Quantidade WHERE Referencia = OLD.Produto; END
09/12/2019
Emerson Nascimento
CREATE TRIGGER Atualiza_Estoque_Devolucao AFTER INSERT ON itens2 FOR EACH ROW BEGIN UPDATE Produtos SET Estoque = Estoque - OLD.Quantidade WHERE CodProd = OLD.CodProd; END
Clique aqui para fazer login e interagir na Comunidade :)