USP_DATAFORMTEMPLATE_ADD_DONORCHALLENGE

The save procedure used by the add dataform template "Donor Challenge Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@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
@INTERNALSPONSORCODEID uniqueidentifier IN Internal sponsor
@EXTERNALSPONSORID uniqueidentifier IN External sponsor
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date
@PAYPLEDGESWITHIN tinyint IN Pay pledges within
@PAYPLEDGESWITHINUNITCODE tinyint IN Pay pledges within units
@TYPECODE tinyint IN Type
@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_ADD_DONORCHALLENGE
(
  @ID uniqueidentifier = null output,
  @CHANGEAGENTID uniqueidentifier = null,
  @CURRENTAPPUSERID uniqueidentifier,
  @NAME nvarchar(100) = '',
  @INTERNALSPONSORCODEID uniqueidentifier = null,
  @EXTERNALSPONSORID uniqueidentifier = null,
  @STARTDATE datetime = null,
  @ENDDATE datetime = null,
  @PAYPLEDGESWITHIN tinyint = 0,
  @PAYPLEDGESWITHINUNITCODE tinyint = 0,
  @TYPECODE tinyint = 0,
  @TOTALFUNDS money = 0,
  @MATCHINGFACTOR decimal(5,2) = 0,
  @MATCHTHRESHOLD money = 0,
  @MATCHTYPECODE tinyint = 0,
  @MINGIFTAMOUNT money = 0,
  @MAXMATCHPERGIFT money = 0,
  @REVENUERECOGNITIONTYPECODEID uniqueidentifier = null,
  @DESCRIPTION nvarchar(255) = '',
  @EXCLUDEDAPPLICATIONTYPES xml = null,
  @SPLITS xml = null,
  @SITEID uniqueidentifier = null
)
as
begin
  set nocount on;

  declare @CURRENTDATE datetime = getdate();

  if @ID is null
    set @ID = newid();

  if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

  begin try
    if @SITEID is null
    begin 
      if dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID) = 1 
      begin
        raiserror('BBERR_SITEREQUIRED',13,1);
        return;
      end
    end

    declare @BASECURRENCYID uniqueidentifier = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
    declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
    declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;

    declare @ORGANIZATIONTOTALFUNDS money = @TOTALFUNDS;
    declare @ORGANIZATIONMATCHTHRESHOLD money = @MATCHTHRESHOLD;
    declare @ORGANIZATIONMINGIFTAMOUNT money = @MINGIFTAMOUNT;
    declare @ORGANIZATIONMAXMATCHPERGIFT money = @MAXMATCHPERGIFT;

    if @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
    begin
      set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
      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

    insert into dbo.DONORCHALLENGE
    (
      ID,
      NAME,
      DESCRIPTION,
      TYPECODE,
      STARTDATE,
      ENDDATE,
      EXTERNALSPONSORID,
      INTERNALSPONSORCODEID,
      TOTALFUNDS,
      PAYPLEDGESWITHIN,
      PAYPLEDGESWITHINUNITCODE,
      MATCHTYPECODE,
      MATCHINGFACTOR,
      MATCHTHRESHOLD,
      MINGIFTAMOUNT,
      MAXMATCHPERGIFT,
      REVENUERECOGNITIONTYPECODEID,
      SITEID,
      BASECURRENCYID,
      ORGANIZATIONEXCHANGERATEID,
      ORGANIZATIONTOTALFUNDS,
      ORGANIZATIONMATCHTHRESHOLD,
      ORGANIZATIONMINGIFTAMOUNT,
      ORGANIZATIONMAXMATCHPERGIFT,
      ADDEDBYID,
      CHANGEDBYID,
      DATEADDED,
      DATECHANGED
    )
    values
    (
      @ID,
      @NAME,
      @DESCRIPTION,
      @TYPECODE,
      @STARTDATE,
      @ENDDATE,
      @EXTERNALSPONSORID,
      @INTERNALSPONSORCODEID,
      @TOTALFUNDS,
      @PAYPLEDGESWITHIN,
      @PAYPLEDGESWITHINUNITCODE,
      @MATCHTYPECODE,
      @MATCHINGFACTOR,
      @MATCHTHRESHOLD,
      @MINGIFTAMOUNT,
      @MAXMATCHPERGIFT,
      @REVENUERECOGNITIONTYPECODEID,
      @SITEID,
      @BASECURRENCYID,
      @ORGANIZATIONEXCHANGERATEID,
      @ORGANIZATIONTOTALFUNDS,
      @ORGANIZATIONMATCHTHRESHOLD,
      @ORGANIZATIONMINGIFTAMOUNT,
      @ORGANIZATIONMAXMATCHPERGIFT,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    )

    set @SPLITS = dbo.UFN_DONORCHALLENGESPLIT_CONVERTAMOUNTSINXML(@SPLITS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID)

    exec dbo.USP_DONORCHALLENGE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID;  
    exec dbo.USP_DONORCHALLENGE_GETEXCLUDEDAPPLICATIONTYPES_ADDFROMXML @ID, @EXCLUDEDAPPLICATIONTYPES, @CHANGEAGENTID;  

  end try
  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch

  return 0;

end