USP_DISBURSEMENTPROCESS_INCLUDETRANSACTION_UPDATE

Executes the "Disbursement Process: Include Transaction" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being updated.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the update.

Definition

Copy


CREATE procedure dbo.USP_DISBURSEMENTPROCESS_INCLUDETRANSACTION_UPDATE
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier
)
as begin
    -- Current pre-req - the transaction must have an FTA and must be associated to a process.

    -- ID is a FinancialTransactionScheduleID


    declare @HASDISCOUNT bit;
    declare @CURRENTDATE datetime;
    declare @DPDID uniqueidentifier;
    set @CURRENTDATE = getdate();

    -- check if there are any discounts

    select 
        @HASDISCOUNT = 1
    from dbo.FINANCIALTRANSACTIONSCHEDULE FTS
        inner join dbo.FINANCIALTRANSACTIONAPPLICATION FTA on FTS.ID = FTA.FINANCIALTRANSACTIONSCHEDULEID
    where FTS.ID = @ID 
        and FTA.TYPECODE = 1;

    if @HASDISCOUNT = 1 
        begin
            update dbo.FINANCIALTRANSACTIONAPPLICATION set 
                AMOUNT = I.DISCOUNTAMOUNT
                -- common crap

                ,DATECHANGED = @CURRENTDATE
                ,CHANGEDBYID = @CHANGEAGENTID
            from dbo.FINANCIALTRANSACTIONAPPLICATION FTA
                inner join dbo.FINANCIALTRANSACTIONSCHEDULE FTS on FTA.FINANCIALTRANSACTIONSCHEDULEID = FTS.ID and FTA.TYPECODE = 1
                inner join dbo.INVOICE I on I.ID = FTS.FINANCIALTRANSACTIONID 
        where FTS.ID = @ID
        end

    -- update the selected FTA's to max amount

    update dbo.FINANCIALTRANSACTIONAPPLICATION set 
        AMOUNT = S.[REMAINDER]
        -- common crap

        ,DATECHANGED = @CURRENTDATE
        ,CHANGEDBYID = @CHANGEAGENTID
    from dbo.FINANCIALTRANSACTIONAPPLICATION FTA
        inner join (
        select 
            FTS.ID
            ,FTS.AMOUNT - SUM(FTA.AMOUNT) [REMAINDER]
        from dbo.FINANCIALTRANSACTIONAPPLICATION FTA
            inner join dbo.FINANCIALTRANSACTIONSCHEDULE FTS on FTA.FINANCIALTRANSACTIONSCHEDULEID = FTS.ID
        group by FTS.ID, FTS.AMOUNT
        ) as S on S.ID = FTA.FINANCIALTRANSACTIONSCHEDULEID
    where FTA.FINANCIALTRANSACTIONSCHEDULEID = @ID
        and FTA.TYPECODE = 0;

    -- update the DPD accordingly

    select 
        @DPDID = FTA.FINANCIALTRANSACTIONID
    from 
        dbo.FINANCIALTRANSACTIONAPPLICATION FTA
    where 
        FTA.FINANCIALTRANSACTIONSCHEDULEID = @ID
        and FTA.TYPECODE = 0;

    exec dbo.USP_DISBURSEMENTPROCESS_UPDATE_DISBURSEMENTPROCESSDISBURSEMENT_AMOUNT 
        @DISBURSEMENTPROCESSDISBURSEMENTID = @DPDID
        @CHANGEAGENTID = @CHANGEAGENTID
        @DATECHANGED = @CURRENTDATE;

    return 0;

end