USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTRECOGNITIONHISTORY

The save procedure used by the edit dataform template "Constituent Recognition History Edit Data 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.
@RECOGNITIONLEVELID uniqueidentifier IN Recognition level
@DATEACHIEVED datetime IN Date achieved
@COMMENTS nvarchar(1000) IN Comments
@ISANONYMOUS bit IN Anonymous

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTRECOGNITIONHISTORY
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @RECOGNITIONLEVELID uniqueidentifier,
                    @DATEACHIEVED datetime,
                    @COMMENTS nvarchar(1000),
                    @ISANONYMOUS bit
                )
                as
                    set nocount on;

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

                    declare @CURRENTDATE datetime = getdate();

                    if @ISANONYMOUS is null
                        set @ISANONYMOUS = 0;

                    declare @RECOGNITIONPROGRAMID uniqueidentifier;
                    declare @CONSTITUENTID uniqueidentifier;
                    declare @EXPIRATIONDATE datetime;

                    select
                        @RECOGNITIONPROGRAMID = CR.RECOGNITIONPROGRAMID,
                        @CONSTITUENTID = CR.CONSTITUENTID,
                        @EXPIRATIONDATE = 
                        case
                            when RP.TYPECODE = 1 then null
                            else
                            case
                                when RP.EXPIRESONCODE = 0 then dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATEACHIEVED,1)
                                when RP.EXPIRESONCODE = 1 then dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@DATEACHIEVED,1)
                            end
                        end
                    from dbo.CONSTITUENTRECOGNITION CR
                        inner join dbo.RECOGNITIONPROGRAM RP on CR.RECOGNITIONPROGRAMID = RP.ID
                    where CR.ID = @ID;

                    --If the program level is in the declined levels list, throw error.

                    declare @DENIEDID uniqueidentifier = (select ID from dbo.CONSTITUENTRECOGNITIONDECLINEDLEVEL where CONSTITUENTID = @CONSTITUENTID and RECOGNITIONLEVELID = @RECOGNITIONLEVELID and RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID)
                    if @DENIEDID is not null 
                        raiserror('BBERR_RECOGNITIONLEVELISDECLINED',13,1);

                    begin try
                        update dbo.CONSTITUENTRECOGNITION set
                            RECOGNITIONLEVELID = @RECOGNITIONLEVELID,
                            EXPIRATIONDATE = @EXPIRATIONDATE,
                            JOINDATE = @DATEACHIEVED,
                            COMMENTS = @COMMENTS,
                            ISANONYMOUS = @ISANONYMOUS,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @ID;

                        declare @BASECURRENCYID uniqueidentifier;
                        declare @ORGANIZATIONCURRENCYID uniqueidentifier;

                        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                        select @BASECURRENCYID = RP.BASECURRENCYID
                        from dbo.RECOGNITIONPROGRAM RP where ID = @RECOGNITIONPROGRAMID;

                        -- Add the benefits associated with the new level

                        insert into dbo.CONSTITUENTRECOGNITIONBENEFIT
                        (
                            CONSTITUENTRECOGNITIONID,
                            BENEFITID,
                            QUANTITY,
                            UNITVALUE,
                            ORGANIZATIONUNITVALUE,
                            ORGANIZATIONEXCHANGERATEID,
                            DETAILS,
                            BASECURRENCYID,
                            SEQUENCE,
                            DATEADDED,
                            DATECHANGED,
                            ADDEDBYID,
                            CHANGEDBYID
                        ) 
                        select
                            @ID,
                            RLB.BENEFITID,
                            RLB.QUANTITY,
                            UNITVALUE,
                            case RLB.BASECURRENCYID
                                when @ORGANIZATIONCURRENCYID then RLB.UNITVALUE
                                else dbo.UFN_CURRENCY_CONVERT(RLB.UNITVALUE, dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(RLB.BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null))
                            end ORGANIZATIONUNITVALUE,
                            case RLB.BASECURRENCYID
                                when @ORGANIZATIONCURRENCYID then null
                                else RLB.ORGANIZATIONEXCHANGERATEID
                            end ORGANIZATIONEXCHANGERATEID,
                            RLB.DETAILS,
                            RLB.BASECURRENCYID,
                            RLB.SEQUENCE,
                            @CURRENTDATE,
                            @CURRENTDATE,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID
                        from dbo.RECOGNITIONLEVELBENEFIT RLB
                        where
                            RECOGNITIONLEVELID = @RECOGNITIONLEVELID and
                            RLB.BENEFITID not in
                            (
                                select BCD.BENEFITID
                                from dbo.BENEFITCONSTITUENTDECLINED BCD
                                where BCD.CONSTITUENTID = @CONSTITUENTID
                            ) and
                            RLB.BENEFITID not in
                            (
                                select CRB.BENEFITID
                                from dbo.CONSTITUENTRECOGNITIONBENEFIT CRB
                                where CRB.CONSTITUENTRECOGNITIONID = @ID
                            );
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                return 0;