USP_REVENUEBATCH_ADDRECOGNITIONSANDSOLICITORS
Add recognitions and solicitors for a revenue batch row that are linked to applications.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHREVENUEID | uniqueidentifier | IN | |
@APPLICATIONRECOGNITIONS | xml | IN | |
@APPLICATIONSOLICITORS | xml | IN | |
@SPLITS | xml | IN | |
@APPLICATIONTYPECODE | tinyint | IN | |
@ADDITIONALAPPLICATIONS | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEBATCH_ADDRECOGNITIONSANDSOLICITORS
(
@BATCHREVENUEID uniqueidentifier,
@APPLICATIONRECOGNITIONS xml,
@APPLICATIONSOLICITORS xml,
@SPLITS xml,
@APPLICATIONTYPECODE tinyint,
@ADDITIONALAPPLICATIONS xml,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CURRENTDATE is null
set @CURRENTDATE = getdate();
declare @ADDITIONALAPPLICATIONTABLE table
(
TYPECODE tinyint,
DESIGNATIONID uniqueidentifier,
DECLINESGIFTAID bit,
SPONSORSHIPID uniqueidentifier
);
if @SPLITS is not null
begin
insert into @ADDITIONALAPPLICATIONTABLE(TYPECODE, DESIGNATIONID, DECLINESGIFTAID, SPONSORSHIPID)
select
@APPLICATIONTYPECODE,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier') SPONSORSHIPID
from
@SPLITS.nodes('/SPLITS/ITEM') T(c);
end
else if @ADDITIONALAPPLICATIONS is not null
begin
insert into @ADDITIONALAPPLICATIONTABLE(TYPECODE, DESIGNATIONID, DECLINESGIFTAID, SPONSORSHIPID)
select
T.c.value('(TYPECODE)[1]','tinyint') TYPECODE,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier') SPONSORSHIPID
from
@ADDITIONALAPPLICATIONS.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c);
end
declare @ADDITIONALAPPLICATIONTYPECODE tinyint;
declare @ADDITIONALAPPLICATIONDESIGNATIONID uniqueidentifier;
declare @ADDITIONALAPPLICATIONDECLINESGIFTAID bit;
declare @ADDITIONALAPPLICATIONSPONSORSHIPID uniqueidentifier;
declare @RECOGNITIONS xml;
declare @SOLICITORS xml;
if @APPLICATIONRECOGNITIONS is not null
begin
declare RECOGNITIONSCURSOR cursor local fast_forward for
select
T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]', 'tinyint') as ADDITIONALAPPLICATIONTYPECODE,
T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]', 'uniqueidentifier') as ADDITIONALAPPLICATIONDESIGNATIONID,
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 ADDITIONALAPPLICATIONDECLINESGIFTAID,
case
when T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]', 'uniqueidentifier') = '00000000-0000-0000-0000-000000000000' then
null
else
T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]', 'uniqueidentifier')
end as ADDITIONALAPPLICATIONSPONSORSHIPID
from
@APPLICATIONRECOGNITIONS.nodes('/APPLICATIONRECOGNITIONS/ITEM') T(c)
inner join
@ADDITIONALAPPLICATIONTABLE AAT on
AAT.DESIGNATIONID = T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]', 'uniqueidentifier')
and AAT.TYPECODE = T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]', 'tinyint')
and AAT.DECLINESGIFTAID = T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]', 'bit')
and coalesce(AAT.SPONSORSHIPID, '00000000-0000-0000-0000-000000000000') = coalesce(T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]', 'uniqueidentifier'), '00000000-0000-0000-0000-000000000000');
open RECOGNITIONSCURSOR;
fetch next from RECOGNITIONSCURSOR into @ADDITIONALAPPLICATIONTYPECODE, @ADDITIONALAPPLICATIONDESIGNATIONID, @RECOGNITIONS,
@ADDITIONALAPPLICATIONDECLINESGIFTAID, @ADDITIONALAPPLICATIONSPONSORSHIPID;
while @@FETCH_STATUS = 0
begin
insert into dbo.BATCHREVENUERECOGNITION
(
BATCHREVENUEID,
AMOUNT,
CONSTITUENTID,
EFFECTIVEDATE,
ID,
REVENUERECOGNITIONTYPECODEID,
ADDITIONALAPPLICATIONTYPECODE,
ADDITIONALAPPLICATIONDESIGNATIONID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
REVENUERECOGNITIONID,
ADDITIONALAPPLICATIONDECLINESGIFTAID,
ADDITIONALAPPLICATIONSPONSORSHIPID
)
select
@BATCHREVENUEID,
T.c.value('(AMOUNT)[1]', 'money'),
T.c.value('(CONSTITUENTID)[1]', 'uniqueidentifier'),
T.c.value('(EFFECTIVEDATE)[1]', 'datetime'),
coalesce(nullif(T.c.value('(ID)[1]', 'uniqueidentifier'),'00000000-0000-0000-0000-000000000000'), newid()) ID,
T.c.value('(REVENUERECOGNITIONTYPECODEID)[1]', 'uniqueidentifier'),
@ADDITIONALAPPLICATIONTYPECODE,
@ADDITIONALAPPLICATIONDESIGNATIONID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
T.c.value('(REVENUERECOGNITIONID)[1]', 'uniqueidentifier'),
coalesce(@ADDITIONALAPPLICATIONDECLINESGIFTAID, 0),
@ADDITIONALAPPLICATIONSPONSORSHIPID
from
@RECOGNITIONS.nodes('/RECOGNITIONS/ITEM') T(c)
where T.c.value('(AMOUNT)[1]','money') <> 0.0
or (
T.c.value('(AMOUNT)[1]', 'money') = 0.0
and not exists (
select 1
from dbo.BATCHREVENUERECOGNITION
where
CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]', 'uniqueidentifier')
and AMOUNT <> 0.00
)
);
fetch next from RECOGNITIONSCURSOR into @ADDITIONALAPPLICATIONTYPECODE, @ADDITIONALAPPLICATIONDESIGNATIONID, @RECOGNITIONS,
@ADDITIONALAPPLICATIONDECLINESGIFTAID, @ADDITIONALAPPLICATIONSPONSORSHIPID;
end
close RECOGNITIONSCURSOR;
deallocate RECOGNITIONSCURSOR;
end
if @APPLICATIONSOLICITORS is not null
begin
declare SOLICITORSCURSOR cursor local fast_forward for
select
T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]', 'tinyint') as ADDITIONALAPPLICATIONTYPECODE,
T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]', 'uniqueidentifier') as ADDITIONALAPPLICATIONDESIGNATIONID,
case
when T.c.exist('./SOLICITORS/ITEM') = 1 then
T.c.query('(SOLICITORS)[1]')
else
null
end as SOLICITORS,
T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]', 'bit') as ADDITIONALAPPLICATIONDECLINESGIFTAID,
case
when T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]', 'uniqueidentifier') = '00000000-0000-0000-0000-000000000000' then
null
else
T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]', 'uniqueidentifier') end as ADDITIONALAPPLICATIONSPONSORSHIPID
from
@APPLICATIONSOLICITORS.nodes('/APPLICATIONSOLICITORS/ITEM') T(c)
inner join @ADDITIONALAPPLICATIONTABLE AAT on
AAT.DESIGNATIONID = T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]', 'uniqueidentifier')
and AAT.TYPECODE = T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]', 'tinyint')
and AAT.DECLINESGIFTAID = T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]', 'bit')
and coalesce(AAT.SPONSORSHIPID, '00000000-0000-0000-0000-000000000000') = coalesce(T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]', 'uniqueidentifier'), '00000000-0000-0000-0000-000000000000');
open SOLICITORSCURSOR
fetch next from SOLICITORSCURSOR into @ADDITIONALAPPLICATIONTYPECODE, @ADDITIONALAPPLICATIONDESIGNATIONID, @SOLICITORS,
@ADDITIONALAPPLICATIONDECLINESGIFTAID,@ADDITIONALAPPLICATIONSPONSORSHIPID;
while @@FETCH_STATUS = 0
begin
insert into dbo.BATCHREVENUESOLICITOR
(
BATCHREVENUEID,
AMOUNT,
CONSTITUENTID,
ID,
ADDITIONALAPPLICATIONTYPECODE,
ADDITIONALAPPLICATIONDESIGNATIONID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
REVENUESOLICITORID,
ADDITIONALAPPLICATIONDECLINESGIFTAID,
ADDITIONALAPPLICATIONSPONSORSHIPID
)
select
@BATCHREVENUEID,
T.c.value('(AMOUNT)[1]', 'money'),
T.c.value('(CONSTITUENTID)[1]', 'uniqueidentifier'),
coalesce(nullif(T.c.value('(ID)[1]', 'uniqueidentifier'),'00000000-0000-0000-0000-000000000000'), newid()) ID,
@ADDITIONALAPPLICATIONTYPECODE,
@ADDITIONALAPPLICATIONDESIGNATIONID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
T.c.value('(REVENUESOLICITORID)[1]', 'uniqueidentifier'),
coalesce(@ADDITIONALAPPLICATIONDECLINESGIFTAID, 0),
@ADDITIONALAPPLICATIONSPONSORSHIPID
from
@SOLICITORS.nodes('/SOLICITORS/ITEM') T(c);
fetch next from SOLICITORSCURSOR into @ADDITIONALAPPLICATIONTYPECODE, @ADDITIONALAPPLICATIONDESIGNATIONID, @SOLICITORS,
@ADDITIONALAPPLICATIONDECLINESGIFTAID, @ADDITIONALAPPLICATIONSPONSORSHIPID;
end
close SOLICITORSCURSOR;
deallocate SOLICITORSCURSOR;
end
return 0;
end