USP_RECEIPTINGPROCESS_DELETE

Executes the "Receipting Process: 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_RECEIPTINGPROCESS_DELETE
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier
                    )
                    as begin
                        set nocount on;

                        exec dbo.USP_BUSINESSPROCESS_PARAMETERSETCANBEDELETED 'RECEIPTINGPROCESSSTATUS', @ID;

                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = getdate();

                        update 
                            dbo.REVENUERECEIPT
                        set 
                            ORIGINALREVENUERECEIPTID = null,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            ORIGINALREVENUERECEIPTID in (
                                select RR.ID from REVENUERECEIPT RR inner join dbo.RECEIPTINGPROCESSSTATUS STATUS on RR.RECEIPTINGPROCESSSTATUSID = STATUS.ID
                                where STATUS.PARAMETERSETID = @ID and RR.RECEIPTDATE is null
                            );

                        update 
                            dbo.REVENUERECEIPT
                        set 
                            PREVIOUSREVENUERECEIPTID = null,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            PREVIOUSREVENUERECEIPTID in (
                                select RR.ID from REVENUERECEIPT RR inner join dbo.RECEIPTINGPROCESSSTATUS STATUS on RR.RECEIPTINGPROCESSSTATUSID = STATUS.ID
                                where STATUS.PARAMETERSETID = @ID and RR.RECEIPTDATE is null
                            );

                        -- if records have not been marked Receipted for any run of this process, delete the records from the REVENUERECEIPT table

                        -- so they will be picked up in a subsequent run


                        -- Resetting the next available receipt number first


                        declare @NEXTNUMBER int;
                        declare @RECEIPTSTACKID uniqueidentifier;
                        declare @RECEIPTPROCESSDATE datetime;
                        select top 1 @NEXTNUMBER = MIN(RR.RECEIPTNUMBER), @RECEIPTSTACKID = RR.RECEIPTSTACKINFOID, @RECEIPTPROCESSDATE = RR.RECEIPTPROCESSDATE
                        from dbo.REVENUERECEIPT RR 
                        inner join dbo.RECEIPTINGPROCESSSTATUS STATUS on RR.RECEIPTINGPROCESSSTATUSID = STATUS.ID
                        where STATUS.PARAMETERSETID = @ID and RR.RECEIPTDATE is null
                        group by RECEIPTSTACKINFOID,RECEIPTPROCESSDATE
                        order by RR.RECEIPTPROCESSDATE desc;

                        if not exists (select ID from REVENUERECEIPT where @RECEIPTSTACKID = RECEIPTSTACKINFOID and RECEIPTPROCESSDATE > @RECEIPTPROCESSDATE)
                            exec dbo.USP_REVENUE_SETNEXTRECEIPTNUMBER @RECEIPTSTACKID,@NEXTNUMBER


                        --Cache CONTEXT INFO

                        declare @contextCache varbinary(128);
                        set @contextCache = CONTEXT_INFO();

                        if not @CHANGEAGENTID is null
                            set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.REVENUERECEIPT where REVENUERECEIPT.ID in 
                            (select RR.ID from REVENUERECEIPT RR inner join dbo.RECEIPTINGPROCESSSTATUS STATUS on RR.RECEIPTINGPROCESSSTATUSID = STATUS.ID
                             where STATUS.PARAMETERSETID = @ID and RR.RECEIPTDATE is null);

                        --Restore CONTEXT_INFO

                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache;

                        exec dbo.USP_BUSINESSPROCESSINSTANCE_DELETE '83048DED-208E-45c9-852C-E7D5C7317882', @ID, @CHANGEAGENTID;

                        exec dbo.USP_BUSINESSPROCESSCOMMPREF_DELETE '83048DED-208E-45c9-852C-E7D5C7317882', @ID, @CHANGEAGENTID;

                        exec dbo.USP_RECEIPTINGPROCESS_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
                        return 0;
                    end