Fórum Trigger atualizar estoque #507915
20/01/2015
0
Boa noite pessoal.
Preciso de uma grande ajuda de vocês.
Estou a migrar o BD de uma aplicaçãoque usava base em ACCESS para Firebird.
Estou tentando elaborar uma trigger que volte ao estoque quando a venda for cancelada da tabela VENDA_ATUAL.
Ou seja quando eu fizer um procedimento para apagar todos os dados da tabela VENDA_ATUAL, a qtde dos produtos volte para a Tabela ESTOQUE
Fiz essa Trigger mas não funciona.
delimiter $$
CREATE TRIGGER `Atualiza_Estoque_Devolucao` BEFORE DELETE ON `VENDA_ATUAL`
FOR EACH ROW
begin
update produtos
set estoque = estoque + old.quantidade
where codprod = old.codprod;
end $$
delimiter ;
Já busquei aqui no Forum e vi que tem outra pessoa com a mesma dúvida, mas parece que não conseguiu resolver
Podem me ajudar ?
Obrigado
Preciso de uma grande ajuda de vocês.
Estou a migrar o BD de uma aplicaçãoque usava base em ACCESS para Firebird.
Estou tentando elaborar uma trigger que volte ao estoque quando a venda for cancelada da tabela VENDA_ATUAL.
Ou seja quando eu fizer um procedimento para apagar todos os dados da tabela VENDA_ATUAL, a qtde dos produtos volte para a Tabela ESTOQUE
Fiz essa Trigger mas não funciona.
delimiter $$
CREATE TRIGGER `Atualiza_Estoque_Devolucao` BEFORE DELETE ON `VENDA_ATUAL`
FOR EACH ROW
begin
update produtos
set estoque = estoque + old.quantidade
where codprod = old.codprod;
end $$
delimiter ;
Já busquei aqui no Forum e vi que tem outra pessoa com a mesma dúvida, mas parece que não conseguiu resolver
Podem me ajudar ?
Obrigado
Vagner Brentan
Curtir tópico
+ 0
Responder
Posts
22/01/2015
Francisco Costa
eu uso uma procedure para cancelamentos.
CREATE OR ALTER PROCEDURE ESTORNAR_ESTOQUE (
numerovenda integer)
as
declare variable pro_codigo varchar(14);
declare variable tipo varchar(1);
declare variable qtde numeric(15,2);
begin
for
select
ivd.pro_codigo,
ivd.ivd_operacao,
ivd.ivd_qtde
from
itensven ivd
where
ivd.ven_numero=:numerovenda
into
:pro_codigo,
:tipo,
:qtde
do
begin
update
estoque est
set
est.est_atual =
(case
when (:tipo in ('V','P')) then
coalesce(est.est_atual + :qtde,0)
when ((:tipo='T') or
(:tipo='D')) then
coalesce(est.est_atual - :qtde,0)
else
0
end)
where
est.pro_codigo=:pro_codigo ;
end
suspend;
end
CREATE OR ALTER PROCEDURE ESTORNAR_ESTOQUE (
numerovenda integer)
as
declare variable pro_codigo varchar(14);
declare variable tipo varchar(1);
declare variable qtde numeric(15,2);
begin
for
select
ivd.pro_codigo,
ivd.ivd_operacao,
ivd.ivd_qtde
from
itensven ivd
where
ivd.ven_numero=:numerovenda
into
:pro_codigo,
:tipo,
:qtde
do
begin
update
estoque est
set
est.est_atual =
(case
when (:tipo in ('V','P')) then
coalesce(est.est_atual + :qtde,0)
when ((:tipo='T') or
(:tipo='D')) then
coalesce(est.est_atual - :qtde,0)
else
0
end)
where
est.pro_codigo=:pro_codigo ;
end
suspend;
end
Responder
Gostei + 0
22/01/2015
Vagner Brentan
Obrigado Francisco Nilson.
Vou tentar implementar aqui e depois posto o resultado.
Grato pela sua ajuda, abraços.
Vou tentar implementar aqui e depois posto o resultado.
Grato pela sua ajuda, abraços.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)