USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEMMEMBERSHIP_MIDTERMUPGRADE

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

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@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_EDIT_SALESORDERITEMMEMBERSHIP_MIDTERMUPGRADE (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @MEMBERSHIPID uniqueidentifier,
    @MEMBERSHIPLEVELID uniqueidentifier
)
as

    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

declare @SALESORDERID uniqueidentifier;
declare @CURRENTTERMLENGTHCODE tinyint
declare @CURRENTTERMTIMELENGTH 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 @GIVENBYID uniqueidentifier;
declare @NUMBEROFADDONADULTS smallint = 0;
declare @NUMBEROFADDONGUESTS smallint = 0;

begin try

    select @SALESORDERID = SALESORDERID 
    from dbo.SALESORDERITEM
    where ID = @ID

    exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;

    select
        @MEMBERSHIPPROGRAMID = MEMBERSHIP.MEMBERSHIPPROGRAMID,
        @MEMBERSHIPLEVELTYPECODEID = MEMBERSHIP.MEMBERSHIPLEVELTYPECODEID,
        @NUMBEROFCHILDREN = MEMBERSHIP.NUMBEROFCHILDREN,
        @COMMENTS = MEMBERSHIP.COMMENTS,
        @ISGIFT = MEMBERSHIP.ISGIFT,
        @SENDRENEWALCODE = MEMBERSHIP.SENDRENEWALCODE,
        @EXPIRATIONDATE = MEMBERSHIP.EXPIRATIONDATE,
        @GIVENBYID = MEMBERSHIP.GIVENBYID,
        @NUMBEROFADDONADULTS = MEMBERSHIP.NUMBEROFADDONADULTS,
        @NUMBEROFADDONGUESTS = MEMBERSHIP.NUMBEROFADDONGUESTS,
        @CURRENTTERMLENGTHCODE = MEMBERSHIPLEVELTERM.TERMLENGTHCODE,
        @CURRENTTERMTIMELENGTH = 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 = @CURRENTTERMLENGTHCODE and
        TERMTIMELENGTH = @CURRENTTERMTIMELENGTH

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

    if @MEMBERSHIPLEVELTERMID is not null and @PRICE is not null
    begin
        update dbo.SALESORDERITEM set 
            DESCRIPTION = isnull(dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(@MEMBERSHIPPROGRAMID) + ' - ' +
                                    dbo.UFN_MEMBERSHIPLEVEL_GETNAME(@MEMBERSHIPLEVELID) + ' (' +
                                    dbo.UFN_MEMBERSHIPLEVELTERM_GETVALUE(@MEMBERSHIPLEVELTERMID) + '): ', '') + 'Upgrade',
            PRICE = @PRICE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID

        update dbo.SALESORDERITEMMEMBERSHIP set 
            MEMBERSHIPID = @MEMBERSHIPID,
            MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID,
            MEMBERSHIPLEVELID = @MEMBERSHIPLEVELID,
            MEMBERSHIPLEVELTERMID = @MEMBERSHIPLEVELTERMID,
            MEMBERSHIPLEVELTYPECODEID = @MEMBERSHIPLEVELTYPECODEID,
            NUMBEROFCHILDREN = @NUMBEROFCHILDREN,
            COMMENTS = @COMMENTS,
            ISGIFT = @ISGIFT,
            SENDRENEWALCODE = @SENDRENEWALCODE,
            GIVENBYID = @GIVENBYID,
            EXPIRATIONDATE = @EXPIRATIONDATE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
       where ID = @ID

    end
end try
begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0;