USP_DATAFORMTEMPLATE_VIEW_REVENUEPROFILE

The load procedure used by the view dataform template "Revenue Profile View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TRANSACTIONTYPECODE tinyint INOUT Transaction type code
@TRANSACTIONTYPE nvarchar(28) INOUT Transaction type
@PAYMENTAMOUNT money INOUT Payment amount
@AMOUNT money INOUT Amount
@BALANCE money INOUT Balance
@TOTALPAID money INOUT Total paid
@PASTDUE money INOUT Past due
@MATCHEDREVENUE nvarchar(255) INOUT Matched revenue
@MATCHEDREVENUEID uniqueidentifier INOUT Matched revenue ID
@PAYMENTID uniqueidentifier INOUT Payment ID
@NEXTTRANSACTION datetime INOUT Next transaction
@ISPENDING bit INOUT Is pending
@PENDINGBATCHNUMBER nvarchar(100) INOUT Pending batch number
@DATE datetime INOUT Date
@POSTDATE datetime INOUT Post date
@POSTSTATUS nvarchar(50) INOUT Post status
@BATCHNUMBER nvarchar(100) INOUT Batch number
@APPEAL nvarchar(100) INOUT Appeal
@SENDPLEDGEREMINDER bit INOUT Send reminders
@FREQUENCY nvarchar(100) INOUT Frequency
@ENDDATE datetime INOUT End date
@STARTDATE datetime INOUT Start date
@STATUS nvarchar(255) INOUT Status
@SOURCECODE nvarchar(50) INOUT Source code
@RECEIPTAMOUNT money INOUT Receipt amount
@GIVENANONYMOUSLY bit INOUT Given anonymously
@MAILING nvarchar(100) INOUT Effort
@CHANNEL nvarchar(100) INOUT Inbound channel
@PLEDGESUBTYPE nvarchar(100) INOUT Subtype
@RECEIPTNUMBER int INOUT Receipt number
@RECEIPTSTATUS nvarchar(20) INOUT Receipt status
@RECEIPTDATE datetime INOUT Receipt date
@ACKNOWLEDGESTATUS nvarchar(20) INOUT Acknowledged status

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_REVENUEPROFILE
(
  @ID uniqueidentifier,    
  @DATALOADED bit = 0 output,
  @TRANSACTIONTYPECODE tinyint = null output,
  @TRANSACTIONTYPE nvarchar(28) = null output,
  @PAYMENTAMOUNT money = null output,
  @AMOUNT money = null output,
  @BALANCE money = null output,
  @TOTALPAID money = null output,
  @PASTDUE money = null output,
  @MATCHEDREVENUE nvarchar(255) = null output,
  @MATCHEDREVENUEID uniqueidentifier = null output,
  @PAYMENTID uniqueidentifier = null output,
  @NEXTTRANSACTION datetime = null output,
  @ISPENDING bit = null output,
  @PENDINGBATCHNUMBER nvarchar(100) = null output,
  @DATE datetime = null output,
  @POSTDATE datetime = null output,
  @POSTSTATUS nvarchar(50) = null output,
  @BATCHNUMBER nvarchar(100) = null output,
  @APPEAL nvarchar(100) = null output,
  @SENDPLEDGEREMINDER bit = null output,
  @FREQUENCY nvarchar(100) = null output,
  @ENDDATE datetime = null output,
  @STARTDATE datetime = null output,
  @STATUS nvarchar(255) = null output,
  @SOURCECODE nvarchar(50) = null output,
  @RECEIPTAMOUNT money = null output,
  @GIVENANONYMOUSLY bit = null output,
  @MAILING nvarchar(100) = null output,
  @CHANNEL nvarchar(100) = null output,
  @PLEDGESUBTYPE nvarchar(100) = null output,
  @RECEIPTNUMBER int = null output,
  @RECEIPTSTATUS nvarchar(20) = null output,
  @RECEIPTDATE datetime = null output,
  @ACKNOWLEDGESTATUS nvarchar(20) = null output
)
as

  set nocount on;

  set @DATALOADED = 0;

  select 
    @TRANSACTIONTYPECODE = TRANSACTIONTYPECODE 
  from dbo.REVENUE 
  where ID = @ID;

  --Get general fields that are valid for all views

  select
    @DATALOADED = 1,
    @DATE = cast(FINANCIALTRANSACTION.DATE as datetime), 
    @TRANSACTIONTYPE = FINANCIALTRANSACTION.TYPE,
    @AMOUNT = FINANCIALTRANSACTION.BASEAMOUNT,
    @POSTDATE = cast(FINANCIALTRANSACTION.POSTDATE as datetime),
    @POSTSTATUS = case 
              when REVENUEPOSTED.ID is not null and ADJUSTMENT.POSTSTATUSCODE = 1 then 'Posted (adjustment pending)'
              when REVENUEPOSTED.ID is not null then 'Posted'
              when FINANCIALTRANSACTION.POSTSTATUSCODE = 3 then 'Do not post'
              else 'Not posted'
            end,
    @BATCHNUMBER = REVENUE_EXT.BATCHNUMBER,
    @RECEIPTAMOUNT = REVENUE_EXT.RECEIPTAMOUNT,
    @APPEAL = '',
    @RECEIPTNUMBER = case dbo.UFN_REVENUE_GETRECEIPTSTATUS(FINANCIALTRANSACTION.ID)
      when 'Receipted' then REVENUERECEIPT.RECEIPTNUMBER
      else null end,
    @RECEIPTDATE = case dbo.UFN_REVENUE_GETRECEIPTSTATUS(FINANCIALTRANSACTION.ID)
      when 'Receipted' then REVENUERECEIPT.RECEIPTDATE
      else null end,
    @RECEIPTSTATUS = dbo.UFN_REVENUE_GETRECEIPTSTATUS(FINANCIALTRANSACTION.ID),
    @ACKNOWLEDGESTATUS = dbo.UFN_REVENUE_GETACKNOWLEDGESTATUS(FINANCIALTRANSACTION.ID)
  from dbo.FINANCIALTRANSACTION
  inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
  left join dbo.ADJUSTMENT on FINANCIALTRANSACTION.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
  left join dbo.REVENUERECEIPT on FINANCIALTRANSACTION.ID = REVENUERECEIPT.ID
  left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = FINANCIALTRANSACTION.ID
  where FINANCIALTRANSACTION.ID = @ID
    and FINANCIALTRANSACTION.DELETEDON is null

  if @TRANSACTIONTYPECODE = 1 -- Pledge

  begin
    select 
      @BALANCE = dbo.UFN_PLEDGE_GETBALANCE(FINANCIALTRANSACTION.ID),
      @TOTALPAID = dbo.UFN_PLEDGE_GETAMOUNTPAID(FINANCIALTRANSACTION.ID),
      @PASTDUE = dbo.UFN_PLEDGE_GETPASTDUEAMOUNT(FINANCIALTRANSACTION.ID),
      @ISPENDING = REVENUESCHEDULE.ISPENDING,
      @SENDPLEDGEREMINDER = REVENUESCHEDULE.SENDPLEDGEREMINDER,
      @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE_EXT.APPEALID),
      @SOURCECODE = REVENUE_EXT.SOURCECODE,
      @GIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY,
      @MAILING = dbo.UFN_MKTSEGMENTATION_GETNAME(REVENUE_EXT.MAILINGID),
      @CHANNEL = CHANNELCODE.DESCRIPTION,
      @PLEDGESUBTYPE = PLEDGESUBTYPE.NAME
    from dbo.FINANCIALTRANSACTION
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
    left join dbo.PLEDGESUBTYPE on PLEDGESUBTYPE.ID = REVENUESCHEDULE.PLEDGESUBTYPEID
    left join dbo.CHANNELCODE on CHANNELCODE.ID = REVENUE_EXT.CHANNELCODEID
    where FINANCIALTRANSACTION.ID = @ID
        and FINANCIALTRANSACTION.DELETEDON is null;

    if @ISPENDING = 1
      select top 1
        @PENDINGBATCHNUMBER = BATCH.BATCHNUMBER 
      from dbo.BATCH
      inner join dbo.BATCHREVENUE on BATCHREVENUE.BATCHID = BATCH.ID
      inner join dbo.BATCHREVENUEAPPLICATION as [APP] on [APP].BATCHREVENUEID = BATCHREVENUE.ID and [APP].WASGENERATED = 1
      inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = [APP].REVENUEID
      inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
      where BATCH.STATUSCODE = 0 and FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null;
  end

  if @TRANSACTIONTYPECODE = 3
  begin
    select 
      @DATALOADED = 1,
      @TOTALPAID = coalesce((select sum(INSTALLMENTPAYMENT.AMOUNT) from dbo.INSTALLMENTPAYMENT where INSTALLMENTPAYMENT.PLEDGEID = FINANCIALTRANSACTION.ID), 0),
      @BALANCE = dbo.UFN_PLEDGE_GETBALANCE(FINANCIALTRANSACTION.ID),
      @MATCHEDREVENUEID = RMG.MGSOURCEREVENUEID,
      @ISPENDING = REVENUESCHEDULE.ISPENDING,
      @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE_EXT.APPEALID),
      @SOURCECODE = REVENUE_EXT.SOURCECODE
    from dbo.FINANCIALTRANSACTION
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    inner join dbo.REVENUEMATCHINGGIFT RMG on FINANCIALTRANSACTION.ID = RMG.ID
    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
    inner join dbo.CONSTITUENT on CONSTITUENT.ID = FINANCIALTRANSACTION.CONSTITUENTID
    where FINANCIALTRANSACTION.ID = @ID
        and FINANCIALTRANSACTION.DELETEDON is null;

    select
      @MATCHEDREVENUE = FINANCIALTRANSACTION.TYPE + ' for ' + CONSTITUENT.NAME
    from dbo.FINANCIALTRANSACTION
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    inner join dbo.CONSTITUENT on CONSTITUENT.ID = FINANCIALTRANSACTION.CONSTITUENTID
    where FINANCIALTRANSACTION.ID = @MATCHEDREVENUEID and FINANCIALTRANSACTION.DELETEDON is null

    select
      top 1 
      @PAYMENTID = FINANCIALTRANSACTION.ID 
    from dbo.INSTALLMENTPAYMENT
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = INSTALLMENTPAYMENT.PAYMENTID
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    order by cast(FINANCIALTRANSACTION.DATE as datetime) desc

    if @ISPENDING = 1
      select top 1
        @PENDINGBATCHNUMBER = BATCH.BATCHNUMBER 
      from dbo.BATCH
      inner join dbo.BATCHREVENUE on BATCHREVENUE.BATCHID = BATCH.ID
      inner join dbo.BATCHREVENUEAPPLICATION as [APP] on [APP].BATCHREVENUEID = BATCHREVENUE.ID and [APP].WASGENERATED = 1
      inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = [APP].REVENUEID
      inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
      where BATCH.STATUSCODE = 0 and FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null
  end

  if @TRANSACTIONTYPECODE = 2
  begin
    select
      @DATALOADED = 1,
      @NEXTTRANSACTION = case when REVENUESCHEDULE.NEXTTRANSACTIONDATE > REVENUESCHEDULE.ENDDATE then null else REVENUESCHEDULE.NEXTTRANSACTIONDATE end,
      @TOTALPAID = (select sum(AMOUNT) from dbo.RECURRINGGIFTACTIVITY where SOURCEREVENUEID = FINANCIALTRANSACTION.ID and TYPECODE = 0),
      @FREQUENCY = REVENUESCHEDULE.FREQUENCY,
      @STARTDATE = REVENUESCHEDULE.STARTDATE,
      @ENDDATE = REVENUESCHEDULE.ENDDATE,
      @STATUS = REVENUESCHEDULE.STATUS,
      @ISPENDING = REVENUESCHEDULE.ISPENDING,
      @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE_EXT.APPEALID),
      @SOURCECODE = REVENUE_EXT.SOURCECODE,
      @GIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY,
      @MAILING = dbo.UFN_MKTSEGMENTATION_GETNAME(REVENUE_EXT.MAILINGID),
      @CHANNEL = CHANNELCODE.DESCRIPTION
    from dbo.FINANCIALTRANSACTION
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
    left join dbo.CHANNELCODE on CHANNELCODE.ID = REVENUE_EXT.CHANNELCODEID
    where FINANCIALTRANSACTION.ID = @ID
        and FINANCIALTRANSACTION.DELETEDON is null;

    if @ISPENDING = 1
      select top 1
        @PENDINGBATCHNUMBER = BATCH.BATCHNUMBER 
      from dbo.BATCH
      inner join dbo.BATCHREVENUE on BATCHREVENUE.BATCHID = BATCH.ID
      inner join dbo.BATCHREVENUEAPPLICATION as [APP] on [APP].BATCHREVENUEID = BATCHREVENUE.ID  and [APP].WASGENERATED = 1
      inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = [APP].REVENUEID
      inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
      where BATCH.STATUSCODE = 0 and FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null
  end

  return 0;