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