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