USP_DATALIST_CONSTITUENTRELATIONSHIPMINIMAP

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@ROOTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_CONSTITUENTRELATIONSHIPMINIMAP( 
    @CONSTITUENTID uniqueidentifier,
    @ROOTID uniqueidentifier = null)
as
set nocount on;

declare @TOPN integer = 20;

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

declare @LOCALEID int;

select top 1 @LOCALEID = LOCALE.LOCALEID 
from dbo.CURRENCY
inner join dbo.LOCALE on CURRENCY.LOCALEID = LOCALE.ID
where CURRENCY.ISORGANIZATIONCURRENCY = 1;

with RELATIONSHIPSET_CTE as
(
  select distinct
      RELATIONSHIP.RECIPROCALCONSTITUENTID ID,
    RELATIONSHIP.RELATIONSHIPCONSTITUENTID,
    RELATIONSHIP.RECIPROCALCONSTITUENTID,
      (
          rtrim(NF.NAME + ' ' +
              coalesce(
                  replace(
                      stuff(
                          (select '' + STATUS from
                          (select ',(Deceased)' STATUS
                              from dbo.DECEASEDCONSTITUENT DC
                              where DC.ID = CONSTITUENT.ID
                          union all
                          select ',(Inactive)' STATUS
                              from dbo.CONSTITUENT C
                              where C.ID = CONSTITUENT.ID
                              and C.ISINACTIVE=1
                      ) as SUBQ for xml path(''))
                      ,1,1,'')
                  , '),(', ', ')
              ,'')
          )
      ) as NAME,
    case when ROOT_RTC.ID is null 
      then RELATIONSHIPTYPECODE.DESCRIPTION
      else ROOT_RTC.DESCRIPTION
      end RELATIONSHIPTYPE,
      case when ESTIMATEDWEALTH.MINIMUMAMOUNT is null then '' else dbo.UFN_FORMAT_CURRENCY(coalesce(ESTIMATEDWEALTH.MINIMUMAMOUNT, 0), @LOCALEID) + ' and up' end WEALTHDESCRIPTION,
      case
          when CONSTITUENT.ISORGANIZATION = 1 then 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.organization.png'
          when CONSTITUENT.ISGROUP = 1 then 
              case
                  when GROUPDATA.GROUPTYPECODE = 0 then 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.households_32.png'
              else 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.groups_32.png'
              end
          else 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.individual.png'
      end IMAGEKEY,
      case
          when CONSTITUENT.ISORGANIZATION = 1 then 'Hot'
          when CONSTITUENT.ISGROUP = 1 then 
              case
                  when GROUPDATA.GROUPTYPECODE = 0 then 'Warm'
                  else 'Cold'
              end
          else 'Cold'
      end STRENGTH,
      cast(0 as bit) ISROOT,
      CONSTITUENT.KEYNAME
      from 
      dbo.UFN_RELATIONSHIPMAP_GETRELATIONSHIPS(@CONSTITUENTID, @CURRENTDATE, @TOPN) RSET
      inner join dbo.RELATIONSHIP on RELATIONSHIP.ID = RSET.ID
      inner join dbo.CONSTITUENT on RELATIONSHIP.RECIPROCALCONSTITUENTID = CONSTITUENT.ID
      left join dbo.RELATIONSHIPTYPECODE on RECIPROCALTYPECODEID = RELATIONSHIPTYPECODE.ID
      left join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
      left join dbo.WEALTHCAPACITY on CONSTITUENT.ID = WEALTHCAPACITY.ID
      left join dbo.ESTIMATEDWEALTH on WEALTHCAPACITY.ESTIMATEDWEALTHID = ESTIMATEDWEALTH.ID
    left join dbo.RELATIONSHIP ROOT_REL on ROOT_REL.RELATIONSHIPCONSTITUENTID = @ROOTID and ROOT_REL.RECIPROCALCONSTITUENTID = CONSTITUENT.ID
    left join dbo.RELATIONSHIPTYPECODE ROOT_RTC on ROOT_REL.reciprocaltypecodeID = ROOT_RTC.ID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
  where 
          (@ROOTID is null or RELATIONSHIP.RECIPROCALCONSTITUENTID in (
                      select
                          ROOTRELATIONSHIP.RECIPROCALCONSTITUENTID
                      from
                          dbo.UFN_RELATIONSHIPMAP_GETRELATIONSHIPS(@ROOTID, @CURRENTDATE, @TOPN) as ROOTRELATIONSHIP
            )
    )
),
RELATIONSHIPS_CTE as
(
  select
      ROW_NUMBER() OVER(PARTITION BY RELATIONSHIPCONSTITUENTID, RECIPROCALCONSTITUENTID ORDER BY RELATIONSHIPTYPE DESC) as ROWNUM,
      ID,
      NAME,
      RELATIONSHIPTYPE,
      WEALTHDESCRIPTION,
      IMAGEKEY,
      STRENGTH,
      ISROOT,
      KEYNAME
      from RELATIONSHIPSET_CTE
)
select    
    CONSTITUENT.ID,
    (
        rtrim(NF.NAME + ' ' +
            coalesce(
                replace(
                    stuff(
                        (select '' + STATUS from
                        (select ',(Deceased)' STATUS
                            from dbo.DECEASEDCONSTITUENT DC
                            where DC.ID = CONSTITUENT.ID
                        union all
                        select ',(Inactive)' STATUS
                            from dbo.CONSTITUENT C
                            where C.ID = CONSTITUENT.ID
                            and C.ISINACTIVE=1
                    ) as SUBQ for xml path(''))
                    ,1,1,'')
                , '),(', ', ')
            ,'')
        )
    ) as NAME,
    '(Prospect)' as DESCRIPTION,
    case
        when CONSTITUENT.ISORGANIZATION = 1 then 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.organization.png'
        when CONSTITUENT.ISGROUP = 1 then 
            case
                when GROUPDATA.GROUPTYPECODE = 0 then 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.households_32.png'
            else 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.groups_32.png'
            end
        else 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.individual.png'
    end IMAGEKEY,
    null STRENGTH,
    cast(1 as bit) ISROOT,
    CONSTITUENT.KEYNAME
    from dbo.CONSTITUENT
    left join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
  outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
    where CONSTITUENT.ID = @CONSTITUENTID
union all

 select
      ID,
      NAME,
      '(' + dbo.UDA_BUILDLISTWITHDELIMITER(RELATIONSHIPTYPE, char(10))+ ')' + char(10) + WEALTHDESCRIPTION as DESCRIPTION,
      IMAGEKEY,
      STRENGTH,
      ISROOT,
      KEYNAME
 from RELATIONSHIPS_CTE
 where ROWNUM <= 3
   group by 
      ID,
      NAME,
      WEALTHDESCRIPTION,
      IMAGEKEY,
      STRENGTH,
      ISROOT,
      KEYNAME

order by
    STRENGTH, 
    CONSTITUENT.KEYNAME, 
    NAME;