USP_BATCHMEMBERSHIPDUES_CONTROLREPORT

Parameters

Parameter Parameter Type Mode Description
@BATCHID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_BATCHMEMBERSHIPDUES_CONTROLREPORT
(
    @BATCHID uniqueidentifier
)
with execute as owner
as
begin
    set nocount on;

    -- The batch should be outputting only Recurring Gift/Pledge Ids whenever there is no payment made.


    declare @BATCHTABLE nvarchar(128) = dbo.UFN_BATCH_GETREPORTTABLENAME(@BATCHID, 0);

    declare @BATCHNUMBER nvarchar(100);

    select @BATCHNUMBER = BATCH.BATCHNUMBER
    from dbo.BATCH
    where BATCH.ID = @BATCHID;

    declare @SQLTOEXEC nvarchar(max) = N'set nocount on;
        with FT_CTE as (
        select 
            FT.ID
            , S.MEMBERSHIPID
            , S.PAYMENTMETHOD
        from dbo.FINANCIALTRANSACTION FT
            inner join (
                -- get all the standalone payments/pledges/recurring gifts in the list

                select 
                    O.ID as ID
                    , O.MEMBERSHIPID
                    , PM.PAYMENTMETHOD
                from ' + @BATCHTABLE + ' O
                    inner join dbo.REVENUEPAYMENTMETHOD PM on o.ID = PM.REVENUEID
                union
                -- get Payments for Pledges/Recurring gifts if they exist

                select 
                    O.PARENTID as ID
                    , O.MEMBERSHIPID
                    , PM.PAYMENTMETHOD
                from ' + @BATCHTABLE + ' O
                    inner join dbo.REVENUEPAYMENTMETHOD PM on O.ID = PM.REVENUEID
                    inner join dbo.REVENUE_EXT on O.PARENTID = REVENUE_EXT.ID
                    where o.PARENTID is not null and REVENUE_EXT.BATCHNUMBER = @BATCHNUMBER
            ) S on FT.ID = S.ID
        )
        select 
            T.ID
            , CONSTITUENT_NF.NAME
            , C.LOOKUPID
            , case 
                when FT.TYPECODE = 15 then ''Installment Plan''
                else FT.TYPE end
            as TYPE
            , FT.DATE
            , T.PAYMENTMETHOD
            , MP.NAME as PROGRAMNAME
            , ML.NAME as LEVELNAME
            , FT.TRANSACTIONAMOUNT as TOTALAMOUNT
            , case 
                when FT.TYPECODE = 0 
                then FT.TRANSACTIONAMOUNT 
                else 0 
            end as PAYMENTAMOUNT
            , SUM(case when MPCR.ID is null and RSX.TYPECODE = 0 and RSX.APPLICATIONCODE = 0 then FTLI.TRANSACTIONAMOUNT else 0 end) as ADDITIONALDONATIONAMOUNT
            , SUM(case when RSX.TYPECODE = 18 and FT.TYPECODE = 0 then FTLI.TRANSACTIONAMOUNT else 0 end) as ADDONAMOUNT
            , CURRENCY.ISO4217
            , CURRENCY.DECIMALDIGITS
            , CURRENCY.CURRENCYSYMBOL
            , CURRENCY.SYMBOLDISPLAYSETTINGCODE
        from FT_CTE T
            inner join dbo.FINANCIALTRANSACTION FT on T.ID = FT.ID
            inner join dbo.CURRENCY on FT.TRANSACTIONCURRENCYID = CURRENCY.ID
            inner join dbo.CONSTITUENT C on FT.CONSTITUENTID = C.ID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) CONSTITUENT_NF
            inner join dbo.MEMBERSHIP M on T.MEMBERSHIPID = M.ID
            inner join dbo.MEMBERSHIPPROGRAM MP on M.MEMBERSHIPPROGRAMID = MP.ID
            inner join dbo.MEMBERSHIPLEVEL ML on M.MEMBERSHIPLEVELID = ML.ID
            inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on T.ID = FTLI.FINANCIALTRANSACTIONID
            inner join dbo.REVENUESPLIT_EXT RSX on FTLI.ID = RSX.ID
            left join dbo.MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE MPCR on MPCR.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
        group by
            T.ID
            , CONSTITUENT_NF.NAME
            , C.LOOKUPID
            , FT.TYPE
            , FT.TYPECODE
            , FT.DATE
            , T.PAYMENTMETHOD
            , MP.NAME
            , ML.NAME
            , FT.TRANSACTIONAMOUNT
            , CURRENCY.ISO4217
            , CURRENCY.DECIMALDIGITS
            , CURRENCY.CURRENCYSYMBOL
            , CURRENCY.SYMBOLDISPLAYSETTINGCODE
            , T.MEMBERSHIPID
        order by T.MEMBERSHIPID';

    exec sp_executesql @SQLTOEXEC, N'@BATCHNUMBER nvarchar(100)', @BATCHNUMBER=@BATCHNUMBER;
end