USP_SALESORDERITEMMERCHANDISE_DELETE

Executes the "Sales Order Item Merchandise Delete" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being deleted.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the delete.

Definition

Copy


                CREATE procedure dbo.USP_SALESORDERITEMMERCHANDISE_DELETE
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier
                )
                as begin
                    set nocount on;

                    declare @ORDERID uniqueidentifier
                    declare @QUANTITY integer
                    declare @MERCHANDISEPRODUCTINSTANCEID uniqueidentifier

                    select 
                        @ORDERID = SOI.SALESORDERID,
                        @QUANTITY = SOI.QUANTITY,
                        @MERCHANDISEPRODUCTINSTANCEID = SOIM.MERCHANDISEPRODUCTINSTANCEID
                    from dbo.SALESORDERITEM SOI
                    inner join dbo.SALESORDERITEMMERCHANDISE SOIM on SOI.ID = SOIM.ID
                    where SOI.ID = @ID

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

                    declare @CURRENTDATE datetime = getdate();

                    declare @e int;
                    declare @contextCache varbinary(128);

                    set @contextCache = CONTEXT_INFO();

                    if not @CHANGEAGENTID is null
                        set CONTEXT_INFO @CHANGEAGENTID;

                    delete from dbo.SALESORDERITEMORDERDISCOUNTDETAIL where SALESORDERITEMID = @ID

                    if not @contextCache is null
                        set CONTEXT_INFO @contextCache;

                    exec USP_SALESORDERITEM_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID

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

                    update dbo.MERCHANDISEPRODUCTINSTANCE set
                        ONHANDQUANTITY += @QUANTITY,
                        DATECHANGED = @CURRENTDATE,
                        CHANGEDBYID = @CHANGEAGENTID
                    where
                        ID = @MERCHANDISEPRODUCTINSTANCEID;

                    return 0;

                end