USP_DATALIST_MKTGROUPSEGMENTS

Displays a list of all segments and indicates if they are in a specified group.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTFAMILYTYPECODE tinyint IN Segment family type code
@SEGMENTGROUPID uniqueidentifier IN Segment group ID
@ALLSEGMENTS tinyint IN Show all segments
@BASECURRENCYID uniqueidentifier IN Base currency ID
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


CREATE procedure dbo.[USP_DATALIST_MKTGROUPSEGMENTS]
(
  @SEGMENTFAMILYTYPECODE tinyint,
  @SEGMENTGROUPID uniqueidentifier = null,
  @ALLSEGMENTS tinyint = 1,
  @BASECURRENCYID uniqueidentifier = null,
  @SECURITYFEATUREID uniqueidentifier = null,
  @SECURITYFEATURETYPE tinyint = null,
  @CURRENTAPPUSERID uniqueidentifier = null
)
as
  set nocount on;

  if @BASECURRENCYID is null
    select 
      [MKTSEGMENT].[ID],
      [MKTSEGMENT].[NAME],
      [MKTSEGMENT].[CODE],
      [MKTSEGMENT].[DESCRIPTION],
      [MKTSEGMENT].[SEGMENTTYPE],
      (case when dbo.[UFN_MKTSEGMENT_ISINUSE]([MKTSEGMENT].[ID]) = 0 then 'No' else 'Yes' end) as [INUSE],
      (case when exists(select * from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID) then 1 else 0 end) as [INGROUP],
      isnull((select [SEQUENCE] from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID), 9999999) as [SEQUENCE]
    from dbo.[MKTSEGMENT]
    left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
    left outer join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
    where [MKTSEGMENT].[SEGMENTFAMILYTYPECODE] = @SEGMENTFAMILYTYPECODE
    and (@ALLSEGMENTS = 0 or exists (select * from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID))
    /* exclude segments from inactive lists */
    and ([MKTLIST].[ISINACTIVE] is null or [MKTLIST].[ISINACTIVE] = 0)
    /* Exclude appeal mailing segments */
    and not exists(select 1
                   from dbo.[APPEALMAILING]
                   inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [APPEALMAILING].[MKTSEGMENTATIONSEGMENTID]
                   where [MKTSEGMENTATIONSEGMENT].[SEGMENTID] = [MKTSEGMENT].[ID])
    /* Exclude system records */
    and [MKTSEGMENT].[ISSYSTEM] = 0
    /* Exclude historical segments */
    and [MKTSEGMENT].[ISHISTORICAL] = 0
    and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[MKTSEGMENT].[SITEID] or (SITEID is null and [MKTSEGMENT].[SITEID] is null)))
    order by isnull((select [SEQUENCE] from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID), 9999999), [MKTSEGMENT].[NAME];    

  else
    select 
      [MKTSEGMENT].[ID],
      [MKTSEGMENT].[NAME],
      [MKTSEGMENT].[CODE],
      [MKTSEGMENT].[DESCRIPTION],
      [MKTSEGMENT].[SEGMENTTYPE],
      (case when dbo.[UFN_MKTSEGMENT_ISINUSE]([MKTSEGMENT].[ID]) = 0 then 'No' else 'Yes' end) as [INUSE],
      (case when exists(select * from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID) then 1 else 0 end) as [INGROUP],
      isnull((select [SEQUENCE] from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID), 9999999) as [SEQUENCE]
    from dbo.[MKTSEGMENT]
    left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
    left outer join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
    where [MKTSEGMENT].[SEGMENTFAMILYTYPECODE] = @SEGMENTFAMILYTYPECODE
    and ([MKTSEGMENT].[BASECURRENCYID] is null or [MKTSEGMENT].[BASECURRENCYID] = @BASECURRENCYID)
    and (@ALLSEGMENTS = 0 or exists (select * from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID))
    /* exclude segments from inactive lists */
    and ([MKTLIST].[ISINACTIVE] is null or [MKTLIST].[ISINACTIVE] = 0)
    /* Exclude appeal mailing segments */
    and not exists(select 1
                   from dbo.[APPEALMAILING]
                   inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [APPEALMAILING].[MKTSEGMENTATIONSEGMENTID]
                   where [MKTSEGMENTATIONSEGMENT].[SEGMENTID] = [MKTSEGMENT].[ID])
    /* Exclude system records */
    and [MKTSEGMENT].[ISSYSTEM] = 0
    /* Exclude historical segments */
    and [MKTSEGMENT].[ISHISTORICAL] = 0
    and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[MKTSEGMENT].[SITEID] or (SITEID is null and [MKTSEGMENT].[SITEID] is null)))
    order by isnull((select [SEQUENCE] from dbo.[MKTGROUPSEGMENTS] where [MKTSEGMENT].[ID] = [SEGMENTID] and [SEGMENTGROUPID] = @SEGMENTGROUPID), 9999999), [MKTSEGMENT].[NAME];  

  return 0;