USP_RECURRINGGIFT_ADJUSTINSTALLMENTAMOUNT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@INSTALLMENTID | uniqueidentifier | IN | |
@OLDTRANSACTIONAMOUNT | money | IN | |
@NEWTRANSACTIONAMOUNT | money | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@ORGANIZATIONEXCHANGERATEID | uniqueidentifier | IN | |
@STATUSCODE | tinyint | IN | |
@PAYMENTID | uniqueidentifier | IN | |
@PAYMENTDATEADDED | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_RECURRINGGIFT_ADJUSTINSTALLMENTAMOUNT (
@INSTALLMENTID uniqueidentifier,
@OLDTRANSACTIONAMOUNT money,
@NEWTRANSACTIONAMOUNT money,
@TRANSACTIONCURRENCYID uniqueidentifier,
@BASECURRENCYID uniqueidentifier,
@BASEEXCHANGERATEID uniqueidentifier,
@ORGANIZATIONEXCHANGERATEID uniqueidentifier,
@STATUSCODE tinyint,
@PAYMENTID uniqueidentifier,
@PAYMENTDATEADDED datetime,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime
)
as
begin
declare @BASEAMOUNT money;
declare @ORGANIZATIONAMOUNT money;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@NEWTRANSACTIONAMOUNT,
null,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASEAMOUNT output,
null,
@ORGANIZATIONAMOUNT output,
@ORGANIZATIONEXCHANGERATEID,
0;
update dbo.RECURRINGGIFTINSTALLMENT
set AMOUNT = @BASEAMOUNT,
ORGANIZATIONAMOUNT = @ORGANIZATIONAMOUNT,
TRANSACTIONAMOUNT = @NEWTRANSACTIONAMOUNT,
STATUSCODE = case when @STATUSCODE = 0 and STATUSCODE = 1 then 1 else @STATUSCODE end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @INSTALLMENTID;
-- don't create adjustment events for payments that existed before payment handling was introduced
if @PAYMENTDATEADDED > (select UPGRADEDATE from dbo.UFN_RECURRINGGIFTSETTING_GETCURRENT())
-- the "Installment amount changed" line for the activity timeline installment details
merge into dbo.RECURRINGGIFTINSTALLMENTEVENT e
using (select ID, OLDAMOUNT
from (select 'dummy' d) x -- we always want to merge something...
left join dbo.RECURRINGGIFTINSTALLMENTEVENT on RECURRINGGIFTINSTALLMENTID = @INSTALLMENTID and EVENTCODE = 4) u
on (e.ID = u.ID)
when matched and u.OLDAMOUNT = @NEWTRANSACTIONAMOUNT then
-- remove the event if we are no longer adjusting from the original installment amount
delete
when matched then
-- update an existing adjustment for this installment
update set NEWAMOUNT = @NEWTRANSACTIONAMOUNT, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
when not matched then
-- add a new adjustment event
insert (ID, RECURRINGGIFTINSTALLMENTID, EVENTCODE, DATE, OLDAMOUNT, NEWAMOUNT, CURRENCYID, PAYMENTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (newid(), @INSTALLMENTID, 4, @CURRENTDATE, @OLDTRANSACTIONAMOUNT, @NEWTRANSACTIONAMOUNT, @TRANSACTIONCURRENCYID, @PAYMENTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end