USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMDISCOUNTUPDATE
The save procedure used by the add dataform template "Sales Order Item Discount Update Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@DISCOUNTID | uniqueidentifier | IN | |
@SALESORDERID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@QUANTITY | smallint | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMDISCOUNTUPDATE(
@ID uniqueidentifier output,
@CHANGEAGENTID uniqueidentifier = null,
@DISCOUNTID uniqueidentifier = null,
@SALESORDERID uniqueidentifier,
@QUANTITY smallint = 0
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;
--Only update item discounts for standard and with required purchase types
if exists(select [ID] from dbo.[DISCOUNT] where [ID] = @DISCOUNTID and [APPLIESTOCODE] = 1 and [DISCOUNTTYPECODE] <> 2)
begin
--We want the quantity to be greater than zero
if @QUANTITY <= 0
raiserror('BBERR_QUANTITY_GREATERTHANZERO', 13, 1);
--Don't let the user-entered limit exceed the system-wide configured limit
select
@QUANTITY =
case when [LIMITDISCOUNTSPERORDER] = 1 and @QUANTITY > [NUMBEROFDISCOUNTSPERORDER] then
[NUMBEROFDISCOUNTSPERORDER]
else
@QUANTITY
end
from dbo.[DISCOUNT]
where [ID] = @DISCOUNTID;
if exists( select [ID] from [SALESORDERDISCOUNTLIMITOVERRIDE]
where [SALESORDERID] = @SALESORDERID and [DISCOUNTID] = @DISCOUNTID)
begin
update dbo.[SALESORDERDISCOUNTLIMITOVERRIDE] set
[NUMBEROFDISCOUNTSPERORDER] = @QUANTITY,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [SALESORDERID] = @SALESORDERID and
[DISCOUNTID] = @DISCOUNTID;
end
else
begin
insert into dbo.[SALESORDERDISCOUNTLIMITOVERRIDE]
(ID, SALESORDERID, DISCOUNTID, NUMBEROFDISCOUNTSPERORDER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(newid(), @SALESORDERID, @DISCOUNTID, @QUANTITY, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
end
exec dbo.USP_SALESORDER_CALCULATEFEES @SALESORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_CALCULATETAXES @SALESORDERID, @CHANGEAGENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;