USP_DATAFORMTEMPLATE_EDIT_MERCHANDISEPRODUCTINSTANCE

The save procedure used by the edit dataform template "Merchandise Item Instance 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.
@COST money IN Cost
@SALEPRICE money IN Sale price
@ONHANDQUANTITY int IN Quantity
@OPTIONCOUNT int IN Option count
@OPTION1ID uniqueidentifier IN Option 1 ID
@OPTION2ID uniqueidentifier IN Option 2 ID
@OPTION3ID uniqueidentifier IN Option 3 ID
@OPTION1VALUE nvarchar(50) IN Option 1 value
@OPTION2VALUE nvarchar(50) IN Option 2 value
@OPTION3VALUE nvarchar(50) IN Option 3 value
@INSTANCEOPTION1ID uniqueidentifier IN Option 1 value
@INSTANCEOPTION2ID uniqueidentifier IN Option 2 value
@INSTANCEOPTION3ID uniqueidentifier IN Option 3 value
@LOOKUPCODE nvarchar(25) IN UPC

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MERCHANDISEPRODUCTINSTANCE (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @COST money,
                    @SALEPRICE money,
                    @ONHANDQUANTITY integer,                              
                    @OPTIONCOUNT integer,          
                    @OPTION1ID uniqueidentifier,
                    @OPTION2ID uniqueidentifier,
                    @OPTION3ID uniqueidentifier,
                    @OPTION1VALUE nvarchar(50),
                    @OPTION2VALUE nvarchar(50),
                    @OPTION3VALUE nvarchar(50),
                    @INSTANCEOPTION1ID uniqueidentifier,
                    @INSTANCEOPTION2ID uniqueidentifier,
                    @INSTANCEOPTION3ID uniqueidentifier,
                    @LOOKUPCODE nvarchar(25)
                )
                as

                set nocount on;

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

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                begin try
                    -- handle updating the data
                    update dbo.MERCHANDISEPRODUCTINSTANCE set
                        COST = @COST,
                        SALEPRICE = @SALEPRICE,
                        ONHANDQUANTITY = @ONHANDQUANTITY,
                        LOOKUPCODE = @LOOKUPCODE,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where ID = @ID

                if @OPTIONCOUNT > 0
                begin
                    declare @OPTIONTABLE table(OPTIONID uniqueidentifier, OPTIONVALUE nvarchar(50), INSTANCEOPTIONID uniqueidentifier)
                    insert into @OPTIONTABLE values (@OPTION1ID, @OPTION1VALUE, @INSTANCEOPTION1ID)
                    insert into @OPTIONTABLE values (@OPTION2ID, @OPTION2VALUE, @INSTANCEOPTION2ID)
                    insert into @OPTIONTABLE values (@OPTION3ID, @OPTION3VALUE, @INSTANCEOPTION3ID)

                    --insert new product options
                    insert into dbo.MERCHANDISEPRODUCTOPTIONVALUE
                        (ID, MERCHANDISEPRODUCTOPTIONID, NAME, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    select
                        newid(),
                        O.OPTIONID,
                        O.OPTIONVALUE,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    from
                        @OPTIONTABLE O
                        left outer join dbo.MERCHANDISEPRODUCTOPTIONVALUE on
                            O.OPTIONVALUE = MERCHANDISEPRODUCTOPTIONVALUE.NAME and
                            O.OPTIONID = MERCHANDISEPRODUCTOPTIONVALUE.MERCHANDISEPRODUCTOPTIONID                    
                        where MERCHANDISEPRODUCTOPTIONVALUE.ID is null
                        and O.OPTIONID is not null

                    --update existing product instance options
                    update dbo.MERCHANDISEPRODUCTINSTANCEOPTIONVALUE set
                        MERCHANDISEPRODUCTOPTIONVALUEID = MERCHANDISEPRODUCTOPTIONVALUE.ID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    from
                        dbo.MERCHANDISEPRODUCTINSTANCEOPTIONVALUE 
                        inner join @OPTIONTABLE O on
                            MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.ID = O.INSTANCEOPTIONID
                        inner join dbo.MERCHANDISEPRODUCTOPTIONVALUE on                      
                            O.OPTIONVALUE = MERCHANDISEPRODUCTOPTIONVALUE.NAME and
                            O.OPTIONID = MERCHANDISEPRODUCTOPTIONVALUE.MERCHANDISEPRODUCTOPTIONID                                          

                end

                if dbo.UFN_MERCHANDISEPRODUCTINSTANCE_CHECKOPTIONCOUNT(@ID) = 0
                begin
                    raiserror('ERR_MERCHANDISEPRODUCTINSTANCE_OPTIONCOUNTNOTCORRECT', 13, 1);
                    return 1
                end

                if dbo.UFN_MERCHANDISEPRODUCTINSTANCE_OPTIONSUNIQUE(@ID) = 0
                begin
                    raiserror('ERR_MERCHANDISEPRODUCTINSTANCE_OPTIONSNOTUNIQUE', 13, 1);
                    return 1
                end      

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

                return 0;