USP_DATAFORMTEMPLATE_ADD_CONSTITUENTRECOGNITION

The save procedure used by the add dataform template "Constituent Recognition Add Data 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.
@CONSTITUENTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@RECOGNITIONPROGRAMID uniqueidentifier IN Recognition program
@RECOGNITIONLEVELID uniqueidentifier IN Recognition level
@STATUSCODE tinyint IN Status
@DATEACHIEVED datetime IN Date achieved
@COMMENTS nvarchar(1000) IN Comments
@ISANONYMOUS bit IN Anonymous
@DECLINEDRECOGNITIONLEVELS xml IN
@REASONCODE uniqueidentifier IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_CONSTITUENTRECOGNITION
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @CONSTITUENTID uniqueidentifier,
                        @RECOGNITIONPROGRAMID uniqueidentifier = null,
                        @RECOGNITIONLEVELID uniqueidentifier = null,
                        @STATUSCODE tinyint = 0,
                        @DATEACHIEVED datetime = null,
                        @COMMENTS nvarchar(1000) = null,
                        @ISANONYMOUS bit = 0,
            @DECLINEDRECOGNITIONLEVELS xml = null,
            @REASONCODE uniqueidentifier = null
                    )
                    as

                    set nocount on;

                    begin try
                        if @ID is null
                            set @ID = newid()

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate();

                        declare @EXPIRATIONDATE datetime;
                        declare @BACKDATEMEMBERSHIPS bit;
                        select @EXPIRATIONDATE = 
                            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,
                            @BACKDATEMEMBERSHIPS = RP.BACKDATEMEMBERSHIPS
                        from dbo.RECOGNITIONPROGRAM RP
                        where RP.ID = @RECOGNITIONPROGRAMID
                            and RP.TYPECODE = 0;

                        if @BACKDATEMEMBERSHIPS = 1 and @DATEACHIEVED < @EXPIRATIONDATE
                            set @EXPIRATIONDATE = dateadd(year, 1, @EXPIRATIONDATE)

                        if exists(
                            select ID from dbo.CONSTITUENTRECOGNITION
                            where ID <> @ID
                                and CONSTITUENTID = @CONSTITUENTID
                                and RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID
                                and STATUSCODE <> 1                        
                            )
                                raiserror('ERR_CONSITITUENTRECOGNITION_EXISTS', 16, 1);

                        declare @BASECURRENCYID uniqueidentifier;
                        declare @ORGANIZATIONCURRENCYID uniqueidentifier;

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

                        insert into dbo.CONSTITUENTRECOGNITION
                            (ID,
                            RECOGNITIONPROGRAMID,
                            RECOGNITIONLEVELID,
                            STATUSCODE,
                            JOINDATE,
                            COMMENTS,
                            CONSTITUENTID,
                            EXPIRATIONDATE,
                            ISANONYMOUS,
                            BASECURRENCYID,
                            DATEADDED,
                            DATECHANGED,
                            ADDEDBYID,
                            CHANGEDBYID)
                        values
                            (@ID,
                            @RECOGNITIONPROGRAMID,
                            @RECOGNITIONLEVELID,
                            @STATUSCODE,
                            @DATEACHIEVED,
                            @COMMENTS,
                            @CONSTITUENTID,
                            @EXPIRATIONDATE,
                            @ISANONYMOUS,
                            @BASECURRENCYID,
                            @CURRENTDATE,
                            @CURRENTDATE,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID)

                        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
                        )



            exec dbo.USP_CONSTITUENTRECOGNITION_GETDECLINEDLEVELS_UPDATEFROMXML @CONSTITUENTID,@RECOGNITIONPROGRAMID,@DECLINEDRECOGNITIONLEVELS, @CHANGEAGENTID, @CURRENTDATE,@REASONCODE,@RECOGNITIONLEVELID,1

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

                    return 0