UFN_REVENUEBATCH_GETAPPLICATIONS

Returns the applications for a given row in a revenue batch table.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUEID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_REVENUEBATCH_GETAPPLICATIONS(
    @BATCHREVENUEID uniqueidentifier
)
returns @APPLICATIONS table(   
    ID uniqueidentifier,
    APPLICATIONID uniqueidentifier,
    CONSTITUENTID uniqueidentifier,
    CONSTITUENTNAME nvarchar(700),
    APPLIED money,
    BALANCE money,
    AMOUNTDUE money,
    DATEDUE datetime,
    TYPECODE tinyint,
    RECEIPTAMOUNT money,
    DONOTRECEIPT bit,
    DESCRIPTION nvarchar(300),
    WASGENERATED bit,
    OVERPAYMENTAPPLICATIONTYPECODE tinyint,
    DESIGNATIONLIST nvarchar(300), 
    SPONSORSHIPOPPORTUNITY nvarchar(300),
    REVENUESPLITID uniqueidentifier,
    BATCHREVENUEREGISTRANTID uniqueidentifier,
    APPLICATIONCURRENCYID uniqueidentifier,
    PDACCOUNTSYSTEMID uniqueidentifier,
    SPONSORSHIPRGADDITIONALGIFT bit,
    CATEGORYCODEID uniqueidentifier,
  APPLICATIONCOMMITMENTID uniqueidentifier
)
as
begin

    declare @EMPTYGUID uniqueidentifier;
    set @EMPTYGUID = '00000000-0000-0000-0000-000000000000';

    declare @REVENUEAPPLICATIONS table    (
        ID uniqueidentifier,      
        APPLICATIONID uniqueidentifier,
        CONSTITUENTID uniqueidentifier,
        CONSTITUENTNAME nvarchar(700),
        APPLIED money,
        BALANCE money,
        AMOUNTDUE money,
        DATEDUE datetime,
        TYPECODE tinyint,
        RECEIPTAMOUNT money,
        DONOTRECEIPT bit,
        DESCRIPTION nvarchar(300),
        WASGENERATED bit,
        OVERPAYMENTAPPLICATIONTYPECODE tinyint,
        DESIGNATIONLIST nvarchar(300), 
        SPONSORSHIPOPPORTUNITY nvarchar(300),
        REVENUESPLITID uniqueidentifier,
        APPLICATIONCURRENCYID uniqueidentifier,
        PDACCOUNTSYSTEMID uniqueidentifier,
        SPONSORSHIPRGADDITIONALGIFT bit,
        CATEGORYCODEID uniqueidentifier
    );

    declare @EVENTAPPLICATIONS table    (
        ID uniqueidentifier,
        APPLICATIONID uniqueidentifier,
        CONSTITUENTID uniqueidentifier,
        CONSTITUENTNAME nvarchar(700),
        APPLIED money,
        BALANCE money,
        AMOUNTDUE money,
        DATEDUE datetime,
        TYPECODE tinyint,
        RECEIPTAMOUNT money,
        DONOTRECEIPT bit,
        DESCRIPTION nvarchar(300),
        REVENUESPLITID uniqueidentifier,
        BATCHREVENUEREGISTRANTID uniqueidentifier,
        APPLICATIONCURRENCYID uniqueidentifier,
        PDACCOUNTSYSTEMID uniqueidentifier
    );

    declare @NOW datetime;
    set @NOW=GETDATE();

    declare @REVENUEDATE datetime;
    declare @TRANSACTIONCURRENCYID uniqueidentifier;
    declare @BASECURRENCYID uniqueidentifier;
    declare @BASEEXCHANGERATEID uniqueidentifier;
    declare @SPOTRATE decimal(20,8);
    select
        @REVENUEDATE = DATE,
        @TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
        @BASECURRENCYID = BASECURRENCYID,
        @BASEEXCHANGERATEID = BASEEXCHANGERATEID,
        @SPOTRATE = EXCHANGERATE
    from dbo.BATCHREVENUE
    where ID = @BATCHREVENUEID;

    insert into @REVENUEAPPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, WASGENERATED, OVERPAYMENTAPPLICATIONTYPECODE, DESIGNATIONLIST, SPONSORSHIPOPPORTUNITY, REVENUESPLITID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID,SPONSORSHIPRGADDITIONALGIFT, CATEGORYCODEID)
    select 
        BATCHREVENUEAPPLICATION.ID as [ID],
        BATCHREVENUEAPPLICATION.REVENUEID as [APPLICATIONID],
        FINANCIALTRANSACTION.CONSTITUENTID as [CONSTITUENTID],                        
        --JamesWill 09/12/2008 Bug 13504, include the matched constituent's name for matching gift claims. (Copied from the Constituent Unrealized Revenue datalist (USP_DATALIST_CONSTITUENTUNREALIZEDREVENUE))

        (select 
            case FINANCIALTRANSACTION.TYPECODE 
                when 3 
                    then CONSTITUENT_NF.NAME + ' - ' 
                        + (
                            select 
                                C1_NF.NAME + ' (' + C1.LOOKUPID + ')'
                            from dbo.REVENUEMATCHINGGIFT MG1 
                                inner join dbo.FINANCIALTRANSACTION R1 on R1.ID = MG1.MGSOURCEREVENUEID
                                inner join dbo.CONSTITUENT C1 on C1.ID = R1.CONSTITUENTID
                                cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(R1.CONSTITUENTID) C1_NF
                            where MG1.ID = FINANCIALTRANSACTION.ID
                        )
                else CONSTITUENT_NF.NAME
            end
        ) as [CONSTITUENTNAME],
        BATCHREVENUEAPPLICATION.APPLIED,
        case 
            when FINANCIALTRANSACTION.TYPECODE in (1, 3, 4, 6, 8
                then dbo.UFN_PLEDGE_GETBALANCE(FINANCIALTRANSACTION.ID)
            when FINANCIALTRANSACTION.TYPECODE = 2 and REVENUESCHEDULE.STATUSCODE in (0,5)
                then FINANCIALTRANSACTION.TRANSACTIONAMOUNT
            when FINANCIALTRANSACTION.TYPECODE = 2 and REVENUESCHEDULE.STATUSCODE in (1, 2, 3, 4
                then 0
            else null 
        end as [BALANCE],
        case 
            when FINANCIALTRANSACTION.TYPECODE in (1 ,3, 4, 6, 8
                then dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(dbo.UFN_REVENUE_GETNEXTINSTALLMENT(FINANCIALTRANSACTION.ID))
            when FINANCIALTRANSACTION.TYPECODE = 2 and REVENUESCHEDULE.STATUSCODE in (0,5)
                then FINANCIALTRANSACTION.TRANSACTIONAMOUNT
            when FINANCIALTRANSACTION.TYPECODE = 2 and REVENUESCHEDULE.STATUSCODE in (1, 2, 3, 4
                then 0
            else null 
        end as [AMOUNTDUE],
        case 
            when FINANCIALTRANSACTION.TYPECODE in (1, 3, 4, 6, 8
                then INSTALLMENT.DATE
            when FINANCIALTRANSACTION.TYPECODE = 2 
                then REVENUESCHEDULE.NEXTTRANSACTIONDATE
            else null 
        end as [DATEDUE],
        case FINANCIALTRANSACTION.TYPECODE 
            when 6 
                then 9 
            when 8 
                then 10 
            else FINANCIALTRANSACTION.TYPECODE 
        end as TRANSACTIONTYPECODE,
        BATCHREVENUEAPPLICATION.RECEIPTAMOUNT as [RECEIPTAMOUNT],
        0 as [DONOTRECEIPT],    --Default to 'Not receipted' like a payment made from the Add Payment screen

        '' as [DESCRIPTION],
        BATCHREVENUEAPPLICATION.WASGENERATED,
        BATCHREVENUEAPPLICATION.OVERPAYMENTAPPLICATIONTYPECODE,
        left((
            select top 1
                dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST 
            from dbo.REVENUESPLIT_EXT 
                inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                inner join dbo.DESIGNATION on REVENUESPLIT_EXT.DESIGNATIONID = DESIGNATION.ID
            where (BATCHREVENUEAPPLICATION.REVENUESPLITID is null and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID)
            or (BATCHREVENUEAPPLICATION.REVENUESPLITID is not null and FINANCIALTRANSACTIONLINEITEM.ID = BATCHREVENUEAPPLICATION.REVENUESPLITID)
        ),300) as DESIGNATIONLIST,
        (
            select top 1    
                coalesce(
                    (select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID=S.SPONSORSHIPOPPORTUNITYID),
                    (select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = S.SPONSORSHIPOPPORTUNITYID)
                ) as SPONSORSHIPOPPORTUNITY
            from dbo.SPONSORSHIP S
                inner join FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = S.REVENUESPLITID
            where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = BATCHREVENUEAPPLICATION.REVENUEID
            and S.ISMOSTRECENTFORCOMMITMENT = 1
        ) as SPONSORSHIPOPPORTUNITY,
        BATCHREVENUEAPPLICATION.REVENUESPLITID,
        FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
        PDAS.PDACCOUNTSYSTEMID,
        case 
            when exists (
                    select 1
                    from dbo.FINANCIALTRANSACTIONLINEITEM 
                        inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                        and REVENUESPLIT_EXT.TYPECODE = 17
                    )
                then 1
            else 0 
        end SPONSORSHIPRGADDITIONALGIFT,
        (
            select top 1
                REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
            from
                dbo.FINANCIALTRANSACTIONLINEITEM
                inner join dbo.REVENUECATEGORY on FINANCIALTRANSACTIONLINEITEM.ID = REVENUECATEGORY.ID
            where
                FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
        ) as CATEGORYCODEID
    from dbo.BATCHREVENUEAPPLICATION
        inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = BATCHREVENUEAPPLICATION.REVENUEID
        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FINANCIALTRANSACTION.CONSTITUENTID) CONSTITUENT_NF
        left join dbo.INSTALLMENT on INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(FINANCIALTRANSACTION.ID)
        left join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
        left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on BATCHREVENUEAPPLICATION.REVENUEID = PDAS.ID
    where BATCHREVENUEAPPLICATION.BATCHREVENUEID = @BATCHREVENUEID and BATCHREVENUEAPPLICATION.APPLICATIONTYPECODE = 0;

    -- applications to pre-existing event registrations

    insert into @EVENTAPPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, REVENUESPLITID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID)
    select
        BATCHREVENUEAPPLICATION.ID as [ID],
        BATCHREVENUEAPPLICATION.REGISTRANTID as [APPLICATIONID],
        REGISTRANT.CONSTITUENTID as [CONSTITUENTID],
        CONSTITUENT_NF.NAME as [CONSTITUENTNAME],
        BATCHREVENUEAPPLICATION.APPLIED,
        dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as [BALANCE],
        dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as [AMOUNTDUE],
        EVENT.STARTDATE as [DATEDUE], --JamesWill CR260844-113006 2007/03/15 Use the event start date as the due date

        6 as [TYPECODE],
        dbo.UFN_EVENTREGISTRANT_GETRECEIPTAMOUNT_NOBENEFITS(
            REGISTRANT.ID,
            @REVENUEDATE,
            BATCHREVENUEAPPLICATION.APPLIED,
            @TRANSACTIONCURRENCYID,
            @BASECURRENCYID,
            @BASEEXCHANGERATEID,
            @SPOTRATE,
            0,
            null
        ) as [RECEIPTAMOUNT],
        0 as [DONOTRECEIPT], --Default to 'Not receipted' like a payment made from the Add Payment screen

        EVENT.NAME as [DESCRIPTION],
        BATCHREVENUEAPPLICATION.REVENUESPLITID,
        EVENT.BASECURRENCYID,
        PDAS.PDACCOUNTSYSTEMID
    from dbo.BATCHREVENUEAPPLICATION
        inner join dbo.REGISTRANT on REGISTRANT.ID = BATCHREVENUEAPPLICATION.REGISTRANTID
        cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) CONSTITUENT_NF
        inner join dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
        left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on BATCHREVENUEAPPLICATION.REVENUEID = PDAS.ID
    where BATCHREVENUEAPPLICATION.BATCHREVENUEID = @BATCHREVENUEID and BATCHREVENUEAPPLICATION.APPLICATIONTYPECODE = 1;

    -- applications to pre-existing event registrations (for enhanced revenue batch and revenue update batch)

    insert into @EVENTAPPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, REVENUESPLITID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID)
    select
        BATCHREVENUE.ID as [ID],
        REGISTRANT.ID as [APPLICATIONID],
        REGISTRANT.CONSTITUENTID as [CONSTITUENTID],
        CONSTITUENT_NF.NAME as [CONSTITUENTNAME],
        case when V1.APPLICATIONAMOUNT > BATCHREVENUE.AMOUNT then BATCHREVENUE.AMOUNT else V1.APPLICATIONAMOUNT end as [APPLIED], -- Handle the case partial paid amount.

        dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as [BALANCE],
        dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as [AMOUNTDUE],
        EVENT.STARTDATE as [DATEDUE], --JamesWill CR260844-113006 2007/03/15 Use the event start date as the due date

        6 as [TYPECODE],
        dbo.UFN_EVENTREGISTRANT_GETRECEIPTAMOUNT_NOBENEFITS(
            REGISTRANT.ID,
            @REVENUEDATE,
            V1.APPLICATIONAMOUNT,
            @TRANSACTIONCURRENCYID,
            @BASECURRENCYID,
            @BASEEXCHANGERATEID,
            @SPOTRATE,
            0,
            null
        ) as [RECEIPTAMOUNT],
        0 as [DONOTRECEIPT], --Default to 'Not receipted' like a payment made from the Add Payment screen

        EVENT.NAME as [DESCRIPTION],
        BATCHREVENUE.REVENUESPLITID,
        EVENT.BASECURRENCYID,
        PDAS.PDACCOUNTSYSTEMID                
    from dbo.BATCHREVENUE 
        inner join (
            select 
                BR1.ID, 
                (
                    select TOP 1 APPLICATIONTYPECODE 
                    from dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(BR1.APPLICATIONINFO)
                ) as APPLICATIONTYPECODE, 
                (
                    select TOP 1 SINGLEAPPLICATIONID 
                    from dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(BR1.APPLICATIONINFO)
                ) as SINGLEAPPLICATIONID, 
                (
                    select TOP 1 APPLICATIONAMOUNT 
                    from dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(BR1.APPLICATIONINFO)
                ) as APPLICATIONAMOUNT 
            from dbo.BATCHREVENUE BR1 
            where BR1.ID = @BATCHREVENUEID and len(BR1.APPLICATIONINFO)>3
        ) V1 on BATCHREVENUE.ID=V1.ID                        
        inner join dbo.REGISTRANT on REGISTRANT.ID = V1.SINGLEAPPLICATIONID
        cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) CONSTITUENT_NF
        inner join dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
        left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on BATCHREVENUE.REVENUEID = PDAS.ID
    where BATCHREVENUE.ID = @BATCHREVENUEID and V1.APPLICATIONTYPECODE =7
        and REGISTRANT.ID not in (select APPLICATIONID from @EVENTAPPLICATIONS);

    -- applications to event registrations created in batch

    insert into @EVENTAPPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, REVENUESPLITID, BATCHREVENUEREGISTRANTID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID)
    select
        BATCHREVENUEAPPLICATION.ID as [ID],
        BATCHREVENUEAPPLICATION.BATCHREVENUEREGISTRANTID as APPLICATIONID,
        BATCHREVENUEREGISTRANT.CONSTITUENTID,
        coalesce(CONSTITUENT_NF.NAME, BATCHREVENUECONSTITUENT.NAME) as CONSTITUENTNAME,
        BATCHREVENUEAPPLICATION.APPLIED,
        dbo.UFN_REVENUEBATCH_EVENTREGISTRANT_GETBALANCE(BATCHREVENUEREGISTRANT.ID) as BALANCE,
        dbo.UFN_REVENUEBATCH_EVENTREGISTRANT_GETBALANCE(BATCHREVENUEREGISTRANT.ID) as AMOUNTDUE,
        EVENT.STARTDATE as DATEDUE,
        6 as TYPECODE,
        dbo.UFN_EVENTREGISTRANT_GETRECEIPTAMOUNT_NOBENEFITS(
            BATCHREVENUEAPPLICATION.BATCHREVENUEREGISTRANTID,
            @REVENUEDATE,
            BATCHREVENUEAPPLICATION.APPLIED,
            @TRANSACTIONCURRENCYID,
            @BASECURRENCYID,
            @BASEEXCHANGERATEID,
            @SPOTRATE,
            1,
            null
        ) as [RECEIPTAMOUNT],
        0 as DONOTRECEIPT,
        EVENT.NAME as DESCRIPTION,
        BATCHREVENUEAPPLICATION.REVENUESPLITID,
        BATCHREVENUEAPPLICATION.BATCHREVENUEREGISTRANTID,
        EVENT.BASECURRENCYID,
        PDAS.PDACCOUNTSYSTEMID
    from dbo.BATCHREVENUE
        inner join dbo.BATCHREVENUEAPPLICATION on BATCHREVENUE.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEID
        inner join dbo.BATCHREVENUEREGISTRANT on BATCHREVENUEREGISTRANT.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEREGISTRANTID
        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(BATCHREVENUE.CONSTITUENTID) CONSTITUENT_NF
        left join dbo.BATCHREVENUECONSTITUENT on BATCHREVENUE.CONSTITUENTID = BATCHREVENUECONSTITUENT.ID
        left outer join dbo.EVENT on BATCHREVENUEREGISTRANT.EVENTID = EVENT.ID
        left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on BATCHREVENUEAPPLICATION.REVENUEID = PDAS.ID
    where BATCHREVENUE.ID = @BATCHREVENUEID;

    insert into @REVENUEAPPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, WASGENERATED, OVERPAYMENTAPPLICATIONTYPECODE, SPONSORSHIPOPPORTUNITY, REVENUESPLITID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID, CATEGORYCODEID)
    select
        BATCHREVENUEAPPLICATION.ID as [ID],
        BATCHREVENUEAPPLICATION.REVENUEID as [APPLICATIONID],
        BATCHREVENUE.CONSTITUENTID as [CONSTITUENTID],
        CONSTITUENT_NF.NAME as [CONSTITUENTNAME],
        BATCHREVENUEAPPLICATION.APPLIED,
        BATCHREVENUEAPPLICATION.APPLIED as [BALANCE],
        BATCHREVENUEAPPLICATION.APPLIED as [AMOUNTDUE],
        @NOW as [DATEDUE],
        3,
        BATCHREVENUEAPPLICATION.RECEIPTAMOUNT as [RECEIPTAMOUNT],
        0 as [DONOTRECEIPT],    --Default to 'Not receipted' like a payment made from the Add Payment screen

        '' as [DESCRIPTION],
        BATCHREVENUEAPPLICATION.WASGENERATED,
        BATCHREVENUEAPPLICATION.OVERPAYMENTAPPLICATIONTYPECODE,
        (
            select top 1    
                coalesce(
                    (select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID),
                    (select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID)
                ) as SPONSORSHIPOPPORTUNITY
            from dbo.SPONSORSHIP
                inner join FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = SPONSORSHIP.REVENUESPLITID
            where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = BATCHREVENUEAPPLICATION.REVENUEID
                and SPONSORSHIP.ISMOSTRECENTFORCOMMITMENT = 1
        ) as SPONSORSHIPOPPORTUNITY,
        BATCHREVENUEAPPLICATION.REVENUESPLITID,
        BATCHREVENUE.TRANSACTIONCURRENCYID,
        PDAS.PDACCOUNTSYSTEMID,
        (
            select top 1
                REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
            from
                dbo.FINANCIALTRANSACTIONLINEITEM
                inner join dbo.REVENUECATEGORY on FINANCIALTRANSACTIONLINEITEM.ID = REVENUECATEGORY.ID
            where
                FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = BATCHREVENUEAPPLICATION.REVENUEID
        ) as CATEGORYCODEID
    from dbo.BATCHREVENUE
        inner join dbo.BATCHREVENUEAPPLICATION ON BATCHREVENUE.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEID
        cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(BATCHREVENUE.CONSTITUENTID) CONSTITUENT_NF
        left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on BATCHREVENUEAPPLICATION.REVENUEID = PDAS.ID
    where BATCHREVENUE.ID = @BATCHREVENUEID 
        and BATCHREVENUEAPPLICATION.BATCHREVENUEAPPLICATIONPLEDGEID IS NULL 
        and BATCHREVENUEAPPLICATION.REVENUEID IS NULL 
        and BATCHREVENUEAPPLICATION.APPLICATIONTYPECODE <> 1 
        and BATCHREVENUEAPPLICATION.BATCHREVENUEAPPLICATIONMEMBERSHIPID is null;

    insert into @REVENUEAPPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, WASGENERATED, OVERPAYMENTAPPLICATIONTYPECODE, SPONSORSHIPOPPORTUNITY, REVENUESPLITID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID)
    select
        BATCHREVENUEAPPLICATION.ID as [ID],
        BATCHREVENUEAPPLICATIONMEMBERSHIP.MEMBERSHIPID as [APPLICATIONID],
        BATCHREVENUE.CONSTITUENTID as [CONSTITUENTID],
        CONSTITUENT_NF.NAME as [CONSTITUENTNAME],
        BATCHREVENUEAPPLICATION.APPLIED,
        BATCHREVENUEAPPLICATION.APPLIED as [BALANCE],
        BATCHREVENUEAPPLICATION.APPLIED as [AMOUNTDUE],
        @NOW as [DATEDUE],
        5 as [TYPECODE],
        BATCHREVENUEAPPLICATION.RECEIPTAMOUNT as [RECEIPTAMOUNT],
        0 as [DONOTRECEIPT],    --Default to 'Not receipted' like a payment made from the Add Payment screen

        dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(BATCHREVENUEAPPLICATIONMEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(BATCHREVENUEAPPLICATIONMEMBERSHIP.MEMBERSHIPLEVELID) as [DESCRIPTION],
        0 as WASGENERATED,
        BATCHREVENUEAPPLICATION.OVERPAYMENTAPPLICATIONTYPECODE,
        (
            select top 1    
                coalesce(
                    (select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID=S.SPONSORSHIPOPPORTUNITYID),
                    (select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = S.SPONSORSHIPOPPORTUNITYID)
                ) as SPONSORSHIPOPPORTUNITY
            from dbo.SPONSORSHIP S
                inner join FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = S.REVENUESPLITID
            where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = BATCHREVENUEAPPLICATION.REVENUEID
                and S.ISMOSTRECENTFORCOMMITMENT = 1
        ) as SPONSORSHIPOPPORTUNITY,
        BATCHREVENUEAPPLICATION.REVENUESPLITID,
        dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() as APPLICATIONCURRENCYID,
        PDAS.PDACCOUNTSYSTEMID
    from dbo.BATCHREVENUE
        inner join dbo.BATCHREVENUEAPPLICATION ON BATCHREVENUE.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEID
        inner join dbo.BATCHREVENUEAPPLICATIONMEMBERSHIP on BATCHREVENUEAPPLICATION.BATCHREVENUEAPPLICATIONMEMBERSHIPID = BATCHREVENUEAPPLICATIONMEMBERSHIP.ID
        cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(BATCHREVENUE.CONSTITUENTID) CONSTITUENT_NF
        left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on BATCHREVENUEAPPLICATION.REVENUEID = PDAS.ID
    where BATCHREVENUE.ID = @BATCHREVENUEID 
        --Membership

        and BATCHREVENUEAPPLICATION.APPLICATIONTYPECODE = 5;

    delete from @REVENUEAPPLICATIONS where APPLIED = 0 and dbo.UFN_REVENUE_ISPENDING(APPLICATIONID) = 1;

    insert into @APPLICATIONS(ID, APPLICATIONID, CONSTITUENTID, CONSTITUENTNAME, APPLIED, BALANCE, AMOUNTDUE, DATEDUE, TYPECODE, RECEIPTAMOUNT, DONOTRECEIPT, DESCRIPTION, WASGENERATED, OVERPAYMENTAPPLICATIONTYPECODE, DESIGNATIONLIST, SPONSORSHIPOPPORTUNITY, REVENUESPLITID, BATCHREVENUEREGISTRANTID, APPLICATIONCURRENCYID,PDACCOUNTSYSTEMID,SPONSORSHIPRGADDITIONALGIFT, CATEGORYCODEID, APPLICATIONCOMMITMENTID)
    select 
        ID, 
        coalesce(APPLICATIONID, @EMPTYGUID), 
        CONSTITUENTID, 
        CONSTITUENTNAME, 
        APPLIED, 
        BALANCE, 
        AMOUNTDUE, 
        DATEDUE, 
        TYPECODE, 
        RECEIPTAMOUNT, 
        DONOTRECEIPT, 
        DESCRIPTION, 
        WASGENERATED, 
        case 
            when OVERPAYMENTAPPLICATIONTYPECODE = 255 
                then null
            else OVERPAYMENTAPPLICATIONTYPECODE
        end as [OVERPAYMENTAPPLICATIONTYPECODE],
        DESIGNATIONLIST, 
        SPONSORSHIPOPPORTUNITY,
        REVENUESPLITID,
        null as [BATCHREVENUEREGISTRANTID],
        APPLICATIONCURRENCYID,
        PDACCOUNTSYSTEMID,
        SPONSORSHIPRGADDITIONALGIFT,
        CATEGORYCODEID,
    APPLICATIONID as APPLICATIONCOMMITMENTID
    from @REVENUEAPPLICATIONS

    union all

    select 
        ID, 
        APPLICATIONID, 
        CONSTITUENTID, 
        CONSTITUENTNAME, 
        APPLIED, 
        BALANCE, 
        AMOUNTDUE, 
        DATEDUE, 
        TYPECODE, 
        RECEIPTAMOUNT, 
        DONOTRECEIPT, 
        DESCRIPTION, 
        0 as [WASGENERATED], 
        null as [OVERPAYMENTAPPLICATIONTYPECODE], 
        '' as DESIGNATIONLIST, 
        '' as SPONSORSHIPOPPORTUNITY,
        REVENUESPLITID,
        BATCHREVENUEREGISTRANTID,
        APPLICATIONCURRENCYID,
        PDACCOUNTSYSTEMID,
        0 as [SPONSORSHIPRGADDITIONALGIFT],
        null as CATEGORYCODEID,
    APPLICATIONID as APPLICATIONCOMMITMENTID
    from @EVENTAPPLICATIONS;

    return;
end