USP_RECURRINGGIFT_ADDPAYMENT
Adds a payment to a recurring gift.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@APPLICATIONID | uniqueidentifier | IN | |
@APPLIEDAMOUNT | money | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@CREATIONDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CREATEDSPLITS | xml | INOUT | |
@BUSINESSUNITSAPPLIED | bit | IN | |
@BASEAPPLIEDAMOUNT | money | IN | |
@ORGANIZATIONAPPLIEDAMOUNT | money | IN |
Definition
Copy
CREATE procedure dbo.USP_RECURRINGGIFT_ADDPAYMENT
(
@REVENUEID uniqueidentifier,
@APPLICATIONID uniqueidentifier,
@APPLIEDAMOUNT money,
@CONSTITUENTID uniqueidentifier,
@DATE datetime,
@CREATIONDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@CREATEDSPLITS xml = null output,
@BUSINESSUNITSAPPLIED bit = 0,
@BASEAPPLIEDAMOUNT money = null,
@ORGANIZATIONAPPLIEDAMOUNT money = null
)
as
set nocount on
declare @PAYMENTTRANSACTIONCURRENCYID uniqueidentifier;
declare @PAYMENTBASECURRENCYID uniqueidentifier;
declare @PAYMENTBASEEXCHANGERATEID uniqueidentifier;
declare @PAYMENTORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @PAYMENTBASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @PAYMENTRANSACTIONCURRENCYDECIMALDIGITS tinyint;
declare @PAYMENBASECURRENCYDECIMALDIGITS tinyint;
declare @ORGANIZATIONCURRENCYDECIMALDIGITS tinyint;
declare @POSTDATE date;
declare @POSTSTATUSCODE tinyint;
declare @appealid uniqueidentifier,
@mailingid uniqueidentifier,
@sourcecode nvarchar(50),
@channelcodeid uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
select @ORGANIZATIONCURRENCYDECIMALDIGITS = CURRENCY.DECIMALDIGITS from dbo.CURRENCY where CURRENCY.ID = @ORGANIZATIONCURRENCYID;
select
@PAYMENTTRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
@PAYMENTBASECURRENCYID = V.BASECURRENCYID,
@PAYMENTBASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
@PAYMENTORGANIZATIONEXCHANGERATEID = REVENUE.ORGEXCHANGERATEID,
@PAYMENTRANSACTIONCURRENCYDECIMALDIGITS = TRANSACTIONCURRENCY.DECIMALDIGITS,
@PAYMENBASECURRENCYDECIMALDIGITS = BASECURRENCY.DECIMALDIGITS,
@POSTDATE = REVENUE.POSTDATE,
@POSTSTATUSCODE = case REVENUE.POSTSTATUSCODE when 2 then 1 else REVENUE.POSTSTATUSCODE end
from
dbo.FINANCIALTRANSACTION REVENUE
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V on V.FINANCIALTRANSACTIONID = REVENUE.ID
inner join dbo.CURRENCY as TRANSACTIONCURRENCY on REVENUE.TRANSACTIONCURRENCYID = TRANSACTIONCURRENCY.ID
inner join dbo.CURRENCY as BASECURRENCY on V.BASECURRENCYID = BASECURRENCY.ID
where
REVENUE.ID = @REVENUEID;
-- Convert the applied amount into base and organization amounts if it is not provided by the caller
if @BASEAPPLIEDAMOUNT is null or @ORGANIZATIONAPPLIEDAMOUNT is null
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @APPLIEDAMOUNT, @DATE, @PAYMENTBASECURRENCYID, @PAYMENTBASEEXCHANGERATEID output, @PAYMENTTRANSACTIONCURRENCYID output, @BASEAPPLIEDAMOUNT output, null, @ORGANIZATIONAPPLIEDAMOUNT output, @PAYMENTORGANIZATIONEXCHANGERATEID, 0, @PAYMENTBASETOORGANIZATIONEXCHANGERATEID output;
else
set @PAYMENTBASETOORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTBASETOORGANIZATIONRATE(@PAYMENTBASECURRENCYID, @DATE, null, @PAYMENTORGANIZATIONEXCHANGERATEID);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CREATIONDATE is null
set @CREATIONDATE = getdate();
declare @CURRENTTRANSACTIONDATE datetime, @NEXTTRANSACTIONDATE datetime, @RGSTATUS tinyint;
select
@CURRENTTRANSACTIONDATE = NEXTTRANSACTIONDATE,
@NEXTTRANSACTIONDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE_BYID_1_1(@APPLICATIONID, NEXTTRANSACTIONDATE),
@RGSTATUS = STATUSCODE
from dbo.REVENUESCHEDULE
where ID = @APPLICATIONID;
declare @RECURRINGGIFTSPLIT table
(
ID uniqueidentifier,
SOURCEREVENUESPLITID uniqueidentifier,
DESIGNATIONID uniqueidentifier,
AMOUNT money,
TYPECODE tinyint,
BASEAMOUNT money,
ORGANIZATIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASECURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier,
ORGANIZATIONEXCHANGERATEID uniqueidentifier
);
declare @TEMPSPLITSXML xml;
-- Build splits xml for easier processing by the multicurrency splits conversion function.
-- UFN_REVENUE_GETPRORATEDSPLITS does its calculations in the transaction currency, giving us
-- transaction amounts we can then convert to base and organization amounts.
set @TEMPSPLITSXML = (
select
SOURCEREVENUESPLITID,
DESIGNATIONID,
AMOUNT,
TYPECODE
from
dbo.UFN_REVENUE_GETPRORATEDSPLITS_2(@APPLICATIONID, @APPLIEDAMOUNT, @PAYMENTTRANSACTIONCURRENCYID) PRORATEDSPLITS
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
);
-- Populate the recurring gift splits temporary table.
insert into @RECURRINGGIFTSPLIT
(
ID,
SOURCEREVENUESPLITID,
DESIGNATIONID,
AMOUNT,
TYPECODE,
BASEAMOUNT,
ORGANIZATIONAMOUNT,
TRANSACTIONCURRENCYID,
BASECURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID
)
select
newid(),
CONVERTEDITEM.ITEM.value('(ITEM/SOURCEREVENUESPLITID)[1]', 'uniqueidentifier'),
CONVERTEDITEM.ITEM.value('(ITEM/DESIGNATIONID)[1]', 'uniqueidentifier'),
CONVERTEDITEM.ITEM.value('(ITEM/AMOUNT)[1]', 'money'),
CONVERTEDITEM.ITEM.value('(ITEM/TYPECODE)[1]', 'tinyint'),
CONVERTEDITEM.BASEAMOUNT,
CONVERTEDITEM.ORGANIZATIONAMOUNT,
@PAYMENTTRANSACTIONCURRENCYID,
@PAYMENTBASECURRENCYID,
@PAYMENTBASEEXCHANGERATEID,
@PAYMENTORGANIZATIONEXCHANGERATEID
from
dbo.UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTIONINXML
(
@TEMPSPLITSXML,
@PAYMENTTRANSACTIONCURRENCYID,
@PAYMENTBASECURRENCYID,
@ORGANIZATIONCURRENCYID,
@APPLIEDAMOUNT,
@BASEAPPLIEDAMOUNT,
@PAYMENBASECURRENCYDECIMALDIGITS,
@ORGANIZATIONAPPLIEDAMOUNT,
@ORGANIZATIONCURRENCYDECIMALDIGITS
) CONVERTEDITEM;
declare @ADJUSTMENTPOSTSTATUSCODE tinyint;
declare @ADJUSTMENTPOSTDATE date;
declare @ADJUSTMENTID uniqueidentifier;
select top 1
@ADJUSTMENTPOSTSTATUSCODE = case A.POSTSTATUSCODE when 2 then 3 else 1 end
,@ADJUSTMENTPOSTDATE = A.POSTDATE
,@ADJUSTMENTID = ALI.ID
from dbo.ADJUSTMENT A
left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT ALI on A.ID = ALI.ID
where A.REVENUEID = @REVENUEID
order by A.DATEADDED desc;
insert into dbo.FINANCIALTRANSACTIONLINEITEM
(ID
,FINANCIALTRANSACTIONID
,TRANSACTIONAMOUNT
,VISIBLE
,DESCRIPTION
,SEQUENCE
,TYPECODE
,POSTDATE
,POSTSTATUSCODE
,BASEAMOUNT
,ORGAMOUNT
,FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
-- Boilerplate
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
ID
,@REVENUEID
,AMOUNT
,1
,''
,1
,0
,isnull(@ADJUSTMENTPOSTDATE, @POSTDATE)
,isnull(@ADJUSTMENTPOSTSTATUSCODE, @POSTSTATUSCODE)
,BASEAMOUNT
,ORGANIZATIONAMOUNT
,@ADJUSTMENTID
,@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RECURRINGGIFTSPLIT
merge dbo.REVENUESPLIT_EXT as target
using @RECURRINGGIFTSPLIT as source
on (source.ID = target.ID)
when matched then
update set
DESIGNATIONID = source.DESIGNATIONID
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CREATIONDATE
when not matched then
insert
(
ID
,DESIGNATIONID
,TYPECODE
,APPLICATIONCODE
,OVERRIDEBUSINESSUNITS
,REVENUESPLITBUSINESSUNITOVERRIDECODEID
-- boilerplate
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
source.ID
,source.DESIGNATIONID
,source.TYPECODE
,3
,0
,null
-- boilerplate
,@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE);
-- Cross-currency payments: Get the application currency and exchange rate
declare @APPLICATIONCURRENCYID uniqueidentifier;
declare @APPLICATIONEXCHANGERATEID uniqueidentifier;
select @APPLICATIONCURRENCYID = TRANSACTIONCURRENCYID from dbo.REVENUE where ID = @APPLICATIONID;
if @APPLICATIONCURRENCYID <> @PAYMENTTRANSACTIONCURRENCYID
begin
if @APPLICATIONCURRENCYID = @PAYMENTBASECURRENCYID
set @APPLICATIONEXCHANGERATEID = @PAYMENTBASEEXCHANGERATEID;
else
set @APPLICATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@PAYMENTTRANSACTIONCURRENCYID,@APPLICATIONCURRENCYID,@DATE,1,null);
if @APPLICATIONEXCHANGERATEID is null
begin
raiserror('BBERR_APPLICATIONEXCHANGERATEDOESNOTEXIST : A payment can only be applied to an application if the payment and application have the same transaction currency or if there is an exchange rate from the payment transaction currency to the application transaction currency.', 13, 1);
return 1;
end
end
insert into dbo.RECURRINGGIFTACTIVITY
(
PAYMENTREVENUEID,
TYPECODE,
SOURCEREVENUEID,
AMOUNT,
SCHEDULEDATE,
APPLICATIONCURRENCYID,
APPLICATIONEXCHANGERATEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
ID,
0, -- Payment
@APPLICATIONID,
case when @APPLICATIONEXCHANGERATEID is null
then AMOUNT
else
dbo.UFN_CURRENCY_CONVERT(AMOUNT, @APPLICATIONEXCHANGERATEID) --TODO: Should the total be converted once and then split by proportion?
end,
@CURRENTTRANSACTIONDATE,
@APPLICATIONCURRENCYID,
@APPLICATIONEXCHANGERATEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RECURRINGGIFTSPLIT;
--Performance: Forcing the query plan to filter FTM tables first before joining to the campaign
declare @RevenueSplitCampaignsIds table(RECURRINGGIFTSPLITID uniqueidentifier, REVENUESPLITID uniqueidentifier)
insert into @RevenueSplitCampaignsIds
select
RECURRINGGIFTSPLIT.ID,
REVENUESPLIT_EXT.ID
from @RECURRINGGIFTSPLIT as RECURRINGGIFTSPLIT
inner join dbo.RECURRINGGIFTACTIVITY on RECURRINGGIFTSPLIT.ID = RECURRINGGIFTACTIVITY.PAYMENTREVENUEID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on RECURRINGGIFTACTIVITY.SOURCEREVENUEID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID and RECURRINGGIFTSPLIT.DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID
where REVENUESPLIT.DELETEDON is null and REVENUESPLIT_EXT.TYPECODE != 1;
---- generate campaigns from recurring gift
insert into dbo.REVENUESPLITCAMPAIGN
(
REVENUESPLITID,
CAMPAIGNID,
CAMPAIGNSUBPRIORITYID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
REVENUESPLITIDS.RECURRINGGIFTSPLITID,
REVENUESPLITCAMPAIGN.CAMPAIGNID,
REVENUESPLITCAMPAIGN.CAMPAIGNSUBPRIORITYID,
@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RevenueSplitCampaignsIds REVENUESPLITIDS
inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITIDS.REVENUESPLITID = REVENUESPLITCAMPAIGN.REVENUESPLITID
inner join dbo.CAMPAIGN on REVENUESPLITCAMPAIGN.CAMPAIGNID = CAMPAIGN.ID
where CAMPAIGN.ISACTIVE = 1;
-- LTM WI #186567, #167954 populate payment appealid, mailingid, sourcecode, channelcode if null in payment record and if source revenue has these values
-- appeal must exist before creation of revenuerecognition for FAF trigger
select @appealid=APPEALID, @mailingid=MAILINGID, @sourcecode=SOURCECODE, @channelcodeid=CHANNELCODEID from dbo.REVENUE where ID = @APPLICATIONID
update REX set
APPEALID = coalesce(REX.APPEALID, @appealid),
MAILINGID = coalesce(REX.MAILINGID, @mailingid),
SOURCECODE = coalesce(nullif(REX.SOURCECODE, ''), @sourcecode),
CHANNELCODEID = coalesce(REX.CHANNELCODEID, @channelcodeid)
from dbo.REVENUE_EXT REX
where REX.ID = @REVENUEID
-- create recognitions
declare @REVENUEGIVENANONYMOUSLY bit,
@SOURCEREVENUESPLITID uniqueidentifier = null;
select @REVENUEGIVENANONYMOUSLY = R.GIVENANONYMOUSLY
from dbo.REVENUE R
where R.ID = @REVENUEID;
/*Friends Asking Friends recurring gift should credit the original recognition */
if exists(select R.ID from dbo.REVENUE_EXT R inner join dbo.EVENT E on R.APPEALID = E.APPEALID inner join dbo.EVENTEXTENSION EX on E.ID = EX.EVENTID where R.ID = @APPLICATIONID)
begin
select @SOURCEREVENUESPLITID = SOURCEREVENUESPLITID from @RECURRINGGIFTSPLIT
end
insert into dbo.REVENUERECOGNITION
(
REVENUESPLITID,
CONSTITUENTID,
AMOUNT,
EFFECTIVEDATE,
REVENUERECOGNITIONTYPECODEID,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
REVENUESPLIT.ID,
RECOGNITIONS.CONSTITUENTID,
RECOGNITIONS.AMOUNT,
@DATE,
RECOGNITIONS.REVENUERECOGNITIONTYPECODEID,
@PAYMENTBASECURRENCYID,
case when @PAYMENTBASECURRENCYID = @ORGANIZATIONCURRENCYID
then RECOGNITIONS.AMOUNT
else dbo.UFN_CURRENCY_CONVERT(RECOGNITIONS.AMOUNT, @PAYMENTBASETOORGANIZATIONEXCHANGERATEID)
end,
@PAYMENTBASETOORGANIZATIONEXCHANGERATEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RECURRINGGIFTSPLIT as REVENUESPLIT
cross apply dbo.UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS(@REVENUEGIVENANONYMOUSLY, @CONSTITUENTID, REVENUESPLIT.BASEAMOUNT, @DATE, @SOURCEREVENUESPLITID) as RECOGNITIONS;
insert into dbo.REVENUESOLICITOR
(
REVENUESPLITID,
CONSTITUENTID,
AMOUNT,
SEQUENCE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
RECURRINGGIFTSPLIT.ID,
REVENUESOLICITOR.CONSTITUENTID,
--JamesWill 04/03/2006 CR239791-033106 According to documentation, @APPLIEDAMOUNT will
--implicitly cast as a decimal. Explicitly performing the cast rounds it, however, and
--gives an incorrect result.
cast(RECURRINGGIFTSPLIT.BASEAMOUNT * (cast(REVENUESOLICITOR.AMOUNT as decimal(30, 5))/ cast(SOURCESPLIT.AMOUNT as decimal(30, 5))) as money),
--cast(@BASEAPPLIEDAMOUNT * (cast(RECURRINGGIFTSPLIT.BASEAMOUNT as decimal(30, 5))/ cast(SOURCESPLIT.AMOUNT as decimal(30, 5))) as money),
REVENUESOLICITOR.SEQUENCE,
@PAYMENTBASECURRENCYID,
case when @PAYMENTBASECURRENCYID = @ORGANIZATIONCURRENCYID
then cast(RECURRINGGIFTSPLIT.BASEAMOUNT * (cast(REVENUESOLICITOR.AMOUNT as decimal(30, 5))/ cast(SOURCESPLIT.AMOUNT as decimal(30, 5))) as money)
else dbo.UFN_CURRENCY_CONVERT((cast(RECURRINGGIFTSPLIT.BASEAMOUNT * (cast(REVENUESOLICITOR.AMOUNT as decimal(30, 5))/ cast(SOURCESPLIT.AMOUNT as decimal(30, 5))) as money)), @PAYMENTBASETOORGANIZATIONEXCHANGERATEID)
end,
@PAYMENTBASETOORGANIZATIONEXCHANGERATEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RECURRINGGIFTSPLIT as RECURRINGGIFTSPLIT
inner join dbo.REVENUESPLIT as SOURCESPLIT on RECURRINGGIFTSPLIT.SOURCEREVENUESPLITID = SOURCESPLIT.ID
inner join dbo.REVENUESOLICITOR on SOURCESPLIT.ID = REVENUESOLICITOR.REVENUESPLITID;
-- Copy category codes from the source splits
insert into dbo.REVENUECATEGORY
(
ID,
GLREVENUECATEGORYMAPPINGID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
RECURRINGGIFTSPLIT.ID,
REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID,
@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RECURRINGGIFTSPLIT as RECURRINGGIFTSPLIT
inner join dbo.REVENUECATEGORY on RECURRINGGIFTSPLIT.SOURCEREVENUESPLITID = REVENUECATEGORY.ID;
-- Apply payment to existing installments
exec dbo.USP_RECURRINGGIFT_APPLYPAYMENTTOINSTALLMENTS
@APPLICATIONID,
@CHANGEAGENTID,
@CREATIONDATE,
@REVENUEID,
@APPLIEDAMOUNT,
@NEXTTRANSACTIONDATE output,
@APPLICATIONCURRENCYID,
@APPLICATIONEXCHANGERATEID,
null,
null,
@DATE,
@CREATIONDATE
-- Create sponsorship payment record for sponsorship payments.
if (select top 1 TYPECODE from @RECURRINGGIFTSPLIT) = 9
insert into dbo.SPONSORSHIPPAYMENT (ID, SPONSORSHIPID, GIFTFINANCIALSPONSORID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select [SPLITS].ID,
SPONSORSHIP.ID,
case when SPONSORSHIP.CONSTITUENTID <> [RG].CONSTITUENTID then [RG].CONSTITUENTID end,
@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
from @RECURRINGGIFTSPLIT [SPLITS]
inner join dbo.SPONSORSHIP on SPONSORSHIP.REVENUESPLITID = [SPLITS].SOURCEREVENUESPLITID and SPONSORSHIP.STATUSCODE = 1
inner join dbo.REVENUE [RG] on [RG].ID = @APPLICATIONID;
set @CREATEDSPLITS = (
select
REVENUESPLIT.AMOUNT,
REVENUESPLIT.DESIGNATIONID,
REVENUESPLIT.ID,
REVENUESPLIT.REVENUEID,
REVENUESPLIT.APPLICATIONCODE,
REVENUESPLIT.TYPECODE,
RECURRINGGIFTSPLIT.SOURCEREVENUESPLITID,
REVENUESPLIT.TRANSACTIONAMOUNT,
REVENUESPLIT.ORGANIZATIONAMOUNT,
REVENUESPLIT.BASECURRENCYID,
REVENUESPLIT.TRANSACTIONCURRENCYID,
REVENUESPLIT.BASEEXCHANGERATEID,
REVENUESPLIT.ORGANIZATIONEXCHANGERATEID
from @RECURRINGGIFTSPLIT as RECURRINGGIFTSPLIT
inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = RECURRINGGIFTSPLIT.ID
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
);
--Copy revenue attributes of the recurring gift to the payment
exec dbo.USP_REVENUEATTRIBUTES_COPYTOREVENUE @APPLICATIONID, @REVENUEID, @CHANGEAGENTID;
/* Apply business units */
if @BUSINESSUNITSAPPLIED =0
exec dbo.USP_REVENUESPLIT_APPLYBUSINESSUNITS @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;