UFN_SALESORDERITEMMEMBER_VALIDNUMBEROFMEMBERS

Validates the number of members in a sales order item membership as allowed in the membership level.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@SALESORDERITEMMEMBERSHIPID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_SALESORDERITEMMEMBER_VALIDNUMBEROFMEMBERS
        (
            @SALESORDERITEMMEMBERSHIPID uniqueidentifier
        )
        returns bit
        as begin
            declare @MEMBERSALLOWED smallint;
            declare @ADDITIONALMEMBERSPURCHASED smallint;
            declare @MIDTERMMEMBERSPURCHASED smallint;

            select
                @MEMBERSALLOWED = MEMBERSHIPLEVEL.MEMBERSALLOWED
            from
                dbo.SALESORDERITEMMEMBERSHIP
            inner join 
                dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = SALESORDERITEMMEMBERSHIP.MEMBERSHIPLEVELID
            where
                SALESORDERITEMMEMBERSHIP.ID = @SALESORDERITEMMEMBERSHIPID;

            select @ADDITIONALMEMBERSPURCHASED = coalesce(sum(isnull(SALESORDERITEM.QUANTITY, 0)), 0)
            from dbo.SALESORDERITEM
            inner join dbo.SALESORDERITEMMEMBERSHIPADDON on SALESORDERITEM.ID = SALESORDERITEMMEMBERSHIPADDON.ID
            where SALESORDERITEMMEMBERSHIPADDON.SALESORDERITEMMEMBERSHIPID = @SALESORDERITEMMEMBERSHIPID 
                and SALESORDERITEMMEMBERSHIPADDON.ADDONTYPECODE = 1

            select 
                @MIDTERMMEMBERSPURCHASED = coalesce(sum(isnull(MEMBERSHIPADDON.QUANTITY, 0)),0)
            from
                dbo.SALESORDERITEMMEMBERSHIP
            left join
                dbo.MEMBERSHIPADDON on MEMBERSHIPADDON.MEMBERSHIPID = SALESORDERITEMMEMBERSHIP.MEMBERSHIPID
            left join
                dbo.ADDON on ADDON.ID = MEMBERSHIPADDON.ADDONID
            where
                ADDON.ADDONTYPECODE = 1 and
                SALESORDERITEMMEMBERSHIP.TYPECODE = 250 and
                SALESORDERITEMMEMBERSHIP.ID = @SALESORDERITEMMEMBERSHIPID

            declare @MEMBERCOUNT smallint;

            select
                @MEMBERCOUNT = count(ID)
            from
                dbo.SALESORDERITEMMEMBER
            where
                SALESORDERITEMMEMBERSHIPID = @SALESORDERITEMMEMBERSHIPID;

            if @MEMBERCOUNT > (@MEMBERSALLOWED + @ADDITIONALMEMBERSPURCHASED + @MIDTERMMEMBERSPURCHASED) and (@MEMBERSALLOWED + @ADDITIONALMEMBERSPURCHASED + @MIDTERMMEMBERSPURCHASED) > 0
                return 0;

            return 1;
        end