USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEMMERCHANDISE

The save procedure used by the edit dataform template "Sales Order Item Merchandise 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.
@MERCHANDISEPRODUCTINSTANCEID uniqueidentifier IN Item
@QUANTITY int IN Quantity

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEMMERCHANDISE (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @MERCHANDISEPRODUCTINSTANCEID uniqueidentifier,
                    @QUANTITY integer
                )
                as

                    set nocount on;

                    if @QUANTITY <= 0
                        raiserror('BBERR_QUANTITY_GREATERTHANZERO', 13, 1)

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

                    declare @CURRENTDATE datetime
                    set @CURRENTDATE = getdate()

                    declare @SALESORDERID uniqueidentifier;
                    select @SALESORDERID = SALESORDERID from dbo.SALESORDERITEM where ID = @ID;

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

                        if @MERCHANDISEPRODUCTINSTANCEID is null
                        begin
                            select @MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCEID
                            from dbo.SALESORDERITEMMERCHANDISE where ID = @ID
                        end

                        declare @OLDQUANTITY integer = (select QUANTITY from dbo.SALESORDERITEM where ID = @ID)
                        declare @DIFFERENCE integer = (@QUANTITY - @OLDQUANTITY)

                        update dbo.SALESORDERITEM set
                            QUANTITY += @DIFFERENCE,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @ID

                        exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
                        exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
                        exec dbo.USP_SALESORDER_CALCULATETAXES @SALESORDERID, @CHANGEAGENTID;

                        -- Moving until after the slow process of recalculating discounts and taxes
                        -- in order to keep from locking this table
                        update dbo.MERCHANDISEPRODUCTINSTANCE set
                            ONHANDQUANTITY -= @DIFFERENCE,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @MERCHANDISEPRODUCTINSTANCEID
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR
                        return 1
                    end catch

                return 0;