alter session set "_ORACLE_SCRIPT"=true;
set serveroutput on;

CREATE TABLE PEDIDOS_COPIA AS (SELECT * FROM PEDIDOS);

DROP TRIGGER PEDIDO_LLEGA_TARDE;

CREATE OR REPLACE TRIGGER PEDIDO_LLEGA_TARDE
    --AFTER
    BEFORE
    INSERT OR UPDATE OF FECHAESPERADA OR UPDATE OF FECHAENTREGA
    ON PEDIDOS_COPIA
    FOR EACH ROW
BEGIN
    IF :NEW.FECHAESPERADA < :NEW.FECHAENTREGA
    THEN
        :NEW.COMENTARIOS := 'Pedido con retraso';
        --UPDATE PEDIDOS_COPIA SET COMENTARIOS='Pedido con retraso' WHERE CODIGOPEDIDO=:NEW.CODIGOPEDIDO;
    END IF;
END;
/

CREATE OR REPLACE TRIGGER PRODUCTO_SIN_STOCK
    BEFORE
    INSERT OR UPDATE OF CODIGOPRODUCTO OR UPDATE OF CANTIDAD
    ON DETALLEPEDIDOS
    FOR EACH ROW
DECLARE
    STOCK PRODUCTOS.CANTIDADENSTOCK%type;
BEGIN
    SELECT CANTIDADENSTOCK INTO STOCK FROM PRODUCTOS WHERE CODIGOPRODUCTO=:NEW.CODIGOPRODUCTO;

    IF STOCK < :NEW.CANTIDAD
    THEN
        raise_application_error(-20669, 'Not enough of product in stock.');
    END IF;
END;
/