USP_REVENUERECEIPT_ADD

Add data to RevenueReceipt table

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@REVENUEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@RECEIPTDATE datetime IN
@RECEIPTPROCESSDATE datetime IN
@RECEIPTINGPROCESSSTATUSID uniqueidentifier IN

Definition

Copy



CREATE procedure dbo.USP_REVENUERECEIPT_ADD(
    @ID uniqueidentifier = null output,
    @REVENUEID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier=null,
    @RECEIPTDATE datetime=null,
    @RECEIPTPROCESSDATE datetime=null,
    @RECEIPTINGPROCESSSTATUSID uniqueidentifier=null
)
as
begin

    if @ID is null
    set @ID = newid();

    declare @RECEIPTNUMBER int

    declare @NextID table (ID int)
    update dbo.RECEIPTSTACKINFO set NEXTRECEIPTNUMBER = NEXTRECEIPTNUMBER+1 output inserted.NEXTRECEIPTNUMBER into @NextID where ISDEFAULT = 1
    select top 1 @RECEIPTNUMBER=ID-1 from @NextID

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

    if @RECEIPTDATE is null
        set @RECEIPTDATE=GETDATE()

    if @RECEIPTPROCESSDATE is null
        set @RECEIPTPROCESSDATE=GETDATE()

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    --if TRANSACTIONTYPECODE is not 0 or 7, this data will not be added.

    if exists (select * from REVENUE WHERE ID=@REVENUEID AND TRANSACTIONTYPECODE in (0, 7)and REVENUE.DONOTRECEIPT = 0)
    begin try
        insert into dbo.REVENUERECEIPT(
            ID,
            REVENUEID,
            originalrevenuereceiptid,
            previousrevenuereceiptid,
            RECEIPTNUMBER,
            RECEIPTPROCESSDATE,
            RECEIPTDATE,
            RECEIPTINGPROCESSSTATUSID,
            DATEADDED,
            DATECHANGED,
            ADDEDBYID,
            CHANGEDBYID) 
        values(
            @ID,
            @REVENUEID,
            (select top 1 coalesce(RR.ORIGINALREVENUERECEIPTID, RR.ID) from dbo.REVENUERECEIPT RR where RR.REVENUEID = @REVENUEID order by RECEIPTPROCESSDATE desc),
            (select top 1 RR.ID from dbo.REVENUERECEIPT RR where RR.REVENUEID = @REVENUEID order by RECEIPTPROCESSDATE desc),
            @RECEIPTNUMBER,
            @RECEIPTPROCESSDATE,
            @RECEIPTDATE,
            @RECEIPTINGPROCESSSTATUSID,
            @CURRENTDATE,
            @CURRENTDATE,
            @CHANGEAGENTID,
            @CHANGEAGENTID
        )

        update dbo.REVENUE
        set NEEDSRERECEIPT = 0
        from REVENUE S where ID = @REVENUEID and NEEDSRERECEIPT = 1
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

        return 0;
end