USP_DATAFORMTEMPLATE_ADD_MEMBERSHIPLEVEL

The save procedure used by the add dataform template "Membership Level Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@MEMBERSHIPPROGRAMID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(50) IN Name
@DESCRIPTION nvarchar(255) IN Description
@TIERCODEID uniqueidentifier IN Tier
@MEMBERSALLOWED smallint IN Members allowed
@CARDSALLOWED smallint IN Cards allowed
@CHILDRENALLOWED smallint IN Children allowed
@BEFOREEXPIRATION tinyint IN month(s) before expiration
@AFTEREXPIRATION tinyint IN month(s) after expiration
@FORCEMANUALDOWNGRADES bit IN Members must be downgraded manually
@TERMS xml IN Terms
@MEMBERSHIPTYPES xml IN Membership types

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MEMBERSHIPLEVEL
                    (
                        @ID uniqueidentifier = null output,
                        @MEMBERSHIPPROGRAMID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @NAME nvarchar(50) = null,
                        @DESCRIPTION nvarchar(255) = null,
                        @TIERCODEID uniqueidentifier = null,
                        @MEMBERSALLOWED smallint = 1,
                        @CARDSALLOWED smallint = 0,
                        @CHILDRENALLOWED smallint = 0,
                        @BEFOREEXPIRATION tinyint = 0,
                        @AFTEREXPIRATION tinyint = 0,
                        @FORCEMANUALDOWNGRADES bit = 0,
                        @TERMS xml = null,
                        @MEMBERSHIPTYPES xml = null
                    )
                    as

                        set nocount on;

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

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

                        if @CARDSALLOWED is null
                            set @CARDSALLOWED = 0

                        if @CHILDRENALLOWED is null
                            set @CHILDRENALLOWED = 0

                        declare @SEQUENCE as integer;
                        select @SEQUENCE = isnull(max(SEQUENCE), -1) + 1
                        from dbo.MEMBERSHIPLEVEL
                        where MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

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

                        select @BASECURRENCYID = 
                            (select BASECURRENCYID from dbo.MEMBERSHIPPROGRAM where ID = @MEMBERSHIPPROGRAMID)

                        if (@ORGANIZATIONCURRENCYID <> @BASECURRENCYID)
                        begin
                            set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
                        end

                        begin try

                            if exists
                            (
                                select count(TYPEID)
                                from
                                (
                                    select T.membershiptypes.value('(LEVELTYPECODEID)[1]', 'uniqueidentifier') TYPEID
                                    from @MEMBERSHIPTYPES.nodes('/MEMBERSHIPTYPES/ITEM') T(MEMBERSHIPTYPES)
                                ) Result
                                group by TYPEID
                                having count(*) > 1
                            )
                                raiserror('Membership types must be unique.', 13, 1);

                            insert into dbo.MEMBERSHIPLEVEL
                            (
                                ID, 
                                NAME, 
                                MEMBERSHIPPROGRAMID,
                                DESCRIPTION, 
                                TIERCODEID, 
                                MEMBERSALLOWED, 
                                CARDSALLOWED,
                                CHILDRENALLOWED,
                                BEFOREEXPIRATION,
                                AFTEREXPIRATION,
                                FORCEMANUALDOWNGRADES,
                                ISACTIVE,
                                BASECURRENCYID,
                                ADDEDBYID, 
                                CHANGEDBYID, 
                                DATEADDED, 
                                DATECHANGED,
                                SEQUENCE
                            )
                            values
                            (
                                @ID
                                @NAME,
                                @MEMBERSHIPPROGRAMID,
                                @DESCRIPTION
                                @TIERCODEID
                                @MEMBERSALLOWED
                                @CARDSALLOWED,
                                @CHILDRENALLOWED,
                                @BEFOREEXPIRATION,
                                @AFTEREXPIRATION,
                                @FORCEMANUALDOWNGRADES,
                                1,
                                @BASECURRENCYID,
                                @CHANGEAGENTID
                                @CHANGEAGENTID
                                @CURRENTDATE
                                @CURRENTDATE,
                                @SEQUENCE
                            );

                            -- Save renewal rule history

                            insert into dbo.MEMBERSHIPLEVELRENEWALRULES
                            (
                                MEMBERSHIPLEVELID,
                                BEFOREEXPIRATION,
                                AFTEREXPIRATION,
                                STARTDATE,
                                ADDEDBYID, 
                                CHANGEDBYID, 
                                DATEADDED, 
                                DATECHANGED
                            )
                            values
                            (
                                @ID,
                                @BEFOREEXPIRATION,
                   @AFTEREXPIRATION,
                                '1/1/1753', -- use the smallest date

                                @CHANGEAGENTID
                                @CHANGEAGENTID
                                @CURRENTDATE
                                @CURRENTDATE
                            )

                            if not @TERMS is null
                            begin
                                set @TERMS = dbo.UFN_MEMBERSHIPLEVELTERMS_CONVERTAMOUNTSINXML(@TERMS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID)
                                exec dbo.USP_MEMBERSHIPLEVEL_GETTERMS_2_ADDFROMXML @ID, @TERMS, @CHANGEAGENTID, @CURRENTDATE;
                            end                        
                            else
                                raiserror('Please enter at least one term.', 13, 1);

                            if not @MEMBERSHIPTYPES is null
                                exec dbo.USP_MEMBERSHIPLEVEL_GETTYPES_ADDFROMXML @ID, @MEMBERSHIPTYPES, @CHANGEAGENTID, @CURRENTDATE;

                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                        return 0