USP_SALESORDERMANUALDISCOUNT_DELETE
Executes the "Sales Order Manual Discount 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_SALESORDERMANUALDISCOUNT_DELETE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
declare @SALESORDERID uniqueidentifier;
declare @DISCOUNTID uniqueidentifier;
declare @SALESORDERDISCOUNTLIMITOVERRIDEID uniqueidentifier;
-- check for item discount
select
@DISCOUNTID = DISCOUNTID,
@SALESORDERID = SALESORDERID
from dbo.SALESORDERMANUALDISCOUNT
where ID = @ID;
begin try
exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;
exec dbo.USP_SALESORDERMANUALDISCOUNT_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
-- delete the limit
select
@SALESORDERDISCOUNTLIMITOVERRIDEID = ID
from dbo.SALESORDERDISCOUNTLIMITOVERRIDE
where SALESORDERID = @SALESORDERID
and DISCOUNTID = @DISCOUNTID;
if @SALESORDERDISCOUNTLIMITOVERRIDEID is not null
exec USP_SALESORDERDISCOUNTLIMITOVERRIDE_DELETEBYID_WITHCHANGEAGENTID @SALESORDERDISCOUNTLIMITOVERRIDEID, @CHANGEAGENTID;
-- recalculate discounts
if (select APPLIESTOCODE from dbo.DISCOUNT where ID = @DISCOUNTID) = 1 -- Item-level
begin
-- No need to do this when deleting an order-level discount, because they don't affect item-level calculations.
exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
end
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;
end