USP_DATALIST_PLANITEMHIERARCHYCALENDARITEM

Displays all child marketing plan items and tasks for a given marketing plan item on the organization's calendar.

Parameters

Parameter Parameter Type Mode Description
@PLANITEMS xml IN Plans
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date
@INCLUDETASKS bit IN Include tasks
@DATEFILTER tinyint IN Date

Definition

Copy


CREATE procedure dbo.[USP_DATALIST_PLANITEMHIERARCHYCALENDARITEM]
(
  @PLANITEMS xml = null,
  @STARTDATE datetime = null,
  @ENDDATE datetime = null,
  @INCLUDETASKS bit = null,
  @DATEFILTER tinyint = null
)
as
  set nocount on;
  select
    [MKTMARKETINGPLANITEM].[ID],
    [MKTMARKETINGPLANITEM].[PARENTMARKETINGPLANITEMID] as [PARENTID],
    [MKTMARKETINGPLANITEM].[NAME],
    dbo.[UFN_DATE_EARLIESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[STARTDATE]) as [STARTDATE],
    case [MKTMARKETINGPLANITEM].[ENDDATE] 
      when '00000000' then dbo.[UFN_DATE_EARLIESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[STARTDATE])
      else dbo.[UFN_DATE_LATESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[ENDDATE]) 
    end as [ENDDATE],
    [MKTMARKETINGPLANITEMTEMPLATEITEM].[BACKCOLOR],
    0 as [TYPECODE]
  from dbo.[MKTMARKETINGPLANITEM]
  left join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] on ([MKTMARKETINGPLANITEM].[MARKETINGPLANID] = [MKTMARKETINGPLANITEMTEMPLATEITEM].[MARKETINGPLANID] and [MKTMARKETINGPLANITEM].[LEVEL] = [MKTMARKETINGPLANITEMTEMPLATEITEM].[LEVEL])
  inner join @PLANITEMS.nodes('/PLANITEMS/ITEM') T(c) on ([MKTMARKETINGPLANITEM].[ID] = T.c.value('(ID)[1]', 'uniqueidentifier'))
  where
    (
      (@STARTDATE is null and @ENDDATE is null)
      or (@STARTDATE is not null and @ENDDATE is null and dbo.[UFN_DATE_LATESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[STARTDATE]) >= @STARTDATE)
      or (@STARTDATE is null and @ENDDATE is not null and dbo.[UFN_DATE_EARLIESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[STARTDATE]) <= @ENDDATE)
      or (@STARTDATE is not null and @ENDDATE is not null and dbo.[UFN_DATE_EARLIESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[STARTDATE]) <= @ENDDATE and (@STARTDATE <= dbo.[UFN_DATE_LATESTFROMFUZZYDATE]([MKTMARKETINGPLANITEM].[ENDDATE]) or [MKTMARKETINGPLANITEM].[ENDDATE] = '00000000'))
    )
    and T.c.value('(CHECKED)[1]', 'bit') = 1
  union
  select
    [MKTMARKETINGPLANITEMTASK].[ID],
    [MKTMARKETINGPLANITEMTASK].[MARKETINGPLANITEMID] as [PARENTID],
    [MKTMARKETINGPLANITEMTASK].[SUBJECT] as [NAME],
    [MKTMARKETINGPLANITEMTASK].[DUEDATE] as [STARTDATE],
    dbo.[UFN_DATE_LATESTFROMFUZZYDATE]([MKTMARKETINGPLANITEMTASK].[DUEDATE]) as [ENDDATE],
    -16777216 as [BACKCOLOR], -- black

    1 as [TYPECODE]
  from dbo.[MKTMARKETINGPLANITEMTASK]
  inner join dbo.[MKTMARKETINGPLANITEM] on [MKTMARKETINGPLANITEM].[ID] = [MKTMARKETINGPLANITEMTASK].[MARKETINGPLANITEMID]
  inner join @PLANITEMS.nodes('/PLANITEMS/ITEM') T(c) on [MKTMARKETINGPLANITEM].[ID] = T.c.value('(ID)[1]', 'uniqueidentifier')
  where
    (
      (@STARTDATE is null and @ENDDATE is null)
      or (@STARTDATE is not null and @ENDDATE is null and dbo.[UFN_DATE_LATESTFROMFUZZYDATE]([MKTMARKETINGPLANITEMTASK].[DUEDATE]) >= @STARTDATE)
      or (@STARTDATE is null and @ENDDATE is not null and dbo.[UFN_DATE_EARLIESTFROMFUZZYDATE]([MKTMARKETINGPLANITEMTASK].[DUEDATE]) <= @ENDDATE)
      or (@STARTDATE is not null and @ENDDATE is not null and dbo.[UFN_DATE_EARLIESTFROMFUZZYDATE]([MKTMARKETINGPLANITEMTASK].[DUEDATE]) between @STARTDATE and @ENDDATE)
    )
    and @INCLUDETASKS = 1
    and T.c.value('(CHECKED)[1]', 'bit') = 1
  union
  select 
    [MKTMARKETINGPLANITEM].[ID],
    [MKTMARKETINGPLANITEM].[PARENTMARKETINGPLANITEMID] as [PARENTID],
    [MKTMARKETINGPLANITEM].[NAME] + ' - Mail date' as [NAME],
    [MKTMARKETINGPLANITEM].[MAILDATE] as [STARTDATE],
    [MKTMARKETINGPLANITEM].[MAILDATE] as [ENDDATE],
    [MKTMARKETINGPLANITEMTEMPLATEITEM].[BACKCOLOR],
    0 as [TYPECODE]
  from dbo.[MKTMARKETINGPLANITEM]
  left join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] on ([MKTMARKETINGPLANITEM].[MARKETINGPLANID] = [MKTMARKETINGPLANITEMTEMPLATEITEM].[MARKETINGPLANID] and [MKTMARKETINGPLANITEM].[LEVEL] = [MKTMARKETINGPLANITEMTEMPLATEITEM].[LEVEL])
  inner join @PLANITEMS.nodes('/PLANITEMS/ITEM') T(c) on ([MKTMARKETINGPLANITEM].[ID] = T.c.value('(ID)[1]', 'uniqueidentifier'))
  where
    (
      (
       (@STARTDATE is null and @ENDDATE is null)
        or (@STARTDATE is not null and @ENDDATE is null and [MAILDATE] >= @STARTDATE)
        or (@STARTDATE is null and @ENDDATE is not null and [MAILDATE] <= @ENDDATE)
        or (@STARTDATE is not null and @ENDDATE is not null and [MAILDATE] between @STARTDATE and @ENDDATE)
      )
      and [MKTMARKETINGPLANITEM].[MAILDATE] is not null
    )
    and T.c.value('(CHECKED)[1]', 'bit') = 1