SET TERM ^ ;

CREATE OR ALTER trigger ttbnfs_item_b09iu for tbnfs_item
active before insert or update position 8
AS
DECLARE VARIABLE VALOR_DESCONTO_PEDIDO NUMERIC(15,2);
DECLARE VARIABLE VALOR_DESCONTO_PC NUMERIC(15,2);
DECLARE VARIABLE QUANTIDADE_PEDIDO NUMERIC(15,5);
BEGIN
    IF(NEW.PEDIDO_ITEM_PE_CONTROLE > 0) THEN
    BEGIN
        SELECT FIRST 1
            CAST(T.VALOR_DESCONTO AS NUMERIC(15,2)),
            T.QUANTIDADE
        FROM TBPEDIDO_ITEM T
        WHERE T.PEDIDO = NEW.PEDIDO
        AND T.CONTROLE = NEW.PEDIDO_ITEM_PE_CONTROLE
        INTO :VALOR_DESCONTO_PEDIDO, :QUANTIDADE_PEDIDO;

        NEW.VALOR_DESCONTO_ORIGINAL = CAST((CAST(:VALOR_DESCONTO_PEDIDO AS DOUBLE PRECISION) / CAST(:QUANTIDADE_PEDIDO AS DOUBLE PRECISION)) * CAST(NEW.QUANTIDADE  AS DOUBLE PRECISION) AS NUMERIC(15,2));

    END ELSE
    BEGIN
        --SE NÃO BHOUVER PEDIDO PREENCHER COM O DESCONTO EXISTENTE NO ITEM
        NEW.VALOR_DESCONTO_ORIGINAL = NEW.VALOR_DESCONTO;
    END
END
^

SET TERM ; ^

