create or replace trigger actualizar_venta
after insert or update or delete on ventas
for each row
declare
-- local variables here
v_cantstock number(4);
v_umbral number(4);
v_provee varchar2(5);
v_cant_actualizar number(4);
begin
--inicializamos varibles
select stock,umbral,cod_proveedor into v_cantstock,v_umbral,v_provee
from productos
where cod_producto = :new.cod_producto;
--almacena la cantidad restante entre las unidades vendias y el stock
v_cant_actualizar:= v_cantstock - :new.uni_vendidas;
if inserting or updating then
case
when v_cant_actualizar < 0 then
raise_application_error (-20001,'Lo siento, pero no puedes vender tanto');
when v_cantstock < v_umbral then
dbms_output.put_line('Se realizara un pedido, ya que las existencias estan por debajo del umbral');
realizar_pedido(:new.cod_producto,((v_umbral*3)-v_cantstock),v_provee);
else
update productos
set stock=v_cant_actualizar
where cod_producto= :new.cod_producto;
end case;
end if;
end actualizar_venta;