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