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 AND COALESCE(NEW.VALOR_DESCONTO_ORIGINAL, 0) = 0) THEN
    BEGIN
        SELECT FIRST 1
            T.VALOR_DESCONTO,
            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;

        IF(NEW.QUANTIDADE <> :QUANTIDADE_PEDIDO) THEN
        BEGIN
            :VALOR_DESCONTO_PC          = :VALOR_DESCONTO_PEDIDO / :QUANTIDADE_PEDIDO;

            NEW.VALOR_DESCONTO_ORIGINAL =  FN_CALC_PRECISION_V2(:VALOR_DESCONTO_PC, NEW.QUANTIDADE, '*', 2);
        END ELSE
        BEGIN
            NEW.VALOR_DESCONTO_ORIGINAL = NEW.VALOR_DESCONTO;
        END



    END ELSE
    BEGIN
        IF((COALESCE(NEW.VALOR_DESCONTO_ORIGINAL, 0) = 0 AND NEW.PEDIDO_ITEM_PE_CONTROLE = 0) OR (NEW.PEDIDO_ITEM_PE_CONTROLE = 0 AND OLD.VALOR_DESCONTO <> NEW.VALOR_DESCONTO)) THEN
        BEGIN
            NEW.VALOR_DESCONTO_ORIGINAL = NEW.VALOR_DESCONTO;
        END


    END
END;