UFN_REVENUEUPDATEBATCH_GETAPPLICATIONS
Returns all applications for a given update revenue batch record.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHREVENUEID | uniqueidentifier | IN | |
@SPLITS | xml | IN | |
@REVENUESTREAMS | xml | IN | |
@APPEALID | uniqueidentifier | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@RECOGNITIONS | xml | IN | |
@SOLICITORS | xml | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUEUPDATEBATCH_GETAPPLICATIONS
(
@BATCHREVENUEID uniqueidentifier,
@SPLITS xml,
@REVENUESTREAMS xml,
@APPEALID uniqueidentifier,
@CATEGORYCODEID uniqueidentifier,
@RECOGNITIONS xml,
@SOLICITORS xml
)
returns @RESULT table
(
ID uniqueidentifier,
APPLICATIONID uniqueidentifier,
APPLICATIONCODE tinyint,
APPLIED money,
BALANCE money,
AMOUNTDUE money,
DATEDUE datetime,
TYPECODE tinyint,
APPLICATIONTRANSACTIONTYPECODE tinyint,
DESCRIPTION nvarchar(255),
GIFTFIELDS xml,
OTHERFIELDS xml,
MEMBERSHIPFIELDS xml,
DECLINESGIFTAID bit default 0,
GIFTAIDCOMMITTED bit default 0,
ISGIFTAIDSPONSORSHIP bit default 0,
CATEGORYCODEID uniqueidentifier
)
as
begin
--DONATIONS
insert into @RESULT
(
ID,
APPLICATIONCODE,
APPLIED,
TYPECODE,
GIFTFIELDS,
DECLINESGIFTAID,
GIFTAIDCOMMITTED,
ISGIFTAIDSPONSORSHIP
)
select
coalesce(APPS.REVENUESPLITID, '00000000-0000-0000-0000-000000000000') as ID,
0 as APPLICATIONCODE,
APPS.APPLIED,
case APPS.TYPECODE when 3 then 9 else 0 end as TYPECODE,
(select
APPS.OPPORTUNITYID,
@APPEALID as APPEALID,
APPS.DESIGNATIONID,
case when @SPLITS.exist('(/ADDITIONALAPPLICATIONSSTREAM/ITEM/CATEGORYCODEID)') = 0 then @CATEGORYCODEID else APPS.CATEGORYCODEID end as CATEGORYCODEID,
(select
CAMP.REVENUESPLITCAMPAIGNID as ID,
CAMP.CAMPAIGNID,
CAMP.CAMPAIGNSUBPRIORITYID
from dbo.UFN_REVENUEBATCH_GETSPLITCAMPAIGNS_FROMITEMLISTXML(CAMPAIGNS) CAMP
for xml raw('ITEM'),type,elements,BINARY BASE64) as CAMPAIGNS,
(select
SOL.REVENUESOLICITORID as ID,
SOL.CONSTITUENTID,
SOL.AMOUNT,
SOL.SEQUENCE
from dbo.UFN_REVENUEUPDATEBATCH_GETSOLICITORSFOREDIT_FROMITEMLISTXML(@SOLICITORS) SOL
where (SOL.APPLICATIONCODE = APPS.TYPECODE and SOL.DESIGNATIONID = APPS.DESIGNATIONID
and SOL.DECLINESGIFTAID = APPS.DECLINESGIFTAID
and coalesce(SOL.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') = coalesce(APPS.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000'))
for xml raw('ITEM'),type,elements,BINARY BASE64) SOLICITORS,
(select
RECS.ID,
RECS.CONSTITUENTID,
RECS.REVENUERECOGNITIONTYPECODEID,
RECS.EFFECTIVEDATE,
RECS.AMOUNT,
RECS.DESIGNATIONID as DESIGNATIONID,
RECS.RECOGNITIONCREDITFKID as RECOGNITIONCREDITFKID,
RECS.DONORCHALLENGERECOGNITIONTYPECODE as DONORCHALLENGERECOGNITIONTYPECODE
FROM
(select -- existing recognitions
REC.REVENUERECOGNITIONID as ID,
REC.CONSTITUENTID,
REC.REVENUERECOGNITIONTYPECODEID,
REC.EFFECTIVEDATE,
REC.AMOUNT as AMOUNT,
REC.RECOGNITIONCREDITDESIGNATIONID as DESIGNATIONID,
REC.RECOGNITIONCREDITFKID as RECOGNITIONCREDITFKID,
REC.DONORCHALLENGERECOGNITIONTYPECODE as DONORCHALLENGERECOGNITIONTYPECODE
from dbo.UFN_REVENUEUPDATEBATCH_GETRECOGNITIONSFOREDIT_FROMITEMLISTXML(@RECOGNITIONS) REC
where (REC.REVENUESPLITID is not null and REC.REVENUESPLITID = APPS.REVENUESPLITID) or
(REC.APPLICATIONCODE = APPS.TYPECODE and REC.DESIGNATIONID = APPS.DESIGNATIONID
and coalesce(REC.DECLINESGIFTAID,'0') = coalesce(APPS.DECLINESGIFTAID,'0')
and coalesce(REC.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') = coalesce(APPS.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000'))
union all
select -- default recognitions
null as ID,
BR.CONSTITUENTID,
null as REVENUERECOGNITIONTYPECODEID,
BR.DATE as EFFECTIVEDATE,
APPS.APPLIED as AMOUNT,
null as DESIGNATIONID,
null as RECOGNITIONCREDITFKID,
0 as DONORCHALLENGERECOGNITIONTYPECODE
from BATCHREVENUEADDITIONALAPPLICATIONS BRAA
inner join dbo.BATCHREVENUE BR on BR.ID = BRAA.BATCHREVENUEID
where BRAA.ID = APPS.ID
and BRAA.REVENUESPLITID is null
and not exists (select 'x' from dbo.BATCHREVENUERECOGNITION BRR
where BRR.ADDITIONALAPPLICATIONTYPECODE = BRAA.TYPECODE
and BRR.ADDITIONALAPPLICATIONDESIGNATIONID = BRAA.DESIGNATIONID)
) RECS
for xml raw('ITEM'),type,elements,BINARY BASE64) RECOGNITIONS,
case APPS.TYPECODE when 3 then 17 else 0 end as REVENUETYPECODE
for xml raw('ITEM'),type,elements,BINARY BASE64) GIFTFIELDS,
APPS.DECLINESGIFTAID,
case when REVENUESPLITGIFTAID.TAXCLAIMNUMBER <> '' then 1 else 0 end,
APPS.ISGIFTAIDSPONSORSHIP
from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_FROMITEMLISTXML(@SPLITS) APPS
left join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = APPS.ID
where APPS.TYPECODE in (0, 3)
--OTHER
insert into @RESULT
(
ID,
APPLICATIONCODE,
APPLIED,
TYPECODE,
OTHERFIELDS
)
select
coalesce(APPS.REVENUESPLITID, '00000000-0000-0000-0000-000000000000') as ID,
4 as APPLICATIONCODE,
APPS.APPLIED,
4 as TYPECODE,
(select
APPS.OTHERTYPECODEID,
@APPEALID as APPEALID,
APPS.DESIGNATIONID,
case when @SPLITS.exist('(/ADDITIONALAPPLICATIONSSTREAM/ITEM/CATEGORYCODEID)') = 0 then @CATEGORYCODEID else APPS.CATEGORYCODEID end as CATEGORYCODEID,
(select
CAMP.REVENUESPLITCAMPAIGNID as ID,
CAMP.CAMPAIGNID,
CAMP.CAMPAIGNSUBPRIORITYID
from dbo.UFN_REVENUEBATCH_GETSPLITCAMPAIGNS_FROMITEMLISTXML(CAMPAIGNS) CAMP
for xml raw('ITEM'),type,elements,BINARY BASE64) as CAMPAIGNS,
(select
SOL.REVENUESOLICITORID as ID,
SOL.CONSTITUENTID,
SOL.AMOUNT,
SOL.SEQUENCE
from dbo.UFN_REVENUEUPDATEBATCH_GETSOLICITORSFOREDIT_FROMITEMLISTXML(@SOLICITORS) SOL
where (SOL.APPLICATIONCODE = APPS.TYPECODE and SOL.DESIGNATIONID = APPS.DESIGNATIONID)
for xml raw('ITEM'),type,elements,BINARY BASE64) SOLICITORS,
(select
RECS.ID,
RECS.CONSTITUENTID,
RECS.REVENUERECOGNITIONTYPECODEID,
RECS.EFFECTIVEDATE,
RECS.AMOUNT,
RECS.DESIGNATIONID as DESIGNATIONID,
RECS.RECOGNITIONCREDITFKID as RECOGNITIONCREDITFKID,
RECS.DONORCHALLENGERECOGNITIONTYPECODE as DONORCHALLENGERECOGNITIONTYPECODE
FROM
(select -- existing recognitions
REC.REVENUERECOGNITIONID as ID,
REC.CONSTITUENTID,
REC.REVENUERECOGNITIONTYPECODEID,
REC.EFFECTIVEDATE,
REC.AMOUNT as AMOUNT,
REC.RECOGNITIONCREDITDESIGNATIONID as DESIGNATIONID,
REC.RECOGNITIONCREDITFKID as RECOGNITIONCREDITFKID,
REC.DONORCHALLENGERECOGNITIONTYPECODE as DONORCHALLENGERECOGNITIONTYPECODE
from dbo.UFN_REVENUEUPDATEBATCH_GETRECOGNITIONSFOREDIT_FROMITEMLISTXML(@RECOGNITIONS) REC
where (REC.REVENUESPLITID is not null and REC.REVENUESPLITID = APPS.REVENUESPLITID) or
(REC.APPLICATIONCODE = APPS.TYPECODE and REC.DESIGNATIONID = APPS.DESIGNATIONID)
union all
select -- default recognitions
null as ID,
BR.CONSTITUENTID,
null as REVENUERECOGNITIONTYPECODEID,
BR.DATE as EFFECTIVEDATE,
APPS.APPLIED as AMOUNT,
null as DESIGNATIONID,
null as RECOGNITIONCREDITFKID,
0 as DONORCHALLENGERECOGNITIONTYPECODE
from BATCHREVENUEADDITIONALAPPLICATIONS BRAA
inner join dbo.BATCHREVENUE BR on BR.ID = BRAA.BATCHREVENUEID
where BRAA.ID = APPS.ID
and BRAA.REVENUESPLITID is null
and not exists (select 'x' from dbo.BATCHREVENUERECOGNITION BRR
where BRR.ADDITIONALAPPLICATIONTYPECODE = BRAA.TYPECODE
and BRR.ADDITIONALAPPLICATIONDESIGNATIONID = BRAA.DESIGNATIONID)
) RECS
for xml raw('ITEM'),type,elements,BINARY BASE64) RECOGNITIONS
for xml raw('ITEM'),type,elements,BINARY BASE64) OTHERFIELDS
from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_FROMITEMLISTXML(@SPLITS) APPS
where TYPECODE = 1
--UNAPPLIED MATCHING GIFTS
insert into @RESULT
(
ID,
APPLICATIONCODE,
APPLIED,
TYPECODE,
GIFTFIELDS
)
select
APPS.REVENUESPLITID as ID,
100,
APPS.APPLIED,
7 as [TYPECODE],
(select
@APPEALID as APPEALID,
APPS.DESIGNATIONID,
case when @SPLITS.exist('(/ADDITIONALAPPLICATIONSSTREAM/ITEM/CATEGORYCODEID)') = 0 then @CATEGORYCODEID else APPS.CATEGORYCODEID end as CATEGORYCODEID,
(select
CAMP.REVENUESPLITCAMPAIGNID as ID,
CAMP.CAMPAIGNID,
CAMP.CAMPAIGNSUBPRIORITYID
from dbo.UFN_REVENUEBATCH_GETSPLITCAMPAIGNS_FROMITEMLISTXML(CAMPAIGNS) CAMP
for xml raw('ITEM'),type,elements,BINARY BASE64) as CAMPAIGNS,
(select
SOL.REVENUESOLICITORID as ID,
SOL.CONSTITUENTID,
SOL.AMOUNT,
SOL.SEQUENCE
from dbo.UFN_REVENUEUPDATEBATCH_GETSOLICITORSFOREDIT_FROMITEMLISTXML(@SOLICITORS) SOL
where (SOL.APPLICATIONCODE = APPS.TYPECODE and SOL.DESIGNATIONID = APPS.DESIGNATIONID)
for xml raw('ITEM'),type,elements,BINARY BASE64) SOLICITORS,
(select
RECS.ID,
RECS.CONSTITUENTID,
RECS.REVENUERECOGNITIONTYPECODEID,
RECS.EFFECTIVEDATE,
RECS.AMOUNT,
RECS.DESIGNATIONID as DESIGNATIONID,
RECS.RECOGNITIONCREDITFKID as RECOGNITIONCREDITFKID,
RECS.DONORCHALLENGERECOGNITIONTYPECODE as DONORCHALLENGERECOGNITIONTYPECODE
FROM
(select -- existing recognitions
REC.REVENUERECOGNITIONID as ID,
REC.CONSTITUENTID,
REC.REVENUERECOGNITIONTYPECODEID,
REC.EFFECTIVEDATE,
REC.AMOUNT as AMOUNT,
REC.RECOGNITIONCREDITDESIGNATIONID as DESIGNATIONID,
REC.RECOGNITIONCREDITFKID as RECOGNITIONCREDITFKID,
REC.DONORCHALLENGERECOGNITIONTYPECODE as DONORCHALLENGERECOGNITIONTYPECODE
from dbo.UFN_REVENUEUPDATEBATCH_GETRECOGNITIONSFOREDIT_FROMITEMLISTXML(@RECOGNITIONS) REC
where (REC.REVENUESPLITID is not null and REC.REVENUESPLITID = APPS.REVENUESPLITID) or
(REC.APPLICATIONCODE = APPS.TYPECODE and REC.DESIGNATIONID = APPS.DESIGNATIONID)
union all
select -- default recognitions
null as ID,
BR.CONSTITUENTID,
null as REVENUERECOGNITIONTYPECODEID,
BR.DATE as EFFECTIVEDATE,
APPS.APPLIED as AMOUNT,
null as DESIGNATIONID,
null as RECOGNITIONCREDITFKID,
0 as DONORCHALLENGERECOGNITIONTYPECODE
from BATCHREVENUEADDITIONALAPPLICATIONS BRAA
inner join dbo.BATCHREVENUE BR on BR.ID = BRAA.BATCHREVENUEID
where BRAA.ID = APPS.ID
and BRAA.REVENUESPLITID is null
and not exists (select 'x' from dbo.BATCHREVENUERECOGNITION BRR
where BRR.ADDITIONALAPPLICATIONTYPECODE = BRAA.TYPECODE
and BRR.ADDITIONALAPPLICATIONDESIGNATIONID = BRAA.DESIGNATIONID)
) RECS
for xml raw('ITEM'),type,elements,BINARY BASE64) RECOGNITIONS
for xml raw('ITEM'),type,elements,BINARY BASE64) GIFTFIELDS
from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_FROMITEMLISTXML(@SPLITS) APPS
where TYPECODE = 2
-- applications
insert into @RESULT
(
ID,
APPLICATIONID,
APPLICATIONCODE,
APPLIED,
TYPECODE,
DECLINESGIFTAID,
GIFTAIDCOMMITTED,
MEMBERSHIPFIELDS,
CATEGORYCODEID
)
select
coalesce(T.c.value('(REVENUESPLITID)[1]','uniqueidentifier'), '00000000-0000-0000-0000-000000000000') AS 'REVENUESPLITID',
T.c.value('(APPLICATIONID)[1]','uniqueidentifier') AS 'APPLICATIONID',
(case T.c.value('(TYPECODE)[1]','tinyint')
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
when 33 then 3 -- sponsorship payment handling for single designation payment
else 99
end) as APPLICATIONCODE,
T.c.value('(APPLIED)[1]','money') AS 'APPLIED',
(case T.c.value('(TYPECODE)[1]','tinyint')
when 6 then 1
when 5 then 2
when 2 then (case when T.c.value('(SPONSORSHIPOPPORTUNITY)[1]','nvarchar(300)') is not null then 9 else 0 end)
when 333 then 9 -- handling for single designation payments
else 0
end) as TYPECODE,
REVENUESPLITGIFTAID.DECLINESGIFTAID,
case when REVENUESPLITGIFTAID.TAXCLAIMNUMBER <> '' then 1 else 0 end,
case when T.c.exist('./MEMBERSHIPS/ITEM') = 1 then T.c.query('MEMBERSHIPS/ITEM') else null end AS 'MEMBERSHIPFIELDS',
@CATEGORYCODEID as CATEGORYCODEID
from @REVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') T(c)
left outer join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = T.c.value('(REVENUESPLITID)[1]','uniqueidentifier')
where (T.c.value('(APPLIED)[1]','money') <> 0 or (T.c.value('(APPLIED)[1]','money') = 0 and T.c.value('(REVENUESPLITID)[1]','uniqueidentifier') is not null));
return;
end