USP_REPORT_TOTALREVENUE_PAYMENTMETHOD

Parameters

Parameter Parameter Type Mode Description
@INCLUDETAXES bit IN
@INCLUDESECURITYDEPOSITS bit IN
@INCLUDEUNRECEIVEDREVENUE bit IN
@FROMDATE datetime IN
@TODATE datetime IN
@CURRENTAPPUSERID uniqueidentifier IN
@APPUSERID uniqueidentifier IN
@APPUSERQUERYID uniqueidentifier IN
@SALESMETHODTYPECODE smallint IN
@SOURCEADVANCESALES bit IN
@SOURCEDAILYSALES bit IN
@SOURCEGROUPSALES bit IN
@SOURCEONLINESALES bit IN
@SOURCEBACKOFFICE bit IN
@SHOWPAYMENTMETHOD bit IN

Definition

Copy

create procedure [dbo].[USP_REPORT_TOTALREVENUE_PAYMENTMETHOD] (
    @INCLUDETAXES bit = null,    -- obsolete

    @INCLUDESECURITYDEPOSITS bit = null,
    @INCLUDEUNRECEIVEDREVENUE bit = null,
    @FROMDATE datetime = null,
    @TODATE datetime = null,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @APPUSERID uniqueidentifier = null,
    @APPUSERQUERYID uniqueidentifier = null,
    @SALESMETHODTYPECODE smallint = null,    --not used anymore

    @SOURCEADVANCESALES bit = null,
    @SOURCEDAILYSALES bit = null,
    @SOURCEGROUPSALES bit = null,
    @SOURCEONLINESALES bit = null,
    @SOURCEBACKOFFICE bit = null,
    @SHOWPAYMENTMETHOD bit = null)
