USP_MATCHINGGIFTCLAIM_READD
A stripped down version of USP_MATCHINGGIFTPLEDGE_ADD used when a user chooses to reset the matching gift claims on the edit payment form.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ORIGINALGIFTID | uniqueidentifier | IN | |
@MATCHINGORGANIZATIONID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@AMOUNT | money | IN | |
@SPLITS | xml | IN | |
@MATCHINGGIFTCONDITIONID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_MATCHINGGIFTCLAIM_READD
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier,
@ORIGINALGIFTID uniqueidentifier,
@MATCHINGORGANIZATIONID uniqueidentifier,
@DATE datetime,
@AMOUNT money,
@SPLITS xml,
@MATCHINGGIFTCONDITIONID uniqueidentifier = null,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @SOURCECONSTITUENTID uniqueidentifier;
declare @STARTDATE datetime;
declare @FREQUENCYCODE tinyint;
declare @NUMBEROFINSTALLMENTS int;
declare @INSTALLMENTSEQUENCE int;
set @STARTDATE = @DATE;
set @FREQUENCYCODE = 5; --Single Installment
set @NUMBEROFINSTALLMENTS = 1;
set @INSTALLMENTSEQUENCE = 1;
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
--Set currency parameters for backwards compatibility
if @TRANSACTIONCURRENCYID is null
set @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @BASECURRENCYID is null
set @BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @SUM money;
declare @COUNT int;
begin try
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 3, default, @TRANSACTIONCURRENCYID;
select
@COUNT = count(REVENUE.ID)
from dbo.REVENUE
inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
where REVENUE.CONSTITUENTID = @MATCHINGORGANIZATIONID
and RMG.MGSOURCEREVENUEID = @ORIGINALGIFTID;
--if @COUNT > 0
--raiserror('An organization cannot match a single gift more than once.', 13, 1);
declare @REVENUEID uniqueidentifier;
declare @MAILINGID uniqueidentifier;
declare @APPEALID uniqueidentifier;
declare @SOURCECODE nvarchar(50);
select @MAILINGID = MAILINGID, @APPEALID = APPEALID, @SOURCECODE = SOURCECODE
from dbo.REVENUE R
where R.ID = @ORIGINALGIFTID;
--Multicurrency - AdamBu 5/7/10 - Retrieve and calculate the necessary multicurrency values.
declare @BASEAMOUNT money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONAMOUNT money;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEAMOUNT output, @ORGANIZATIONCURRENCYID output, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 1;
--Multicurrency - AdamBu 3/30/10 - Process the splits xml to calculate the base and organization amounts and place them in proper nodes.
set @SPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_REVENUE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CURRENTDATE;
--If recognition credits should be added automatically when a MG claim is created, add them.
declare @AUTOADDMGCLAIMCREDIT bit;
declare @CLAIMDEFAULTCREDITTYPEID uniqueidentifier;
declare @AUTOADDMGCLAIMCREDITFORORG bit;
declare @CLAIMDEFAULTCREDITTYPEIDFORORG uniqueidentifier;
select
@AUTOADDMGCLAIMCREDIT = ADDRECOGNITIONCREDITSONMGCLAIMADD,
@CLAIMDEFAULTCREDITTYPEID =
case MGCLAIMADDRECOGNITIONTYPECODE
when 0 then CLAIMREVENUERECOGNITIONTYPECODEID
when 1 then null
end,
@AUTOADDMGCLAIMCREDITFORORG = ADDRECOGNITIONCREDITSTOMATCHINGORGONMGCLAIMADD,
@CLAIMDEFAULTCREDITTYPEIDFORORG = MATCHINGORGCLAIMREVENUERECOGNITIONTYPECODEID
from MATCHINGGIFTPREFERENCEINFO;
declare @MGSPLITS xml;
if @AUTOADDMGCLAIMCREDIT = 1 or @AUTOADDMGCLAIMCREDITFORORG = 1
set @MGSPLITS = dbo.UFN_REVENUE_GETSPLITS_2_TOITEMLISTXML(@ID);
declare @DEFAULTANONYMOUSRECOGNITION bit = 0;
--Select the value for default anonymous recognition setting
select @DEFAULTANONYMOUSRECOGNITION = DEFAULTANONYMOUSRECOGNITION
from dbo.RECOGNITIONDEFAULT
if @AUTOADDMGCLAIMCREDIT = 1
begin
declare @ORIGINALDONORID uniqueidentifier
declare @ORIGINALDONATIONDATE datetime
select
@ORIGINALDONORID=CONSTITUENTID,
@ORIGINALDONATIONDATE=DATE
from REVENUE
where
ID = @ORIGINALGIFTID
and (REVENUE.GIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)
if @ORIGINALDONORID is not null
begin
if (select count(*) from dbo.MATCHINGGIFTPREFERENCEINFO
where MGCLAIMADDRECOGNITIONTYPECODE = 0) > 0
begin
exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @MGSPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @CLAIMDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CURRENTDATE;
end
if (select count(*) from dbo.MATCHINGGIFTPREFERENCEINFO
where MGCLAIMADDRECOGNITIONTYPECODE = 1) > 0
begin
--Bug#256960 - Last parameter @USERECOGNITIONCREDITTYPEIDFROMRECOGNITION in USP_RECOGNITIONCREDIT_ADDTOGROUPMEMBERS is used to set the REVENUERECOGNITIONTYPECODEID
--and when USERECOGNITIONCREDITTYPEIDFROMRECOGNITION is not provided it takes its default value which is "0"
exec dbo.USP_RECOGNITIONCREDIT_ADDTOGROUPMEMBERS @MGSPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @ORIGINALGIFTID, @CLAIMDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CURRENTDATE, 1;
end
end
end
declare @GIFTISANONYMOUS bit = 0;
select @GIFTISANONYMOUS = GIVENANONYMOUSLY from dbo.REVENUE where ID = @ID
if @AUTOADDMGCLAIMCREDITFORORG = 1 and (@GIFTISANONYMOUS = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)
exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @MGSPLITS, @MATCHINGORGANIZATIONID, @DATE, @CLAIMDEFAULTCREDITTYPEIDFORORG, @CHANGEAGENTID, @CURRENTDATE;
declare CUR_MGCAMPAIGNS cursor local fast_forward
for
select
MGSPLIT.ID MGSPLITID,
case
when GIFTSPLIT.ID is null then(
select CAMPAIGNID,CAMPAIGNSUBPRIORITYID
from dbo.UFN_DESIGNATION_CAMPAIGNS(MGSPLIT.DESIGNATIONID)
for xml raw('ITEM'),type,elements,root('CAMPAIGNS'),BINARY BASE64
)
else(
select CAMPAIGNID,CAMPAIGNSUBPRIORITYID
from dbo.UFN_REVENUESPLIT_GETCAMPAIGNS(GIFTSPLIT.ID)
for xml raw('ITEM'),type,elements,root('CAMPAIGNS'),BINARY BASE64
)
end
from dbo.UFN_REVENUE_GETSPLITS_2(@ID) MGSPLIT
left join(
select
GIFTSPLIT.ID,
GIFTSPLIT.DESIGNATIONID
from dbo.UFN_REVENUE_GETSPLITS_2(@ORIGINALGIFTID) GIFTSPLIT
where not exists(
select GIFTSPLITDUPE.ID
from dbo.UFN_REVENUE_GETSPLITS(@ORIGINALGIFTID) GIFTSPLITDUPE
where GIFTSPLIT.DESIGNATIONID = GIFTSPLITDUPE.DESIGNATIONID
and GIFTSPLIT.ID <> GIFTSPLITDUPE.ID
)
) GIFTSPLIT on GIFTSPLIT.DESIGNATIONID=MGSPLIT.DESIGNATIONID
open CUR_MGCAMPAIGNS
declare @SPLITID uniqueidentifier
declare @CAMPAIGNS xml
fetch next from CUR_MGCAMPAIGNS into @SPLITID, @CAMPAIGNS
while @@fetch_status <> -1
begin
if @@fetch_status <> -2
begin
exec dbo.USP_REVENUESPLIT_GETCAMPAIGNS_ADDFROMXML @SPLITID, @CAMPAIGNS, @CHANGEAGENTID;
end
fetch next from CUR_MGCAMPAIGNS into @SPLITID, @CAMPAIGNS
end
close CUR_MGCAMPAIGNS
deallocate CUR_MGCAMPAIGNS
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;