USP_REPORT_MATCHINGGIFTSUMMARY

Returns the data necessary for the Matching Gift Claim Summary report.

Parameters

Parameter Parameter Type Mode Description
@STARTDATE datetime IN
@ENDDATE datetime IN
@REPORTUSERID nvarchar(128) IN
@CURRENCYCODE tinyint IN
@ALTREPORTUSERID nvarchar(128) IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_MATCHINGGIFTSUMMARY
            (
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @REPORTUSERID nvarchar(128) = null,
                @CURRENCYCODE tinyint = null,
                @ALTREPORTUSERID nvarchar(128) = null
            )
            as
            set nocount on;

            declare @CURRENTAPPUSERID uniqueidentifier;
            declare @ISADMIN bit;
            declare @APPUSER_IN_NONRACROLE bit;
            declare @APPUSER_IN_NOSECGROUPROLE bit;

            set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
            set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
            set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
            set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);

            declare @CURRENTDATE datetime = getdate();
            declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
            declare @SELECTEDCURRENCYID uniqueidentifier;
            declare @DECIMALDIGITS tinyint;
            declare @ROUNDINGTYPECODE tinyint;
            declare @ORIGINCODE tinyint;

            select @ORIGINCODE = coalesce(ORGANIZATIONAMOUNTORIGINCODE, 0) from dbo.MULTICURRENCYCONFIGURATION;

            if @CURRENCYCODE = 1
            begin
                set @SELECTEDCURRENCYID = @ORGANIZATIONCURRENCYID;
                select
                    @DECIMALDIGITS = DECIMALDIGITS,
                    @ROUNDINGTYPECODE = ROUNDINGTYPECODE
                from
                    dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID);
            end

            select
                [PLEDGEID],
                ISNULL(sum([AMOUNT]), 0.0) as [TOTALPAID]
            into #V_INSTALLMENTPAYMENT_TOTALPAID
            from dbo.INSTALLMENTPAYMENT
            group by
                    [PLEDGEID];

            select
                FINANCIALTRANSACTION.ID as [REVENUEID],
                ISNULL(#V_INSTALLMENTPAYMENT_TOTALPAID.[TOTALPAID], 0.0) as [TOTALPAID],
                PLEDGEBALANCES.BALANCEINCURRENCY as [BALANCE]
            into #INACTIVEPARTIALLYPAIDMATCHINGGIFTCLAIMBALANCE
            from dbo.FINANCIALTRANSACTION
            inner join
                dbo.REVENUEMATCHINGGIFT on dbo.FINANCIALTRANSACTION.ID = dbo.REVENUEMATCHINGGIFT.ID
            left join
                #V_INSTALLMENTPAYMENT_TOTALPAID ON FINANCIALTRANSACTION.ID = #V_INSTALLMENTPAYMENT_TOTALPAID.PLEDGEID
            left join
                dbo.UFN_PLEDGE_GETBALANCEASOFINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENTDATE, @ORIGINCODE, @CURRENCYCODE) PLEDGEBALANCES on PLEDGEBALANCES.ID = FINANCIALTRANSACTION.ID
            where REVENUEMATCHINGGIFT.ISACTIVE = 0
                    and FINANCIALTRANSACTION.DELETEDON is null
                    and FINANCIALTRANSACTION.TYPECODE = 3;

            select
                COMPANYNAME = COMPANY.NAME,
                COMPANYKEYNAME = COMPANY.KEYNAME,
                CONSTITUENTNAME = CONSTITUENT_NF.NAME,
                MATCHEDPAYMENTS = case @CURRENCYCODE when 0 then CONSTITRD.BASEAMOUNT when 2 then CONSTITRD.TRANSACTIONAMOUNT else CONSTITRD.ORGAMOUNT end,
                PLEDGEAMOUNT = case @CURRENCYCODE when 0 then REVENUE.BASEAMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGAMOUNT end,
                SUMPAYMENTS = coalesce(PLEDGEAMOUNTSPAID.AMOUNTPAIDINCURRENCY, 0),
                SUMWRITEOFFS = coalesce(WO.AMOUNT, 0),
                BALANCE = PLEDGEBALANCES.BALANCEINCURRENCY - isnull(#INACTIVEPARTIALLYPAIDMATCHINGGIFTCLAIMBALANCE.BALANCE, 0.0),
                'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36),CONSTITUENT.ID) as CONSTITUENTID,
                MGCURRENCYPROPERTIES.ISO4217 [MGISOCURRENCYCODE],
                MGCURRENCYPROPERTIES.CURRENCYSYMBOL [MGCURRENCYSYMBOL],
                MGCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [MGCURRENCYSYMBOLDISPLAYSETTINGCODE],
                MGCURRENCYPROPERTIES.DECIMALDIGITS [MGDECIMALDIGITS],
                CONSTITRDCURRENCYPROPERTIES.ISO4217 [CONSTITRDISOCURRENCYCODE],
                CONSTITRDCURRENCYPROPERTIES.CURRENCYSYMBOL [CONSTITRDCURRENCYSYMBOL],
                CONSTITRDCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CONSTITRDCURRENCYSYMBOLDISPLAYSETTINGCODE],
                CONSTITRDCURRENCYPROPERTIES.DECIMALDIGITS [CONSTITRDDECIMALDIGITS]
            from
                dbo.CONSTITUENT COMPANY
            /*#IDSETEXTENSION*/
            inner join
                dbo.FINANCIALTRANSACTION REVENUE with (nolock) on COMPANY.ID = REVENUE.CONSTITUENTID
            left outer join  dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on REVENUE.ID = V.FINANCIALTRANSACTIONID
            inner join
                dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
            inner join
                dbo.FINANCIALTRANSACTION CONSTITRD with (nolock) on RMG.MGSOURCEREVENUEID = CONSTITRD.ID
            left outer join  dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V_CONSTITRD with (noexpand) on CONSTITRD.ID = V_CONSTITRD.FINANCIALTRANSACTIONID
            inner join
                dbo.CONSTITUENT with (nolock) on CONSTITRD.CONSTITUENTID = CONSTITUENT.ID
            left join
                dbo.UFN_PLEDGE_GETBALANCEASOFINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENTDATE, @ORIGINCODE, @CURRENCYCODE) PLEDGEBALANCES on PLEDGEBALANCES.ID = REVENUE.ID
            left join
                dbo.UFN_PLEDGE_GETAMOUNTPAIDINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENTDATE, @ORIGINCODE, @CURRENCYCODE) PLEDGEAMOUNTSPAID on PLEDGEAMOUNTSPAID.PLEDGEID = REVENUE.ID
            outer apply
                dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then V.BASECURRENCYID when 2 then REVENUE.TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) MGCURRENCYPROPERTIES
            outer apply
                dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then V_CONSTITRD.BASECURRENCYID when 2 then CONSTITRD.TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) CONSTITRDCURRENCYPROPERTIES
            outer apply
                dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) CONSTITUENT_NF
            left join
                (select sum(INSTALLMENTSPLITWRITEOFF.AMOUNTINCURRENCY) AMOUNT, WRITEOFF.PARENTID [REVENUEID]
                    from dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ORIGINCODE, @CURRENCYCODE) INSTALLMENTSPLITWRITEOFF
                    inner join dbo.FINANCIALTRANSACTION WRITEOFF on INSTALLMENTSPLITWRITEOFF.WRITEOFFID = WRITEOFF.ID
                    where WRITEOFF.TYPECODE = 20 and WRITEOFF.DELETEDON is null
                    group by WRITEOFF.PARENTID) WO on WO.REVENUEID = REVENUE.ID
            left join
                #INACTIVEPARTIALLYPAIDMATCHINGGIFTCLAIMBALANCE on REVENUE.ID = #INACTIVEPARTIALLYPAIDMATCHINGGIFTCLAIMBALANCE.REVENUEID
            where 
                REVENUE.TYPECODE = 3 and REVENUE.DELETEDON is null and CONSTITRD.DELETEDON is null
                and (@STARTDATE is null or cast(REVENUE.DATE as datetime) >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE))
                and (@ENDDATE is null or cast(REVENUE.DATE as datetime) <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE))
                and REVENUE.ID not in (select REVENUEID from #INACTIVEPARTIALLYPAIDMATCHINGGIFTCLAIMBALANCE where TOTALPAID = 0.0)
                and not (REVENUE.BASEAMOUNT = 0 and REVENUE.TRANSACTIONAMOUNT > 0)
                and not (CONSTITRD.BASEAMOUNT = 0 and CONSTITRD.TRANSACTIONAMOUNT > 0)
                and (@ISADMIN = 1 or 
                        @APPUSER_IN_NONRACROLE = 1 or
                            (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, COMPANY.ID, @APPUSER_IN_NOSECGROUPROLE) = 1
                            and dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1))
                and exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT where REVENUESPLIT.FINANCIALTRANSACTIONID = REVENUE.ID and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
                            and exists
                            (
                                select HASPERMISSION
                                from dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) REVSITES
                                cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, '5DC00A99-AD1C-428F-8FB7-8467FA19BDCB', REVSITES.SITEID)
                            ))
                and exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT where REVENUESPLIT.FINANCIALTRANSACTIONID = CONSTITRD.ID and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
                            and exists
                            (
                                select HASPERMISSION
                                from dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) REVSITES
                                cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, '5DC00A99-AD1C-428F-8FB7-8467FA19BDCB', REVSITES.SITEID)
                            ))
            order by
                COMPANY.KEYNAME, COMPANY.KEYNAMEPREFIX, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME;

            drop table #INACTIVEPARTIALLYPAIDMATCHINGGIFTCLAIMBALANCE;
            drop table #V_INSTALLMENTPAYMENT_TOTALPAID;