USP_SALESORDERITEMTICKETCOMBINATION_DELETE
Executes the "Sales Order Item Ticket Combination 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_SALESORDERITEMTICKETCOMBINATION_DELETE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @ORDERID uniqueidentifier
declare @TICKETCOMBINATIONID uniqueidentifier
declare @ORDERITEMID uniqueidentifier
declare @PRICETYPECODEID uniqueidentifier
declare @TYPECODE int
select @ORDERID = SALESORDERID, @TYPECODE = TYPECODE, @TICKETCOMBINATIONID = TICKETCOMBINATIONID, @PRICETYPECODEID = PRICETYPECODEID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
where SALESORDERITEM.ID = @ID;
declare cur cursor local fast_forward read_only for
select SALESORDERITEM.ID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
where @TICKETCOMBINATIONID = TICKETCOMBINATIONID and @PRICETYPECODEID = PRICETYPECODEID
begin try
exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @ORDERID, @EXCLUDEGROUPSALES = 1;
open cur
fetch next from cur into @ORDERITEMID
while @@fetch_status = 0
begin
if @TYPECODE = 0
exec USP_SALESORDERITEM_REMOVEFEES @ORDERITEMID, @CHANGEAGENTID;
-- use the system generated delete routine to allow proper recording of the deleting agent
exec USP_SALESORDERITEM_DELETEBYID_WITHCHANGEAGENTID @ORDERITEMID, @CHANGEAGENTID;
fetch next from cur into @ORDERITEMID
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close cur;
deallocate cur;
if @TYPECODE = 0
exec dbo.USP_SALESORDER_CALCULATEFEES @ORDERID, @CHANGEAGENTID;
if @TYPECODE <> 2
begin
exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @ORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @ORDERID, @CHANGEAGENTID;
end
exec dbo.USP_SALESORDER_CALCULATETAXES @ORDERID, @CHANGEAGENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;
end