USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMMEMBERSHIP_MIDTERMUPGRADE

The save procedure used by the add dataform template "Sales Order Item Membership Midterm Upgrade Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@SALESORDERID 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.
@MEMBERSHIPID uniqueidentifier IN Membership to upgrade
@MEMBERSHIPLEVELID uniqueidentifier IN Level

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMMEMBERSHIP_MIDTERMUPGRADE
(
    @ID uniqueidentifier = null output,
    @SALESORDERID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @MEMBERSHIPID uniqueidentifier = null,
    @MEMBERSHIPLEVELID uniqueidentifier = null
)
as

set nocount on;

-- Check if there is already a mid-term upgrade item in the cart for the same membership
if exists (
    select 1 from dbo.SALESORDERITEMMEMBERSHIP SOIM
        inner join dbo.SALESORDERITEM SOI on SOIM.ID = SOI.ID
    where SOI.SALESORDERID = @SALESORDERID and SOIM.MEMBERSHIPID = @MEMBERSHIPID
)
raiserror('ERR_MEMBERSHIPMIDTERMUPGRADE_DUPLICATEITEM', 13, 1)

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

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

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

declare @CURRENTLEVELTERMLENGTHCODE tinyint;
declare @CURRENTLEVELTERMTIMELENGTH tinyint;
declare @PRICE money;

declare @MEMBERSHIPPROGRAMID uniqueidentifier;
declare @MEMBERSHIPLEVELTERMID uniqueidentifier;
declare @MEMBERSHIPLEVELTYPECODEID uniqueidentifier;
declare @NUMBEROFCHILDREN smallint;
declare @COMMENTS nvarchar(1000);
declare @ISGIFT bit;
declare @SENDRENEWALCODE tinyint;
declare @EXPIRATIONDATE datetime;
declare @MEMBERS xml;
declare @GIVENBYID uniqueidentifier;
declare @NUMBEROFADDONADULTS smallint;
declare @NUMBEROFADDONGUESTS smallint;
declare @MEMBERSHIPCARDS xml;
declare @MEMBERSHIPPROGRAMADDON xml;
declare @ADDONMEMBERCOUNT int;

begin try
    select
        @MEMBERSHIPPROGRAMID = MEMBERSHIP.MEMBERSHIPPROGRAMID,
        @MEMBERSHIPLEVELTYPECODEID = MEMBERSHIP.MEMBERSHIPLEVELTYPECODEID,
        @NUMBEROFCHILDREN = MEMBERSHIP.NUMBEROFCHILDREN,
        @COMMENTS = '',
        @ISGIFT = MEMBERSHIP.ISGIFT,
        @SENDRENEWALCODE = MEMBERSHIP.SENDRENEWALCODE,
        @EXPIRATIONDATE = MEMBERSHIP.EXPIRATIONDATE,
        -- @MEMBERS = dbo.UFN_MEMBERSHIP_GETMEMBERS_TOITEMLISTXML(MEMBERSHIP.ID),
        @GIVENBYID = MEMBERSHIP.GIVENBYID,
        @NUMBEROFADDONADULTS = MEMBERSHIP.NUMBEROFADDONADULTS,
        @NUMBEROFADDONGUESTS = MEMBERSHIP.NUMBEROFADDONGUESTS,
        @CURRENTLEVELTERMLENGTHCODE = MEMBERSHIPLEVELTERM.TERMLENGTHCODE,
        @CURRENTLEVELTERMTIMELENGTH = MEMBERSHIPLEVELTERM.TERMTIMELENGTH
    from dbo.MEMBERSHIP
        inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
    where MEMBERSHIP.ID = @MEMBERSHIPID


    select
        @MEMBERSHIPLEVELTERMID = ID
    from dbo.MEMBERSHIPLEVELTERM
    where
        LEVELID = @MEMBERSHIPLEVELID and
        TERMLENGTHCODE = @CURRENTLEVELTERMLENGTHCODE and
        TERMTIMELENGTH = @CURRENTLEVELTERMTIMELENGTH

    set @PRICE = dbo.UFN_MEMBERSHIP_GETMIDTERMUPGRADEPRICE(@MEMBERSHIPID, @MEMBERSHIPLEVELID)

    if @MEMBERSHIPLEVELTERMID is not null and @PRICE is not null
    begin
        exec dbo.USP_DAILYSALES_MEMBERSHIPRENEWAL_GETMEMBERSANDCARDS 
            @SALESORDERID
            @MEMBERSHIPID
            @MEMBERSHIPPROGRAMID
            @MEMBERSHIPLEVELID
            @MEMBERSHIPLEVELTERMID
            @MEMBERSHIPLEVELTYPECODEID
            @EXPIRATIONDATE
            @MEMBERS output
            @MEMBERSHIPCARDS output
            @MEMBERSHIPPROGRAMADDON output
            @ADDONMEMBERCOUNT output

        exec dbo.USP_SALESORDERITEMMEMBERSHIP_ADD2
            @ID output,
            @CHANGEAGENTID,
            @SALESORDERID,
            @MEMBERSHIPID,
            @MEMBERSHIPPROGRAMID,
            @MEMBERSHIPLEVELID,
            @MEMBERSHIPLEVELTERMID,
            @MEMBERSHIPLEVELTYPECODEID,
            @NUMBEROFCHILDREN,
            @COMMENTS,
            @ISGIFT,
            @SENDRENEWALCODE,
            @EXPIRATIONDATE,
            @MEMBERS,
            @MEMBERSHIPCARDS,
            @MEMBERSHIPPROGRAMADDON,
            @GIVENBYID,
            0,
            @PRICE,
            250,
            @ADDONMEMBERCOUNT
    end
end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0