USP_REPORT_PLANNEDGIFTDETAIL_GROUPGIFTSUM

Returns the sum of planned gift amounts and planned gift remaining values for groups that the constituent has membership in.

Parameters

Parameter Parameter Type Mode Description
@MEMBERID uniqueidentifier IN
@SELECTIONID uniqueidentifier IN
@FROMDATE datetime IN
@TODATE datetime IN
@VEHICLECODE tinyint IN
@STATUSCODE tinyint IN
@DESIGNATIONID uniqueidentifier IN
@EXPECTEDMATURITYYEAR int IN
@SHOWGROUPDATAFORMEMBERS bit IN
@CURRENCYCODE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_REPORT_PLANNEDGIFTDETAIL_GROUPGIFTSUM
(
  @MEMBERID uniqueidentifier,
  @SELECTIONID uniqueidentifier = null,
  @FROMDATE datetime = null,
  @TODATE datetime = null,
  @VEHICLECODE tinyint = null,
  @STATUSCODE tinyint = null,
  @DESIGNATIONID uniqueidentifier = null,
  @EXPECTEDMATURITYYEAR int = null,
  @SHOWGROUPDATAFORMEMBERS bit = null,
  @CURRENCYCODE tinyint = 1
)
as
  set nocount on;

  if @SHOWGROUPDATAFORMEMBERS = 1
  begin
    declare @CURRENTDATEEARLIESTTIME datetime
    set @CURRENTDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(getdate());

    if @SELECTIONID is null
      select
        CDT.CONSTITUENTNAME as CONSTITUENTNAME,
        CDT.GIFTAMOUNTSUM as GIFTAMOUNTSUM,
        CDT.REMAINDERVALUESUM as REMAINDERVALUESUM,
        CINFO.CURRENCYSYMBOL as CURRENCYSYMBOL,
        CINFO.ISO4217 as CURRENCYISOCODE,
        CINFO.DECIMALDIGITS as CURRENCYDECIMALCOUNT,
        CINFO.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAY
      from 
        (select
          NF_C.NAME as CONSTITUENTNAME,
          case
            --when we are dealing with an addition, do not count the planned gift amount

            when exists (select 1 from dbo.PLANNEDGIFTADDITIONDESIGNATION PGAD inner join dbo.PLANNEDGIFTADDITION PGA on PGAD.PLANNEDGIFTADDITIONID = PGA.ID where PGAD.DESIGNATIONID = @DESIGNATIONID and PGA.PLANNEDGIFTID = PG.ID) then 0
            else
              case @CURRENCYCODE
                when 0 then sum(PG.GIFTAMOUNT)
                when 2 then sum(PG.TRANSACTIONGIFTAMOUNT)
                when 1 then sum(PG.ORGANIZATIONGIFTAMOUNT)
              end
          end + coalesce(sum(PGA.PLANNEDGIFTADDITIONAMOUNT), 0) as GIFTAMOUNTSUM,
          case @CURRENCYCODE
            when 0 then sum(PG.REMAINDERVALUE)
            when 2 then sum(PG.TRANSACTIONREMAINDERVALUE)
            when 1 then sum(PG.ORGANIZATIONREMAINDERVALUE)
          end as REMAINDERVALUESUM,
          case @CURRENCYCODE
            when 0 then
              case count(distinct(PG.BASECURRENCYID))
                when 1 then max(cast(PG.BASECURRENCYID as nvarchar(36)))
                else null
              end
            when 2 then
              case count(distinct(PG.TRANSACTIONCURRENCYID))
                when 1 then max(cast(PG.TRANSACTIONCURRENCYID as nvarchar(36)))
                else null
              end
            when 1 then cast(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() as nvarchar(36))
          end as CURRENCYID
        from
          dbo.PLANNEDGIFT PG
        inner join
          dbo.GROUPMEMBER GM on PG.CONSTITUENTID = GM.GROUPID
        inner join
          dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
        inner join
          dbo.CONSTITUENT C with (nolock) on C.ID = GM.GROUPID
        left join
          (select
            PLANNEDGIFTID,
            case @CURRENCYCODE
              when 0 then sum(GIFTAMOUNT)
              when 2 then sum(TRANSACTIONGIFTAMOUNT)
              when 1 then sum(ORGANIZATIONGIFTAMOUNT)
            end as PLANNEDGIFTADDITIONAMOUNT
          from
            dbo.PLANNEDGIFTADDITION PLGA
              inner join
                dbo.PLANNEDGIFTADDITIONDESIGNATION PGAD on PGAD.PLANNEDGIFTADDITIONID = PLGA.ID
          where
            PGAD.DESIGNATIONID = @DESIGNATIONID
          group by
            PLANNEDGIFTID) PGA on PGA.PLANNEDGIFTID = PG.ID
        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
        where
          GM.MEMBERID = @MEMBERID and
          (PG.GIFTDATE between @FROMDATE and @TODATE or @FROMDATE is null or @TODATE is null) and
          (PG.VEHICLECODE = @VEHICLECODE or @VEHICLECODE is null) and
          (PG.STATUSCODE = @STATUSCODE or @STATUSCODE is null) and
          (@DESIGNATIONID is null or exists (select 1 from dbo.PLANNEDGIFTDESIGNATION PGD where PGD.PLANNEDGIFTID = PG.ID and PGD.DESIGNATIONID = @DESIGNATIONID) or
                                  exists (select 1 from dbo.PLANNEDGIFTADDITIONDESIGNATION PGAD inner join dbo.PLANNEDGIFTADDITION PGA on PGAD.PLANNEDGIFTADDITIONID = PGA.ID where PGAD.DESIGNATIONID = @DESIGNATIONID and PGA.PLANNEDGIFTID = PG.ID)) and
          (PG.EXPECTEDMATURITY = @EXPECTEDMATURITYYEAR or @EXPECTEDMATURITYYEAR is null) and
          ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
            or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME)) 
            or (GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME and GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
        group by
          C.ID, NF_C.NAME, PG.ID
        ) as CDT
      outer apply
        dbo.UFN_CURRENCY_GETPROPERTIES(cast(CDT.CURRENCYID as uniqueidentifier)) as CINFO

    else
      select
        CDT.CONSTITUENTNAME as CONSTITUENTNAME,
        CDT.GIFTAMOUNTSUM as GIFTAMOUNTSUM,
        CDT.REMAINDERVALUESUM as REMAINDERVALUESUM,
        CINFO.CURRENCYSYMBOL as CURRENCYSYMBOL,
        CINFO.ISO4217 as CURRENCYISOCODE,
        CINFO.DECIMALDIGITS as CURRENCYDECIMALCOUNT,
        CINFO.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAY
      from
        (select
          NF_C.NAME as CONSTITUENTNAME,
          case
            --when we are dealing with an addition, do not count the planned gift amount

            when exists (select 1 from dbo.PLANNEDGIFTADDITIONDESIGNATION PGAD inner join dbo.PLANNEDGIFTADDITION PGA on PGAD.PLANNEDGIFTADDITIONID = PGA.ID where PGAD.DESIGNATIONID = @DESIGNATIONID and PGA.PLANNEDGIFTID = PG.ID) then 0
            else
              case @CURRENCYCODE
                when 0 then sum(PG.GIFTAMOUNT)
                when 2 then sum(PG.TRANSACTIONGIFTAMOUNT)
                when 1 then sum(PG.ORGANIZATIONGIFTAMOUNT)
              end
          end + coalesce(sum(PGA.PLANNEDGIFTADDITIONAMOUNT), 0) as GIFTAMOUNTSUM,
          case @CURRENCYCODE
            when 0 then sum(PG.REMAINDERVALUE)
            when 2 then sum(PG.TRANSACTIONREMAINDERVALUE)
            when 1 then sum(PG.ORGANIZATIONREMAINDERVALUE)
          end as REMAINDERVALUESUM,
          case @CURRENCYCODE
            when 0 then
              case count(distinct(PG.BASECURRENCYID))
                when 1 then max(cast(PG.BASECURRENCYID as nvarchar(36)))
                else null
              end
            when 2 then
              case count(distinct(PG.TRANSACTIONCURRENCYID))
                when 1 then max(cast(PG.TRANSACTIONCURRENCYID as nvarchar(36)))
                else null
              end
            when 1 then cast(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() as nvarchar(36))
          end as CURRENCYID
        from
          dbo.PLANNEDGIFT PG
        inner join
          dbo.GROUPMEMBER GM on PG.CONSTITUENTID = GM.GROUPID
        inner join
          dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
        inner join
          dbo.CONSTITUENT C with (nolock) on C.ID = GM.GROUPID
        inner join
          dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) SELECTION on PG.ID = SELECTION.ID
        left join
          (select
            PLANNEDGIFTID,
            case @CURRENCYCODE
              when 0 then sum(GIFTAMOUNT)
              when 2 then sum(TRANSACTIONGIFTAMOUNT)
              when 1 then sum(ORGANIZATIONGIFTAMOUNT)
            end as PLANNEDGIFTADDITIONAMOUNT
          from
            dbo.PLANNEDGIFTADDITION PLGA
              inner join
                dbo.PLANNEDGIFTADDITIONDESIGNATION PGAD on PGAD.PLANNEDGIFTADDITIONID = PLGA.ID
          where
            PGAD.DESIGNATIONID = @DESIGNATIONID
          group by
            PLANNEDGIFTID) PGA on PGA.PLANNEDGIFTID = PG.ID
        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF_C
        where
          GM.MEMBERID = @MEMBERID and
          (PG.GIFTDATE between @FROMDATE and @TODATE or @FROMDATE is null or @TODATE is null) and
          (PG.VEHICLECODE = @VEHICLECODE or @VEHICLECODE is null) and
          (PG.STATUSCODE = @STATUSCODE or @STATUSCODE is null) and
          (@DESIGNATIONID is null or exists (select 1 from dbo.PLANNEDGIFTDESIGNATION PGD where PGD.PLANNEDGIFTID = PG.ID and PGD.DESIGNATIONID = @DESIGNATIONID) or
                                     exists (select 1 from dbo.PLANNEDGIFTADDITIONDESIGNATION PGAD inner join dbo.PLANNEDGIFTADDITION PGA on PGAD.PLANNEDGIFTADDITIONID = PGA.ID where PGAD.DESIGNATIONID = @DESIGNATIONID and PGA.PLANNEDGIFTID = PG.ID)) and
          (PG.EXPECTEDMATURITY = @EXPECTEDMATURITYYEAR or @EXPECTEDMATURITYYEAR is null) and
          ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
            or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME)) 
            or (GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME and GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
        group by
          C.ID, NF_C.NAME, PG.ID
        ) as CDT
        outer apply
          dbo.UFN_CURRENCY_GETPROPERTIES(cast(CDT.CURRENCYID as uniqueidentifier)) as CINFO
    end