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