ALTER TABLE TBADIANTAMENTO_PRE_PEDIDOS
    ADD SALDO NUMERIC(15,2) DEFAULT 0 NOT NULL;
	
ALTER TABLE TBADIANTAMENTO_PRE_PEDIDOS
    ADD FLAG_FATURAMENTO INTEGER DEFAULT 0 NOT NULL;



SET TERM ^ ;

CREATE OR ALTER procedure SPU_SALDO_ADIANT_PRE (
    PDV_CFE_ID integer)
as
declare variable AGRUPAMENTO_ID integer;
declare variable PRE_PEDIDO_ID integer;
declare variable SALDO numeric(15,2);
BEGIN
    FOR SELECT DISTINCT
        T.AGRUPAMENTO_ID,
        SUM(T.SALDO) AS SALDO
    FROM TBPDV_CFE_ANTECIPACAO_SALDO T
    WHERE T.PDV_CFE_ID = :PDV_CFE_ID
    GROUP BY 1
    INTO :AGRUPAMENTO_ID, :SALDO
    DO BEGIN

        FOR SELECT DISTINCT
            W.CONFERENCIA_ID
        FROM TBPDV_CFE_ITEM W
        WHERE W.PDV_CFE_ID = :PDV_CFE_ID
        GROUP BY 1
        INTO :PRE_PEDIDO_ID
        DO BEGIN
            UPDATE TBADIANTAMENTO_PRE_PEDIDOS K SET K.VALOR = :SALDO, K.SALDO = (K.SALDO - :SALDO), K.FLAG_FATURAMENTO = 1 WHERE K.ADIANTAMENTO_ID = :AGRUPAMENTO_ID AND K.PRE_PEDIDO_ID = :PRE_PEDIDO_ID;
        END
        

    END

END
^

SET TERM ; ^


SET TERM ^ ;

CREATE trigger tbadiant_pre_pedidos_b03iu for tbadiantamento_pre_pedidos
active before insert or update position 3
AS
BEGIN
    IF(INSERTING) THEN
    BEGIN
        NEW.SALDO = NEW.VALOR;
    END

    IF(UPDATING) THEN
    BEGIN

        IF(OLD.VALOR <> NEW.VALOR AND NEW.FLAG_FATURAMENTO = 0) THEN
        BEGIN
            NEW.SALDO = NEW.VALOR;
        END
    END
    
END
^

SET TERM ; ^

