UFN_SALESORDERITEMMEMBERSHIP_VALIDALLOWMULTIPLEMEMBERSHIPS

Validates if a membership program is allowed to be added according to the allow multiple memberships bit associated with the membership.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@SALESORDERITEMMEMBERSHIPID uniqueidentifier IN
@MEMBERSHIPPROGRAMID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_SALESORDERITEMMEMBERSHIP_VALIDALLOWMULTIPLEMEMBERSHIPS
            (
                @CONSTITUENTID uniqueidentifier,
                @SALESORDERITEMMEMBERSHIPID uniqueidentifier,
                @MEMBERSHIPPROGRAMID uniqueidentifier
            )
            returns bit
            as begin
                declare @MEMBERSHIPID uniqueidentifier;

                select @MEMBERSHIPID = MEMBERSHIPID from dbo.SALESORDERITEMMEMBERSHIP where ID = @SALESORDERITEMMEMBERSHIPID;

                if @MEMBERSHIPID is null 
                begin
                    declare @ALLOWMULTIPLEMEMBERSHIPS bit;

                    select
                        @ALLOWMULTIPLEMEMBERSHIPS = ALLOWMULTIPLEMEMBERSHIPS
                    from
                        dbo.MEMBERSHIPPROGRAM
                    where
                        ID = @MEMBERSHIPPROGRAMID;

                    -- If the program does not allow multiple memberships... check and see if this

                    --   constituent is already associated with the program.

                    if @ALLOWMULTIPLEMEMBERSHIPS = 0
                        if exists
                        (
                            select
                                1
                            from
                                dbo.MEMBER
                            inner join
                                dbo.MEMBERSHIP on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
                            where
                                @CONSTITUENTID = MEMBER.CONSTITUENTID
                                and @MEMBERSHIPPROGRAMID = MEMBERSHIP.MEMBERSHIPPROGRAMID
                                and MEMBERSHIP.STATUSCODE = 0
                                and MEMBER.ISDROPPED <> 1
                                and MEMBER.ISCAREGIVER = 0
                        )
                        or exists
                        (
                            select
                                1
                            from
                                dbo.SALESORDERITEMMEMBER
                            inner join
                                dbo.SALESORDERITEMMEMBERSHIP on SALESORDERITEMMEMBERSHIP.ID = SALESORDERITEMMEMBER.SALESORDERITEMMEMBERSHIPID
                            left join 
                                dbo.MEMBER on MEMBER.CONSTITUENTID = SALESORDERITEMMEMBER.CONSTITUENTID and
                                            MEMBER.MEMBERSHIPID = SALESORDERITEMMEMBERSHIP.MEMBERSHIPID
                           left join dbo.MEMBERSHIP on MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
                            where
                                @CONSTITUENTID = SALESORDERITEMMEMBER.CONSTITUENTID
                                and @MEMBERSHIPPROGRAMID = SALESORDERITEMMEMBERSHIP.MEMBERSHIPPROGRAMID
                                and @SALESORDERITEMMEMBERSHIPID <> SALESORDERITEMMEMBERSHIP.ID
                                and SALESORDERITEMMEMBER.ISCAREGIVER = 0
                                and (MEMBER.ISDROPPED is null or (MEMBER.ISDROPPED is not null and MEMBER.ISDROPPED = 0))
                                and MEMBERSHIP.STATUSCODE = 0
                        )
                            return 0;
                end

                return 1;
            end