UFN_MEMBERSHIPLEVELTERM_TERMALREADYEXISTS

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@LEVELTERMID uniqueidentifier IN
@LEVELID uniqueidentifier IN
@TERMTIMELENGTH smallint IN
@TERMLENGTHCODE tinyint IN
@RECURRINGPAYMENTOPTIONCODE tinyint IN
@LIFETIMEPAYMENTOPTIONCODE tinyint IN
@LIFETIMENUMBEROFPAYMENTS smallint IN

Definition

Copy


CREATE function dbo.UFN_MEMBERSHIPLEVELTERM_TERMALREADYEXISTS
(
    @LEVELTERMID uniqueidentifier,
    @LEVELID uniqueidentifier,
    @TERMTIMELENGTH smallint,
    @TERMLENGTHCODE tinyint,
    @RECURRINGPAYMENTOPTIONCODE tinyint,
    @LIFETIMEPAYMENTOPTIONCODE tinyint,
    @LIFETIMENUMBEROFPAYMENTS smallint
)
returns bit
as begin
    declare @RESULTBIT bit = 0

    declare @PROGRAMTYPECODE tinyint

    select @PROGRAMTYPECODE = MP.PROGRAMTYPECODE from dbo.MEMBERSHIPLEVEL ML join dbo.MEMBERSHIPPROGRAM MP on ML.ID = @LEVELID and ML.MEMBERSHIPPROGRAMID = MP.ID

    -- We do not allow duplicate terms but in order to support client data that had duplicate terms we will grandfather those terms in.

    -- Only Annual Dues-based programs are eligible since they are the only types that existed before this release.

    -- Setting this date to the probable release date

    declare @GRANDFATHERDATE datetime
    set @GRANDFATHERDATE = dbo.UFN_DATE_GETLATESTTIME('05/10/2012')

    --Annual program

    if @PROGRAMTYPECODE = 0
    begin
        if  (
                select count(*)
                from dbo.[MEMBERSHIPLEVELTERM] LT
                where LT.ID != @LEVELTERMID
                  and LT.LEVELID = @LEVELID
                  and LT.TERMTIMELENGTH = @TERMTIMELENGTH
                  and LT.TERMLENGTHCODE = @TERMLENGTHCODE
                  and LT.DATEADDED > @GRANDFATHERDATE
            ) > 0
            set @RESULTBIT = 1
    end

    --Recurring/Sustaining program

    if @PROGRAMTYPECODE = 1
    begin
        if  (
                select count(*)
                from dbo.[MEMBERSHIPLEVELTERM] LT
                where LT.ID != @LEVELTERMID
                  and LT.LEVELID = @LEVELID
                  and LT.RECURRINGPAYMENTOPTIONCODE = @RECURRINGPAYMENTOPTIONCODE
            ) > 0
            set @RESULTBIT = 1
    end

    --Lifetime program

    if @PROGRAMTYPECODE = 2
    begin
        if  (
                select count(*)
                from dbo.[MEMBERSHIPLEVELTERM] LT
                where LT.ID != @LEVELTERMID
                  and LT.LEVELID = @LEVELID
                  and LT.LIFETIMEPAYMENTOPTIONCODE = @LIFETIMEPAYMENTOPTIONCODE
                  and LT.LIFETIMENUMBEROFPAYMENTS = @LIFETIMENUMBEROFPAYMENTS
            ) > 0
            set @RESULTBIT = 1
    end

    return @RESULTBIT

end