USP_REVENUE_ADDRECEIPTDETAILS
Adds necessary receipt records for revenue added to transactions that have already been receipted.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TRANSACTIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_REVENUE_ADDRECEIPTDETAILS
(
@TRANSACTIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @RECEIPTNUM int;
declare @RECEIPTPROCESSDATE datetime;
declare @RECEIPTDATE datetime;
declare @REVENUEID uniqueidentifier;
declare @RECEIPTINGPROCESSSTATUSID uniqueidentifier;
declare CUR_RECEIPTS cursor local fast_forward for
select
RECEIPTNUMBER,
RECEIPTPROCESSDATE,
RECEIPTDATE,
R.ID,
RECEIPTINGPROCESSSTATUSID
from
dbo.REVENUE R
cross join (
select distinct
RR.RECEIPTNUMBER,
RR.RECEIPTPROCESSDATE,
RR.RECEIPTDATE,
RR.RECEIPTINGPROCESSSTATUSID
from
dbo.REVENUERECEIPT RR
inner join
dbo.REVENUE RSUB on RR.REVENUEID = RSUB.ID
where
RSUB.TRANSACTIONID = @TRANSACTIONID) RCPTS
where not exists (
select * from dbo.REVENUERECEIPT RR where R.ID = RR.REVENUEID and RR.RECEIPTNUMBER = RCPTS.RECEIPTNUMBER)
and R.TRANSACTIONID = @TRANSACTIONID
order by
RCPTS.RECEIPTPROCESSDATE
open CUR_RECEIPTS;
fetch next from CUR_RECEIPTS into @RECEIPTNUM,@RECEIPTPROCESSDATE,@RECEIPTDATE,@REVENUEID,@RECEIPTINGPROCESSSTATUSID;
while @@FETCH_STATUS = 0
begin
-- For each receipt record for the current transaction, add corresponding receipt records for any revenue
-- added to this transaction
insert into dbo.REVENUERECEIPT (
ID,
RECEIPTNUMBER,
RECEIPTPROCESSDATE,
RECEIPTDATE,
REVENUEID,
ORIGINALREVENUERECEIPTID,
PREVIOUSREVENUERECEIPTID,
RECEIPTINGPROCESSSTATUSID,
ADDEDBYID,
CHANGEDBYID,
DATECHANGED
)
select
newid(),
@RECEIPTNUM,
@RECEIPTPROCESSDATE,
@RECEIPTDATE,
@REVENUEID,
(select top 1 coalesce(RR.ORIGINALREVENUERECEIPTID, RR.ID) from dbo.REVENUERECEIPT RR where RR.REVENUEID = @REVENUEID order by RR.RECEIPTPROCESSDATE desc),
(select top 1 RR.ID from dbo.REVENUERECEIPT RR where RR.REVENUEID = @REVENUEID order by RR.RECEIPTPROCESSDATE desc),
@RECEIPTINGPROCESSSTATUSID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE
fetch next from CUR_RECEIPTS into @RECEIPTNUM,@RECEIPTPROCESSDATE,@RECEIPTDATE,@REVENUEID,@RECEIPTINGPROCESSSTATUSID;
end
close CUR_RECEIPTS;
deallocate CUR_RECEIPTS;
-- if re-receipts turned on
if (coalesce((select top 1 RERECEIPTPAYMENTS from dbo.RECEIPTPREFERENCEINFO), 1)) = 1
begin
declare @RECEIPTNUMBER int;
select top 1
@RECEIPTNUMBER = RR.RECEIPTNUMBER
from
dbo.REVENUERECEIPT RR
inner join
dbo.REVENUE R on RR.REVENUEID = R.ID
where
R.TRANSACTIONID = @TRANSACTIONID
order by
RR.DATEADDED desc;
if @RECEIPTNUMBER is not null
-- Mark all revenue records that have the same receipt number as the receipted revenue record in this
-- transaction to be re-receipted.
update dbo.REVENUE
set
REVENUE.NEEDSRERECEIPT = 1,
REVENUE.CHANGEDBYID = @CHANGEAGENTID,
REVENUE.DATECHANGED = @CURRENTDATE
from
dbo.REVENUE
left join
dbo.REVENUERECEIPT RR on RR.REVENUEID = REVENUE.ID
where
RR.RECEIPTNUMBER = @RECEIPTNUMBER
and REVENUE.DONOTRECEIPT = 0;
end
return 0;