USP_DATAFORMTEMPLATE_VIEW_REVENUETRANSACTIONPROFILE

The load procedure used by the view dataform template "Revenue Transaction 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.
@TYPE tinyint INOUT Type
@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
@PAYMENTMETHOD nvarchar(15) INOUT Payment method
@PAYMENTMETHODCODE tinyint INOUT Payment method code
@CHECKDATE UDT_FUZZYDATE INOUT Check date
@CHECKNUMBER nvarchar(20) INOUT Check number
@REFERENCENUMBER nvarchar(20) INOUT Reference number
@REFERENCEDATE UDT_FUZZYDATE INOUT Reference date
@CARDHOLDERNAME nvarchar(255) INOUT Name on card
@CREDITCARDNUMBER nvarchar(20) INOUT Card number
@CREDITTYPE nvarchar(100) INOUT Card type
@AUTHORIZATIONCODE nvarchar(20) INOUT Authorization code
@EXPIRESON UDT_FUZZYDATE INOUT Expires on
@ISSUER nvarchar(100) INOUT Issuer
@NUMBEROFUNITS decimal(20, 3) INOUT Number of units
@SYMBOL nvarchar(25) INOUT Symbol
@MEDIANPRICE decimal(19, 4) INOUT Median price
@SALEAMOUNT money INOUT Sale price
@GIFTINKINDSUBTYPE nvarchar(100) INOUT Subtype
@PROPERTYSUBTYPE nvarchar(100) INOUT Subtype
@ACCOUNT nvarchar(255) INOUT Account
@POSTDATE datetime INOUT Post date
@POSTSTATUS nvarchar(50) INOUT Post status
@BATCHNUMBER nvarchar(100) INOUT Batch number
@ISSOLDSTOCK bit INOUT Is sold stock
@ISSOLDPROPERTY bit INOUT Is sold property
@ISPOSTEDSOLDSTOCK bit INOUT Is posted sold stock
@ISPOSTEDSOLDPROPERTY bit INOUT Is posted sold property
@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(50) INOUT Receipt status
@RECEIPTDATE datetime INOUT Receipt date
@ACKNOWLEDGEMENTSTATUS nvarchar(50) INOUT Acknowledgements
@MGSTATUSCODE tinyint INOUT Matching gift status
@RECEIPTTYPE nvarchar(30) INOUT Receipt preference
@OTHERPAYMENTMETHODCODE nvarchar(100) INOUT Other method
@CATEGORYDESCRIPTION nvarchar(100) INOUT Revenue category
@GIFTFEEAMOUNT money INOUT Gift fees
@GIFTFEE_ENABLED bit INOUT Gift fee enabled
@ELIGIBLEFORMATCHINGGIFTCLAIM bit INOUT Eligible for matching gift claims
@ORDERNUMBER nvarchar(30) INOUT Order number
@TAXCLAIMNUMBER nvarchar(10) INOUT Tax claim number
@TAXCLAIMAMOUNT money INOUT Tax claim amount
@GROSSAMOUNT money INOUT Total payment amount
@SHOWPOTENTIAL bit INOUT Show gift aid as potential
@RECURRINGGIFTTOTALWITHGIFTAID money INOUT Total paid including Gift Aid
@PLEDGETOTALWITHGIFTAID money INOUT Total paid including Gift Aid
@PLEDGERECURRINGGIFTGROSSAMOUNT money INOUT Gross amount for pledge or recurring gift
@CONSTITUENTISGROUP bit INOUT Constituent is a group
@VATAMOUNT money INOUT VAT amount
@ISMISCELLANEOUSPAYMENT bit INOUT Is miscellaneous payment
@DEPOSITID uniqueidentifier INOUT Deposit ID
@DEPOSITNAME nvarchar(100) INOUT Deposit
@REFERENCE nvarchar(255) INOUT Reference
@ISREIMBURSABLE bit INOUT Reimbursable
@LOOKUPID nvarchar(100) INOUT Revenue ID
@RGHASINSTALLMENTS bit INOUT RGHASINSTALLMENTS
@GIFTINKINDITEMNAME nvarchar(100) INOUT Item name
@GIFTINKINDDISPOSITION nvarchar(50) INOUT Disposition
@GIFTINKINDNUMBEROFUNITS int INOUT Number of units
@GIFTINKINDFAIRMARKETVALUE money INOUT Fair market value per unit
@GIFTINKINDAPPRAISALREQUIRED bit INOUT GIFTINKINDAPPRAISALREQUIRED
@DIRECTDEBITRESULTCODE nvarchar(10) INOUT Result code
@DIRECTDEBITISREJECTED bit INOUT Direct debit is rejected
@OPPORTUNITYNAME nvarchar(250) INOUT Opportunity
@OPPORTUNITYID uniqueidentifier INOUT Opportunity ID
@FUNDINGREQUESTNAME nvarchar(150) INOUT Funding request
@FUNDINGREQUESTID uniqueidentifier INOUT Funding request ID
@SHOWRGPASTDUE bit INOUT SHOWRGPASTDUE
@HASGIFTAIDSPLITONPENDINGR68PROCESS bit INOUT HASGIFTAIDSPLITONPENDINGR68PROCESS
@GLBATCHLOOKUPID nvarchar(100) INOUT GLBATCHLOOKUPID
@GLBATCHLINKID uniqueidentifier INOUT GLBATCHLINKID
@REVENUEID uniqueidentifier INOUT REVENUEID
@AUCTIONITEMNAME nvarchar(100) INOUT Item name
@AUCTIONITEMID uniqueidentifier INOUT Auction item ID
@AUCTIONITEMCATEGORY nvarchar(100) INOUT Category
@AUCTIONITEMSUBCATEGORY nvarchar(100) INOUT Subcategory
@AUCTIONEXPIRATIONDATE datetime INOUT Expiration date
@BASECURRENCYID uniqueidentifier INOUT Base currency ID
@TRANSACTIONCURRENCYID uniqueidentifier INOUT Transaction currency ID
@BASEAMOUNT money INOUT Base amount
@CONSTITUENTNAME nvarchar(255) INOUT Constituent
@TRANSACTIONTYPE nvarchar(100) INOUT Transaction type
@GIFTFEESANDGIFTFEEDISTRIBUTIONAMOUNTSNOTEQUAL bit INOUT Gift fees and gift fee distribution amounts are not equal
@PLANNEDGIFTVEHICLECODE int INOUT Planned gift vehicle
@PLANNEDGIFTISREVOCABLE bit INOUT Revocable
@ISPLANNEDGIFTADDITION bit INOUT Planned gift addition
@UNIQUERECEIPTNUMBER nvarchar(20) INOUT Receipt number
@HASINVALIDPAPERLESSMANDATES bit INOUT HASINVALIDPAPERLESSMANDATES
@PLANNEDGIFT_TRUSTHELDOUTSIDE bit INOUT Trust held outside
@ISSOLDGIFTINKIND bit INOUT Is sold gift-in-kind
@ISPOSTEDSOLDGIFTINKIND bit INOUT Is posted sold gift-in-kind
@ACKNOWLEDGEMENTDATE datetime INOUT Acknowledged date
@POSTSTATUSCODE tinyint INOUT
@SALESMETHODTYPECODE tinyint INOUT
@TOTALREFUNDED money INOUT
@OVERAGEKEPT money INOUT
@CONSTITUENTACCOUNTID uniqueidentifier INOUT
@SEPAMANDATELOOKUPID nvarchar(35) INOUT
@SEPAMANDATESIGNATUREDATE datetime INOUT
@SEPAMANDATESTATUSCODE tinyint INOUT
@SALESORDERID uniqueidentifier INOUT
@ISTAXEXEMPT bit INOUT
@TAXEXEMPTREASON nvarchar(100) INOUT
@TAXEXEMPTCOMMENTS nvarchar(255) INOUT
@DESIGNATIONS xml INOUT
@OTHERRECURRINGGIFTS xml INOUT
@LASTPAYMENTDATE date INOUT
@FINANCIALINSTITUTION nvarchar(50) INOUT
@DIRECTDEBITACCOUNT nvarchar(4) INOUT
@NEXTTRANSACTIONSEQUENCE int INOUT
@LASTPAYMENTSEQUENCE int INOUT
@ISPARTIALCC bit INOUT
@SPONSORSHIPID uniqueidentifier INOUT
@RECURRINGGIFTHASCONTRIBUTEDPORTION bit INOUT
@STANDINGORDERSETUP bit INOUT
@STANDINGORDERSETUPDATE datetime INOUT
@CURRENTAPPUSERID uniqueidentifier IN
@CREDITCARDUPDATEDATE date INOUT
@UNMASKEDACCOUNT nvarchar(255) INOUT
@CANVIEWSENSITIVEINFORMATION bit INOUT
@ACCOUNTNUMBERLEN int INOUT

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_REVENUETRANSACTIONPROFILE
(
  @ID uniqueidentifier,
  @DATALOADED bit = 0 output,
  @TYPE tinyint = 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,
  @PAYMENTMETHOD nvarchar(15) = null output,
  @PAYMENTMETHODCODE tinyint = null output,
  @CHECKDATE dbo.UDT_FUZZYDATE = null output,
  @CHECKNUMBER nvarchar(20) = null output,
  @REFERENCENUMBER nvarchar(20) = null output,
  @REFERENCEDATE dbo.UDT_FUZZYDATE = null output,
  @CARDHOLDERNAME nvarchar(255) = null output,
  @CREDITCARDNUMBER nvarchar(20) = null output,
  @CREDITTYPE nvarchar(100) = null output,
  @AUTHORIZATIONCODE nvarchar(20) = null output,
  @EXPIRESON dbo.UDT_FUZZYDATE = null output,
  @ISSUER  nvarchar(100) = null output,
  @NUMBEROFUNITS decimal(20,3) = null output
  @SYMBOL nvarchar(25) = null output
  @MEDIANPRICE decimal(19,4) = null output,
  @SALEAMOUNT money = null output,
  @GIFTINKINDSUBTYPE nvarchar(100) = null output,
  @PROPERTYSUBTYPE nvarchar(100) = null output,
  @ACCOUNT nvarchar(255) = null output,
  @POSTDATE datetime = null output,
  @POSTSTATUS nvarchar(50) = null output,
  @BATCHNUMBER nvarchar(100) = null output,
  @ISSOLDSTOCK bit = null output,
  @ISSOLDPROPERTY bit = null output,
  @ISPOSTEDSOLDSTOCK bit = null output,
  @ISPOSTEDSOLDPROPERTY bit = 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(50) = null output,
  @RECEIPTDATE datetime = null output,
  @ACKNOWLEDGEMENTSTATUS nvarchar(50) = null output,
  @MGSTATUSCODE tinyint = null output,
  @RECEIPTTYPE nvarchar(30) = null output,
  @OTHERPAYMENTMETHODCODE nvarchar(100) = null output,
  @CATEGORYDESCRIPTION nvarchar(100) = null output,
  @GIFTFEEAMOUNT money = null output,
  @GIFTFEE_ENABLED bit = null output,
  @ELIGIBLEFORMATCHINGGIFTCLAIM bit = null output,
  @ORDERNUMBER nvarchar(30) = null output,
  @TAXCLAIMNUMBER nvarchar(10) = null output,
  @TAXCLAIMAMOUNT money = null output,
  @GROSSAMOUNT money = null output,
  @SHOWPOTENTIAL bit = null output,
  @RECURRINGGIFTTOTALWITHGIFTAID money = null output,
  @PLEDGETOTALWITHGIFTAID money = null output,
  @PLEDGERECURRINGGIFTGROSSAMOUNT money = null output,
  @CONSTITUENTISGROUP bit = null output,
  @VATAMOUNT money = null output,
  @ISMISCELLANEOUSPAYMENT bit = null output,
  @DEPOSITID uniqueidentifier = null output,
  @DEPOSITNAME nvarchar(100) = null output,
  @REFERENCE nvarchar(255) = null output,
  @ISREIMBURSABLE bit = null output,
  @LOOKUPID nvarchar(100) = null output,
  @RGHASINSTALLMENTS bit = null output,
  @GIFTINKINDITEMNAME nvarchar(100) = null output,
  @GIFTINKINDDISPOSITION nvarchar(50) = null output,
  @GIFTINKINDNUMBEROFUNITS int = null output,
  @GIFTINKINDFAIRMARKETVALUE money = null output,
  @GIFTINKINDAPPRAISALREQUIRED bit = null output,
  @DIRECTDEBITRESULTCODE nvarchar(10) = null output,
  @DIRECTDEBITISREJECTED bit = null output,
  @OPPORTUNITYNAME nvarchar(250) = null output,
  @OPPORTUNITYID uniqueidentifier = null output,
  @FUNDINGREQUESTNAME nvarchar(150) = null output,
  @FUNDINGREQUESTID uniqueidentifier = null output,
  @SHOWRGPASTDUE bit = null output,
  @HASGIFTAIDSPLITONPENDINGR68PROCESS bit = null output,
  @GLBATCHLOOKUPID nvarchar(100) = null output,
  @GLBATCHLINKID uniqueidentifier = null output,
  @REVENUEID uniqueidentifier = null output,
  @AUCTIONITEMNAME nvarchar(100) = null output,
  @AUCTIONITEMID uniqueidentifier = null output,
  @AUCTIONITEMCATEGORY nvarchar(100) = null output,
  @AUCTIONITEMSUBCATEGORY nvarchar(100) = null output,
  @AUCTIONEXPIRATIONDATE datetime = null output,
  @BASECURRENCYID uniqueidentifier = null output,
  @TRANSACTIONCURRENCYID uniqueidentifier = null output,
  @BASEAMOUNT money = null output,
  @CONSTITUENTNAME nvarchar(255) = null output,
  @TRANSACTIONTYPE nvarchar(100) = null output,
  @GIFTFEESANDGIFTFEEDISTRIBUTIONAMOUNTSNOTEQUAL bit = null output,
  @PLANNEDGIFTVEHICLECODE int = null output,
  @PLANNEDGIFTISREVOCABLE bit = null output,
  @ISPLANNEDGIFTADDITION bit = null output,
  @UNIQUERECEIPTNUMBER nvarchar(20) = null output,
  @HASINVALIDPAPERLESSMANDATES bit = null output,
  @PLANNEDGIFT_TRUSTHELDOUTSIDE bit = null output,
  @ISSOLDGIFTINKIND bit = null output,
  @ISPOSTEDSOLDGIFTINKIND bit = null output,
  @ACKNOWLEDGEMENTDATE datetime = null output,
  @POSTSTATUSCODE tinyint = null output,
  @SALESMETHODTYPECODE tinyint = null output,
  @TOTALREFUNDED money = null output,
  @OVERAGEKEPT money = null output,
  @CONSTITUENTACCOUNTID uniqueidentifier = null output,
  @SEPAMANDATELOOKUPID nvarchar(35) = null output,
  @SEPAMANDATESIGNATUREDATE datetime = null output,
  @SEPAMANDATESTATUSCODE tinyint = null output,
  @SALESORDERID uniqueidentifier = null output,
  @ISTAXEXEMPT bit = null output,
  @TAXEXEMPTREASON nvarchar(100) = null output,
  @TAXEXEMPTCOMMENTS nvarchar(255) = null output,
  @DESIGNATIONS xml = null output,
  @OTHERRECURRINGGIFTS xml = null output,
  @LASTPAYMENTDATE date = null output,
  @FINANCIALINSTITUTION nvarchar(50) = null output,
  @DIRECTDEBITACCOUNT nvarchar(4) = null output,
  @NEXTTRANSACTIONSEQUENCE int = null output,
  @LASTPAYMENTSEQUENCE int = null output,
  @ISPARTIALCC bit = null output,
  @SPONSORSHIPID uniqueidentifier = null output,
  @RECURRINGGIFTHASCONTRIBUTEDPORTION bit = null output,
  @STANDINGORDERSETUP bit = null output,
  @STANDINGORDERSETUPDATE datetime = null output,
  @CURRENTAPPUSERID uniqueidentifier = null,
  @CREDITCARDUPDATEDATE date = null output,
  @UNMASKEDACCOUNT nvarchar(255) = null output,
  @CANVIEWSENSITIVEINFORMATION bit = null output,
  @ACCOUNTNUMBERLEN int = null output
)
as
--set @CURRENTAPPUSERID = 'BB053AF1-905F-4A08-844B-7AD505D98210' 

  set nocount on;

  declare @MATCHEDREVENUEDETAILID uniqueidentifier;
  declare @GIFTINKINDORGANIZATIONFAIRMARKETVALUE money;
  declare @USER_GRANTED_DESIGNATIONS_DATALIST bit;
  declare @USER_GRANTED_PAYMENTINFORMATION_VIEW bit;

  set @DATALOADED = 0;
  set @MGSTATUSCODE = 0;
  set @ISMISCELLANEOUSPAYMENT = 0;
  set @RGHASINSTALLMENTS = 0;
  set @GIFTINKINDAPPRAISALREQUIRED = 0;
  set @GIFTFEESANDGIFTFEEDISTRIBUTIONAMOUNTSNOTEQUAL = 0;
  set @GIFTINKINDORGANIZATIONFAIRMARKETVALUE = 0;
  set @TOTALREFUNDED = 0;
  set @OVERAGEKEPT = 0;

  declare @ORGANIZATIONAMOUNT money = null;

  select
    @CONSTITUENTISGROUP = (ISGROUP|ISORGANIZATION),
    @CONSTITUENTNAME = CONSTITUENT.NAME
  from dbo.CONSTITUENT
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.CONSTITUENTID = CONSTITUENT.ID
  where FINANCIALTRANSACTION.ID = @ID
  and FINANCIALTRANSACTION.DELETEDON is null;

  --Replaces revenue is the PK FK in many tables

  declare @REVENUEPAYMENTMETHODID uniqueidentifier;

  declare @ISMEMBERSHIPPLEDGE bit = 0;    

  --Get general fields that are valid for all views

  select top 1
    @DATALOADED = 1,
    @AMOUNT = FINANCIALTRANSACTION.TRANSACTIONAMOUNT,
    @RECEIPTAMOUNT = REVENUE_EXT.RECEIPTAMOUNT,
    @BASEAMOUNT = FINANCIALTRANSACTION.BASEAMOUNT,
    @ORGANIZATIONAMOUNT = FINANCIALTRANSACTION.ORGAMOUNT,
    @REVENUEID = FINANCIALTRANSACTION.ID,
    @TYPE = FINANCIALTRANSACTION.TYPECODE,
    @TRANSACTIONTYPE = FINANCIALTRANSACTION.TYPE,
    @DATE = FINANCIALTRANSACTION.DATE
    @POSTDATE = FINANCIALTRANSACTION.POSTDATE,
    @BATCHNUMBER = REVENUE_EXT.BATCHNUMBER,
    @REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID,
    @PAYMENTMETHOD = REVENUEPAYMENTMETHOD.PAYMENTMETHOD,
    @PAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
    @SALEAMOUNT = 0,
    @APPEAL = '',
    @ELIGIBLEFORMATCHINGGIFTCLAIM = REVENUE_EXT.ELIGIBLEFORMATCHINGGIFTCLAIM,
    @LOOKUPID = FINANCIALTRANSACTION.CALCULATEDUSERDEFINEDID,
    @BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID),
    @TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
    @HASINVALIDPAPERLESSMANDATES = 0,
    @RECEIPTTYPE = REVENUE_EXT.RECEIPTTYPE,
    @GIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY
  from 
    dbo.FINANCIALTRANSACTION
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
    inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
    inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
  where 
    FINANCIALTRANSACTION.ID = @ID
    and FINANCIALTRANSACTION.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15
    and FINANCIALTRANSACTION.DELETEDON is null;
  -- Set up security on elements that were moved out of there previous form such  as the designations datalist, payment information and sepa information.

  if dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 
      begin
        set @USER_GRANTED_DESIGNATIONS_DATALIST = 1;
        set @USER_GRANTED_PAYMENTINFORMATION_VIEW = 1;
      end
  else 
      begin
        set @USER_GRANTED_DESIGNATIONS_DATALIST = dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_IN_SYSTEMROLE(@CURRENTAPPUSERID,'38FE7974-263F-4C47-ACEE-5577A6BC2DBC');
        set @USER_GRANTED_PAYMENTINFORMATION_VIEW = dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE(@CURRENTAPPUSERID,'bafca6f5-4cdb-4173-aece-113713d38bfb');
      end    
  if @USER_GRANTED_PAYMENTINFORMATION_VIEW = 1
  begin
      if @PAYMENTMETHODCODE = 1
        select 
          @CHECKDATE = [CHECK].CHECKDATE,
          @CHECKNUMBER = [CHECK].CHECKNUMBER
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.CHECKPAYMENTMETHODDETAIL as [CHECK] on [CHECK].ID = REVENUEPAYMENTMETHOD.ID 
        where FINANCIALTRANSACTION.ID = @ID;
      else if @PAYMENTMETHODCODE = 2 --credit card

      begin
        if @TYPE = 2 -- cc recurring gift

        begin
            select
                @CARDHOLDERNAME = case when REVENUESCHEDULE.CREDITCARDID is null then CCD.CARDHOLDERNAME else [CREDITCARD].CARDHOLDERNAME end,
                @CREDITCARDNUMBER = case when REVENUESCHEDULE.CREDITCARDID is null then CCD.CREDITCARDPARTIALNUMBER else (case when len(coalesce([CREDITCARD].CREDITCARDPARTIALNUMBER, '')) = 0 then ''
                        else replicate('*', 16 - len([CREDITCARD].CREDITCARDPARTIALNUMBER)) + [CREDITCARD].CREDITCARDPARTIALNUMBER end) end,
                @CREDITTYPE = dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(case when REVENUESCHEDULE.CREDITCARDID is null then CCD.CREDITTYPECODEID else CREDITCARD.CREDITTYPECODEID end),
                @EXPIRESON = case when REVENUESCHEDULE.CREDITCARDID is null then CCD.EXPIRESON else [CREDITCARD].EXPIRESON end,
                @ISPARTIALCC = case when REVENUESCHEDULE.CREDITCARDID is null then 1 else 0 end
            from dbo.FINANCIALTRANSACTION
                inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
                left join dbo.REVENUESCHEDULE on FINANCIALTRANSACTION.ID = REVENUESCHEDULE.ID
                left join dbo.CREDITCARD on CREDITCARD.ID = REVENUESCHEDULE.CREDITCARDID
                left join dbo.CREDITCARDPAYMENTMETHODDETAIL CCD on REVENUEPAYMENTMETHOD.ID = CCD.ID
            where FINANCIALTRANSACTION.ID = @ID

            -- if there are credit card updates, get the latest one

            select top 1
                            @CREDITCARDUPDATEDATE = CCU.DATEPROCESSED
            from
              dbo.FINANCIALTRANSACTION FT
              inner join dbo.REVENUESCHEDULE RS on RS.ID = FT.ID
              inner join dbo.CREDITCARDUPDATE CCU on CCU.CREDITCARDID = RS.CREDITCARDID
            where
              FT.ID = @ID
              and FT.DELETEDON is null
                            and CCU.STATUSCODE = 1 --Updated

            order by
              CCU.DATEPROCESSED desc,
              CCU.DATEADDED desc

        end
        else --cc payment

            select
                @CARDHOLDERNAME = [CREDIT].CARDHOLDERNAME,
                @CREDITCARDNUMBER = case when len(coalesce([CREDIT].CREDITCARDPARTIALNUMBER, '')) = 0 then ''
                        else replicate('*', 16 - len([CREDIT].CREDITCARDPARTIALNUMBER)) + [CREDIT].CREDITCARDPARTIALNUMBER end,
                @CREDITTYPE = [CREDITTYPE].DESCRIPTION,
                @AUTHORIZATIONCODE = [CREDIT].AUTHORIZATIONCODE,
                @EXPIRESON = [CREDIT].EXPIRESON
            from
                dbo.FINANCIALTRANSACTION
                inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
                inner join dbo.CREDITCARDPAYMENTMETHODDETAIL as [CREDIT] on [CREDIT].ID = REVENUEPAYMENTMETHOD.ID
                left join dbo.CREDITTYPECODE as [CREDITTYPE] on [CREDITTYPE].ID = [CREDIT].CREDITTYPECODEID
            where FINANCIALTRANSACTION.ID = @ID;
      end
      else if @PAYMENTMETHODCODE = 4
        select
          @ISSUER = [STOCK].ISSUER,
          @NUMBEROFUNITS = case when [STOCK].NUMBEROFUNITS <> 0 then [STOCK].NUMBEROFUNITS else null end
          @SYMBOL = [STOCK].SYMBOL,
          @MEDIANPRICE = [STOCK].TRANSACTIONMEDIANPRICE,
          @SALEAMOUNT = coalesce((select sum(TRANSACTIONSALEAMOUNT) from dbo.STOCKSALE where STOCKDETAILID = REVENUEPAYMENTMETHOD.ID), 0)
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.STOCKDETAIL as [STOCK] on [STOCK].ID = REVENUEPAYMENTMETHOD.ID
        where FINANCIALTRANSACTION.ID = @ID;
      else if @PAYMENTMETHODCODE = 5
        select
          @PROPERTYSUBTYPE = PROPERTYSUBTYPECODE.DESCRIPTION,
          @SALEAMOUNT = case when PROPERTY.ISSOLD = 1 then [PROPERTY].TRANSACTIONSALEAMOUNT else 0 end
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.PROPERTYDETAIL as [PROPERTY] on [PROPERTY].ID = REVENUEPAYMENTMETHOD.ID 
          left join dbo.PROPERTYSUBTYPECODE on PROPERTYSUBTYPECODE.ID = [PROPERTY].PROPERTYSUBTYPECODEID
        where FINANCIALTRANSACTION.ID = @ID;
      else if @PAYMENTMETHODCODE = 6
        select
          @GIFTINKINDSUBTYPE = [GIK].DESCRIPTION,
          @GIFTINKINDITEMNAME = GIFTINKINDPAYMENTMETHODDETAIL.ITEMNAME,
          @GIFTINKINDDISPOSITION = GIFTINKINDPAYMENTMETHODDETAIL.DISPOSITION,
          @GIFTINKINDNUMBEROFUNITS = GIFTINKINDPAYMENTMETHODDETAIL.NUMBEROFUNITS,
          @GIFTINKINDFAIRMARKETVALUE = GIFTINKINDPAYMENTMETHODDETAIL.TRANSACTIONFAIRMARKETVALUE,
          @SALEAMOUNT = coalesce((select sum(TRANSACTIONSALEAMOUNT) from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = REVENUEPAYMENTMETHOD.ID), 0),
          @GIFTINKINDORGANIZATIONFAIRMARKETVALUE = GIFTINKINDPAYMENTMETHODDETAIL.ORGANIZATIONFAIRMARKETVALUE
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.GIFTINKINDPAYMENTMETHODDETAIL on GIFTINKINDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
          left join dbo.GIFTINKINDSUBTYPECODE as [GIK] on [GIK].ID = GIFTINKINDPAYMENTMETHODDETAIL.GIFTINKINDSUBTYPECODEID
        where FINANCIALTRANSACTION.ID = @ID;
      else if @PAYMENTMETHODCODE = 10
        select
          @OTHERPAYMENTMETHODCODE = OTHERTYPE.DESCRIPTION,
          @REFERENCENUMBER = OTHER.REFERENCENUMBER,
          @REFERENCEDATE = OTHER.REFERENCEDATE
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.OTHERPAYMENTMETHODDETAIL as [OTHER] on [OTHER].ID = REVENUEPAYMENTMETHOD.ID 
          inner join dbo.OTHERPAYMENTMETHODCODE as [OTHERTYPE] on [OTHERTYPE].ID = [OTHER].OTHERPAYMENTMETHODCODEID
        where FINANCIALTRANSACTION.ID = @ID;
      else if @PAYMENTMETHODCODE = 101
        select
          @REFERENCENUMBER = PAYPAL.REFERENCENUMBER,
          @REFERENCEDATE = PAYPAL.REFERENCEDATE
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.PAYPALPAYMENTMETHODDETAIL as [PAYPAL] on [PAYPAL].ID = REVENUEPAYMENTMETHOD.ID
        where FINANCIALTRANSACTION.ID = @ID;
      else if @PAYMENTMETHODCODE = 102
        select
          @REFERENCENUMBER = VENMO.REFERENCENUMBER,
          @REFERENCEDATE = VENMO.REFERENCEDATE
        from
          dbo.FINANCIALTRANSACTION
          inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID
          inner join dbo.VENMOPAYMENTMETHODDETAIL as [VENMO] on [VENMO].ID = REVENUEPAYMENTMETHOD.ID
        where FINANCIALTRANSACTION.ID = @ID;
    end --@USER_GRANTED_PAYMENTINFORMATION_VIEW

    else
      SET @PAYMENTMETHODCODE = 99;

  set @RECEIPTSTATUS = dbo.UFN_REVENUE_GETRECEIPTSTATUS(@ID);
  set @ACKNOWLEDGEMENTSTATUS = dbo.UFN_REVENUETRANSACTION_GETACKNOWLEDGESTATUS(@ID)

  select top 1 
    @RECEIPTNUMBER = case left(@RECEIPTSTATUS,9) when 'Receipted' then RR.RECEIPTNUMBER else null end
    @RECEIPTDATE = case left(@RECEIPTSTATUS,9) when 'Receipted' then RR.RECEIPTDATE else null end,
    @UNIQUERECEIPTNUMBER = case left(@RECEIPTSTATUS,9) when 'Receipted' then RR.UNIQUERECEIPTNUMBER else null end
  from dbo.REVENUERECEIPT RR 
  where RR.REVENUEID = @ID 
  order by RR.RECEIPTPROCESSDATE desc;

  select top 1 @ACKNOWLEDGEMENTDATE = ACKNOWLEDGEDATE 
  from dbo.REVENUELETTER 
  where REVENUELETTER.REVENUEID = @ID

  set @VATAMOUNT = isnull((select REVENUEVAT.TRANSACTIONVATAMOUNT from dbo.REVENUEVAT where dbo.REVENUEVAT.ID = @ID), 0);

  select top 1 @GLBATCHLINKID = GLBATCH.ID, @GLBATCHLOOKUPID = GLBATCH.LOOKUPID 
  from dbo.REVENUEPOSTEDDETAIL
  inner join dbo.FINANCIALTRANSACTION REVENUEPOSTED on REVENUEPOSTED.ID = REVENUEPOSTEDDETAIL.REVENUEPOSTEDID 
  inner join dbo.GLBATCH on GLBATCH.ID = REVENUEPOSTEDDETAIL.GLBATCHID
  where REVENUEPOSTED.ID = @ID 
    and REVENUEPOSTED.POSTSTATUSCODE = 2 and REVENUEPOSTED.DELETEDON is null;

  select @CATEGORYDESCRIPTION = GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME
  from dbo.REVENUECATEGORY
  inner join dbo.GLREVENUECATEGORYMAPPING on REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
  where REVENUECATEGORY.ID = @ID;

  if @TYPE = 15
    set @ISMEMBERSHIPPLEDGE = 1

  declare @COUNTFTPS as int = 0

    select
        @POSTSTATUSCODE = case
            when COUNT(T.FTPS) = 0 then 3
            when MIN(T.FTPS) <> 2 then MIN(T.FTPS)
            else
                case
                    when MIN(T.LIPS) = 1 then 4
                    when MAX(T.LIPS) = 3 then 5
                    else 2
                end
            end,
        @COUNTFTPS = COUNT(T.FTPS)
    from
        (
        --Below select statement will list line items that are not equal to "not posted"

        select FT.POSTSTATUSCODE FTPS, LI.POSTSTATUSCODE LIPS
        from dbo.FINANCIALTRANSACTION FT
            inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on FT.ID = LI.FINANCIALTRANSACTIONID
            inner join dbo.JOURNALENTRY on LI.ID = FINANCIALTRANSACTIONLINEITEMID
        where FT.ID = @ID and LI.DELETEDON is null

        union all

        select FT.POSTSTATUSCODE FTPS, LI.POSTSTATUSCODE LIPS
        from dbo.FINANCIALTRANSACTION CHILD
            inner join dbo.FINANCIALTRANSACTION FT on FT.ID = CHILD.PARENTID
            inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = CHILD.ID
            inner join dbo.JOURNALENTRY on LI.ID = FINANCIALTRANSACTIONLINEITEMID
        where CHILD.PARENTID = @ID and LI.DELETEDON is null

        union all

        -- Below is specifically for Benefit adjustments, they do not satisfy the first select since they are adjustments (typecode = 1) and they do not satisfy the second select because they do not have their own financial transaction row

        -- When the only action is removing the posted benefit there is no new FTLI to enable 'Posted (adjustment pending)' therefore the below select will catch the benefit adjustment

        select FT.POSTSTATUSCODE FTPS, LI.POSTSTATUSCODE LIPS
        from dbo.FINANCIALTRANSACTION FT
            inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on FT.ID = LI.FINANCIALTRANSACTIONID
            inner join dbo.BENEFITADJUSTMENT BA on BA.REVENUEID = FT.ID
            inner join dbo.JOURNALENTRY on LI.ID = FINANCIALTRANSACTIONLINEITEMID
        where FT.ID = @ID and LI.DELETEDON is null and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = BA.ID) T;

    if (@COUNTFTPS = 0)
    begin
        select 
            @POSTSTATUSCODE = case
                when COUNT(T.FTPS) = 0 then 3
                when MIN(T.FTPS) <> 2 then MIN(T.FTPS)
                else
                    case
                        when MIN(T.LIPS) = 1 then 4
                        when MAX(T.LIPS) = 3 then 5
                        else 2
                    end
                end
        from
            (
            --Below select statement will list line items that are not equal to "not posted"

            select FT.POSTSTATUSCODE FTPS, LI.POSTSTATUSCODE LIPS
            from dbo.FINANCIALTRANSACTION FT
                inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on FT.ID = LI.FINANCIALTRANSACTIONID
            where FT.ID = @ID and LI.DELETEDON is null and LI.TYPECODE != 1

            union all

            select FT.POSTSTATUSCODE FTPS, LI.POSTSTATUSCODE LIPS
            from dbo.FINANCIALTRANSACTION CHILD
                inner join dbo.FINANCIALTRANSACTION FT on FT.ID = CHILD.PARENTID
                inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = CHILD.ID
            where CHILD.PARENTID = @ID and LI.DELETEDON is null

            union all

            -- Below is specifically for Benefit adjustments, they do not satisfy the first select since they are adjustments (typecode = 1) and they do not satisfy the second select because they do not have their own financial transaction row

            -- When the only action is removing the posted benefit there is no new FTLI to enable 'Posted (adjustment pending)' therefore the below select will catch the benefit adjustment

            select FT.POSTSTATUSCODE FTPS, LI.POSTSTATUSCODE LIPS
            from dbo.FINANCIALTRANSACTION FT
                inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on FT.ID = LI.FINANCIALTRANSACTIONID
                inner join dbo.BENEFITADJUSTMENT BA on BA.REVENUEID = FT.ID
            where FT.ID = @ID and LI.DELETEDON is null and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = BA.ID) T;

    end


  set @POSTSTATUS = case
    when @POSTSTATUSCODE = 1 then 'Not posted'
      when @POSTSTATUSCODE = 2 then 'Posted'
      when @POSTSTATUSCODE = 3 then 'Do not post'
      when @POSTSTATUSCODE = 4 then 'Posted (adjustment pending)'
      when @POSTSTATUSCODE = 5 then 'Posted (adjustment set to do not post)'
    end

  declare @ISPAYMENT bit
  select @ISPAYMENT = case when @TYPE = 0 then 1 else 0 end
  set @HASGIFTAIDSPLITONPENDINGR68PROCESS = dbo.UFN_REVENUE_HASGIFTAIDSPLITONPENDINGR68(@REVENUEID, @ISPAYMENT)

  --Assuming all payment information matches across the transaction

  if @PAYMENTMETHODCODE = 0 --Cash

    select 
      @REFERENCENUMBER = REFERENCENUMBER,
      @REFERENCEDATE = REFERENCEDATE
    from dbo.CASHPAYMENTMETHODDETAIL 
    where ID = @REVENUEPAYMENTMETHODID;
  else if @PAYMENTMETHODCODE = 1 --Check

  begin
    -- Open the symmetric key for decryption

    exec dbo.USP_GET_KEY_ACCESS;
    select 
      @ACCOUNT = dbo.UFN_CONSTITUENTACCOUNT_GETDESCRIPTION(ACCOUNT.ID) 
    from dbo.CONSTITUENTACCOUNT as [ACCOUNT]
    inner join dbo.CHECKPAYMENTMETHODDETAIL as [CHECK] on [CHECK].CONSTITUENTACCOUNTID = [ACCOUNT].ID
    where [CHECK].ID = @REVENUEPAYMENTMETHODID;
    close symmetric key sym_BBInfinity;
  end
  else if @PAYMENTMETHODCODE = 3 --Direct Debit

  begin
    -- Open the symmetric key for decryption

    exec dbo.USP_GET_KEY_ACCESS;

    -- Can View Sensitive Information

    set @CANVIEWSENSITIVEINFORMATION = 0;
    declare @ISSYSADMIN bit = dbo.[UFN_APPUSER_ISSYSADMIN](@CURRENTAPPUSERID);

    if @ISSYSADMIN = 0
    begin
         set @CANVIEWSENSITIVEINFORMATION = dbo.[UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'B01B8750-8BC3-4FA8-881E-BE2E605339BF'); 
    end
    else if @ISSYSADMIN = 1
    begin
        set @CANVIEWSENSITIVEINFORMATION = 1;
    end

    if @TYPE = 2 --recurring gift

      select 
        @FINANCIALINSTITUTION = FI.description,  
        @DIRECTDEBITACCOUNT = coalesce(SUBSTRING(convert(nvarchar(50), DecryptByKey(CA.ACCOUNTNUMBER)),LEN(convert(nvarchar(50), DecryptByKey(CA.ACCOUNTNUMBER)))-3,4),''),
        @REFERENCENUMBER = RS.REFERENCENUMBER,
        @REFERENCEDATE = RS.REFERENCEDATE
      from dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT RS
      inner join dbo.CONSTITUENTACCOUNT CA ON CA.ID = RS.CONSTITUENTACCOUNTID
      inner join dbo.FINANCIALINSTITUTION FI ON FI.ID = CA.FINANCIALINSTITUTIONID
      where RS.ID = @ID;
    else
      select 
        @REFERENCENUMBER = DIRECTDEBITPAYMENTMETHODDETAIL.REFERENCENUMBER,
        @REFERENCEDATE = DIRECTDEBITPAYMENTMETHODDETAIL.REFERENCEDATE,
        @CONSTITUENTACCOUNTID = DIRECTDEBITPAYMENTMETHODDETAIL.CONSTITUENTACCOUNTID,
        @ACCOUNT = dbo.UFN_CONSTITUENTMASKEDACCOUNT_GETDESCRIPTION(DIRECTDEBITPAYMENTMETHODDETAIL.CONSTITUENTACCOUNTID),
        @DIRECTDEBITRESULTCODE = DIRECTDEBITPAYMENTMETHODDETAIL.DIRECTDEBITRESULTCODE,
        @DIRECTDEBITISREJECTED = DIRECTDEBITPAYMENTMETHODDETAIL.ISREJECTED,
        @SEPAMANDATELOOKUPID = SEPAMANDATE.LOOKUPID,
        @SEPAMANDATESIGNATUREDATE = SEPAMANDATE.SIGNATUREDATE,
        @SEPAMANDATESTATUSCODE = SEPAMANDATE.STATUSCODE,
        @UNMASKEDACCOUNT =(
        case 
        when @CANVIEWSENSITIVEINFORMATION = 1 then
        dbo.UFN_CONSTITUENTACCOUNT_GETDESCRIPTION(DIRECTDEBITPAYMENTMETHODDETAIL.CONSTITUENTACCOUNTID)
        when @CANVIEWSENSITIVEINFORMATION = 0 then
        dbo.UFN_CONSTITUENTMASKEDACCOUNT_GETDESCRIPTION(DIRECTDEBITPAYMENTMETHODDETAIL.CONSTITUENTACCOUNTID) 
        end)
      from 
        dbo.DIRECTDEBITPAYMENTMETHODDETAIL
      left join dbo.SEPAMANDATE on SEPAMANDATE.ID = DIRECTDEBITPAYMENTMETHODDETAIL.SEPAMANDATEID
      where DIRECTDEBITPAYMENTMETHODDETAIL.ID = @REVENUEPAYMENTMETHODID;

  select @ACCOUNTNUMBERLEN = LEN(coalesce(convert(nvarchar(50), DecryptByKey(CONSTITUENTACCOUNT.ACCOUNTNUMBER)),''))
  from
  dbo.CONSTITUENTACCOUNT
  where CONSTITUENTACCOUNT.ID = @CONSTITUENTACCOUNTID;

    close symmetric key sym_BBInfinity;
  end
  else if @PAYMENTMETHODCODE = 11 --Standing order

  begin
    exec dbo.USP_GET_KEY_ACCESS;

    if @TYPE = 2 --Only payments have a record in the STANDINGORDERPAYMENTMETHODDETAIL so gather it this way

      select
          @FINANCIALINSTITUTION = FI.DESCRIPTION,  
          @ACCOUNT = coalesce(SUBSTRING(convert(nvarchar(50), DecryptByKey(CA.ACCOUNTNUMBER)),LEN(convert(nvarchar(50), DecryptByKey(CA.ACCOUNTNUMBER)))-3,4),''),
                  @REFERENCEDATE = REFERENCEDATE,
     @REFERENCENUMBER = dbo.UFN_STANDINGORDER_REFERENCENUMBER_FORDISPLAY(RP.ID),
          @STANDINGORDERSETUP = STANDINGORDERSETUP,
          @STANDINGORDERSETUPDATE = STANDINGORDERSETUPDATE
      from dbo.REVENUESCHEDULESTANDINGORDERPAYMENT RP
      inner join dbo.CONSTITUENTACCOUNT CA ON CA.ID = RP.CONSTITUENTACCOUNTID
      inner join dbo.FINANCIALINSTITUTION FI ON FI.ID = CA.FINANCIALINSTITUTIONID
      where RP.ID = @ID;
    else
      select 
        --JamesWill 2009-06-03 Only pledges or recurring gift standing orders have a reference number

        @REFERENCENUMBER = case when @TYPE = 1 then dbo.UFN_STANDINGORDER_REFERENCENUMBER_FORDISPLAY(@ID) else N'' end ,
        @REFERENCEDATE = REFERENCEDATE,
        @ACCOUNT = dbo.UFN_CONSTITUENTACCOUNT_GETDESCRIPTION(CONSTITUENTACCOUNTID)
      from dbo.STANDINGORDERPAYMENTMETHODDETAIL
      where ID = @REVENUEPAYMENTMETHODID;

    close symmetric key sym_BBInfinity;
  end

  if @PAYMENTMETHODCODE = 4 --Sold stock

  begin
    if exists(select ID from dbo.STOCKSALE where STOCKDETAILID = @REVENUEPAYMENTMETHODID)
    begin
      set @ISSOLDSTOCK = 1

      if exists(select ID from dbo.STOCKSALE where STOCKDETAILID = @REVENUEPAYMENTMETHODID and SALEPOSTSTATUSCODE = 0)
        set @ISPOSTEDSOLDSTOCK = 1
      else
        set @ISPOSTEDSOLDSTOCK = 0
    end
  end

  if @PAYMENTMETHODCODE = 5  --Sold property

  begin
    if exists(select ID from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMENTMETHODID and ISSOLD = 1)
    begin
      set @ISSOLDPROPERTY = 1

      if (select SALEPOSTSTATUSCODE from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMENTMETHODID) = 0
        set @ISPOSTEDSOLDPROPERTY = 1
      else
        set @ISPOSTEDSOLDPROPERTY = 0
    end
  end

  if @PAYMENTMETHODCODE = 6 --Gift-in-kind

  begin
    declare @USEAPPRAISALTHRESHOLD bit;
    declare @APPRAISALTHRESHOLD money;

    select top 1
      @USEAPPRAISALTHRESHOLD = USEAPPRAISALTHRESHOLD,
      @APPRAISALTHRESHOLD = APPRAISALTHRESHOLD
    from
      dbo.GIFTINKINDAPPRAISALSETTINGS

    if (
        (@USEAPPRAISALTHRESHOLD = 1) and 
        (@GIFTINKINDDISPOSITION = 'To sell') and 
        (@GIFTINKINDORGANIZATIONFAIRMARKETVALUE > @APPRAISALTHRESHOLD) and 
        not exists (select top(1) 1 from dbo.GIFTINKINDAPPRAISAL where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID)
    )
      set @GIFTINKINDAPPRAISALREQUIRED = 1;

    if exists(select ID from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID) --Sold GIFTINKIND

    begin
      set @ISSOLDGIFTINKIND = 1

      if exists(select ID from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID and SALEPOSTSTATUSCODE = 0)
        set @ISPOSTEDSOLDGIFTINKIND = 1
      else
        set @ISPOSTEDSOLDGIFTINKIND = 0

    end
  end

  --Assuming only one revenue per transaction for types other than payment

  if @TYPE = 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 = GIVENANONYMOUSLY,
      @MAILING = dbo.UFN_MKTSEGMENTATION_GETNAME(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 = @REVENUEID
      and FINANCIALTRANSACTION.DELETEDON is null;

    if @ISPENDING = 1
    begin
        select top 1
                  @PENDINGBATCHNUMBER = BATCH.BATCHNUMBER 
                from 
                  dbo.BATCH
                  inner join dbo.BATCHREVENUE on BATCHREVENUE.BATCHID = BATCH.ID
                  left join dbo.BATCHREVENUEAPPLICATION as [BATCHAPP] on [BATCHAPP].BATCHREVENUEID = BATCHREVENUE.ID 
                where 
                  BATCH.STATUSCODE not in (1, 2
                  and (
                      ([BATCHAPP].REVENUEID = @REVENUEID and BATCHREVENUE.PAYINGPENDINGREVENUEID is null and [BATCHAPP].WASGENERATED = 1
                      or
                      ([BATCHAPP].REVENUEID is null and BATCHREVENUE.PAYINGPENDINGREVENUEID = @REVENUEID)
                      or
                      ([BATCHAPP].REVENUEID = @REVENUEID and BATCHREVENUE.PAYINGPENDINGREVENUEID = @REVENUEID)
                      or
                      ([BATCHAPP].REVENUEID <> BATCHREVENUE.PAYINGPENDINGREVENUEID and [BATCHAPP].REVENUEID = @REVENUEID)                                               
                    )
    end

    if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
    begin
      set @PLEDGETOTALWITHGIFTAID = dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETOTALPAID(@ID);
      set @PLEDGERECURRINGGIFTGROSSAMOUNT = dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGEGROSSAMOUNT_2(@ID, 1);

    if @PAYMENTMETHODCODE = 3 and dbo.UFN_PAPERLESSMANDATES_DAYSADVANCEDNOTICE_FORREVENUE(@ID) = -1
    begin
      --Bug 138736 - AdamBu 2/2/11 - Check for invalid paperless mandate setup.

      set @HASINVALIDPAPERLESSMANDATES = 1
    end

    end
  end

  if @TYPE = 3 -- MG Pledge

  begin
    declare @ISACTIVE bit;

    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 = MGREVENUE.ID,
      @MATCHEDREVENUEDETAILID = MGREVENUE.ID,
      @ISPENDING = REVENUESCHEDULE.ISPENDING,
      @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE_EXT.APPEALID),
      @SOURCECODE = REVENUE_EXT.SOURCECODE,
      @ISACTIVE = RMG.ISACTIVE
    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.REVENUE MGREVENUE on RMG.MGSOURCEREVENUEID = MGREVENUE.ID
    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
    inner join dbo.CONSTITUENT on CONSTITUENT.ID = FINANCIALTRANSACTION.CONSTITUENTID
    where FINANCIALTRANSACTION.ID = @REVENUEID
        and FINANCIALTRANSACTION.DELETEDON is null;


    --INPROGRESS

    select @MATCHEDREVENUE
       = Cast(REVENUE.TRANSACTIONAMOUNT as nvarchar(20)) + ' ' + REVENUE.TRANSACTIONTYPE + ' for ' + CONSTITUENT.NAME
    from dbo.REVENUE 
    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
    where REVENUE.ID = @MATCHEDREVENUEDETAILID;

    select
      top 1 
      @PAYMENTID = REVENUE.ID 
    from dbo.INSTALLMENTPAYMENT
    inner join dbo.REVENUE on REVENUE.ID = INSTALLMENTPAYMENT.PAYMENTID                    
    where REVENUE.ID = @REVENUEID
    order by REVENUE.DATE 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 
      inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = [APP].REVENUEID
      where BATCH.STATUSCODE not in (1, 2) and FINANCIALTRANSACTION.ID = @REVENUEID;

    --MGSTATUSCODE: 0 active

    --MGSTATUSCODE: 1 paid in full

    --MGSTATUSCODE: 2 inactive

    --MGSTATUSCODE: 3 inactive (Partially paid)

    if @ISACTIVE = 1 and @BALANCE <> 0 
      set @MGSTATUSCODE = 0;
    else if @ISACTIVE = 1 and @BALANCE = 0
      set @MGSTATUSCODE = 1;
    else if @ISACTIVE = 0 and @TOTALPAID = 0
      set @MGSTATUSCODE = 2;
    else if @ISACTIVE = 0
      set @MGSTATUSCODE = 3;
  end

  if @TYPE = 2 -- Recurring Gift

  begin
    -- Next transaction and Last payment as well as sequence numbers

    declare @NEXTTRANSACTIONID uniqueidentifier = null
    declare @LASTPAYMENTID uniqueidentifier = null

    select top 1 @LASTPAYMENTDATE = RGI.DATE
                 @LASTPAYMENTID = RGI.ID 
    from dbo.RECURRINGGIFTINSTALLMENTPAYMENT RGP
    inner join dbo.RECURRINGGIFTINSTALLMENT RGI on RGI.ID = RGP.RECURRINGGIFTINSTALLMENTID
    where RGI.REVENUEID = @REVENUEID
    order by RGI.DATE desc

    select @NEXTTRANSACTION = DATE,
           @NEXTTRANSACTIONID = ID
    from dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(@REVENUEID,null);

    --Find the row numbers that correspond to next transaction and last payment

    with RG_CTE(ROWNUM,TID) as
      (select row_number() over (order by RGI.DATE) ROWNUM, RGI.ID TID
       from dbo.RECURRINGGIFTINSTALLMENT RGI
       where RGI.REVENUEID = @REVENUEID
    select 
      @NEXTTRANSACTIONSEQUENCE = (select RG_CTE.ROWNUM from RG_CTE where @NEXTTRANSACTIONID = TID),
      @LASTPAYMENTSEQUENCE = (select RG_CTE.ROWNUM from RG_CTE where @LASTPAYMENTID = TID);

    -- Recurring gifts fields

    select
      @DATALOADED = 1,
      @TOTALPAID = coalesce((select sum(RECURRINGGIFTACTIVITY.AMOUNT) from dbo.RECURRINGGIFTACTIVITY where SOURCEREVENUEID = REVENUE.ID and TYPECODE = 0), 0),
      @FREQUENCY = REVENUESCHEDULE.FREQUENCY,
      @STARTDATE = REVENUESCHEDULE.STARTDATE,
      @ENDDATE = REVENUESCHEDULE.ENDDATE,
      @STATUS = case REVENUESCHEDULE.STATUSCODE when 3 then 'Canceled' else REVENUESCHEDULE.STATUS end,
      @ISPENDING = REVENUESCHEDULE.ISPENDING,
      @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE.APPEALID),
      @SOURCECODE = REVENUE.SOURCECODE,
      @GIVENANONYMOUSLY = GIVENANONYMOUSLY,
      @MAILING = dbo.UFN_MKTSEGMENTATION_GETNAME(MAILINGID),
      @CHANNEL = CHANNELCODE.DESCRIPTION
    from dbo.REVENUE
    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
    left join dbo.CHANNELCODE on CHANNELCODE.ID = REVENUE.CHANNELCODEID
    where REVENUE.ID = @REVENUEID;

    if @ISPENDING = 1
      select top 1
                    @PENDINGBATCHNUMBER = BATCH.BATCHNUMBER 
                  from 
                    dbo.BATCH
                    inner join dbo.BATCHREVENUE on BATCHREVENUE.BATCHID = BATCH.ID
                    left join dbo.BATCHREVENUEAPPLICATION as [BATCHAPP] on [BATCHAPP].BATCHREVENUEID = BATCHREVENUE.ID 
                  where 
                    BATCH.STATUSCODE not in (1, 2
                    and (
                        ([BATCHAPP].REVENUEID = @REVENUEID and BATCHREVENUE.PAYINGPENDINGREVENUEID is null and [BATCHAPP].WASGENERATED = 1
                        or
                        ([BATCHAPP].REVENUEID is null and BATCHREVENUE.PAYINGPENDINGREVENUEID = @REVENUEID)
                        or
                        ([BATCHAPP].REVENUEID = @REVENUEID and BATCHREVENUE.PAYINGPENDINGREVENUEID = @REVENUEID)
                        or
                        ([BATCHAPP].REVENUEID <> BATCHREVENUE.PAYINGPENDINGREVENUEID and [BATCHAPP].REVENUEID = @REVENUEID)                       
                      )

    if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1 --UK

    begin
      set @RECURRINGGIFTTOTALWITHGIFTAID = dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATERECURRINGGIFTTOTALPAID(@ID);
      set @PLEDGERECURRINGGIFTGROSSAMOUNT = dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEGROSSAMOUNT_2(@ID, 1, 1);

      if @PAYMENTMETHODCODE = 3 and dbo.UFN_PAPERLESSMANDATES_DAYSADVANCEDNOTICE_FORREVENUE(@ID) = -1
      begin        
        --Bug 138736 - AdamBu 2/2/11 - Check for invalid paperless mandate setup.

        set @HASINVALIDPAPERLESSMANDATES = 1
      end
    end

    --Past Due

    if exists(select 'x' from dbo.RECURRINGGIFTINSTALLMENT where REVENUEID = @REVENUEID)
    begin
      set @RGHASINSTALLMENTS = 1;
      set @PASTDUE = dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNT_2(@REVENUEID,null, 0);

      -- always show past due regardless of RG setting.

      set @SHOWRGPASTDUE = 1;
    end

    --Designation collection

    if @USER_GRANTED_DESIGNATIONS_DATALIST = 1
        set @DESIGNATIONS = (
                    select
                        [SPLITS].ID,
                        dbo.UFN_DESIGNATION_BUILDNAME([SPLITS].DESIGNATIONID) as 'DESIGNATION',
                        [SPLITS].TRANSACTIONAMOUNT as 'AMOUNT',
                        [SPLITS].TRANSACTIONCURRENCYID
                    from dbo.REVENUESPLIT as [SPLITS] 
                    where [SPLITS].REVENUEID = @REVENUEID and [SPLITS].DESIGNATIONID is not null
                    order by Designation, [SPLITS].DATEADDED
        for xml raw('ITEM'),
                    type,
                    elements,
                    root('DESIGNATIONS'),
                    binary BASE64);

    -- Other recurring gifts collection                    

    set @OTHERRECURRINGGIFTS = (
                select
                  R.ID,
                  case RS.STATUSCODE when 3 then 'Canceled' else RS.STATUS end STATUS,
                  R.TRANSACTIONAMOUNT AMOUNT,
                  RS.FREQUENCY,
                  (select TOP 1  RGI.DATE 
                   from dbo.RECURRINGGIFTINSTALLMENTPAYMENT RGP
                   inner join dbo.RECURRINGGIFTINSTALLMENT RGI on RGI.ID = RGP.RECURRINGGIFTINSTALLMENTID
                   where RGI.REVENUEID = R.ID
                   order by RGI.DATE desc) LASTPAYMENTDATE,
                   R.TRANSACTIONCURRENCYID
                from REVENUE R
                inner join dbo.REVENUESCHEDULE RS on RS.ID=R.ID
                where R.CONSTITUENTID = (SELECT CONSTITUENTID FROM REVENUE WHERE ID=@REVENUEID)  
                and R.TRANSACTIONTYPECODE = 2
                and R.ID <> @REVENUEID
                order by case RS.STATUSCODE
                          when 0 then 0
                          when 5 then 1
                          when 1 then 2
                          when 3 then 3
                          when 2 then 4 end,
                        LASTPAYMENTDATE DESC
                for xml raw('ITEM'),
                            type,
                            elements,
                            root('OTHERRECURRINGGIFTS'),
                            binary BASE64);

    select 
        @SPONSORSHIPID = SPONSORSHIP.ID
    from 
        dbo.FINANCIALTRANSACTIONLINEITEM LI
    inner join 
        dbo.REVENUESPLIT_EXT REVENUESPLIT on REVENUESPLIT.ID = LI.ID
    inner join 
        dbo.SPONSORSHIP on SPONSORSHIP.REVENUESPLITID = REVENUESPLIT.ID
    where 
        LI.FINANCIALTRANSACTIONID = @REVENUEID
        and REVENUESPLIT.TYPECODE = 9
        and SPONSORSHIP.ISMOSTRECENTFORCOMMITMENT = 1
        and LI.DELETEDON is null
        and LI.TYPECODE != 1;

    set @RECURRINGGIFTHASCONTRIBUTEDPORTION = 0;
    if exists
    (
        select 
            top 1 1
        from 
            dbo.FINANCIALTRANSACTIONLINEITEM
        inner join 
            dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
        where 
            FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null 
            and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1 and REVENUESPLIT_EXT.TYPECODE in(0,9)
    )
        set @RECURRINGGIFTHASCONTRIBUTEDPORTION = 1
  end

  if @TYPE = 0 --payment

  begin
    --Gift Aid is for UK only

    if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
    begin
      select @TAXCLAIMNUMBER = dbo.UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMNUMBER(@ID);
      select @SHOWPOTENTIAL = dbo.UFN_GIFTAIDREVENUESPLIT_SHOWTOTALSASPOTENTIAL(@ID);

      -- If the tax claim amount shows as potential because there isn't a valid declaration, 

      -- only include splits that don't have a valid declaration so that covenant gifts are excluded

      if @SHOWPOTENTIAL = 1

        select @TAXCLAIMAMOUNT = coalesce(sum(TRANSACTIONTAXCLAIMAMOUNT), 0)
        from dbo.REVENUESPLITGIFTAID
        inner join dbo.REVENUESPLIT on REVENUESPLITGIFTAID.ID = REVENUESPLIT.ID
        where
          REVENUESPLIT.REVENUEID = @ID and
          (REVENUESPLITGIFTAID.RULES_STATUS & REVENUESPLITGIFTAID.ATTRIBUTES_STATUS) = 1 and
          dbo.UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITY(REVENUESPLIT.ID) = 'No valid declaration';
      else
        set @TAXCLAIMAMOUNT = dbo.UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMAMOUNT_2(@ID, 0, 1);

      select @GROSSAMOUNT = @AMOUNT + @TAXCLAIMAMOUNT;
    end

    select @GIFTFEE_ENABLED = dbo.UFN_GIFTFEE_ENABLED();

    if @GIFTFEE_ENABLED = 1
      select @GIFTFEEAMOUNT = coalesce(sum(REVENUESPLITGIFTFEE.TRANSACTIONAMOUNT), 0.00
      from dbo.REVENUESPLITGIFTFEE 
      inner join dbo.REVENUESPLIT on REVENUESPLITGIFTFEE.ID = REVENUESPLIT.ID
      where REVENUESPLIT.REVENUEID = @ID;

    if exists(select ID from dbo.REVENUESPLIT where REVENUEID = @ID and APPLICATIONCODE = 11)
    begin
      set @ISMISCELLANEOUSPAYMENT = 1;

      select @REFERENCE = REFERENCE
      from dbo.REVENUEREFERENCE
      where ID = @ID;
    end

    select @DEPOSITID = DEPOSITID
    from dbo.BANKACCOUNTDEPOSITPAYMENT
    where ID = @ID;

    if @DEPOSITID is not null
      set @DEPOSITNAME = dbo.UFN_BANKACCOUNT_GETDEPOSITNAME(@DEPOSITID);

    -- If the revenue isn't going to post, there isn't a need for the distributions amount

    -- to match the gift fees amount.  Also verify that BasicGL is installed since gift 

    -- distributions are only valid for that GL type.

    if (select DONOTPOST from dbo.REVENUE where ID = @ID) = 0 and dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('0E85C527-E6E9-4C5F-A8E8-105FD0E18FE7') = 1
    begin
      declare @DISTRIBUTIONSUM money;
      select @DISTRIBUTIONSUM = sum(AMOUNT)
      from dbo.GIFTFEEGLDISTRIBUTION
      where
        REVENUEID = @ID and
        TRANSACTIONTYPECODE = 0 and
        OUTDATED = 0;

      declare @TOTALGIFTFEES money;
      select @TOTALGIFTFEES = sum(FEE)
      from dbo.REVENUESPLITGIFTFEE
      inner join dbo.REVENUESPLIT on REVENUESPLITGIFTFEE.ID = REVENUESPLIT.ID
      where
        REVENUESPLIT.REVENUEID = @ID and
        -- Exclude splits with an application of Order and type of Fee or Taxes since they aren't mapped

        not (REVENUESPLIT.APPLICATIONCODE = 10 and (REVENUESPLIT.TYPECODE = 6 or REVENUESPLIT.TYPECODE = 7));

      if coalesce(@DISTRIBUTIONSUM, 0) <> coalesce(@TOTALGIFTFEES, 0)
        set @GIFTFEESANDGIFTFEEDISTRIBUTIONAMOUNTSNOTEQUAL = 1;
    end
  end

  if @TYPE = 4 -- Planned gift

  begin
    select
      @PLANNEDGIFTVEHICLECODE = VEHICLECODE,
      @PLANNEDGIFTISREVOCABLE = ISREVOCABLE,
      @ISPLANNEDGIFTADDITION = ISADDITION,
      @PLANNEDGIFT_TRUSTHELDOUTSIDE = TRUSTHELDOUTSIDE
    from
        dbo.PLANNEDGIFT
    inner join
        dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PLANNEDGIFTREVENUE on PLANNEDGIFTREVENUE.PLANNEDGIFTID = PLANNEDGIFT.ID
    inner join
        dbo.REVENUE on REVENUE.ID = PLANNEDGIFTREVENUE.REVENUEID
    where
        REVENUE.ID = @REVENUEID;
  end

  if @TYPE = 5 -- Order

  begin
    -- NEEDS TO BE UPDATED FOR MULTICURRENCY

    select
      @SALESORDERID = SALESORDER.ID,
      @TOTALPAID = TOTALS.AMOUNTPAID,
      @BALANCE = TOTALS.BALANCE,
      @TOTALREFUNDED = TOTALS.REFUNDS,
      @OVERAGEKEPT = TOTALS.OVERAGEKEPT,
      @ORDERNUMBER = cast(SALESORDER.SEQUENCEID as nvarchar(30)),
      @SALESMETHODTYPECODE = SALESORDER.SALESMETHODTYPECODE,
      @ISTAXEXEMPT = case when SALESORDERTAXEXEMPTINFO.ID is null then 0 else 1 end,
      @TAXEXEMPTREASON = SALESORDERTAXEXEMPTREASONCODE.[DESCRIPTION],
      @TAXEXEMPTCOMMENTS = SALESORDERTAXEXEMPTINFO.COMMENTS
    from
      dbo.SALESORDER
    left join
      dbo.SALESORDERTAXEXEMPTINFO on SALESORDERTAXEXEMPTINFO.ID = SALESORDER.ID
    left join
      dbo.SALESORDERTAXEXEMPTREASONCODE on SALESORDERTAXEXEMPTREASONCODE.ID = SALESORDERTAXEXEMPTINFO.SALESORDERTAXEXEMPTREASONCODEID
    outer apply
      dbo.UFN_SALESORDER_TOTALS(SALESORDER.ID) as TOTALS
    where
      SALESORDER.REVENUEID = @REVENUEID;

    --If there are order credits tied to that revenue id, we need

    --to account for those too

    select
      @AMOUNT = @AMOUNT - coalesce(sum([CREDITGLDISTRIBUTION].[AMOUNT]), 0)
    from
      dbo.[CREDITGLDISTRIBUTION]
    where
      [CREDITGLDISTRIBUTION].[REVENUEID] = @REVENUEID and
      [CREDITGLDISTRIBUTION].[OUTDATED] = 0 and
      [CREDITGLDISTRIBUTION].[TRANSACTIONTYPECODE] = 0
  end

  if @TYPE = 6 -- Grant award

  begin
    select 
      @BALANCE = dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID),
      @TOTALPAID = dbo.UFN_PLEDGE_GETAMOUNTPAID(REVENUE.ID),
      @PASTDUE = dbo.UFN_PLEDGE_GETPASTDUEAMOUNT(REVENUE.ID),
      @ISPENDING = REVENUESCHEDULE.ISPENDING,
      @ISREIMBURSABLE = REVENUE.ISREIMBURSABLE
    from dbo.REVENUE                     
    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
    where 
      REVENUE.ID = @REVENUEID;

    select top 1
      @OPPORTUNITYNAME = dbo.UFN_OPPORTUNITY_GETLONGDESCRIPTION(OPPORTUNITY.ID),
      @OPPORTUNITYID = OPPORTUNITY.ID
    from
      dbo.OPPORTUNITY
      inner join dbo.REVENUEOPPORTUNITY on REVENUEOPPORTUNITY.OPPORTUNITYID = OPPORTUNITY.ID
    where
      REVENUEOPPORTUNITY.ID in (select ID from dbo.REVENUESPLIT where REVENUESPLIT.REVENUEID = @ID);

    select top 1
      @FUNDINGREQUESTNAME = GRANTS.TITLE,
      @FUNDINGREQUESTID = FUNDINGREQUEST.ID
    from
      dbo.FUNDINGREQUEST
      inner join dbo.REVENUEFUNDINGREQUEST on REVENUEFUNDINGREQUEST.FUNDINGREQUESTID = FUNDINGREQUEST.ID
      inner join dbo.GRANTS on FUNDINGREQUEST.GRANTSID = GRANTS.ID
    where
      REVENUEFUNDINGREQUEST.ID = @ID;

    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 
      inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = [APP].REVENUEID
      where BATCH.STATUSCODE not in (1, 2) and FINANCIALTRANSACTION.ID = @REVENUEID;
  end

  if @TYPE = 7 --Auction donation

  begin
    select
      @AUCTIONITEMID = AI.ID,
      @AUCTIONITEMNAME = AI.NAME,
      @AUCTIONITEMCATEGORY = AIC.NAME,
      @AUCTIONITEMSUBCATEGORY = AISC.NAME,
      @AUCTIONEXPIRATIONDATE = AI.EXPIRATIONDATE
    from
      dbo.AUCTIONITEM AI
      left join dbo.AUCTIONITEMCATEGORY AIC on AIC.ID = AI.AUCTIONITEMCATEGORYID
      left join dbo.AUCTIONITEMSUBCATEGORY AISC on AISC.ID = AI.AUCTIONITEMSUBCATEGORYID
    where
      REVENUEAUCTIONDONATIONID = @ID;
  end

  if @TYPE = 15 -- Membership installment plan

  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 = GIVENANONYMOUSLY,
      @MAILING = dbo.UFN_MKTSEGMENTATION_GETNAME(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.PLEDGESUBTYPE on PLEDGESUBTYPE.ID = REVENUESCHEDULE.PLEDGESUBTYPEID
    left join dbo.CHANNELCODE on CHANNELCODE.ID = REVENUE_EXT.CHANNELCODEID
    where 
      FINANCIALTRANSACTION.ID = @REVENUEID
      and FINANCIALTRANSACTION.DELETEDON is null;

    if @ISPENDING = 1
    begin
        select top 1 
          @PENDINGBATCHNUMBER = BATCH.BATCHNUMBER
        from dbo.BATCH
        inner join dbo.BATCHMEMBERSHIPDUES on BATCHMEMBERSHIPDUES.BATCHID = BATCH.ID and dbo.UFN_MEMBERSHIP_GETPLEDGE(BATCHMEMBERSHIPDUES.EXISTINGMEMBERSHIPID) = @REVENUEID
        where 
          BATCH.STATUSCODE not in (1, 2
          and BATCHMEMBERSHIPDUES.EXISTINGMEMBERSHIPID is not null
          and BATCHMEMBERSHIPDUES.REVENUETYPECODE = 1
    end

    if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
    begin
      set @PLEDGETOTALWITHGIFTAID = dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETOTALPAID(@ID);
      set @PLEDGERECURRINGGIFTGROSSAMOUNT = dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGEGROSSAMOUNT_2(@ID, 1);

      if @PAYMENTMETHODCODE = 3 and dbo.UFN_PAPERLESSMANDATES_DAYSADVANCEDNOTICE_FORREVENUE(@ID) = -1
      begin
        --Bug 138736 - AdamBu 2/2/11 - Check for invalid paperless mandate setup.

        set @HASINVALIDPAPERLESSMANDATES = 1
      end
    end
  end
  return 0;