USP_SIMPLEDATALIST_MEMBERSHIPLEVELUPGRADETERM

Parameters

Parameter Parameter Type Mode Description
@MEMBERSHIPID uniqueidentifier IN
@MEMBERSHIPLEVELID uniqueidentifier IN

Definition

Copy


                CREATE procedure dbo.USP_SIMPLEDATALIST_MEMBERSHIPLEVELUPGRADETERM
                (
                    @MEMBERSHIPID uniqueidentifier,
          @MEMBERSHIPLEVELID uniqueidentifier
                )
                as

                    set nocount on;

              with NONUPGRADEABLELEVELTERMS as (
        select
            MLT2.ID
        from
          dbo.MEMBERSHIP
          inner join dbo.MEMBERSHIPLEVELTERM MLT on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MLT.ID  --my term

          inner join dbo.MEMBERSHIPLEVELTERM MLT2 on MEMBERSHIP.MEMBERSHIPLEVELID = MLT2.LEVELID and MLT.SEQUENCE >= MLT2.SEQUENCE 
                        and dbo.UFN_MEMBERSHIPLEVEL_ISUPGRADEABLE(MLT2.ID) = 1                  --possible upgrade terms for current level

        where
          MEMBERSHIP.ID = @MEMBERSHIPID

    ) --all non-upgradeable terms for current level


      select 
              MEMBERSHIPLEVELTERM.ID VALUE,
              case MEMBERSHIPPROGRAM.PROGRAMTYPECODE when 0 then cast(MEMBERSHIPLEVELTERM.TERMTIMELENGTH as nvarchar(5)) + ' ' + MEMBERSHIPLEVELTERM.TERMLENGTH
                                                      when 1 then MEMBERSHIPLEVELTERM.RECURRINGPAYMENTOPTION
                                                      else case when MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTIONCODE = 0 then MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTION 
                                                                  else cast(MEMBERSHIPLEVELTERM.LIFETIMENUMBEROFPAYMENTS as nvarchar(5)) + ' ' + MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTION + ' payments' end end as LABEL

      from dbo.MEMBERSHIPLEVEL 
          inner join MEMBERSHIPLEVELTERM on MEMBERSHIPLEVEL.ID = MEMBERSHIPLEVELTERM.LEVELID and MEMBERSHIPLEVELTERM.ISACTIVE = 1
          inner join MEMBERSHIPPROGRAM on MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
      where 
        MEMBERSHIPLEVEL.ID = @MEMBERSHIPLEVELID                
        and MEMBERSHIPLEVEL.ISACTIVE = 1                
        and MEMBERSHIPLEVELTERM.ID not in (select ID from NONUPGRADEABLELEVELTERMS)
    and ((MEMBERSHIPPROGRAM.PROGRAMTYPECODE != 2) or (MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 2 and MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTIONCODE = 0))
      order by
          case MEMBERSHIPPROGRAM.PROGRAMTYPECODE when 0 then MEMBERSHIPLEVELTERM.TERMLENGTHCODE when 1 then MEMBERSHIPLEVELTERM.RECURRINGPAYMENTOPTIONCODE else MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTIONCODE end,
          case MEMBERSHIPPROGRAM.PROGRAMTYPECODE when 2 then MEMBERSHIPLEVELTERM.LIFETIMENUMBEROFPAYMENTS else MEMBERSHIPLEVELTERM.TERMTIMELENGTH end;