as
    set nocount on;

    if isnull(@SHOWPAYMENTMETHOD, 0) = 0
        return;

    declare @USERISSYSADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);

    declare @USERGRANTEDTRANSACTIONPAGE bit = @USERISSYSADMIN,
            @USERGRANTEDORDERPAGE bit = @USERISSYSADMIN,
            @USERGRANTEDREFUNDPAGE bit = @USERISSYSADMIN,
            @USERGRANTEDCONSTITUENTPAGE bit = @USERISSYSADMIN,
            @USERGRANTEDREVENUEAPPLICATIONPAGE bit = @USERISSYSADMIN,
            @USERGRANTEDREGISTRANTPAGE bit = @USERISSYSADMIN,
            @USERGRANTEDMEMBERSHIPPAGE bit = @USERISSYSADMIN;

    if @USERISSYSADMIN <> 1
    begin
        select
            @USERGRANTEDTRANSACTIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D00E6C42-2434-4D85-8A04-2323CA6BB2E7'),
            @USERGRANTEDORDERPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '9C4D9D19-BB7E-4656-9B78-7EE1930C009A'),
            @USERGRANTEDREFUNDPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'B2130DFA-51F6-4205-87E6-7D132573CB4D'),
            @USERGRANTEDCONSTITUENTPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '0C836902-A398-47a0-91EB-8B66E434148E'),
            @USERGRANTEDREVENUEAPPLICATIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '32C309D8-E111-4DFE-B777-69206707512F'),
            @USERGRANTEDREGISTRANTPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D7A6E035-4F35-4784-BD57-B506CEAA8CE5'),
            @USERGRANTEDMEMBERSHIPPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D56E385D-AF02-464D-AD07-8C2FBE88246D');
    end;

    declare @NONETEXT nchar(13) = N'None received';
    declare @SUBTYPENOTSPECIFIEDTEXT nchar(21) = N'Subtype not specified';
    declare @EXPECTEDORDERREVENUETEXT nchar(28) = N'Expected sales order revenue';
    declare @EXPECTEDPLEDGEREVENUETEXT nchar(23) = N'Expected pledge revenue';

    set @FROMDATE = dbo.UFN_DATE_GETEARLIESTTIME(@FROMDATE);
    set @TODATE = dbo.UFN_DATE_GETLATESTTIME(@TODATE);

    declare @TMP_PAYMENTMETHOD table (
        PAYMENTID uniqueidentifier,
        PAYMENTDATE datetime,
        PAYMENTMETHOD nvarchar(max),
        PAYMENTMETHODCODE tinyint,
        CREDITTYPE nvarchar(max),
        AMOUNT money,
        CONSTITUENTNAME nvarchar(max),
        CONSTITUENTLINK nvarchar(max),
        REFERENCE nvarchar(max),
        REFERENCELINK nvarchar(max)
    );

    declare @TMP_TOTALREVENUE table (
        TransactionID uniqueidentifier,
        SalesOrderId uniqueidentifier,
        TransactionDate datetime,
        Amount money,
        TransactionTypeCode int,
        TransactionType nvarchar(max),
        ApplicationCode int,
        RevenueTypeCode int,
        ConstituentName nvarchar(max),
        ConstituentLink nvarchar(max),
        ProgramName nvarchar(max),
        EventName nvarchar(max),
        TaxName nvarchar(max),
        FeeName nvarchar(max),
        DepartmentName nvarchar(max),
        MembershipName nvarchar(max),
        DesignationName nvarchar(max),
        LocationName nvarchar(max),
        ResourceName nvarchar(max),
        StaffResourceName nvarchar(max),
        SalesMethodTypeCode int,
        CreditItemID uniqueidentifier, -- why is this returned

        TransactionLink nvarchar(max),
        SortConstituentName nvarchar(max),
        PaymentMethod nvarchar(max),
        GroupType nvarchar(max),
        ArrivalDate date,
        ReservationName nvarchar(max),
        ReservationLink nvarchar(max),
        Reference nvarchar(max),
        ReferenceLink nvarchar(max),
        PledgeDate datetime
    );

    insert @TMP_TOTALREVENUE exec dbo.USP_REPORT_TOTALREVENUE 1, @INCLUDESECURITYDEPOSITS, @INCLUDEUNRECEIVEDREVENUE, @FROMDATE, @TODATE, @CURRENTAPPUSERID, @APPUSERID, @APPUSERQUERYID, @SALESMETHODTYPECODE, @SOURCEADVANCESALES, @SOURCEDAILYSALES, @SOURCEGROUPSALES, @SOURCEONLINESALES, @SOURCEBACKOFFICE;

    -- Refunds

    insert into @TMP_PAYMENTMETHOD
    select PAYMENTID, PAYMENTDATE, PAYMENTMETHOD, PAYMENTMETHODCODE, CREDITTYPE, AMOUNT, CONSTITUENTNAME, CONSTITUENTLINK, dbo.UDA_BUILDLIST(REFERENCE), REFERENCELINK
    from (
        select distinct
            CREDITPAYMENT.CREDITID as [PAYMENTID],
            cast(CREDITPAYMENT.CREDITPAYMENTDATEWITHTIMEOFFSET as datetime) PAYMENTDATE,
            CREDITPAYMENT.PAYMENTMETHOD,
            CREDITPAYMENT.PAYMENTMETHODCODE,
            case CREDITPAYMENT.PAYMENTMETHODCODE
                when 2 then isnull(CREDITTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
                when 10 then isnull(OTHERPAYMENTMETHODCODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            end CREDITTYPE,
            0 - CREDITPAYMENT.AMOUNT AMOUNT,
            TMP_TOTALREVENUE.ConstituentName,
            TMP_TOTALREVENUE.ConstituentLink,
            TMP_TOTALREVENUE.Reference,
            TMP_TOTALREVENUE.ReferenceLink,
            REVENUEPAYMENTMETHOD.ID METHODID        -- prevent "distinct" from removing two credit payments with the same method and value

        from @TMP_TOTALREVENUE as TMP_TOTALREVENUE
        inner join dbo.CREDITPAYMENT on CREDITPAYMENT.CREDITID = TMP_TOTALREVENUE.TransactionID
        left join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = CREDITPAYMENT.REVENUESPLITID
        left join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = isnull(CREDITPAYMENT.REVENUEID, LI.FINANCIALTRANSACTIONID)
        left join dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
        left join dbo.CREDITTYPECODE on CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID = CREDITTYPECODE.ID
        left join dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODCODE.ID = CREDITPAYMENT.OTHERPAYMENTMETHODCODEID
        where TMP_TOTALREVENUE.TransactionTypeCode = 23
    ) REFUNDS
    group by PAYMENTID, PAYMENTDATE, PAYMENTMETHOD, PAYMENTMETHODCODE, CREDITTYPE, AMOUNT, CONSTITUENTNAME, CONSTITUENTLINK, REFERENCELINK, METHODID;

    -- Sales orders

    insert @TMP_PAYMENTMETHOD
    select
        SALESORDERPAYMENT.PAYMENTID,
        cast(SALESORDERPAYMENT.PAYMENTDATEWITHTIMEOFFSET as datetime),
        isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHOD, @NONETEXT),
        isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,9),
        case isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,9)
            when 2 then isnull(CREDITTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 5 then isnull(PROPERTYSUBTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 6 then isnull(GIFTINKINDSUBTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 10 then isnull(OTHERPAYMENTMETHODCODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 9 then @EXPECTEDORDERREVENUETEXT
            else null
        end CREDITTYPE,
        isnull(FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT, SALESORDER.AMOUNT) as AMOUNT,
        CONSTITUENTINFO.ConstituentName,
        CONSTITUENTINFO.ConstituentLink,
        'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(36)) REFERENCE,
        case when @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), SALESORDERPAYMENT.SALESORDERID) else null end REFERENCELINK
    from dbo.SALESORDER
    left join dbo.SALESORDERPAYMENT on SALESORDERPAYMENT.SALESORDERID = SALESORDER.ID
    left join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = SALESORDERPAYMENT.PAYMENTID
    left join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
    left join dbo.REVENUEPAYMENTMETHOD on SALESORDERPAYMENT.PAYMENTID = REVENUEPAYMENTMETHOD.REVENUEID
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
    left join dbo.CREDITTYPECODE on CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID = CREDITTYPECODE.ID
    left join dbo.PROPERTYDETAIL on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAIL.ID
    left join dbo.PROPERTYSUBTYPECODE on PROPERTYDETAIL.PROPERTYSUBTYPECODEID = PROPERTYSUBTYPECODE.ID
    left join dbo.GIFTINKINDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = GIFTINKINDPAYMENTMETHODDETAIL.ID
    left join dbo.GIFTINKINDSUBTYPECODE on GIFTINKINDPAYMENTMETHODDETAIL.GIFTINKINDSUBTYPECODEID = GIFTINKINDSUBTYPECODE.ID
    left join dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
    left join dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODE.ID
    outer apply (
        select distinct ConstituentName, ConstituentLink
        from @TMP_TOTALREVENUE
        where SalesOrderId = SALESORDER.ID 
        and TRANSACTIONTYPECODE <> 23 -- Exclude refunds

    ) CONSTITUENTINFO
    where
        SALESORDER.ID in (
            select distinct SALESORDERID
            from @TMP_TOTALREVENUE
            where TransactionTypeCode = 5
                and SalesMethodTypeCode <> 3
        )
        and (REVENUESPLIT_EXT.APPLICATIONCODE <> 10 /*order*/ or FINANCIALTRANSACTIONLINEITEM.VISIBLE = 1)
        and FINANCIALTRANSACTIONLINEITEM.REVERSEDLINEITEMID is null
        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null;

    -- Pledge records

    insert @TMP_PAYMENTMETHOD
    select
        TMP_TOTALREVENUE.TransactionID PAYMENTID,
        TMP_TOTALREVENUE.TransactionDate PAYMENTDATE,
        @NONETEXT PAYMENTMETHOD,
        9 PAYMENTMETHODCODE,
        @EXPECTEDPLEDGEREVENUETEXT as CREDITTYPE,
        TMP_TOTALREVENUE.Amount AMOUNT,
        TMP_TOTALREVENUE.ConstituentName,
        TMP_TOTALREVENUE.ConstituentLink,
        TMP_TOTALREVENUE.Reference,
        TMP_TOTALREVENUE.ReferenceLink
    from @TMP_TOTALREVENUE as TMP_TOTALREVENUE
    where TMP_TOTALREVENUE.TransactionTypeCode = 1;

    -- Revenue records

    insert @TMP_PAYMENTMETHOD
    select
        TMP_TOTALREVENUE.TransactionID as PAYMENTID,
        TMP_TOTALREVENUE.TransactionDate as PAYMENTDATE,
        isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHOD, @NONETEXT),
        isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,9),
        case isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,9)
            when 2 then isnull(CREDITTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 5 then isnull(PROPERTYSUBTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 6 then isnull(GIFTINKINDSUBTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 10 then isnull(OTHERPAYMENTMETHODCODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            else null
        end CREDITTYPE,
        TMP_TOTALREVENUE.Amount AMOUNT,
        TMP_TOTALREVENUE.ConstituentName,
        TMP_TOTALREVENUE.ConstituentLink,
        TMP_TOTALREVENUE.Reference,
        TMP_TOTALREVENUE.ReferenceLink
    from @TMP_TOTALREVENUE as TMP_TOTALREVENUE
    left join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = TMP_TOTALREVENUE.TransactionID
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
    left join dbo.CREDITTYPECODE on CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID = CREDITTYPECODE.ID
    left join dbo.PROPERTYDETAIL on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAIL.ID
    left join dbo.PROPERTYSUBTYPECODE on PROPERTYDETAIL.PROPERTYSUBTYPECODEID = PROPERTYSUBTYPECODE.ID
    left join dbo.GIFTINKINDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = GIFTINKINDPAYMENTMETHODDETAIL.ID
    left join dbo.GIFTINKINDSUBTYPECODE on GIFTINKINDPAYMENTMETHODDETAIL.GIFTINKINDSUBTYPECODEID = GIFTINKINDSUBTYPECODE.ID
    left join dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
    left join dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODE.ID
    where TMP_TOTALREVENUE.TransactionTypeCode not in (1,5,23) -- Pledge, Order, Refund

        and isnull(TMP_TOTALREVENUE.SALESMETHODTYPECODE,0) != 3

    -- Group Sales (not including refunds)

    insert into @TMP_PAYMENTMETHOD
    select v1.TRANSACTIONID,
        cast(FINANCIALTRANSACTION.DATE as datetime),
        isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHOD, @NONETEXT),
        isnull(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,9),
        case REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
            when 2 then isnull(CREDITTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 5 then isnull(PROPERTYSUBTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 6 then isnull(GIFTINKINDSUBTYPECODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            when 10 then isnull(OTHERPAYMENTMETHODCODE.DESCRIPTION, @SUBTYPENOTSPECIFIEDTEXT)
            else null
        end,
        isnull(SALESORDERPAYMENT.AMOUNT, FINANCIALTRANSACTION.BASEAMOUNT) as Amount,
        v1.ConstituentName,
        v1.ConstituentLink,
        v1.REFERENCE,
        v1.REFERENCELINK
    from
    (
        select distinct TRANSACTIONID, REFERENCE, REFERENCELINK, ConstituentName, ConstituentLink
        from @TMP_TOTALREVENUE
        where SALESMETHODTYPECODE = 3
            and TRANSACTIONTYPECODE <> 23 -- Exclude refunds

    ) v1
    inner join dbo.FINANCIALTRANSACTION on v1.TRANSACTIONID = FINANCIALTRANSACTION.ID
    left join dbo.SALESORDERPAYMENT on v1.TRANSACTIONID = SALESORDERPAYMENT.PAYMENTID
    left join dbo.REVENUEPAYMENTMETHOD on v1.TRANSACTIONID = REVENUEPAYMENTMETHOD.REVENUEID
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
    left join dbo.CREDITTYPECODE on CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID = CREDITTYPECODE.ID
    left join dbo.PROPERTYDETAIL on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAIL.ID
    left join dbo.PROPERTYSUBTYPECODE on PROPERTYDETAIL.PROPERTYSUBTYPECODEID = PROPERTYSUBTYPECODE.ID
    left join dbo.GIFTINKINDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = GIFTINKINDPAYMENTMETHODDETAIL.ID
    left join dbo.GIFTINKINDSUBTYPECODE on GIFTINKINDPAYMENTMETHODDETAIL.GIFTINKINDSUBTYPECODEID = GIFTINKINDSUBTYPECODE.ID
    left join dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
    left join dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODE.ID;

    with REFERENCE_CTE as (
        select distinct
            PAYMENTMETHODS.PAYMENTID,
            PAYMENTMETHODS.CONSTITUENTNAME,
            PAYMENTMETHODS.CONSTITUENTLINK,
            APPLICATIONS.APPLICATIONLIST,
            case when APPLICATIONS.APPCOUNT = 1 then PAYMENTMETHODS.REFERENCELINK else null end REFERENCELINK
        from @TMP_PAYMENTMETHOD PAYMENTMETHODS
        outer apply (
            select
                dbo.UDA_BUILDLIST(distinct PAYMENTMETHODS2.REFERENCE) APPLICATIONLIST,
                count(distinct isnull(PAYMENTMETHODS2.REFERENCELINK, N'')) APPCOUNT    --The reference link can be null, if user is not having permissions to view reference link. In that case, count will not return exact count and hence query will return wrong output. So make sure null isn't used.

            from @TMP_PAYMENTMETHOD PAYMENTMETHODS2
            where PAYMENTMETHODS2.PAYMENTID = PAYMENTMETHODS.PAYMENTID
            group by PAYMENTID
        ) APPLICATIONS
    )
    select distinct
        PAYMENTS.PAYMENTID,
        PAYMENTS.PAYMENTDATE,
        PAYMENTMETHODCODE,
        PAYMENTMETHOD,
        CREDITTYPE PAYMENTSUBMETHOD,
        APPLICATIONS.CONSTITUENTNAME,
        APPLICATIONS.CONSTITUENTLINK,
        sum(AMOUNT) AMOUNT,
        APPLICATIONS.APPLICATIONLIST REFERENCE,
        APPLICATIONS.REFERENCELINK,
        case
            when sum(AMOUNT) < 0 and @USERGRANTEDREFUNDPAGE = 1 then 'http://www.blackbaud.com/CREDITID?CREDITID=' + CONVERT(nvarchar(36), PAYMENTS.PAYMENTID)
            when sum(AMOUNT) > 0 and @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), PAYMENTS.PAYMENTID)
            else null
        end PAYMENTLINK
    from @TMP_PAYMENTMETHOD PAYMENTS
    left join REFERENCE_CTE APPLICATIONS on APPLICATIONS.PAYMENTID = PAYMENTS.PAYMENTID
    group by
        PAYMENTS.PAYMENTID, PAYMENTS.PAYMENTDATE, PAYMENTS.PAYMENTMETHOD, PAYMENTS.PAYMENTMETHODCODE, PAYMENTS.CREDITTYPE, APPLICATIONS.CONSTITUENTNAME, APPLICATIONS.CONSTITUENTLINK, APPLICATIONS.APPLICATIONLIST, APPLICATIONS.REFERENCELINK
    order by
        PAYMENTMETHOD, CREDITTYPE;


    return 0;