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