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;