UFN_REVENUE_GETAPPLICATIONS_2

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@TRANSACTIONID uniqueidentifier IN
@USEDESIGNATIONUSERID bit IN

Definition

Copy


      CREATE function dbo.UFN_REVENUE_GETAPPLICATIONS_2
      (
        @TRANSACTIONID uniqueidentifier,
        @USEDESIGNATIONUSERID bit
      )
      returns @RESULT table
      (
        ID uniqueidentifier,
        APPLICATIONID uniqueidentifier,
        APPLICATIONCODE tinyint,
        APPLIED money,
        BALANCE money,
        AMOUNTDUE money,
        DATEDUE datetime,
        TYPECODE tinyint,
        APPLICATIONTRANSACTIONTYPECODE tinyint,
        DESCRIPTION nvarchar(255),
        GIFTFIELDS xml,
        OTHERFIELDS xml,
        MEMBERSHIPFIELDS xml,
        DECLINESGIFTAID bit default 0,
        GIFTAIDCOMMITTED bit default 0,
        ISGIFTAIDSPONSORSHIP bit default 0,
        TRANSACTIONCURRENCYID uniqueidentifier,
        APPLICATIONCURRENCYID uniqueidentifier,
        EXCHANGERATE decimal(20,8),
        RECURRINGGIFTFIELDS xml,
        CATEGORYCODEID uniqueidentifier default null
      )
      as
      begin

    declare @TRANSACTIONCURRENCYID uniqueidentifier;
    declare @APPEALID uniqueidentifier;
    declare @CONSTITUENTID uniqueidentifier;
    select @TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
      ,@APPEALID = REVENUE_EXT.APPEALID
      ,@CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID
    from dbo.FINANCIALTRANSACTION
    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
    where FINANCIALTRANSACTION.ID = @TRANSACTIONID;

        --DONATIONS

        insert into @RESULT 
        (
        ID, 
        APPLICATIONCODE,
        APPLIED,
        TYPECODE,
        DESCRIPTION,
        GIFTFIELDS,
        DECLINESGIFTAID,
        GIFTAIDCOMMITTED,
        ISGIFTAIDSPONSORSHIP,
        TRANSACTIONCURRENCYID,
        APPLICATIONCURRENCYID,
        EXCHANGERATE
        )
        select
          coalesce(REVENUESPLIT.ID, '00000000-0000-0000-0000-000000000000') as ID,
          REVENUESPLIT_EXT.APPLICATIONCODE,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          --11/04/2014 Jason.Perry WI439722 Determine which DESIGNATION value to display: "DESIGNATION.NAME" (through BUILDNAME function), or "DESIGNATION.USERID"

          case 
          when @USEDESIGNATIONUSERID = 1 then
              DESIGNATION.USERID
          else
              dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT_EXT.DESIGNATIONID)
          end as [DESCRIPTION],
          (select 
              REVENUEOPPORTUNITY.OPPORTUNITYID,
              @APPEALID,
              REVENUESPLIT_EXT.DESIGNATIONID,
              GLREVENUECATEGORYMAPPINGID CATEGORYCODEID,
              (select 
                  REVENUESPLITCAMPAIGN.ID,
                  REVENUESPLITCAMPAIGN.CAMPAIGNID,
                  REVENUESPLITCAMPAIGN.CAMPAIGNSUBPRIORITYID
                from REVENUESPLITCAMPAIGN
                where REVENUESPLITCAMPAIGN.REVENUESPLITID =RSSUB.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) CAMPAIGNS,
              (select 
                  REVENUESOLICITOR.ID,
                  REVENUESOLICITOR.CONSTITUENTID,
                  REVENUESOLICITOR.AMOUNT,
                  REVENUESOLICITOR.SEQUENCE
                from REVENUESOLICITOR
                where REVENUESOLICITOR.REVENUESPLITID =RSSUB.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) SOLICITORS,
              (select 
                  RC.ID,
                  RC.CONSTITUENTID,
                  RC.REVENUERECOGNITIONTYPECODEID,
                  RC.EFFECTIVEDATE,
                  RC.AMOUNT,
                  RC.DONORCHALLENGERECOGNITIONTYPECODE,
                  RC.DONOR,
                  RC.DESIGNATION,
                  RC.DESIGNATIONID,
                  RC.RECOGNITIONCREDITFKID
                from dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS(RSSUB.ID) RC
                for xml raw('ITEM'),type,elements,BINARY BASE64) RECOGNITIONS
            from dbo.FINANCIALTRANSACTIONLINEITEM RSSUB
            left outer join dbo.REVENUEOPPORTUNITY on REVENUEOPPORTUNITY.ID = RSSUB.ID
            left outer join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = RSSUB.ID
            where RSSUB.ID = REVENUESPLIT.ID
            for xml raw('ITEM'),type,elements,BINARY BASE64) GIFTFIELDS,
            REVENUESPLITGIFTAID.DECLINESGIFTAID,
            case when REVENUESPLITGIFTAID.TAXCLAIMNUMBER <> '' then 1 else 0 end,
                REVENUESPLITGIFTAID.ISSPONSORSHIP,
          @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
          @TRANSACTIONCURRENCYID [APPLICATIONCURRENCYID],
          1 as EXCHANGERATE
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        left join dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT_EXT.DESIGNATIONID
        left join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = REVENUESPLIT.ID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE  = 0
      and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1

        --PLEDGE PAYMENTS

        insert into @RESULT 
        (
          ID, 
          APPLICATIONID, 
          APPLICATIONCODE,
          APPLIED,
          BALANCE,
          AMOUNTDUE,
          DATEDUE,
          TYPECODE,
          APPLICATIONTRANSACTIONTYPECODE,
          DESCRIPTION,
          DECLINESGIFTAID,
          GIFTAIDCOMMITTED,
          TRANSACTIONCURRENCYID,
          APPLICATIONCURRENCYID,
          EXCHANGERATE
        )
        select
      APPLICATIONS.ID
      ,APPLICATIONS.APPLICATIONID
      ,APPLICATIONS.APPLICATIONCODE
      ,APPLICATIONS.APPLIED
      ,APPLICATIONS.BALANCE
      ,case when APPLICATIONS.APPLICATIONCODE in (6, 7, 13) then
        APPLICATIONS.BALANCE
       else
        0.00
       end [AMOUNTDUE]
      ,APPLICATIONS.DATEDUE
      ,APPLICATIONS.TYPECODE
      ,APPLICATIONS.TRANSACTIONTYPECODE
      ,APPLICATIONS.DESCRIPTION
      ,APPLICATIONS.DECLINESGIFTAID
      ,APPLICATIONS.GIFTAIDCOMMITTED
      ,APPLICATIONS.TRANSACTIONCURRENCYID
      ,APPLICATIONS.APPLICATIONCURRENCYID
      ,APPLICATIONS.EXCHANGERATE
        from (
      select
        coalesce(REVENUESPLIT.ID, '00000000-0000-0000-0000-000000000000') as ID,
        INSTALLMENTSPLITPAYMENT.PLEDGEID as APPLICATIONID,
        REVENUESPLIT_EXT.APPLICATIONCODE,
        REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
        dbo.UFN_PLEDGE_GETBALANCE(INSTALLMENTSPLITPAYMENT.PLEDGEID) as [BALANCE],
       -- case when REVENUESPLIT_EXT.APPLICATIONCODE in (6, 7, 13) then

        --dbo.UFN_PLEDGE_GETBALANCE(INSTALLMENTSPLITPAYMENT.PLEDGEID)

       -- else

        --0.00

       -- end as AMOUNTDUE,

        min(INSTALLMENT.DATE) as [DATEDUE],
        REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
        PLEDGEREVENUE.TYPECODE as [TRANSACTIONTYPECODE],
        case
        when REVENUESPLIT_EXT.APPLICATIONCODE = 7 then NF.NAME + 
          case when [MATCHEDGIFTCONSTITUENT].LOOKUPID is null 
            then '' 
          else
            ' - ' + (
            select
              CASE [MATCHEDGIFTCONSTITUENT].ISORGANIZATION WHEN 1 THEN
                CASE [MATCHEDGIFTCONSTITUENT].KEYNAMEPREFIX WHEN '' THEN [MATCHEDGIFTCONSTITUENT].KEYNAME ELSE [MATCHEDGIFTCONSTITUENT].KEYNAMEPREFIX + ' ' +  [MATCHEDGIFTCONSTITUENT].KEYNAME END
              ELSE
                CASE [MATCHEDGIFTCONSTITUENT].ISGROUP WHEN 1 THEN
                  CASE [MATCHEDGIFTCONSTITUENT].DISPLAYNAME WHEN '' THEN [MATCHEDGIFTCONSTITUENT].KEYNAME ELSE [MATCHEDGIFTCONSTITUENT].DISPLAYNAME END
                ELSE
                  CASE [MATCHEDGIFTCONSTITUENT].FIRSTNAME WHEN '' THEN '' ELSE [MATCHEDGIFTCONSTITUENT].FIRSTNAME + ' ' END
                  +
                  CASE [MATCHEDGIFTCONSTITUENT].MIDDLENAME WHEN '' THEN '' ELSE LEFT([MATCHEDGIFTCONSTITUENT].MIDDLENAME,1) + '. ' END
                  + 
                  [MATCHEDGIFTCONSTITUENT].KEYNAME
                END
              END) +' ('+ [MATCHEDGIFTCONSTITUENT].LOOKUPID + ')' end
        when REVENUESPLIT_EXT.APPLICATIONCODE = 19 then
          case when REVENUESPLIT_EXT.TYPECODE = 0 then 
            --11/04/2014 Jason.Perry WI439722 Determine which DESIGNATION value to display: "DESIGNATION.NAME" (through BUILDNAME function), or "DESIGNATION.USERID"

            case 
            when @USEDESIGNATIONUSERID = 1 then
                DESIGNATION.USERID
            else
                dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT_EXT.DESIGNATIONID)
            end
          when REVENUESPLIT_EXT.TYPECODE = 2 then (select top 1 MEMBERSHIPPROGRAM.NAME from dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT
            inner join dbo.INSTALLMENTSPLITPAYMENT on PAYMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
            inner join dbo.INSTALLMENTSPLIT PLEDGEINSTALLMENTSPLIT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = PLEDGEINSTALLMENTSPLIT.ID
            inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = PLEDGEINSTALLMENTSPLIT.REVENUESPLITID
            inner join dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID 
            inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
            inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
            where PAYMENTSPLIT.ID = REVENUESPLIT.ID)
          when REVENUESPLIT_EXT.TYPECODE = 18 then (select top 1 ADDON.NAME from dbo.ADDON 
              inner join dbo.MEMBERSHIPADDON on MEMBERSHIPADDON.ID = ADDON.ID
              inner join dbo.FINANCIALTRANSACTIONLINEITEM on MEMBERSHIPADDON.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = PLEDGEREVENUE.ID
              inner join dbo.INSTALLMENTSPLIT on FINANCIALTRANSACTIONLINEITEM.ID = INSTALLMENTSPLIT.REVENUESPLITID
              inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
              inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT on INSTALLMENTSPLITPAYMENT.PAYMENTID = PAYMENTSPLIT.ID
              where PAYMENTSPLIT.ID = REVENUESPLIT.ID)
          else 
            --11/04/2014 Jason.Perry WI439722 Determine which DESIGNATION value to display: "DESIGNATION.NAME" (through BUILDNAME function), or "DESIGNATION.USERID"

            case 
            when @USEDESIGNATIONUSERID = 1 then
                DESIGNATION.USERID
            else
                dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT_EXT.DESIGNATIONID)
            end
          end
        else 
          --11/04/2014 Jason.Perry WI439722 Determine which DESIGNATION value to display: "DESIGNATION.NAME" (through BUILDNAME function), or "DESIGNATION.USERID"

          case 
          when @USEDESIGNATIONUSERID = 1 then
              DESIGNATION.USERID
          else
              dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT_EXT.DESIGNATIONID)
          end
        end as [DESCRIPTION],
        REVENUESPLITGIFTAID.DECLINESGIFTAID,
        case when REVENUESPLITGIFTAID.TAXCLAIMNUMBER <> '' then 1 else 0 end [GIFTAIDCOMMITTED],
        @TRANSACTIONCURRENCYID TRANSACTIONCURRENCYID,
        INSTALLMENTSPLITPAYMENT.APPLICATIONCURRENCYID,
        dbo.UFN_CURRENCYEXCHANGERATE_GETRATE(INSTALLMENTSPLITPAYMENT.APPLICATIONEXCHANGERATEID) [EXCHANGERATE]
      from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
      inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
      left join dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT_EXT.DESIGNATIONID
      inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.PAYMENTID = REVENUESPLIT.ID
      inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
      left join dbo.INSTALLMENT on INSTALLMENT.ID = INSTALLMENTSPLIT.INSTALLMENTID
      left join dbo.FINANCIALTRANSACTION as [PLEDGEREVENUE] on [PLEDGEREVENUE].ID = INSTALLMENTSPLITPAYMENT.PLEDGEID and PLEDGEREVENUE.DELETEDON is null and PLEDGEREVENUE.TYPECODE in (1, 3, 15)
      outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PLEDGEREVENUE.CONSTITUENTID) NF
      left join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = REVENUESPLIT.ID
      left join dbo.REVENUEMATCHINGGIFT on REVENUEMATCHINGGIFT.ID = [PLEDGEREVENUE].ID
      left join dbo.FINANCIALTRANSACTION as [MATCHEDGIFT] on REVENUEMATCHINGGIFT.MGSOURCEREVENUEID = [MATCHEDGIFT].ID and [MATCHEDGIFT].DELETEDON is null
      left join dbo.CONSTITUENT as [MATCHEDGIFTCONSTITUENT] on [MATCHEDGIFTCONSTITUENT].ID = [MATCHEDGIFT].CONSTITUENTID
      where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE in (2, 6, 7, 8, 13, 17, 19)
        and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
      group by 
        REVENUESPLIT.ID,
        INSTALLMENTSPLITPAYMENT.PLEDGEID,
        REVENUESPLIT_EXT.APPLICATIONCODE,
        REVENUESPLIT_EXT.TYPECODE,
        PLEDGEREVENUE.TYPECODE,
        PLEDGEREVENUE.CONSTITUENTID,
        REVENUESPLITGIFTAID.DECLINESGIFTAID,
        REVENUESPLITGIFTAID.TAXCLAIMNUMBER,
        INSTALLMENTSPLITPAYMENT.APPLICATIONCURRENCYID,
        REVENUESPLIT.TRANSACTIONAMOUNT,
        INSTALLMENTSPLITPAYMENT.APPLICATIONEXCHANGERATEID,
        NF.NAME,
        DESIGNATION.USERID,
        [MATCHEDGIFTCONSTITUENT].LOOKUPID,
        [MATCHEDGIFTCONSTITUENT].ISORGANIZATION,
        [MATCHEDGIFTCONSTITUENT].KEYNAMEPREFIX,
        [MATCHEDGIFTCONSTITUENT].KEYNAME,
        [MATCHEDGIFTCONSTITUENT].ISGROUP,
        [MATCHEDGIFTCONSTITUENT].DISPLAYNAME,
        [MATCHEDGIFTCONSTITUENT].FIRSTNAME,
        [MATCHEDGIFTCONSTITUENT].MIDDLENAME,
        REVENUESPLIT_EXT.DESIGNATIONID,
        PLEDGEREVENUE.ID) APPLICATIONS;

        --RECURRING GIFT PAYMENTS

        insert into @RESULT 
        (
          ID, 
          APPLICATIONID, 
          APPLICATIONCODE,
          APPLIED,
          BALANCE,
          AMOUNTDUE,
          DATEDUE,
          TYPECODE,
          APPLICATIONTRANSACTIONTYPECODE,
          DESCRIPTION,
          DECLINESGIFTAID,
          GIFTAIDCOMMITTED,
          TRANSACTIONCURRENCYID,
          APPLICATIONCURRENCYID,
          EXCHANGERATE,
          RECURRINGGIFTFIELDS
        )
        select 
          REVENUESPLIT.ID as ID,
          TEMPLATE.ID as APPLICATIONID,
          REVENUESPLIT_EXT.APPLICATIONCODE,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          TEMPLATESPLIT_LI.TRANSACTIONAMOUNT as [BALANCE],
          0.00 as AMOUNTDUE,
          RECURRINGGIFTACTIVITY.SCHEDULEDATE as [DATEDUE],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          TEMPLATE.TYPECODE as [TRANSACTIONTYPECODE],
          case 
            when @USEDESIGNATIONUSERID = 1 then
                DESIGNATION.USERID
            else
                dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT_EXT.DESIGNATIONID)
            end as [DESCRIPTION],
          REVENUESPLITGIFTAID.DECLINESGIFTAID,
          case when REVENUESPLITGIFTAID.TAXCLAIMNUMBER <> '' then 1 else 0 end,
          @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
          RECURRINGGIFTACTIVITY.APPLICATIONCURRENCYID,
          dbo.UFN_CURRENCYEXCHANGERATE_GETRATE(RECURRINGGIFTACTIVITY.APPLICATIONEXCHANGERATEID),
          (select
             REVENUESPLIT_EXT.DESIGNATIONID,
             ACTIONABOVEAMOUNT,
             OVERPAYMENTCODE,
             ACTIONBELOWAMOUNTS,
             INSTALLMENTUNDERPAYMENTCODE as UNDERPAYMENTCODE
           from dbo.RECURRINGGIFTINSTALLMENT I
           cross apply dbo.UFN_RECURRINGGIFT_GETPAYMENTUIFIELDS(TEMPLATE.ID,
                     dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCEIGNOREPAYMENT(I.ID, @TRANSACTIONID),
                                                                dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNTIGNOREPAYMENT_2(TEMPLATE.ID, @TRANSACTIONID, REVENUESPLIT.DATEADDED, 1),
                                                                I.DATE,
                                                                REVENUESPLIT.DATEADDED,
                                                                @TRANSACTIONID) U
           where I.ID = dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTIGNOREPAYMENT_2(TEMPLATE.ID, @TRANSACTIONID, null, REVENUESPLIT.DATEADDED)
           for xml raw('ITEM'),type,elements,BINARY BASE64) RECURRINGGIFTFIELDS
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        inner join dbo.RECURRINGGIFTACTIVITY on PAYMENTREVENUEID = REVENUESPLIT.ID
        inner join dbo.FINANCIALTRANSACTION TEMPLATE on TEMPLATE.ID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
        left outer join dbo.REVENUESPLIT_EXT TEMPLATESPLIT on TEMPLATESPLIT.ID = TEMPLATE.ID and TEMPLATESPLIT.DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID
        left outer join dbo.FINANCIALTRANSACTIONLINEITEM TEMPLATESPLIT_LI on TEMPLATESPLIT_LI.ID = TEMPLATESPLIT.ID and TEMPLATESPLIT_LI.DELETEDON is null
        left join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = REVENUESPLIT.ID
        left join dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT_EXT.DESIGNATIONID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE  = 3
        and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
        and TEMPLATE.TYPECODE = 2 and TEMPLATE.DELETEDON is null

        --EVENT REGISTRATION FEE PAYMENTS

        insert into @RESULT 
        (
        ID, 
        APPLICATIONID, 
        APPLICATIONCODE,
        APPLIED,
        BALANCE,
        AMOUNTDUE,
        DATEDUE,
        TYPECODE,
        APPLICATIONTRANSACTIONTYPECODE,
        DESCRIPTION,
        TRANSACTIONCURRENCYID,
        APPLICATIONCURRENCYID,
        EXCHANGERATE,
        CATEGORYCODEID
        )
        select
      APPLICATIONS.ID
      ,APPLICATIONS.APPLICATIONID
      ,APPLICATIONS.APPLICATIONCODE
      ,APPLICATIONS.APPLIED
      ,APPLICATIONS.BALANCE
      ,APPLICATIONS.BALANCE [AMOUNTDUE]
      ,APPLICATIONS.DATEDUE
      ,APPLICATIONS.TYPECODE
      ,APPLICATIONS.TRANSACTIONTYPECODE [APPLICATIONTRANSACTIONTYPECODE]
      ,APPLICATIONS.DESCRIPTION
      ,APPLICATIONS.TRANSACTIONCURRENCYID
      ,APPLICATIONS.APPLICATIONCURRENCYID
      ,APPLICATIONS.EXCHANGERATE
      ,APPLICATIONS.GLREVENUECATEGORYMAPPINGID [CATEGORYCODEID]
        from (
      select
        REVENUESPLIT.ID as ID,
        REGISTRANT.ID as APPLICATIONID,
        REVENUESPLIT_EXT.APPLICATIONCODE,
        REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
        dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as [BALANCE],
        EVENT.STARTDATE as [DATEDUE],
        REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
        0 as [TRANSACTIONTYPECODE],
        EVENT.NAME as [DESCRIPTION],
        @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
        [PAYMENT].APPLICATIONCURRENCYID,
        dbo.UFN_CURRENCYEXCHANGERATE_GETRATE(PAYMENT.APPLICATIONEXCHANGERATEID) [EXCHANGERATE],
        REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID [GLREVENUECATEGORYMAPPINGID]
      from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
      inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
      inner join dbo.EVENTREGISTRANTPAYMENT as [PAYMENT] on REVENUESPLIT.ID = [PAYMENT].PAYMENTID
      inner join dbo.REGISTRANT on [PAYMENT].REGISTRANTID = REGISTRANT.ID
      inner join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
      left outer join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = REVENUESPLIT.ID
      where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE = 1
        and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1) APPLICATIONS

        --MEMBERSHIPS

        insert into @RESULT
        (
        ID,
        APPLICATIONID,
        APPLICATIONCODE,
        APPLIED,
        TYPECODE,
        APPLICATIONTRANSACTIONTYPECODE,
        DESCRIPTION,
        MEMBERSHIPFIELDS,
        TRANSACTIONCURRENCYID,
        APPLICATIONCURRENCYID,
        EXCHANGERATE
        )
        select
          REVENUESPLIT.ID as ID,
          MEMBERSHIP.ID as APPLICATIONID,
          REVENUESPLIT_EXT.APPLICATIONCODE,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          0 as [TRANSACTIONTYPECODE],
          dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID) as [DESCRIPTION],
          (select 
            ID, 
            MEMBERSHIPPROGRAMID, 
            MEMBERSHIPLEVELID, 
            MEMBERSHIPLEVELTERMID, 
            MEMBERSHIPLEVELTYPECODEID, 
            NUMBEROFCHILDREN, 
            COMMENTS, 
            ISGIFT, 
            SENDRENEWALCODE, 
            EXPIRATIONDATE, 
            GIVENBYID, 
            (select
              MEMBER.ID,
              MEMBER.CONSTITUENTID,
              MEMBER.ISPRIMARY,
              (select 
                MEMBERSHIPCARD.ID,
                MEMBERSHIPCARD.NAMEONCARD,
                MEMBERSHIPCARD.EXPIRATIONDATE
                from dbo.MEMBERSHIPCARD
                where MEMBERSHIPCARD.MEMBERID = MEMBER.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) MEMBERSHIPCARDS
            from dbo.MEMBER
            where MEMBER.ID = MEMBERSHIPSUB.ID 
            for xml raw('ITEM'),type,elements,BINARY BASE64) MEMBERS
          from dbo.MEMBERSHIP MEMBERSHIPSUB
          where MEMBERSHIPSUB.ID = MEMBERSHIP.ID
          for xml raw('ITEM'),type,elements,BINARY BASE64) MEMBERSHIPFIELDS,
          @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
          @TRANSACTIONCURRENCYID [APPLICATIONCURRENCYID],
          1 as EXCHANGERATE
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        inner join dbo.MEMBERSHIPTRANSACTION on REVENUESPLIT.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID 
        inner join dbo.MEMBERSHIP on MEMBERSHIP.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE = 5
      and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1

        --MEMBERSHIP ADD-ON

        insert into @RESULT
        (
        ID,
        APPLICATIONID,
        APPLICATIONCODE,
        APPLIED,
        TYPECODE,
        APPLICATIONTRANSACTIONTYPECODE,
        DESCRIPTION,
        TRANSACTIONCURRENCYID,
        APPLICATIONCURRENCYID,
        EXCHANGERATE
        )
        select
          REVENUESPLIT.ID as ID,
          ADDON.ID as APPLICATIONID,
          REVENUESPLIT_EXT.APPLICATIONCODE,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          0 as [TRANSACTIONTYPECODE],
          ADDON.NAME as [DESCRIPTION],
          @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
          @TRANSACTIONCURRENCYID [APPLICATIONCURRENCYID],
          1 as EXCHANGERATE
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        inner join dbo.MEMBERSHIPADDON on MEMBERSHIPADDON.REVENUESPLITID = REVENUESPLIT.ID
        inner join dbo.ADDON on ADDON.ID = MEMBERSHIPADDON.ADDONID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE = 18
      and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1

        --OTHER

        insert into @RESULT 
        (
        ID, 
        APPLICATIONCODE,
        APPLIED,
        TYPECODE,
        DESCRIPTION,
        OTHERFIELDS,
        TRANSACTIONCURRENCYID,
        APPLICATIONCURRENCYID,
        EXCHANGERATE
        )
        select
          REVENUESPLIT.ID as ID,
          REVENUESPLIT_EXT.APPLICATIONCODE,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          --11/04/2014 Jason.Perry WI439722 Determine which DESIGNATION value to display: "DESIGNATION.NAME" (through BUILDNAME function), or "DESIGNATION.USERID"

          case 
          when @USEDESIGNATIONUSERID = 1 then
              DESIGNATION.USERID
          else
              REVENUEOTHERTYPECODE.DESCRIPTION
          end as [DESCRIPTION],
          (select 
              REVENUESPLITOTHER.OTHERTYPECODEID,
              @APPEALID,
              DESIGNATIONID,
              GLREVENUECATEGORYMAPPINGID CATEGORYCODEID,
              (select 
                  REVENUESPLITCAMPAIGN.ID,
                  REVENUESPLITCAMPAIGN.CAMPAIGNID,
                  REVENUESPLITCAMPAIGN.CAMPAIGNSUBPRIORITYID
                from REVENUESPLITCAMPAIGN
                where REVENUESPLITCAMPAIGN.REVENUESPLITID =RSSUB.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) CAMPAIGNS,
              (select 
                  REVENUESOLICITOR.ID,
                  REVENUESOLICITOR.CONSTITUENTID,
                  REVENUESOLICITOR.AMOUNT,
                  REVENUESOLICITOR.SEQUENCE
                from REVENUESOLICITOR
                where REVENUESOLICITOR.REVENUESPLITID =RSSUB.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) SOLICITORS,
              (select 
                  RC.ID,
                  RC.CONSTITUENTID,
                  RC.REVENUERECOGNITIONTYPECODEID,
                  RC.EFFECTIVEDATE,
                  RC.AMOUNT,
                  RC.DONORCHALLENGERECOGNITIONTYPECODE,
                  RC.DONOR,
                  RC.DESIGNATION,
                  RC.DESIGNATIONID,
                  RC.RECOGNITIONCREDITFKID
                from dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS(RSSUB.ID) RC
                for xml raw('ITEM'),type,elements,BINARY BASE64) RECOGNITIONS
            from dbo.FINANCIALTRANSACTIONLINEITEM RSSUB 
            left outer join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = RSSUB.ID
            where RSSUB.ID = REVENUESPLIT.ID
            for xml raw('ITEM'),type,elements,BINARY BASE64) OTHERFIELDS,
            @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
            @TRANSACTIONCURRENCYID [APPLICATIONCURRENCYID],
            1 as EXCHANGERATE
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        left join dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT_EXT.DESIGNATIONID
        inner join dbo.REVENUESPLITOTHER on REVENUESPLIT.ID = REVENUESPLITOTHER.ID
        inner join dbo.REVENUEOTHERTYPECODE on REVENUESPLITOTHER.OTHERTYPECODEID = REVENUEOTHERTYPECODE.ID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE = 4
            and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1

        --UNAPPLIED MATCHING GIFTS

        insert into @RESULT 
        (
        ID, 
        APPLICATIONCODE,
        APPLIED,
        TYPECODE,
        DESCRIPTION,
        GIFTFIELDS,
        TRANSACTIONCURRENCYID,
        APPLICATIONCURRENCYID,
        EXCHANGERATE
        )
        select
          REVENUESPLIT.ID as ID,
          100,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          --11/04/2014 Jason.Perry WI439722 Determine which DESIGNATION value to display: "DESIGNATION.NAME" (through BUILDNAME function), or "DESIGNATION.USERID"

          case 
          when @USEDESIGNATIONUSERID = 1 then
              DESIGNATION.USERID
          else
              dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT_EXT.DESIGNATIONID)
          end as [DESCRIPTION],
          (select 
              @APPEALID,
              REVENUESPLIT_EXT.DESIGNATIONID,
              GLREVENUECATEGORYMAPPINGID CATEGORYCODEID,
              (select 
                  REVENUESPLITCAMPAIGN.ID,
                  REVENUESPLITCAMPAIGN.CAMPAIGNID,
                  REVENUESPLITCAMPAIGN.CAMPAIGNSUBPRIORITYID
                from REVENUESPLITCAMPAIGN
                where REVENUESPLITCAMPAIGN.REVENUESPLITID =RSSUB.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) CAMPAIGNS,
              (select 
                  REVENUESOLICITOR.ID,
                  REVENUESOLICITOR.CONSTITUENTID,
                  REVENUESOLICITOR.AMOUNT,
                  REVENUESOLICITOR.SEQUENCE
                from REVENUESOLICITOR
                where REVENUESOLICITOR.REVENUESPLITID =RSSUB.ID
                for xml raw('ITEM'),type,elements,BINARY BASE64) SOLICITORS,
              (select 
                  RC.ID,
                  RC.CONSTITUENTID,
                  RC.REVENUERECOGNITIONTYPECODEID,
                  RC.EFFECTIVEDATE,
                  RC.AMOUNT,
                  RC.DONORCHALLENGERECOGNITIONTYPECODE,
                  RC.DONOR,
                  RC.DESIGNATION,
                  RC.DESIGNATIONID,
                  RC.RECOGNITIONCREDITFKID
                from dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS(RSSUB.ID) RC
                for xml raw('ITEM'),type,elements,BINARY BASE64) RECOGNITIONS
            from dbo.FINANCIALTRANSACTIONLINEITEM RSSUB 
            left outer join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = RSSUB.ID
            where RSSUB.ID = REVENUESPLIT.ID
            for xml raw('ITEM'),type,elements,BINARY BASE64) GIFTFIELDS,
            @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
            @TRANSACTIONCURRENCYID [APPLICATIONCURRENCYID],
            1 as EXCHANGERATE
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        left join dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT_EXT.DESIGNATIONID
        left outer join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.PAYMENTID = REVENUESPLIT.ID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID and REVENUESPLIT_EXT.APPLICATIONCODE = 7
          and INSTALLMENTSPLITPAYMENT.ID is null
          and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1

        --Auction purchase payments

        insert into @RESULT
        (
          ID, 
          APPLICATIONID, 
          APPLICATIONCODE,
          APPLIED,
          BALANCE,
          AMOUNTDUE,
          DATEDUE,
          TYPECODE,
          APPLICATIONTRANSACTIONTYPECODE,
          DESCRIPTION,
          TRANSACTIONCURRENCYID,
          APPLICATIONCURRENCYID,
          EXCHANGERATE
        )
        select distinct
          case
            when AUCTIONITEM.TYPECODE = 0 then REVENUESPLIT.ID 
            else AUCTIONITEM.ID
          end as ID,
          AUCTIONITEM.ID as APPLICATIONID,
          12 as APPLICATIONCODE,
          case
            when AUCTIONITEM.TYPECODE = 0 then REVENUESPLIT.TRANSACTIONAMOUNT
            else (select sum([PACKAGEITEMSPLIT].TRANSACTIONAMOUNT) from dbo.AUCTIONITEM [PACKAGEITEMS] left join dbo.AUCTIONITEMPURCHASE [ITEMPURCHASE] on [PACKAGEITEMS].ID = [ITEMPURCHASE].AUCTIONITEMID left join dbo.REVENUESPLIT [PACKAGEITEMSPLIT] on [ITEMPURCHASE].PURCHASEID = [PACKAGEITEMSPLIT].ID where [PACKAGEITEMS].PACKAGEID = AUCTIONITEM.ID and [PACKAGEITEMSPLIT].REVENUEID = @TRANSACTIONID)
          end as APPLIED,
     0 as [BALANCE],
          0 as AMOUNTDUE,
          null as [DATEDUE],
          12 as [TYPECODE],
          0 as [TRANSACTIONTYPECODE],
          AUCTIONITEM.NAME as [DESCRIPTION],

          /* WI123584 for packages, this returns a result set where REVENUESPLIT is null (because of the left join). 
           * So attempting to format currency based on REVENUESPLIT.TRANSACTIONCURRENCY results in the currency formatting as 
           * the org currency. 
           *
           * We can get away with using the AUCTIONITEM's transaction currency because we've locked it down so that the 
           * payment always has to have the same transaction currency as the purchased item or package. If we relax this 
           * requirement in the future, this will need to be revisited. 
           */
            AUCTIONITEM.TRANSACTIONCURRENCYID as [TRANSACTIONCURRENCYID],
            AUCTIONITEM.TRANSACTIONCURRENCYID as [APPLICATIONCURRENCYID],
            1 as [EXCHANGERATE]
        from dbo.AUCTIONITEMREVENUEPURCHASE
        inner join dbo.AUCTIONITEM on AUCTIONITEMREVENUEPURCHASE.AUCTIONITEMID = AUCTIONITEM.ID
        left join dbo.AUCTIONITEMPURCHASE on AUCTIONITEM.ID = AUCTIONITEMPURCHASE.AUCTIONITEMID
        left join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.ID = AUCTIONITEMPURCHASE.PURCHASEID and REVENUESPLIT.FINANCIALTRANSACTIONID = AUCTIONITEMREVENUEPURCHASE.REVENUEPURCHASEID and REVENUESPLIT.DELETEDON is null
        left join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        where 
        AUCTIONITEMREVENUEPURCHASE.REVENUEPURCHASEID = @TRANSACTIONID
        and 
        ((AUCTIONITEM.TYPECODE = 0 and REVENUESPLIT_EXT.APPLICATIONCODE = 12) or AUCTIONITEM.TYPECODE = 1)
        and
        ((AUCTIONITEM.TYPECODE = 0 and AUCTIONITEM.PACKAGEID is null) or (AUCTIONITEM.TYPECODE = 1))

        -- event sponsorship payment

        insert into @RESULT
        (
          ID, 
          APPLICATIONID, 
          APPLICATIONCODE,
          APPLIED,
          BALANCE,
          AMOUNTDUE,
          DATEDUE,
          TYPECODE,
          APPLICATIONTRANSACTIONTYPECODE,
          DESCRIPTION,
          TRANSACTIONCURRENCYID,
          APPLICATIONCURRENCYID,
          EXCHANGERATE
        )
        select
          REVENUESPLIT.ID as ID,
          EVENTSPONSOR.ID as APPLICATIONID,
          REVENUESPLIT_EXT.APPLICATIONCODE,
          REVENUESPLIT.TRANSACTIONAMOUNT as [APPLIED],
          dbo.UFN_EVENTSPONSOR_GETBALANCE(EVENTSPONSOR.ID) as [BALANCE],
          dbo.UFN_EVENTSPONSOR_GETBALANCE(EVENTSPONSOR.ID) as AMOUNTDUE,
          EVENT.STARTDATE as [DATEDUE],
          REVENUESPLIT_EXT.TYPECODE as [TYPECODE],
          0 as [TRANSACTIONTYPECODE],
          EVENT.NAME as [DESCRIPTION],
          @TRANSACTIONCURRENCYID [TRANSACTIONCURRENCYID],
          @TRANSACTIONCURRENCYID as APPLICATIONCURRENCYID,
          1 as EXCHANGERATE
        from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
        inner join dbo.EVENTSPONSOR on @CONSTITUENTID = isnull(EVENTSPONSOR.ORGANIZATIONCONSTITUENTID, EVENTSPONSOR.CONSTITUENTID)
        inner join dbo.[EVENT] on [EVENT].ID = EVENTSPONSOR.EVENTID
        where REVENUESPLIT.FINANCIALTRANSACTIONID = @TRANSACTIONID 
      and REVENUESPLIT_EXT.APPLICATIONCODE = 15
      and [EVENT].APPEALID = @APPEALID
      and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1

      return;
    end