USP_DATAFORMTEMPLATE_VIEW_REVENUETRANSACTIONPROFILETA

The load procedure used by the view dataform template "Revenue Transaction Profile Target Associates 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(50) INOUT Pending batch number
@DATE datetime INOUT Date
@PAYMENTMETHOD nvarchar(13) INOUT Payment method
@PAYMENTMETHODCODE tinyint INOUT Payment method code
@CHECKDATE UDT_FUZZYDATE INOUT Check date
@CHECKNUMBER nvarchar(20) INOUT Check #
@REFERENCENUMBER nvarchar(20) INOUT Reference number
@REFERENCEDATE UDT_FUZZYDATE INOUT Reference date
@CARDHOLDERNAME nvarchar(255) INOUT Cardholder name
@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 int INOUT Number of units
@SYMBOL nvarchar(4) 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(50) 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 Mailing
@CHANNEL nvarchar(100) INOUT 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 Acknowledgments
@MGSTATUSCODE tinyint INOUT Matching gift status
@RECEIPTTYPE nvarchar(30) INOUT Receipt preference
@OTHERPAYMENTMETHODCODE nvarchar(100) INOUT Other method
@FISCALYEARMONTH UDT_FUZZYDATE INOUT Fiscal month/year
@PLEDGESTATUS nvarchar(100) INOUT Pledge status
@TRANSACTIONTYPE nvarchar(100) INOUT Gift type
@CATEGORYDESCRIPTION nvarchar(100) INOUT Revenue category

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_REVENUETRANSACTIONPROFILETA
                (
                    @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(50) = null output,
                    @DATE datetime = null output,
                    @PAYMENTMETHOD nvarchar(13) = 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 int = null output
                    @SYMBOL nvarchar(4) = 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(50) = 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,
                    @FISCALYEARMONTH dbo.UDT_FUZZYDATE = null output,
                    @PLEDGESTATUS nvarchar(100) = null output,
                    @TRANSACTIONTYPE nvarchar(100) = null output,
                    @CATEGORYDESCRIPTION nvarchar(100) = null output
                )
                as

                set nocount on;

                declare @REVENUEID uniqueidentifier;
                declare @MATCHEDREVENUEDETAILID uniqueidentifier;

                set @DATALOADED = 0;
                set @MGSTATUSCODE = 0;

                select 
                    @AMOUNT = sum(AMOUNT),
                    @RECEIPTAMOUNT = sum(RECEIPTAMOUNT)
                from dbo.REVENUE 
                where ID = @ID;

                --Replaces revenue is the PK FK in many tables

                declare @REVENUEPAYMENTMETHODID uniqueidentifier;

                --Get general fields that are valid for all views

                select top 1
                    @DATALOADED = 1,
                    @REVENUEID = REVENUE.ID,
                    @TYPE = REVENUE.TRANSACTIONTYPECODE,
                    @DATE = REVENUE.DATE
                    @POSTDATE = REVENUE.POSTDATE,
                    @BATCHNUMBER = REVENUE.BATCHNUMBER,
                    @REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID,
                    @PAYMENTMETHOD = REVENUEPAYMENTMETHOD.PAYMENTMETHOD,
                    @PAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    @CHECKDATE = [CHECK].CHECKDATE,
                    @CHECKNUMBER = [CHECK].CHECKNUMBER,
                    @CARDHOLDERNAME = [CREDIT].CARDHOLDERNAME,
                    @CREDITCARDNUMBER = '***************',    --we should not be showing this information from some general summary

                    @CREDITTYPE = [CREDITTYPE].DESCRIPTION,
                    @AUTHORIZATIONCODE = [CREDIT].AUTHORIZATIONCODE,
                    @EXPIRESON = [CREDIT].EXPIRESON,
                    @ISSUER = [STOCK].ISSUER,
                    @NUMBEROFUNITS = case when [STOCK].NUMBEROFUNITS <> 0 then [STOCK].NUMBEROFUNITS else null end
                    @SYMBOL = [STOCK].SYMBOL,
                    @MEDIANPRICE = [STOCK].MEDIANPRICE,
                    @SALEAMOUNT = case when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 4 then coalesce((select sum(SALEAMOUNT) from dbo.STOCKSALE where STOCKDETAILID = STOCK.ID), 0)
                                       when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and PROPERTY.ISSOLD = 1 then [PROPERTY].SALEAMOUNT
                                       else 0 end,
                    @GIFTINKINDSUBTYPE = [GIK].DESCRIPTION,
                    @PROPERTYSUBTYPE = PROPERTYSUBTYPECODE.DESCRIPTION,
                    @APPEAL = '',
                    @RECEIPTNUMBER = case left(dbo.UFN_REVENUE_GETRECEIPTSTATUS(REVENUE.ID),9)
                        when 'Receipted' then (select top 1 RR.RECEIPTNUMBER from dbo.REVENUERECEIPT RR where RR.REVENUEID = REVENUE.ID order by RR.RECEIPTPROCESSDATE desc)
                        else null end,
                    @RECEIPTDATE = case left(dbo.UFN_REVENUE_GETRECEIPTSTATUS(REVENUE.ID),9)
                        when 'Receipted' then (select top 1 RR.RECEIPTDATE from dbo.REVENUERECEIPT RR where RR.REVENUEID = REVENUE.ID order by RR.RECEIPTPROCESSDATE desc)
                        else null end,
                    @RECEIPTSTATUS = dbo.UFN_REVENUE_GETRECEIPTSTATUS(REVENUE.ID),
                    @GIVENANONYMOUSLY = GIVENANONYMOUSLY,
                    @ACKNOWLEDGEMENTSTATUS = dbo.UFN_REVENUETRANSACTION_GETACKNOWLEDGESTATUS(REVENUE.ID),
                    @RECEIPTTYPE = RECEIPTTYPE,
                    @OTHERPAYMENTMETHODCODE = OTHERTYPE.DESCRIPTION,
                    @CATEGORYDESCRIPTION = GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME
                from dbo.REVENUE 
                inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                left join dbo.CHECKPAYMENTMETHODDETAIL as [CHECK] on [CHECK].ID = REVENUEPAYMENTMETHOD.ID 
                left join dbo.CREDITCARDPAYMENTMETHODDETAIL as [CREDIT] on [CREDIT].ID = REVENUEPAYMENTMETHOD.ID
                left join dbo.CREDITTYPECODE as [CREDITTYPE] on [CREDITTYPE].ID = [CREDIT].CREDITTYPECODEID
                left join dbo.STOCKDETAIL as [STOCK] on [STOCK].ID = REVENUEPAYMENTMETHOD.ID
                left join dbo.GIFTINKINDPAYMENTMETHODDETAIL on GIFTINKINDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
                left join dbo.GIFTINKINDSUBTYPECODE as [GIK] on [GIK].ID = GIFTINKINDPAYMENTMETHODDETAIL.GIFTINKINDSUBTYPECODEID
                left join dbo.PROPERTYDETAIL as [PROPERTY] on [PROPERTY].ID = REVENUEPAYMENTMETHOD.ID 
                left join dbo.PROPERTYSUBTYPECODE on PROPERTYSUBTYPECODE.ID = [PROPERTY].PROPERTYSUBTYPECODEID
                left join dbo.ADJUSTMENT on REVENUE.ID = ADJUSTMENT.REVENUEID
                --left join dbo.REVENUERECEIPT on REVENUE.ID = REVENUERECEIPT.REVENUEID

                left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
                left join dbo.OTHERPAYMENTMETHODDETAIL as [OTHER] on [OTHER].ID = REVENUEPAYMENTMETHOD.ID 
                left join dbo.OTHERPAYMENTMETHODCODE as [OTHERTYPE] on [OTHERTYPE].ID = [OTHER].OTHERPAYMENTMETHODCODEID
                left join dbo.REVENUECATEGORY on REVENUE.ID = REVENUECATEGORY.ID
                left join dbo.GLREVENUECATEGORYMAPPING on REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
                where REVENUE.ID = @ID

                --TAFIELDS

                select
                    @FISCALYEARMONTH = RT.FISCALYEARMONTH,
                    @PLEDGESTATUS = RT.PLEDGESTATUS,
                    @TRANSACTIONTYPE = RTCODE.DESCRIPTION
                from dbo.REVENUETAINTEGRATION RT
                left outer join dbo.REVENUETRANSACTIONTYPECODE RTCODE
                    on RT.TRANSACTIONTYPECODEID = RTCODE.ID
                where RT.ID = @REVENUEID

                select top 1 @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 REVENUE.DONOTPOST = 1 then 'Do not post'
                        else 'Not posted'
                    end
                from dbo.REVENUE 
                left join dbo.ADJUSTMENT on REVENUE.ID = ADJUSTMENT.REVENUEID
                left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
                where REVENUE.ID = @ID
                order by ADJUSTMENT.DATEADDED desc;

                --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;
                    select 
                        @REFERENCENUMBER = REFERENCENUMBER,
                        @REFERENCEDATE = REFERENCEDATE,
                        @ACCOUNT = dbo.UFN_CONSTITUENTACCOUNT_GETDESCRIPTION(CONSTITUENTACCOUNTID)
                    from dbo.DIRECTDEBITPAYMENTMETHODDETAIL
                    where ID = @REVENUEPAYMENTMETHODID;
                    close symmetric key sym_BBInfinity;
                end

                if @PAYMENTMETHODCODE = 10 --Other

                        select 
                            @REFERENCENUMBER = REFERENCENUMBER,
                            @REFERENCEDATE = REFERENCEDATE
                        from dbo.OTHERPAYMENTMETHODDETAIL where ID = @REVENUEPAYMENTMETHODID;

                if @PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = @REVENUEPAYMENTMETHODID) --Sold stock

                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

                if @PAYMENTMETHODCODE = 5 and exists (select ID from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMENTMETHODID and PROPERTYDETAIL.ISSOLD = 1) --Sold property

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

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

                if @TYPE = 1 -- Pledge

                    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,
                        @SENDPLEDGEREMINDER = REVENUESCHEDULE.SENDPLEDGEREMINDER,
                        @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE.APPEALID),
                        @SOURCECODE = REVENUE.SOURCECODE,
                        @GIVENANONYMOUSLY = GIVENANONYMOUSLY,
                        @MAILING = dbo.UFN_MKTSEGMENTATION_GETNAME(MAILINGID),
                        @CHANNEL = CHANNELCODE.DESCRIPTION,
                        @PLEDGESUBTYPE = PLEDGESUBTYPE.NAME
                    from dbo.REVENUE                     
                    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
                    left join dbo.PLEDGESUBTYPE on PLEDGESUBTYPE.ID = REVENUESCHEDULE.PLEDGESUBTYPEID
                    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
                        inner join dbo.BATCHREVENUEAPPLICATION as [APP] on [APP].BATCHREVENUEID = BATCHREVENUE.ID 
                        inner join dbo.REVENUE on REVENUE.ID = [APP].REVENUEID
                        where BATCH.STATUSCODE not in (1, 2) and REVENUE.ID = @REVENUEID;

                if @TYPE = 3 -- MG Pledge

                begin
                    declare @ISACTIVE bit;

                    select 
                        @DATALOADED = 1,
                        @TOTALPAID = coalesce((select sum(INSTALLMENTPAYMENT.AMOUNT) from dbo.INSTALLMENTPAYMENT where INSTALLMENTPAYMENT.PLEDGEID = REVENUE.ID), 0),
                        @BALANCE = dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID),
                        @MATCHEDREVENUEID = MGREVENUE.ID,
                        @MATCHEDREVENUEDETAILID = MGREVENUE.ID,
                        @ISPENDING = REVENUESCHEDULE.ISPENDING,
                        @APPEAL = dbo.UFN_APPEAL_GETNAME(REVENUE.APPEALID),
                        @SOURCECODE = REVENUE.SOURCECODE,
                        @ISACTIVE = RMG.ISACTIVE
                    from dbo.REVENUE
                    inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
                    inner join dbo.REVENUE MGREVENUE on RMG.MGSOURCEREVENUEID = MGREVENUE.ID
                    inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
                    where REVENUE.ID = @REVENUEID;

                    select @MATCHEDREVENUE
                         = '$' + Cast(REVENUE.AMOUNT 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.REVENUE on REVENUE.ID = [APP].REVENUEID
                        where BATCH.STATUSCODE not in (1, 2) and REVENUE.ID = @REVENUEID;

                    --MGSTATUSCODE: 0 active

                    --MGSTATUSCODE: 1 paid in full

                    --MGSTATUSCODE: 2 inactive

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

                if @TYPE = 2 -- Recurring Gift

                begin
                    select
                        @DATALOADED = 1,
                        @NEXTTRANSACTION = case when REVENUESCHEDULE.NEXTTRANSACTIONDATE > REVENUESCHEDULE.ENDDATE then null else REVENUESCHEDULE.NEXTTRANSACTIONDATE end,
                        @TOTALPAID = coalesce((select sum(AMOUNT) from dbo.RECURRINGGIFTACTIVITY where SOURCEREVENUEID = REVENUE.ID and TYPECODE = 0), 0),
                        @FREQUENCY = REVENUESCHEDULE.FREQUENCY,
                        @STARTDATE = REVENUESCHEDULE.STARTDATE,
                        @ENDDATE = REVENUESCHEDULE.ENDDATE,
                        @STATUS = REVENUESCHEDULE.STATUS,
                        @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
                        inner join dbo.BATCHREVENUEAPPLICATION as [APP] on [APP].BATCHREVENUEID = BATCHREVENUE.ID 
                        inner join dbo.REVENUE on REVENUE.ID = [APP].REVENUEID
                        where BATCH.STATUSCODE not in (1, 2) and REVENUE.ID = @REVENUEID;
                end

                return 0;