UFN_REVENUE_GETRECEIPTSTATUS

Returns a string indicating the receipt status of a revenue record.

Return

Return Type
nvarchar(50)

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_REVENUE_GETRECEIPTSTATUS
(
  @REVENUEID uniqueidentifier
)
returns nvarchar(50)
with execute as caller
as
begin
  declare @STATUS nvarchar(50);
  declare @DONOTRECEIPT bit;
  declare @NEEDSRERECEIPT bit;
  declare @RECEIPTTYPECODE int;

  select 
    @DONOTRECEIPT = REVENUE_EXT.DONOTRECEIPT, 
    @NEEDSRERECEIPT = REVENUE_EXT.NEEDSRERECEIPT,
    @RECEIPTTYPECODE = REVENUE_EXT.RECEIPTTYPECODE
  from 
    dbo.FINANCIALTRANSACTION
  inner join
    dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
  where 
    FINANCIALTRANSACTION.ID = @REVENUEID and
    FINANCIALTRANSACTION.DELETEDON is null;

  if @DONOTRECEIPT = 1
    begin
      set @STATUS = 'Do not receipt';
    end
  else
    begin
      declare @RECEIPTID uniqueidentifier;
      declare @RECEIPTDATE datetime;
      declare @NEWNUMBERONRERECEIPT bit;

      select top 1
        @RECEIPTID = RR.ID,
        @RECEIPTDATE = RR.RECEIPTDATE,
        @NEWNUMBERONRERECEIPT = RRD.NEWNUMBERONRERECEIPT
      from
        dbo.REVENUERECEIPT RR 
      left join
        dbo.REVENUERECEIPTRERECEIPTDETAIL RRD on RRD.REVENUERECEIPTID = RR.ID
      where
        RR.REVENUEID = @REVENUEID 
      order by
        RR.RECEIPTPROCESSDATE desc,
        RRD.DATEADDED desc;

      if @RECEIPTID is null
        begin
          set @STATUS = 'Not receipted';
        end
      else if @RECEIPTDATE is null
        begin
          set @STATUS = 'Pending';
        end
      else
        begin
          set @STATUS = 'Receipted';

          if @NEEDSRERECEIPT = 1
            begin
              if @NEWNUMBERONRERECEIPT is null
                select top 1 @NEWNUMBERONRERECEIPT = case when SAMENUMBERONRERECEIPT = 1 then 0 else 1 end from dbo.RECEIPTPREFERENCEINFO;

              if @NEWNUMBERONRERECEIPT = 1
                set @STATUS = @STATUS + ' (eligible for re-receipt, new number)';
              else
                set @STATUS = @STATUS + ' (eligible for re-receipt, same number)';
            end
        end
    end

  return @STATUS;
end