USP_DATALIST_CONSTITUENTPROFILEDASHBOARDGIVINGBYDESIGNATION

Returns a constituent's giving by designation.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN Constituent
@ISVISIBLE bit IN Visible
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SELECTEDCURRENCYID uniqueidentifier IN Selected currency ID

Definition

Copy


                    CREATE procedure dbo.USP_DATALIST_CONSTITUENTPROFILEDASHBOARDGIVINGBYDESIGNATION
                    (
                        @CONSTITUENTID uniqueidentifier,
                        @ISVISIBLE bit = 1,
                        @CURRENTAPPUSERID uniqueidentifier = null,
                        @SELECTEDCURRENCYID uniqueidentifier = null
                    )
                    as
                        set nocount on;

                        declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                        declare @CURRENCYROUNDINGTYPECODE tinyint;
                        declare @CURRENCYDECIMALDIGITS tinyint = 0;
                        select
                            @CURRENCYROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE,
                            @CURRENCYDECIMALDIGITS = CURRENCY.DECIMALDIGITS
                        from
                            dbo.CURRENCY
                        where
                            CURRENCY.ID = @SELECTEDCURRENCYID;

                        if @ISVISIBLE = 1
                        begin
                            declare @ISGROUP bit
                            select @ISGROUP = ISGROUP
                            from dbo.CONSTITUENT where ID = @CONSTITUENTID;

                            declare @CURRENTDATE datetime;
                            set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());

                            if @ISGROUP = 1
                            begin
                                select
                                    NAME,
                                    sum(CONSTITUENTAMOUNT) as CONSTITUENTAMOUNT,
                                    sum(CONSTITUENTNUMBER) as CONSTITUENTNUMBER,
                                    sum(MEMBERAMOUNT) as MEMBERAMOUNT,
                                    sum(MEMBERNUMBER) as MEMBERNUMBER,
                                    0 as ASSOCIATEDGROUPSAMOUNT,
                                    0 as ASSOCIATEDGROUPSNUMBER
                                from
                                    (select 
                                        D.ID,
                                        D.NAME,
                                        sum(RS.AMOUNTINCURRENCY) as CONSTITUENTAMOUNT,
                                        count(R.ID) as CONSTITUENTNUMBER,
                                        0 as MEMBERAMOUNT,
                                        0 as MEMBERNUMBER
                                    from dbo.REVENUE R
                                    inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,@ORGANIZATIONCURRENCYID,@CURRENCYDECIMALDIGITS,@CURRENCYROUNDINGTYPECODE) RS on R.ID = RS.REVENUEID
                                    inner join dbo.DESIGNATION D on RS.DESIGNATIONID = D.ID
                                    where 
                                        R.CONSTITUENTID = @CONSTITUENTID and
                                        (R.TRANSACTIONTYPECODE = 1 or --Pledge

                                        R.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0, 3)) and --Payment (Gift or Recurring gift payment)

                                        dbo.UFN_DESIGNATION_USERHASSITEACCESS(DESIGNATIONID,@CURRENTAPPUSERID) = 1
                                    group by D.ID, D.NAME

                                    union all

                                    select 
                                        D.ID,
                                        D.NAME,
                                        0 as CONSTITUENTAMOUNT,
                                        0 as CONSTITUENTNUMBER,
                                        sum(RS.AMOUNTINCURRENCY) as MEMBERAMOUNT,
                                        count(R.ID) as MEMBERNUMBER    
                                    from dbo.REVENUE R
                                    inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,@ORGANIZATIONCURRENCYID,@CURRENCYDECIMALDIGITS,@CURRENCYROUNDINGTYPECODE) RS on R.ID = RS.REVENUEID
                                    inner join dbo.DESIGNATION D on RS.DESIGNATIONID = D.ID
                                    where 
                                        R.CONSTITUENTID in 
                                        (
                                            select MEMBERID 
                                            from dbo.GROUPMEMBER GM 
                                            left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID 
                                            where 
                                                GROUPID = @CONSTITUENTID and
                                                ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                                                or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                                                or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))
                                        ) and
                                        (R.TRANSACTIONTYPECODE = 1 or --Pledge

                                        R.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0, 3)) and --Payment (Gift or Recurring gift payment)

                                        dbo.UFN_DESIGNATION_USERHASSITEACCESS(DESIGNATIONID,@CURRENTAPPUSERID) = 1
                                    group by D.ID, D.NAME) as G
                                group by ID, NAME
                                order by NAME
                            end
                            else
                            begin
                                select
                                    NAME,
                                    sum(CONSTITUENTAMOUNT) as CONSTITUENTAMOUNT,
                                    sum(CONSTITUENTNUMBER) as CONSTITUENTNUMBER,
                                    0 as MEMBERAMOUNT,
                                    0 as MEMBERNUMBER,
                                    sum(ASSOCIATEDGROUPSAMOUNT) as ASSOCIATEDGROUPSAMOUNT,
                                    sum(ASSOCIATEDGROUPSNUMBER) as ASSOCIATEDGROUPSNUMBER
                                from
                                    (select 
                                        D.ID,
                                        D.NAME,
                                        sum(RS.AMOUNTINCURRENCY) as CONSTITUENTAMOUNT,
                                        count(R.ID) as CONSTITUENTNUMBER,
                                        0 as ASSOCIATEDGROUPSAMOUNT,
                                        0 as ASSOCIATEDGROUPSNUMBER
                                    from dbo.REVENUE R
                                    inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,@ORGANIZATIONCURRENCYID,@CURRENCYDECIMALDIGITS,@CURRENCYROUNDINGTYPECODE) RS on R.ID = RS.REVENUEID
                                    inner join dbo.DESIGNATION D on RS.DESIGNATIONID = D.ID
                                    where 
                                        R.CONSTITUENTID = @CONSTITUENTID and
                                        (R.TRANSACTIONTYPECODE = 1 or --Pledge

                                        R.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0, 3)) and --Payment (Gift or Recurring gift payment)

                                        dbo.UFN_DESIGNATION_USERHASSITEACCESS(DESIGNATIONID,@CURRENTAPPUSERID) = 1
                                    group by D.ID, D.NAME

                                    union all

                                    select 
                                        D.ID,
                                        D.NAME,
                                        0 as CONSTITUENTAMOUNT,
                                        0 as CONSTITUENTNUMBER,
                                        sum(RS.AMOUNTINCURRENCY) as ASSOCIATEDGROUPSNUMBER,
                                        count(R.ID) as ASSOCIATEDGROUPSNUMBER    
                                    from dbo.REVENUE R
                                    inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,@ORGANIZATIONCURRENCYID,@CURRENCYDECIMALDIGITS,@CURRENCYROUNDINGTYPECODE) RS on R.ID = RS.REVENUEID
                                    inner join dbo.DESIGNATION D on RS.DESIGNATIONID = D.ID
                                    where 
                                        R.CONSTITUENTID in 
                                        (
                                            select GROUPID 
                                            from dbo.GROUPMEMBER GM 
                                            left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID 
                                            where 
                                                MEMBERID = @CONSTITUENTID and
                                                ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                                                or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                                                or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))        
                                        ) and
                                        (R.TRANSACTIONTYPECODE = 1 or --Pledge

                                        R.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE in (0, 3)) and --Payment (Gift or Recurring gift payment)

                                        dbo.UFN_DESIGNATION_USERHASSITEACCESS(DESIGNATIONID,@CURRENTAPPUSERID) = 1
                                    group by D.ID, D.NAME) as G
                                group by ID, NAME
                                order by NAME
                            end                            
                        end