USP_REVENUEBATCH_APPLYTOREVENUESTREAMS
Stored proc to apply a batch payment to one or more revenue streams.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TRANSACTIONID | uniqueidentifier | IN | |
@REVENUESTREAMS | xml | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@BATCHNUMBER | nvarchar(100) | IN | |
@POSTDATE | datetime | IN | |
@POSTSTATUSCODE | tinyint | IN | |
@DONOTRECEIPT | bit | IN | |
@DONOTACKNOWLEDGE | bit | IN | |
@FINDERNUMBER | bigint | IN | |
@SOURCECODE | nvarchar(50) | IN | |
@APPEALID | uniqueidentifier | IN | |
@MAILINGID | uniqueidentifier | IN | |
@CHANNELCODEID | uniqueidentifier | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | IN | |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | |
@REFERENCEDATE | UDT_FUZZYDATE | IN | |
@REFERENCENUMBER | nvarchar(20) | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@CREDITCARDNUMBER | nvarchar(4) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@AUTHORIZATIONCODE | nvarchar(20) | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@ISSUER | nvarchar(100) | IN | |
@NUMBEROFUNITS | decimal(20, 3) | IN | |
@SYMBOL | nvarchar(25) | IN | |
@MEDIANPRICE | decimal(19, 4) | IN | |
@SALEDATE | datetime | IN | |
@SALEAMOUNT | money | IN | |
@BROKERFEE | money | IN | |
@SALEPOSTSTATUSCODE | tinyint | IN | |
@SALEPOSTDATE | datetime | IN | |
@PROPERTYSUBTYPECODEID | uniqueidentifier | IN | |
@GIFTINKINDSUBTYPECODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CREATIONDATE | datetime | IN | |
@UNAPPLIEDMATCHINGGIFTSPLITS | xml | IN | |
@TOTALAMOUNTAPPLIED | money | INOUT | |
@REVENUEID | uniqueidentifier | INOUT | |
@KEYALREADYOPEN | bit | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@REFERENCE | nvarchar(255) | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@SPLITSDECLININGGIFTAID | xml | INOUT | |
@COVENANTGIFTSPLITS | xml | INOUT | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SHOULDDEFAULTRECEIPTTYPECODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEBATCH_APPLYTOREVENUESTREAMS
(
@TRANSACTIONID uniqueidentifier,
@REVENUESTREAMS xml,
@CONSTITUENTID uniqueidentifier,
@DATE datetime,
@PAYMENTMETHODCODE tinyint,
@BATCHNUMBER nvarchar(100),
@POSTDATE datetime,
@POSTSTATUSCODE tinyint,
@DONOTRECEIPT bit,
@DONOTACKNOWLEDGE bit,
@FINDERNUMBER bigint = 0,
@SOURCECODE nvarchar(50) = '',
@APPEALID uniqueidentifier = null,
@MAILINGID uniqueidentifier = null,
@CHANNELCODEID uniqueidentifier = null,
@CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
@CHECKNUMBER nvarchar(20) = '',
@CONSTITUENTACCOUNTID uniqueidentifier = null,
@REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@REFERENCENUMBER nvarchar(20) = '',
@CARDHOLDERNAME nvarchar(255) = '',
@CREDITCARDNUMBER nvarchar(4) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@AUTHORIZATIONCODE nvarchar(20) = '',
@EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
@ISSUER nvarchar(100) = '',
@NUMBEROFUNITS decimal(20,3) = 0,
@SYMBOL nvarchar(25) = '',
@MEDIANPRICE decimal(19,4) = 0,
@SALEDATE datetime = null,
@SALEAMOUNT money = null,
@BROKERFEE money = null,
@SALEPOSTSTATUSCODE tinyint = null,
@SALEPOSTDATE datetime = null,
@PROPERTYSUBTYPECODEID uniqueidentifier = null,
@GIFTINKINDSUBTYPECODEID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier,
@CREATIONDATE datetime,
@UNAPPLIEDMATCHINGGIFTSPLITS xml = null,
@TOTALAMOUNTAPPLIED money output,
@REVENUEID uniqueidentifier output,
@KEYALREADYOPEN bit = 0,
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
@REFERENCE nvarchar(255) = null,
@CATEGORYCODEID uniqueidentifier = null,
@SPLITSDECLININGGIFTAID xml = null output,
@COVENANTGIFTSPLITS xml = null output,
@CURRENTAPPUSERID uniqueidentifier = null,
@SHOULDDEFAULTRECEIPTTYPECODE tinyint = 0
)
as
set nocount on;
declare @APPLICATIONID uniqueidentifier;
declare @APPLICATIONTYPE tinyint;
declare @APPLIEDAMOUNT money;
declare @OVERPAYMENTAPPLICATIONTYPECODE tinyint;
declare @SPLITRECEIPTTYPECODE tinyint;
declare @PERPAYMENTPREFERENCEEXISTS bit = 0;
declare @SPLITSGIFTAIDINFOTBL table
(
REVENUESPLITID uniqueidentifier,
DECLINESGIFTAID bit,
ISCOVENANT bit
)
declare APPLICATIONSCURSOR cursor local fast_forward for
select
APPLICATIONID,
APPLIED,
TYPECODE,
OVERPAYMENTAPPLICATIONTYPECODE
from dbo.UFN_REVENUEBATCH_GETAPPLICATIONS_FROMITEMLISTXML(@REVENUESTREAMS)
where APPLIED > 0;
declare @EMPTYGUID uniqueidentifier;
set @EMPTYGUID = '00000000-0000-0000-0000-000000000000';
begin try
set @TOTALAMOUNTAPPLIED = 0;
open APPLICATIONSCURSOR;
fetch next from APPLICATIONSCURSOR into @APPLICATIONID, @APPLIEDAMOUNT, @APPLICATIONTYPE, @OVERPAYMENTAPPLICATIONTYPECODE;
while @@FETCH_STATUS = 0
begin
set @REVENUEID = @TRANSACTIONID
declare @SPLITTYPECODE tinyint, @SPLITAPPLICATIONCODE tinyint
set @SPLITAPPLICATIONCODE =
case @APPLICATIONTYPE
when 1 then 2 --Pledge Payment
when 3 then 7 --MGPledge Payment
when 2 then 3 --Recurring Gift Payment
when 6 then 1 --Event Registration Payment
when 4 then 6 --Planned gift
when 5 then 5 --Membership
when 9 then 8 --Grant Award Payment
when 10 then 13 --Donor challenge payment
else 99
end;
-- Pull the split's type code from the source revenue split unless it's an event registrant
if @SPLITAPPLICATIONCODE <> 1
select @SPLITTYPECODE = TYPECODE from dbo.REVENUESPLIT where ID = @APPLICATIONID
else
set @SPLITTYPECODE = 1
if @SPLITAPPLICATIONCODE = 99
raiserror('The application type is not supported.', 13, 1);
--Clear Appeal and Source code for event registrations
if @SPLITAPPLICATIONCODE = 1
select
@FINDERNUMBER = 0,
@SOURCECODE = N'',
@APPEALID = null,
@MAILINGID = null,
@CHANNELCODEID = null
if @SHOULDDEFAULTRECEIPTTYPECODE = 1 and (@SPLITAPPLICATIONCODE = 2 or @SPLITAPPLICATIONCODE = 3)
begin
set @SPLITRECEIPTTYPECODE = dbo.UFN_CONSTITUENT_GETRECEIPTPREFERENCE(@CONSTITUENTID,@SPLITAPPLICATIONCODE);
if @SPLITRECEIPTTYPECODE = 0
set @PERPAYMENTPREFERENCEEXISTS = 1;
end
exec dbo.USP_REVENUEREFERENCE_ADD @REVENUEID, @REFERENCE, @CHANGEAGENTID;
if @APPLICATIONTYPE in(
1, -- Pledge
3, -- MG Pledge
4, -- Planned Gift
9, -- Grant Award
10 -- Donor Challenge
)
begin
declare @REVENUESPLITAPPLICATIONTYPE tinyint
set @REVENUESPLITAPPLICATIONTYPE =
case @APPLICATIONTYPE
when 1 then 2
when 3 then 7
when 4 then 6
when 9 then 8
when 10 then 13
end;
declare @CREATEDSPLITS xml
declare @AMOUNTPAID money
exec dbo.USP_PLEDGE_ADDPAYMENT
@REVENUEID = @REVENUEID,
@APPLICATIONID = @APPLICATIONID,
@APPLIEDAMOUNT = @APPLIEDAMOUNT,
@CONSTITUENTID = @CONSTITUENTID,
@DATE = @DATE,
@UNAPPLIEDMATCHINGGIFTSPLITS = @UNAPPLIEDMATCHINGGIFTSPLITS,
@APPLICATIONTYPE = @REVENUESPLITAPPLICATIONTYPE,
@AMOUNTPAID = @AMOUNTPAID output,
@CREATIONDATE = @CREATIONDATE,
@CHANGEAGENTID = @CHANGEAGENTID,
@CREATEDSPLITS = @CREATEDSPLITS output,
@OVERPAYMENTAPPLICATIONTYPECODE = @OVERPAYMENTAPPLICATIONTYPECODE,
@BUSINESSUNITSAPPLIED = 1
-- Default the declines gift aid and covenant values for a pledge payment split from the pledge split
insert into @SPLITSGIFTAIDINFOTBL
(
REVENUESPLITID,
DECLINESGIFTAID,
ISCOVENANT
)
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
REVENUESPLITGIFTAID.DECLINESGIFTAID,
REVENUESPLITGIFTAID.ISCOVENANT
from @CREATEDSPLITS.nodes('/SPLITS/ITEM') T(c)
inner join dbo.REVENUESPLITGIFTAID on T.c.value('(SOURCEREVENUESPLITID)[1]','uniqueidentifier') = REVENUESPLITGIFTAID.ID
where
REVENUESPLITGIFTAID.DECLINESGIFTAID = 1 or
REVENUESPLITGIFTAID.ISCOVENANT = 1
set @TOTALAMOUNTAPPLIED = @TOTALAMOUNTAPPLIED + @AMOUNTPAID
end
if @APPLICATIONTYPE = 2 --Recurring Gift
begin
declare @RECURRINGGIFTCREATEDSPLITS xml
exec dbo.USP_RECURRINGGIFT_ADDPAYMENT
@REVENUEID = @REVENUEID,
@APPLICATIONID = @APPLICATIONID,
@APPLIEDAMOUNT = @APPLIEDAMOUNT,
@CONSTITUENTID = @CONSTITUENTID,
@DATE = @DATE,
@CREATIONDATE = @CREATIONDATE,
@CHANGEAGENTID = @CHANGEAGENTID,
@CREATEDSPLITS = @RECURRINGGIFTCREATEDSPLITS output,
@BUSINESSUNITSAPPLIED= 1
set @TOTALAMOUNTAPPLIED = @TOTALAMOUNTAPPLIED + @APPLIEDAMOUNT;
-- Default the declines gift aid value for a pledge payment split from the pledge split
insert into @SPLITSGIFTAIDINFOTBL
(
REVENUESPLITID,
DECLINESGIFTAID
)
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
1
from @RECURRINGGIFTCREATEDSPLITS.nodes('/SPLITS/ITEM') T(c)
inner join dbo.REVENUESPLITGIFTAID on T.c.value('(SOURCEREVENUESPLITID)[1]','uniqueidentifier') = REVENUESPLITGIFTAID.ID
where REVENUESPLITGIFTAID.DECLINESGIFTAID = 1
end
if @APPLICATIONTYPE = 6 --Event Registration
begin
-- commit the event registration
declare @REGISTRANTID uniqueidentifier;
set @REGISTRANTID = @APPLICATIONID;
if exists(select top(1) 1 from dbo.BATCHREVENUEREGISTRANT where ID = @APPLICATIONID)
begin
declare @EVENTID uniqueidentifier;
declare @DATEPURCHASED datetime;
declare @MAINEVENTID uniqueidentifier;
declare @PACKAGEREGISTRATIONS xml;
declare @SINGLEEVENTREGISTRATIONS xml;
declare @WAIVEBENEFITS bit;
declare @REGISTRANTMAPPINGS xml;
declare @BATCHID uniqueidentifier;
declare @REGISTRANTCONSTITUENTID uniqueidentifier;
declare @ISWALKIN bit;
select
@EVENTID = EVENT.ID,
@MAINEVENTID = case
when [EVENT].[MAINEVENTID] is not null then [EVENT].[MAINEVENTID]
when exists(select ID from dbo.EVENT [SUBEVENT] where [SUBEVENT].[MAINEVENTID] = [EVENT].[ID]) then [EVENT].[ID]
else null
end,
@DATEPURCHASED = dbo.UFN_DATE_GETEARLIESTTIME(getdate()),
@WAIVEBENEFITS = BATCHREVENUEREGISTRANT.BENEFITSWAIVED,
@BATCHID = BATCHREVENUEREGISTRANT.BATCHID,
@REGISTRANTCONSTITUENTID = BATCHREVENUEREGISTRANT.CONSTITUENTID,
@ISWALKIN = coalesce(BATCHREVENUEREGISTRANT.ISWALKIN,0)
from
dbo.BATCHREVENUEREGISTRANT
left outer join
dbo.EVENT on EVENT.ID = BATCHREVENUEREGISTRANT.EVENTID
where
BATCHREVENUEREGISTRANT.ID = @APPLICATIONID;
declare @MAINEVENTIDPARAMETER uniqueidentifier;
set @MAINEVENTIDPARAMETER = coalesce(@MAINEVENTID, @EVENTID);
exec dbo.USP_REVENUEBATCHREGISTRANT_GETREGISTRATIONSANDREGISTRANTMAPPINGS
@MAINEVENTIDPARAMETER,
@REGISTRANTCONSTITUENTID,
@PACKAGEREGISTRATIONS output,
@SINGLEEVENTREGISTRATIONS output,
@REGISTRANTMAPPINGS output,
@BATCHID;
if not exists
(
select top (1)
REGISTRANT.ID
from
@REGISTRANTMAPPINGS.nodes('/REGISTRANTMAPPINGS/ITEM/REGISTRANTREGISTRATIONMAPS/ITEM') T(c)
inner join dbo.REGISTRANT on
T.c.value('EVENTID[1]', 'uniqueidentifier') = REGISTRANT.EVENTID
and @REGISTRANTCONSTITUENTID = REGISTRANT.CONSTITUENTID
)
begin
declare @UNKNOWNGUESTWELLKNOWNGUID uniqueidentifier;
set @UNKNOWNGUESTWELLKNOWNGUID = 'C776DAB5-65B2-4258-ADAE-AE396D28E251';
-- commit all of the batch constituents used as guests on the registration
declare @NEWCONSTITUENTS table (CONSTITUENTID uniqueidentifier);
insert into @NEWCONSTITUENTS
(
CONSTITUENTID
)
select
T.c.value('GUESTCONSTITUENTID[1]', 'uniqueidentifier')
from
@REGISTRANTMAPPINGS.nodes('/REGISTRANTMAPPINGS/ITEM') T(c)
where
not exists(select ID from dbo.CONSTITUENT where CONSTITUENT.ID = T.c.value('GUESTCONSTITUENTID[1]', 'uniqueidentifier'))
and
T.c.value('GUESTCONSTITUENTID[1]', 'uniqueidentifier') <> @UNKNOWNGUESTWELLKNOWNGUID;
declare NEWCONSTITUENTCURSOR cursor local fast_forward for
select CONSTITUENTID from @NEWCONSTITUENTS;
declare @NEWCONSTITUENTID uniqueidentifier;
open NEWCONSTITUENTCURSOR;
fetch next from NEWCONSTITUENTCURSOR into @NEWCONSTITUENTID;
while @@FETCH_STATUS = 0
begin
exec dbo.USP_REVENUEBATCH_CONSTITUENT_ADD
@NEWCONSTITUENTID OUTPUT,
@CHANGEAGENTID,
@NEWCONSTITUENTID;
exec dbo.USP_REVENUEBATCH_CONSTITUENT_DELETE @NEWCONSTITUENTID, @CHANGEAGENTID;
fetch next from NEWCONSTITUENTCURSOR into @NEWCONSTITUENTID;
end
deallocate NEWCONSTITUENTCURSOR
-- Alter @REGISTRANTMAPPINGS and @PACKAGEREGISTRATIONS to look like an add instead of an edit
set @REGISTRANTMAPPINGS =
(
select
T.c.query('*[local-name()!="REGISTRANTREGISTRATIONMAPS"
and local-name()!="REGISTRANTPACKAGEID"
and local-name()!="PREFERENCES"
and local-name()!="EVENTID"
and local-name()!="EVENTPRICEID"]
'),
'00000000-0000-0000-0000-000000000000' [REGISTRANTPACKAGEID],
coalesce(T.c.value('EVENTID[1]', 'uniqueidentifier'), '00000000-0000-0000-0000-000000000000') [EVENTID],
coalesce(T.c.value('EVENTPRICEID[1]', 'uniqueidentifier'), '00000000-0000-0000-0000-000000000000') [EVENTPRICEID],
(
select
TInner.c.query('*[local-name()!="REGISTRANTPREFERENCEID"]')
from
T.c.nodes('PREFERENCES/ITEM') TInner(c)
for xml path('ITEM'), type
) [PREFERENCES],
T.c.value('BATCHREVENUEREGISTRANTID[1]', 'uniqueidentifier') [BATCHREVENUEREGISTRANTID]
from
@REGISTRANTMAPPINGS.nodes('/REGISTRANTMAPPINGS/ITEM') T(c)
for xml path('ITEM'), root('REGISTRANTMAPPINGS'), type
);
set @PACKAGEREGISTRATIONS =
(
select
T.c.query('*[local-name()!="PACKAGEREGISTRANTREGISTRATIONS"]'),
(
select
TInner.c.query('*[local-name()!="PACKAGEREGISTRANTREGISTRATIONID"]')
from
T.c.nodes('PACKAGEREGISTRANTREGISTRATIONS/ITEM') TInner(c)
for xml path('ITEM'), type
) [PACKAGEREGISTRANTREGISTRATIONS]
from
@PACKAGEREGISTRATIONS.nodes('/PACKAGEREGISTRATIONS/ITEM') T(c)
for xml path('ITEM'), root('PACKAGEREGISTRATIONS'), type
);
declare @PACKAGESPRICES xml;
--JamesWill WI147843 2011-07-06 Pull in multi-level event prices
set @PACKAGESPRICES = dbo.UFN_REGISTRATIONPACKAGE_GETPACKAGESPRICES_3_TOITEMLISTXML(@EVENTID, @MAINEVENTID, @CURRENTAPPUSERID);
--Add REGISTRANT record
exec dbo.USP_REGISTRANT_UNIFIEDUPDATE
@ID = @APPLICATIONID output,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@SECURITYCONTEXTFORMINSTANCEID = 'CC548990-BB24-4BC9-B39F-A8EA5D574C27', --RevenueBatchCommitDataForm.Add.xml dataform instance ID
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CREATIONDATE,
@EVENTID = @EVENTID,
@CONSTITUENTID = @REGISTRANTCONSTITUENTID,
@DATEPURCHASED = @DATEPURCHASED,
@PACKAGEREGISTRATIONS = @PACKAGEREGISTRATIONS,
@PACKAGESPRICES = @PACKAGESPRICES,
@SINGLEEVENTREGISTRATIONS = @SINGLEEVENTREGISTRATIONS,
@WAIVEBENEFITS = @WAIVEBENEFITS,
@REGISTRANTMAPPINGS = @REGISTRANTMAPPINGS,
@DELETEDREGISTRANTREGISTRATIONMAPS = NULL,
@BYPASSSECURITY = 1, --Don't check security from batch - if user had rights to add to revenue streams, allow them to commit
@ISWALKIN = @ISWALKIN;
--Delete BATCHREVENUEREGISTRANT record
exec dbo.USP_REVENUEBATCH_REGISTRANT_DELETE @BATCHREVENUEREGISTRANTID=@APPLICATIONID, @CHANGEAGENTID=@CHANGEAGENTID;
end
else
begin
update dbo.BATCHREVENUEAPPLICATION
set
REGISTRANTID = REGISTRANT.ID,
BATCHREVENUEREGISTRANTID = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = getdate()
from
dbo.BATCHREVENUEREGISTRANT
inner join
dbo.REGISTRANT on REGISTRANT.EVENTID = BATCHREVENUEREGISTRANT.EVENTID
and REGISTRANT.CONSTITUENTID = @REGISTRANTCONSTITUENTID
inner join
BATCHREVENUEAPPLICATION on BATCHREVENUEAPPLICATION.BATCHREVENUEREGISTRANTID = BATCHREVENUEREGISTRANT.ID
and BATCHREVENUEAPPLICATION.BATCHREVENUEID = @TRANSACTIONID;
end
-- REGISTRANT.ID may not be @APPLICATIONID when registration was added by a multi-component event registration
select
@REGISTRANTID = REGISTRANT.ID
from
dbo.BATCHREVENUEREGISTRANT
inner join dbo.REGISTRANT on
BATCHREVENUEREGISTRANT.EVENTID = REGISTRANT.EVENTID
and @REGISTRANTCONSTITUENTID = REGISTRANT.CONSTITUENTID
where
BATCHREVENUEREGISTRANT.ID = @APPLICATIONID;
end
exec dbo.USP_EVENT_ADDPAYMENT
@REVENUEID = @REVENUEID,
@APPLICATIONID = @REGISTRANTID,
@APPLIEDAMOUNT = @APPLIEDAMOUNT,
@CREATIONDATE = @CREATIONDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
set @TOTALAMOUNTAPPLIED = @TOTALAMOUNTAPPLIED + @APPLIEDAMOUNT;
end
if @APPLICATIONTYPE = 5 --Membership
begin
declare @MEMBERSHIPS xml;
set @MEMBERSHIPS =
(
select
T.c.query('./MEMBERSHIPS/ITEM')
from @REVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') T(c)
where T.c.value('(APPLICATIONID)[1]','uniqueidentifier') = @APPLICATIONID
for xml raw('MEMBERSHIPFIELDS'), type, elements, binary base64)
exec dbo.USP_MEMBERSHIP_ADDPAYMENT
@REVENUEID = @REVENUEID,
@CONSTITUENTID = @CONSTITUENTID,
@MEMBERSHIPID = @APPLICATIONID,
@AMOUNT = @APPLIEDAMOUNT,
@TRANSACTIONDATE = @DATE,
@MEMBERSHIPS = @MEMBERSHIPS,
@CREATIONDATE = @CREATIONDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
set @TOTALAMOUNTAPPLIED = @TOTALAMOUNTAPPLIED + @APPLIEDAMOUNT;
end
fetch next from APPLICATIONSCURSOR into @APPLICATIONID, @APPLIEDAMOUNT, @APPLICATIONTYPE, @OVERPAYMENTAPPLICATIONTYPECODE;
end
if @SHOULDDEFAULTRECEIPTTYPECODE = 1 and (@SPLITAPPLICATIONCODE = 2 or @SPLITAPPLICATIONCODE = 3)
begin
-- If at least one per payment preference exists, this revenue must be per payment.
if @PERPAYMENTPREFERENCEEXISTS = 1
update dbo.REVENUE_EXT
set RECEIPTTYPECODE = 0, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CREATIONDATE
where ID = @REVENUEID;
-- Otherwise all splits preferences were consolidated.
else
update dbo.REVENUE_EXT
set RECEIPTTYPECODE = 1, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CREATIONDATE
where ID = @REVENUEID;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close APPLICATIONSCURSOR;
deallocate APPLICATIONSCURSOR;
set @SPLITSDECLININGGIFTAID = ( select
REVENUESPLITID
from @SPLITSGIFTAIDINFOTBL
where DECLINESGIFTAID = 1
for xml raw('ITEM'),type,elements,root('SPLITSDECLININGGIFTAID'),BINARY BASE64)
set @COVENANTGIFTSPLITS = ( select
REVENUESPLITID
from @SPLITSGIFTAIDINFOTBL
where ISCOVENANT = 1
for xml raw('ITEM'),type,elements,root('COVENANTGIFTSPLITS'),BINARY BASE64)