USP_DATALIST_SELECTIONSCALENDARITEM
Displays appeal mailing items on the organization's calendar.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | Start date |
@ENDDATE | datetime | IN | End date |
@SELECTIONS | xml | IN | |
@INCLUDEMAILINGSWITHOUTSELECTIONS | bit | IN | Include mailings with no selections |
@INCLUDETASKS | bit | IN | Include tasks |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_SELECTIONSCALENDARITEM
(
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@SELECTIONS xml = null,
@INCLUDEMAILINGSWITHOUTSELECTIONS bit = null,
@INCLUDETASKS bit = null
)
as
set nocount on;
select distinct
MKTSEGMENTATION.ID,
MKTSEGMENTATION.NAME + ' - ' + APPEAL.NAME as NAME,
MKTSEGMENTATION.MAILDATE,
0, --Mailing
MKTSEGMENTATION.DESCRIPTION,
MKTSEGMENTATION.ID as PARENTID
from
dbo.MKTSEGMENTATION
inner join
dbo.APPEALMAILING on APPEALMAILING.ID = MKTSEGMENTATION.ID
left join
dbo.MKTSEGMENTATIONSEGMENT on MKTSEGMENTATIONSEGMENT.SEGMENTATIONID = MKTSEGMENTATION.ID
left join
dbo.MKTSEGMENT on MKTSEGMENT.ID = MKTSEGMENTATIONSEGMENT.SEGMENTID
left join
dbo.MKTSEGMENTSELECTION on MKTSEGMENTSELECTION.SEGMENTID = MKTSEGMENT.ID
left join
dbo.IDSETREGISTER on IDSETREGISTER.ID = MKTSEGMENTSELECTION.SELECTIONID
left join
dbo.APPEALMAILINGSETUPSELECTION on APPEALMAILINGSETUPSELECTION.APPEALMAILINGSETUPID = MKTSEGMENTATION.ID
left join
dbo.APPEAL on APPEAL.ID = APPEALMAILING.APPEALID
where
(MKTSEGMENTATION.MAILDATE is not null)
and
(
( (MKTSEGMENTATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
or ( (MKTSEGMENTATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
or ( (MKTSEGMENTATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
)
and
(
(
IDSETREGISTER.ID is null
and APPEALMAILINGSETUPSELECTION.SELECTIONID is null
and @INCLUDEMAILINGSWITHOUTSELECTIONS = 1
)
or IDSETREGISTER.ID in (
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID'
from
@SELECTIONS.nodes('/SELECTIONS/ITEM') T(c)
where
T.c.value('(CHECKED)[1]','bit') = 1
)
or APPEALMAILINGSETUPSELECTION.SELECTIONID in (
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID'
from
@SELECTIONS.nodes('/SELECTIONS/ITEM') T(c)
where
T.c.value('(CHECKED)[1]','bit') = 1
)
)
union
select distinct
APPEALMAILINGTASK.ID,
APPEALMAILINGTASK.SUBJECT,
dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE),
1, --Task
'' DESCRIPTION,
APPEALMAILINGTASK.SEGMENTATIONID as PARENTID
from
dbo.APPEALMAILINGTASK
inner join
dbo.MKTSEGMENTATION on MKTSEGMENTATION.ID = APPEALMAILINGTASK.SEGMENTATIONID
inner join
dbo.APPEALMAILING on APPEALMAILING.ID = MKTSEGMENTATION.ID
left join
dbo.MKTSEGMENTATIONSEGMENT on MKTSEGMENTATIONSEGMENT.SEGMENTATIONID = MKTSEGMENTATION.ID
left join
dbo.MKTSEGMENT on MKTSEGMENT.ID = MKTSEGMENTATIONSEGMENT.SEGMENTID
left join
dbo.MKTSEGMENTSELECTION on MKTSEGMENTSELECTION.SEGMENTID = MKTSEGMENT.ID
left join
dbo.IDSETREGISTER on IDSETREGISTER.ID = MKTSEGMENTSELECTION.SELECTIONID
left join
dbo.APPEALMAILINGSETUPSELECTION on APPEALMAILINGSETUPSELECTION.APPEALMAILINGSETUPID = MKTSEGMENTATION.ID
where
(APPEALMAILINGTASK.DATEDUE <> '00000000')
and
(
( (dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
or ( (dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
or ( (dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
)
and @INCLUDETASKS = 1
and
(
(
IDSETREGISTER.ID is null
and APPEALMAILINGSETUPSELECTION.SELECTIONID is null
and @INCLUDEMAILINGSWITHOUTSELECTIONS = 1
)
or IDSETREGISTER.ID in (
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID'
from
@SELECTIONS.nodes('/SELECTIONS/ITEM') T(c)
where
T.c.value('(CHECKED)[1]','bit') = 1
)
or APPEALMAILINGSETUPSELECTION.SELECTIONID in (
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID'
from
@SELECTIONS.nodes('/SELECTIONS/ITEM') T(c)
where
T.c.value('(CHECKED)[1]','bit') = 1
)
)
order by NAME