USP_REVENUEBATCH_DEFAULTAPPLICATIONRECOGNITIONS_2
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@APPLICATIONRECOGNITIONS | xml | INOUT | |
@ADDITIONALAPPLICATIONSSTREAM | xml | IN | |
@GIVENANONYMOUSLY | bit | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYDECIMALDIGITS | tinyint | IN | |
@BASECURRENCYROUNDINGTYPECODE | tinyint | IN | |
@EXCHANGERATE | decimal(20, 8) | IN | |
@BATCHROWID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_REVENUEBATCH_DEFAULTAPPLICATIONRECOGNITIONS_2
(
@APPLICATIONRECOGNITIONS xml output,
@ADDITIONALAPPLICATIONSSTREAM xml,
@GIVENANONYMOUSLY bit,
@CONSTITUENTID uniqueidentifier,
@DATE datetime,
@BASECURRENCYID uniqueidentifier,
@BASEEXCHANGERATEID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier,
@BASECURRENCYDECIMALDIGITS tinyint,
@BASECURRENCYROUNDINGTYPECODE tinyint,
@EXCHANGERATE decimal(20,8),
@BATCHROWID uniqueidentifier
)
as
begin
declare @TEMPAPPLICATIONRECOGNITIONS table
(
APPLICATIONID uniqueidentifier,
APPLICATIONTYPECODE tinyint,
ADDITIONALAPPLICATIONTYPECODE tinyint,
ADDITIONALAPPLICATIONDESIGNATIONID uniqueidentifier,
APPLICATIONAMOUNT money,
RECOGNITIONS xml,
ADDITIONALAPPLICATIONDECLINESGIFTAID bit,
ADDITIONALAPPLICATIONSPONSORSHIPID uniqueidentifier
);
declare @TEMPADDITIONALAPPLICATIONS table
(
ID uniqueidentifier,
TYPECODE tinyint,
DESIGNATIONID uniqueidentifier,
APPLIED money,
DECLINESGIFTAID bit,
SPONSORSHIPID uniqueidentifier
);
--JamesWill WI166948 2011-07-20 Since @TEMPADDITIONALAPPLICATIONS is used to default recognitions (which should be in base), convert the transaction
--currency from @ADDITIONALAPPLICATIONSSTREAM into base before creating the recognitions
with [TRANSACTIONAPPLICATIONS] as
(
select
T.c.value('(ID)[1]', 'uniqueidentifier') ID,
T.c.value('(TYPECODE)[1]','tinyint') TYPECODE,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
T.c.value('(APPLIED)[1]','money') APPLIED,
T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier') SPONSORSHIPID
from @ADDITIONALAPPLICATIONSSTREAM.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c)
)
insert into @TEMPADDITIONALAPPLICATIONS(ID,TYPECODE,DESIGNATIONID,APPLIED,DECLINESGIFTAID,SPONSORSHIPID)
select
ID,
TYPECODE,
DESIGNATIONID,
case
when @BASECURRENCYID = @TRANSACTIONCURRENCYID then
APPLIED
when @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001' then
dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(APPLIED, @EXCHANGERATE), @BASECURRENCYDECIMALDIGITS, @BASECURRENCYROUNDINGTYPECODE)
else
dbo.UFN_CURRENCY_CONVERT(APPLIED, @BASEEXCHANGERATEID)
end APPLIED,
DECLINESGIFTAID,
SPONSORSHIPID
from [TRANSACTIONAPPLICATIONS]
-- WI# 453232 Patton Hilliard 1/14/15
-- This is the same validation used in USP_REVENUEBATCH_VALIDATEADDITIONALAPPLICATIONS
-- The USP_REVENUEBATCH_VALIDATEADDITIONALAPPLICATIONS is not used in import validation, so a split with the same designation can be created
-- Validating here causes the import to throw an exception indicating matching designations within a split
if (select count(distinct cast(DECLINESGIFTAID as nvarchar(1)) + cast(TYPECODE as nvarchar(1)) + cast(DESIGNATIONID as nvarchar(36)) + cast(isnull(SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') as nvarchar(36))) from @TEMPADDITIONALAPPLICATIONS) <
(select count(cast(DECLINESGIFTAID as nvarchar(1)) + cast(TYPECODE as nvarchar(1)) + cast(DESIGNATIONID as nvarchar(36)) + cast(isnull(SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') as nvarchar(36))) from @TEMPADDITIONALAPPLICATIONS)
begin
raiserror('Duplicate designations cannot be specified for the same application type.', 13, 2);
return 2;
end
declare @RECOGNITIONSDEFAULT_APPLICATIONID uniqueidentifier
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE tinyint
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID uniqueidentifier
declare @RECOGNITIONSDEFAULT_APPLICATIONAMOUNT money
declare @RECOGNITIONSDEFAULT_APPLICATIONDESCRIPTION nvarchar
declare @RECOGNITIONSDEFAULT_COLLECTIONDESCRIPTION nvarchar
declare @RECOGNITIONSDEFAULT_RECOGNITIONS xml
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID bit
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID uniqueidentifier
declare @TEMPRECOGNITIONS xml;
declare ADDITIONALAPPLICATIONS_CURSOR cursor local fast_forward for
select ID, TYPECODE, DESIGNATIONID, APPLIED, DECLINESGIFTAID,SPONSORSHIPID from @TEMPADDITIONALAPPLICATIONS
open ADDITIONALAPPLICATIONS_CURSOR;
fetch next from ADDITIONALAPPLICATIONS_CURSOR into @RECOGNITIONSDEFAULT_APPLICATIONID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID,
@RECOGNITIONSDEFAULT_APPLICATIONAMOUNT,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID;
while @@FETCH_STATUS = 0
begin
select @TEMPRECOGNITIONS =
(
select CONSTITUENTID, REVENUERECOGNITIONTYPECODEID, AMOUNT, @DATE as [EFFECTIVEDATE]
from UFN_REVENUEBATCH_GETRECOGNITIONDEFAULTS_3(@GIVENANONYMOUSLY, @CONSTITUENTID, @RECOGNITIONSDEFAULT_APPLICATIONAMOUNT, @DATE, null,@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE,@RECOGNITIONSDEFAULT_APPLICATIONID,@BATCHROWID) where AMOUNT > 0
for xml raw('ITEM'), type, elements, binary base64
);
insert into @TEMPAPPLICATIONRECOGNITIONS(APPLICATIONID, APPLICATIONTYPECODE, ADDITIONALAPPLICATIONTYPECODE, ADDITIONALAPPLICATIONDESIGNATIONID, APPLICATIONAMOUNT, RECOGNITIONS, ADDITIONALAPPLICATIONDECLINESGIFTAID,ADDITIONALAPPLICATIONSPONSORSHIPID)
values(@RECOGNITIONSDEFAULT_APPLICATIONID, null, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID, @RECOGNITIONSDEFAULT_APPLICATIONAMOUNT, @TEMPRECOGNITIONS, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID);
fetch next from ADDITIONALAPPLICATIONS_CURSOR into @RECOGNITIONSDEFAULT_APPLICATIONID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID,
@RECOGNITIONSDEFAULT_APPLICATIONAMOUNT,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID;
end
close ADDITIONALAPPLICATIONS_CURSOR;
deallocate ADDITIONALAPPLICATIONS_CURSOR;
set @APPLICATIONRECOGNITIONS =
(
select APPLICATIONID, APPLICATIONTYPECODE, ADDITIONALAPPLICATIONTYPECODE,
ADDITIONALAPPLICATIONDESIGNATIONID, APPLICATIONAMOUNT, RECOGNITIONS,
ADDITIONALAPPLICATIONDECLINESGIFTAID,ADDITIONALAPPLICATIONSPONSORSHIPID
from @TEMPAPPLICATIONRECOGNITIONS
for xml raw('ITEM'), type, elements, root('APPLICATIONRECOGNITIONS'), binary base64
);
end