USP_DATAFORMTEMPLATE_EDIT_DONORCHALLENGE
The save procedure used by the edit dataform template "Donor Challenge Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@NAME | nvarchar(100) | IN | Challenge Name |
@STARTDATE | datetime | IN | Start date |
@ENDDATE | datetime | IN | End date |
@PAYPLEDGESWITHIN | tinyint | IN | Pay pledges within |
@PAYPLEDGESWITHINUNITCODE | tinyint | IN | Pay pledges within units |
@TOTALFUNDS | money | IN | Total funds |
@MATCHINGFACTOR | decimal(5, 2) | IN | Matching factor |
@MATCHTHRESHOLD | money | IN | Match threshold |
@MATCHTYPECODE | tinyint | IN | Matching portion |
@MINGIFTAMOUNT | money | IN | Min gift amount |
@MAXMATCHPERGIFT | money | IN | Max match per gift |
@REVENUERECOGNITIONTYPECODEID | uniqueidentifier | IN | Recognition credit |
@DESCRIPTION | nvarchar(255) | IN | Description |
@EXCLUDEDAPPLICATIONTYPES | xml | IN | Excluded application types |
@SPLITS | xml | IN | Designations |
@SITEID | uniqueidentifier | IN | Site |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_DONORCHALLENGE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100),
@STARTDATE datetime,
@ENDDATE datetime,
@PAYPLEDGESWITHIN tinyint,
@PAYPLEDGESWITHINUNITCODE tinyint,
@TOTALFUNDS money,
@MATCHINGFACTOR decimal(5,2),
@MATCHTHRESHOLD money,
@MATCHTYPECODE tinyint,
@MINGIFTAMOUNT money,
@MAXMATCHPERGIFT money,
@REVENUERECOGNITIONTYPECODEID uniqueidentifier,
@DESCRIPTION nvarchar(255),
@EXCLUDEDAPPLICATIONTYPES xml,
@SPLITS xml,
@SITEID uniqueidentifier
)
as
begin
set nocount on;
declare @CURRENTDATE datetime = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTTOTALFUNDS money;
declare @CURRENTENCUMBEREDFUNDS money;
declare @CURRENTMATCHEDFUNDS money;
set @CURRENTENCUMBEREDFUNDS = dbo.UFN_DONORCHALLENGE_ENCUMBEREDAMOUNT(@ID);
set @CURRENTMATCHEDFUNDS = dbo.UFN_DONORCHALLENGE_MATCHEDAMOUNT(@ID);
set @CURRENTTOTALFUNDS = @CURRENTENCUMBEREDFUNDS + @CURRENTMATCHEDFUNDS;
if exists(select ID from dbo.DONORCHALLENGE where ID = @ID and TYPECODE = 0)
begin
if @TOTALFUNDS < @CURRENTTOTALFUNDS
begin
raiserror('BBERR_DONORCHALLENGE_TOTALAMOUNTBELOWEXISTINGAMOUNTS', 13, 1);
return 0;
end
end
else
begin
if @MATCHTHRESHOLD < @CURRENTTOTALFUNDS
begin
raiserror('BBERR_DONORCHALLENGE_MATCHTHRESHOLDBELOWEXISTINGAMOUNTS', 13, 1);
return 0;
end
end
if @SITEID is null
begin
if dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID) = 1
begin
raiserror('BBERR_SITEREQUIRED',13,1)
return
end
end
begin try
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @BASECURRENCYID uniqueidentifier;
declare @DATEADDED datetime;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONTOTALFUNDS money;
declare @ORGANIZATIONMATCHTHRESHOLD money;
declare @ORGANIZATIONMINGIFTAMOUNT money;
declare @ORGANIZATIONMAXMATCHPERGIFT money;
select
@BASECURRENCYID = DONORCHALLENGE.BASECURRENCYID,
@DATEADDED = DONORCHALLENGE.DATEADDED,
@ORGANIZATIONEXCHANGERATEID = DONORCHALLENGE.ORGANIZATIONEXCHANGERATEID
from
dbo.DONORCHALLENGE
where
DONORCHALLENGE.ID = @ID;
if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
begin
set @ORGANIZATIONTOTALFUNDS= @TOTALFUNDS;
set @ORGANIZATIONMATCHTHRESHOLD = @MATCHTHRESHOLD;
set @ORGANIZATIONMINGIFTAMOUNT = @MINGIFTAMOUNT;
set @ORGANIZATIONMAXMATCHPERGIFT = @MAXMATCHPERGIFT;
end
else
begin
if @ORGANIZATIONEXCHANGERATEID is null
begin
set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATEADDED, 0, null);
end
set @ORGANIZATIONTOTALFUNDS = dbo.UFN_CURRENCY_CONVERT(@TOTALFUNDS, @ORGANIZATIONEXCHANGERATEID);
set @ORGANIZATIONMATCHTHRESHOLD = dbo.UFN_CURRENCY_CONVERT(@MATCHTHRESHOLD, @ORGANIZATIONEXCHANGERATEID);
set @ORGANIZATIONMINGIFTAMOUNT = dbo.UFN_CURRENCY_CONVERT(@MINGIFTAMOUNT, @ORGANIZATIONEXCHANGERATEID);
set @ORGANIZATIONMAXMATCHPERGIFT = dbo.UFN_CURRENCY_CONVERT(@MAXMATCHPERGIFT, @ORGANIZATIONEXCHANGERATEID);
end
update dbo.DONORCHALLENGE
set
NAME = @NAME,
DESCRIPTION = @DESCRIPTION,
STARTDATE = @STARTDATE,
ENDDATE = @ENDDATE,
TOTALFUNDS = @TOTALFUNDS,
PAYPLEDGESWITHIN = @PAYPLEDGESWITHIN,
PAYPLEDGESWITHINUNITCODE = @PAYPLEDGESWITHINUNITCODE,
MATCHTYPECODE = @MATCHTYPECODE,
MATCHINGFACTOR = @MATCHINGFACTOR,
MATCHTHRESHOLD = @MATCHTHRESHOLD,
MINGIFTAMOUNT = @MINGIFTAMOUNT,
MAXMATCHPERGIFT = @MAXMATCHPERGIFT,
REVENUERECOGNITIONTYPECODEID = @REVENUERECOGNITIONTYPECODEID,
SITEID = @SITEID,
ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
ORGANIZATIONTOTALFUNDS = @ORGANIZATIONTOTALFUNDS,
ORGANIZATIONMATCHTHRESHOLD = @ORGANIZATIONMATCHTHRESHOLD,
ORGANIZATIONMINGIFTAMOUNT = @ORGANIZATIONMINGIFTAMOUNT,
ORGANIZATIONMAXMATCHPERGIFT = @ORGANIZATIONMAXMATCHPERGIFT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
set @SPLITS = dbo.UFN_DONORCHALLENGESPLIT_CONVERTAMOUNTSINXML(@SPLITS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID);
exec dbo.USP_DONORCHALLENGE_GETSPLITS_2_UPDATEFROMXML @ID, @SPLITS, @CHANGEAGENTID;
exec dbo.USP_DONORCHALLENGE_GETEXCLUDEDAPPLICATIONTYPES_UPDATEFROMXML @ID, @EXCLUDEDAPPLICATIONTYPES, @CHANGEAGENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0
end