SET TERM ^ ;

CREATE OR ALTER procedure SPUI_PRE_PEDIDO_ADIANT
as
declare variable AGRUPAMENTO_ID integer;
declare variable PRE_PEDIDO_ID integer;
declare variable VALOR numeric(15,2);
declare variable SALDO numeric(15,2);
declare variable VALOR_UTILIZADO_PRE numeric(15,2);
BEGIN

    FOR SELECT DISTINCT
        T.AGRUPAMENTO_ID,
        T.PRE_PEDIDO_ID,
        SUM(T.VALOR) AS VALOR,
        SUM(T.SALDO) AS SALDO
    FROM TBPDV_MOVIMENTO_ANTECIPACAO T
    WHERE T.PRE_PEDIDO_ID > 0
    GROUP BY 1, 2
    INTO :AGRUPAMENTO_ID, :PRE_PEDIDO_ID, :VALOR, :SALDO
    DO BEGIN

        IF(:VALOR <> :SALDO) THEN
        BEGIN
            :VALOR_UTILIZADO_PRE = :VALOR - :SALDO;
        END ELSE
        BEGIN
            :VALOR_UTILIZADO_PRE = :SALDO;
        END
         
        UPDATE OR INSERT INTO TBADIANTAMENTO_PRE_PEDIDOS (ADIANTAMENTO_ID, PRE_PEDIDO_ID, VALOR)
        VALUES (:AGRUPAMENTO_ID, :PRE_PEDIDO_ID, :VALOR_UTILIZADO_PRE)
        MATCHING (ADIANTAMENTO_ID, PRE_PEDIDO_ID);

    END
    

END
^

SET TERM ; ^

