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;