UFN_REVENUEUPDATEBATCH_GETRECOGNITIONSXML
Extracts the recognitions and puts it in the correct xml format
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHREVENUEID | uniqueidentifier | IN | |
@APPLICATIONRECOGNITIONS | xml | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUEUPDATEBATCH_GETRECOGNITIONSXML
(
@BATCHREVENUEID uniqueidentifier,
@APPLICATIONRECOGNITIONS xml
)
returns xml
with execute as caller
as begin
declare @APPLICATIONCODE tinyint
declare @DESIGNATIONID uniqueidentifier
declare @DECLINESGIFTAID bit
declare @APPLICATIONID uniqueidentifier
declare @REVENUESPLITID uniqueidentifier
declare @RECOGNITIONS xml
declare @SPONSORSHIPID uniqueidentifier
declare @RECOGNITIONSTABLE table
(
APPLICATIONCODE tinyint,
DESIGNATIONID uniqueidentifier,
APPLICATIONID uniqueidentifier,
RECOGNITIONS xml,
DECLINESGIFTAID bit,
SPONSORSHIPID uniqueidentifier
)
declare @RECOGNITION table
(
ID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
AMOUNT money,
EFFECTIVEDATE datetime,
REVENUERECOGNITIONTYPECODEID uniqueidentifier,
REVENUERECOGNITIONID uniqueidentifier,
REVENUESPLITID uniqueidentifier,
APPLICATIONCODE tinyint,
DESIGNATIONID uniqueidentifier,
APPLICATIONID uniqueidentifier,
DECLINESGIFTAID bit,
RECOGNITIONCREDITFKID uniqueidentifier,
DONORCHALLENGERECOGNITIONTYPECODE tinyint,
RECOGNITIONCREDITDESIGNATIONID uniqueidentifier,
SPONSORSHIPID uniqueidentifier
)
insert into @RECOGNITIONSTABLE(APPLICATIONCODE, DESIGNATIONID,APPLICATIONID, RECOGNITIONS, DECLINESGIFTAID, SPONSORSHIPID)
select T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]','tinyint') as APPLICATIONCODE,
T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as DESIGNATIONID,
T.c.value('(APPLICATIONID)[1]','uniqueidentifier') as APPLICATIONID,
case when T.c.exist('./RECOGNITIONS/ITEM') = 1 then T.c.query('(RECOGNITIONS)[1]') else null end as RECOGNITIONS,
T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]','bit') as DECLINESGIFTAID,
T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]','uniqueidentifier') as SPONSORSHIPID
from @APPLICATIONRECOGNITIONS.nodes('/APPLICATIONRECOGNITIONS/ITEM') T(c)
declare RECOGNITIONSCURSOR cursor local fast_forward for
select APPLICATIONCODE, RT.DESIGNATIONID, RT.APPLICATIONID, APPS.REVENUESPLITID, RECOGNITIONS, RT.DECLINESGIFTAID, RT.SPONSORSHIPID
from @RECOGNITIONSTABLE RT
left outer join dbo.BATCHREVENUEADDITIONALAPPLICATIONS APPS on
APPS.TYPECODE = RT.APPLICATIONCODE and
APPS.DESIGNATIONID = RT.DESIGNATIONID and
APPS.DECLINESGIFTAID = RT.DECLINESGIFTAID and
coalesce(APPS.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') = coalesce(RT.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') and
APPS.BATCHREVENUEID = @BATCHREVENUEID
open RECOGNITIONSCURSOR
fetch next from RECOGNITIONSCURSOR into @APPLICATIONCODE, @DESIGNATIONID, @APPLICATIONID, @REVENUESPLITID, @RECOGNITIONS, @DECLINESGIFTAID, @SPONSORSHIPID
while @@FETCH_STATUS = 0
begin
insert into @RECOGNITION(ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, REVENUERECOGNITIONID, APPLICATIONCODE, DESIGNATIONID, APPLICATIONID, REVENUESPLITID, DECLINESGIFTAID, RECOGNITIONCREDITFKID, DONORCHALLENGERECOGNITIONTYPECODE, RECOGNITIONCREDITDESIGNATIONID, SPONSORSHIPID)
select T.c.value('(ID)[1]','uniqueidentifier') as 'ID',
T.c.value('(CONSTITUENTID)[1]','uniqueidentifier') as 'CONSTITUENTID',
T.c.value('(AMOUNT)[1]','money') as 'AMOUNT',
T.c.value('(EFFECTIVEDATE)[1]','datetime') as 'EFFECTIVEDATE',
T.c.value('(REVENUERECOGNITIONTYPECODEID)[1]','uniqueidentifier') as 'REVENUERECOGNITIONTYPECODEID',
T.c.value('(REVENUERECOGNITIONID)[1]','uniqueidentifier') as 'REVENUERECOGNITIONID',
@APPLICATIONCODE as APPLICATIONCODE,
@DESIGNATIONID as DESIGNATIONID,
@APPLICATIONID as APPLICATIONID,
@REVENUESPLITID as REVENUESPLITID,
@DECLINESGIFTAID as DECLINESGIFTAID,
T.c.value('(RECOGNITIONCREDITFKID)[1]','uniqueidentifier') as RECOGNITIONCREDITFKID,
coalesce(T.c.value('(DONORCHALLENGERECOGNITIONTYPECODE)[1]','tinyint'), 0) as DONORCHALLENGERECOGNITIONTYPECODE,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') as RECOGNITIONCREDITDESIGNATIONID,
@SPONSORSHIPID as SPONSORSHIPID
from @RECOGNITIONS.nodes('/RECOGNITIONS/ITEM') T(c);
fetch next from RECOGNITIONSCURSOR into @APPLICATIONCODE, @DESIGNATIONID, @APPLICATIONID, @REVENUESPLITID, @RECOGNITIONS, @DECLINESGIFTAID, @SPONSORSHIPID
end
close RECOGNITIONSCURSOR
deallocate RECOGNITIONSCURSOR
set @RECOGNITIONS =
(
select ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID,
REVENUERECOGNITIONID, APPLICATIONCODE, DESIGNATIONID, APPLICATIONID, REVENUESPLITID,
DECLINESGIFTAID,
RECOGNITIONCREDITFKID, DONORCHALLENGERECOGNITIONTYPECODE, RECOGNITIONCREDITDESIGNATIONID,
SPONSORSHIPID
from @RECOGNITION
for xml raw('ITEM'),type,elements,root('RECOGNITIONS'),binary base64
);
return @RECOGNITIONS
end