USP_DATAFORMTEMPLATE_ADD_MGPLEDGE_2

The save procedure used by the add dataform template "Matching Gift Claim Add Form 2".

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.
@ORIGINALGIFTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@MATCHINGORGANIZATIONID uniqueidentifier IN Matching organization
@DATE datetime IN Date
@AMOUNT money IN Amount
@SPLITS xml IN Designations
@MATCHINGGIFTCONDITIONID uniqueidentifier IN Matching gift condition type
@RELATIONSHIPID uniqueidentifier IN Relationship
@DISMISSMATCHINGGIFTCLAIMELIGIBILITY bit IN Dismiss matching gift claim eligibility notification
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@TRANSACTIONCURRENCYID uniqueidentifier IN Transaction currency
@BASEEXCHANGERATEID uniqueidentifier IN Exchange rate ID
@EXCHANGERATE decimal(20, 8) IN Exchange rate

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MGPLEDGE_2
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier,
                        @ORIGINALGIFTID uniqueidentifier,
                        @MATCHINGORGANIZATIONID uniqueidentifier,
                        @DATE datetime,
                        @AMOUNT money = 0,
                        @SPLITS xml,
                        @MATCHINGGIFTCONDITIONID uniqueidentifier = null,
                        @RELATIONSHIPID uniqueidentifier = null,
                        @DISMISSMATCHINGGIFTCLAIMELIGIBILITY bit = 1,
                        @CURRENTAPPUSERID uniqueidentifier = null,
                        @TRANSACTIONCURRENCYID uniqueidentifier = null,
                        @BASEEXCHANGERATEID uniqueidentifier = null,
                        @EXCHANGERATE decimal(20,8) = null
                    )
                    as 
                    set nocount on;

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

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

                    begin try

                        declare @CURRENTDATE datetime = getdate();

                        if exists (select 1 from dbo.CONSTITUENT where ID = @MATCHINGORGANIZATIONID)
                        begin
                            -- Check security for this constituent.  Using UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT

                            -- since this form's security is implied through other forms.

                            declare @ISADMIN bit;
                            declare @APPUSER_IN_NONRACROLE bit;
                            declare @APPUSER_IN_NOSECGROUPROLE bit;

                            set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);

                            if @ISADMIN = 0
                                set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);

                            if @ISADMIN = 0 and @APPUSER_IN_NONRACROLE = 0
                                set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);

                            if
                            (
                                @ISADMIN = 0
                                and @APPUSER_IN_NONRACROLE = 0
                                and (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, @MATCHINGORGANIZATIONID, @APPUSER_IN_NOSECGROUPROLE) = 0)
                            )
                                raiserror('BBERR_DB_RECORDSECURITY_PERMISSION_DENIED', 13, 1);
                        end

                        --Set currency parameters for backwards compatibility

                        if @TRANSACTIONCURRENCYID is null
                            set @TRANSACTIONCURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);

                        if not @TRANSACTIONCURRENCYID in (
                            select CURRENCYID
                            from dbo.UFN_CURRENCYSET_GETTRANSACTIONCURRENCIES(dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID))
                        )
                        begin
                            raiserror('BB_ERR_TRANSACTIONCURRENCYNOTACCESSIBLE',13,1)
                        end

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

                        --Multicurrency - AdamBu 5/7/10 - Create spot rate, if the new record uses one.

                        if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
                        begin
                            set @BASEEXCHANGERATEID = newid()

                            --Replace with call to USP_CURRENCYEXCHANGERATE_ENSURESPOTRATEEXISTS for PBI 102747 in the future

                            /*if not dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID,'911f104d-ba5f-4469-b0ae-184c879aea99') = 1
                                and not dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
                            begin
                                raiserror('User does not have the right to add a new spot rate.', 13, 1);
                                return 1;
                            end*/

                            insert into dbo.CURRENCYEXCHANGERATE(
                                ID, 
                                FROMCURRENCYID,
                                TOCURRENCYID,
                                RATE,
                                ASOFDATE,
                                TYPECODE,
                                SOURCECODEID,
                                ADDEDBYID, 
                                CHANGEDBYID, 
                                DATEADDED, 
                                DATECHANGED
                            )
                            values(
                                @BASEEXCHANGERATEID,
                                @TRANSACTIONCURRENCYID,
                                @BASECURRENCYID,
                                @EXCHANGERATE,
                                @DATE,
                                2,
                                null,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            );
                        end

                        exec dbo.USP_MATCHINGGIFTPLEDGE_ADD 
                            @ID output,
                            @CHANGEAGENTID,
                            @ORIGINALGIFTID,
                            @MATCHINGORGANIZATIONID,
                            @DATE,
                            @AMOUNT,
                            @SPLITS,
                            @MATCHINGGIFTCONDITIONID,
                            @RELATIONSHIPID,
                            @TRANSACTIONCURRENCYID,
                            @BASECURRENCYID,
                            @BASEEXCHANGERATEID


                        if @DISMISSMATCHINGGIFTCLAIMELIGIBILITY = 1
                        begin
                            update dbo.REVENUE
                            set ELIGIBLEFORMATCHINGGIFTCLAIM = 0,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = getdate()
                            where ID = @ORIGINALGIFTID;
                        end
                    end try

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


                    return 0;