UFN_GROUPCORRESPONDENCELIST_QUERY
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@DATEFILTER | tinyint | IN | |
@CORRESPONDENCETYPECODE | smallint | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SITEFILTERMODE | tinyint | IN | |
@SITESSELECTED | xml | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN | |
@CHANNEL | smallint | IN |
Definition
Copy
CREATE function dbo.UFN_GROUPCORRESPONDENCELIST_QUERY
(
@CONSTITUENTID uniqueidentifier,
@DATEFILTER tinyint = null,
@CORRESPONDENCETYPECODE smallint = null,
@CURRENTAPPUSERID uniqueidentifier,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@CHANNEL smallint = 99
)
returns @CORRESPONDENCES table
(
ID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
DATESENT datetime,
NAME nvarchar(200),
CORRESPONDENCETYPECODE smallint,
CORRESPONDENCETYPE nvarchar(200),
DETAILS nvarchar(200),
PROCESSOR nvarchar(200),
COMMENTS nvarchar(255),
RECORDID nvarchar(200),
FINDERNUMBER bigint,
TIMEFRAMETEXT nvarchar(200),
TIMEFRAMEGROUPSORT nvarchar(200),
HASPERMISSIONS bit,
HASRESPONSES bit,
PREVIEWDATAFORM uniqueidentifier,
PREVIEWDATAFORMRECORDID nvarchar(200),
SITE nvarchar(200),
CHANNEL nvarchar(200)
)
as
begin
declare @ISSYSADMIN bit = 0;
select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;
declare @QUERYVIEWID uniqueidentifier;
set @QUERYVIEWID = 'ab0db3a0-c3df-4973-a314-65f201d7248b';
declare @USERGRANTEDALLCONSTITUENTS bit = 0;
set @USERGRANTEDALLCONSTITUENTS = dbo.UFN_SECURITY_APPUSER_GRANTED_QUERYVIEW_IN_NONRACROLE(@CURRENTAPPUSERID, @QUERYVIEWID);
declare @ENTERPRISEINSTALLED bit = dbo.[UFN_INSTALLEDPRODUCTS_PRODUCTIS]('3117D2C8-7F46-42F2-ABEB-B654F2F63046');
if @DATEFILTER is null
begin
set @DATEFILTER = 6; -- current month;
end
if @CORRESPONDENCETYPECODE is null
begin
set @CORRESPONDENCETYPECODE = 99; -- all;
end
declare @STARTDATE datetime;
declare @ENDDATE datetime;
declare @ASOFDATE datetime = getdate();
set @STARTDATE = @ASOFDATE;
set @ENDDATE = @STARTDATE;
-- @DATEFILTER=1 is for today only
if @DATEFILTER=2 begin
-- Next 7 days
set @ENDDATE = dateadd(day,7,@ENDDATE);
end else if @DATEFILTER=3 begin
-- Last 7 days
set @STARTDATE = dateadd(day,-7,@STARTDATE);
end else if @DATEFILTER=4 begin
-- Next 30 days
set @ENDDATE = dateadd(day,30,@ENDDATE);
end else if @DATEFILTER=5 begin
-- Last 30 days
set @STARTDATE = dateadd(day,-30,@STARTDATE);
end else if @DATEFILTER=6 begin
-- Current month
set @STARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=7 begin
-- Previous month
set @STARTDATE = dbo.UFN_DATE_LASTMONTH_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTMONTH_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=8 begin
-- Next 12 months
set @ENDDATE = dateadd(year,1,@ENDDATE);
end else if @DATEFILTER=9 begin
-- Last 12 months
set @STARTDATE = dateadd(year,-1,@STARTDATE);
end else if @DATEFILTER=10 begin
-- All dates
set @STARTDATE = '17530102';
set @ENDDATE = '99991230';
end else if @DATEFILTER=11 begin
-- Current fiscal year
set @STARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=12 begin
-- Previous fiscal year
set @STARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(dateadd(year,-1,@STARTDATE), 0);
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(dateadd(year,-1,@ENDDATE), 1);
end else if @DATEFILTER=13 begin
-- Next fiscal year
set @STARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(dateadd(year,1,@STARTDATE), 0);
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(dateadd(year,1,@ENDDATE), 1);
end else if @DATEFILTER=14 begin
-- Within 7 days
set @STARTDATE = dateadd(day,-7,@STARTDATE);
set @ENDDATE = dateadd(day,7,@ENDDATE);
end else if @DATEFILTER=15 begin
-- Within 30 days
set @STARTDATE = dateadd(day,-30,@STARTDATE);
set @ENDDATE = dateadd(day,30,@ENDDATE);
end else if @DATEFILTER=16 begin
-- This calendar year
set @STARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=17 begin
-- Last calendar year
set @STARTDATE = dbo.UFN_DATE_LASTCALENDARYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTCALENDARYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=18 begin
-- Next calendar year
set @STARTDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=19 begin
-- This week
set @STARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=20 begin
-- Last week
set @STARTDATE = dbo.UFN_DATE_LASTWEEK_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTWEEK_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=21 begin
-- Next week
set @STARTDATE = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTWEEK_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=22 begin
-- Next month
set @STARTDATE = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTMONTH_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=23 begin
-- This quarter
set @STARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=24 begin
-- Last quarter
set @STARTDATE = dbo.UFN_DATE_LASTQUARTER_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTQUARTER_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=25 begin
-- Next quarter
set @STARTDATE = dbo.UFN_DATE_NEXTQUARTER_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTQUARTER_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=26 begin
--No date assigned
set @STARTDATE = null
set @ENDDATE = null
end else if @DATEFILTER=27 begin
--Remainder of the month
set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@ENDDATE,1);
end else if @DATEFILTER=28 begin
--Remainder of this fiscal year
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@ENDDATE,1);
end else if @DATEFILTER=29 begin
-- Last 6 months
set @STARTDATE = dateadd(month,-6,@STARTDATE);
end else if @DATEFILTER=30 begin
-- Last 24 months
set @STARTDATE = dateadd(year,-2,@STARTDATE);
end
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
declare @CURRENTDATE datetime = getdate();
declare @THISMONTHSTART datetime = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@CURRENTDATE, 0);
declare @LASTMONTHSTART datetime = dateadd(month, -1, @THISMONTHSTART);
declare @TWOMONTHSAGOSTART datetime = dateadd(month, -2, @THISMONTHSTART);
with INTERACTIONS
as (
-- group member general correspondence
select convert(nchar(36), C.[ID]) ID,
C.CONSTITUENTID CONSTITUENTID,
C.[DATESENT] DATESENT,
0 CORRESPONDENCETYPECODE,
'General Correspondence' CORRESPONDENCETYPE,
CC.NAME DETAILS,
CA.[USERNAME] PROCESSOR,
C.[COMMENTS] COMMENTS,
convert(nchar(36), CORRESPONDENCEPROCESSSTATUS.PARAMETERSETID) RECORDID,
0 FINDERNUMBER,
case
when exists (
select 1
from dbo.CONSTITUENTCORRESPONDENCERESPONSE
where CONSTITUENTCORRESPONDENCERESPONSE.CONSTITUENTCORRESPONDENCEID = C.ID
)
then convert(bit, 1)
else convert(bit, 0)
end HASRESPONSES,
'E91F460E-43C0-40DF-BDA9-1D5346E6B535' as PREVIEWDATAFORM,
convert(nchar(36), C.[ID]) as PREVIEWDATAFORMRECORDID,
CC.[SITEID] as SITEID,
case --If correspondence doesn't have a code, the record is unsecured
when CC.ID is null
then 0
else 1
end as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[CONSTITUENTCORRESPONDENCE] C
left join dbo.[CORRESPONDENCECODE] CC
on CC.[ID] = C.[CORRESPONDENCECODEID]
left join dbo.[CORRESPONDENCEPROCESSRUNHISTORY]
on C.CORRESPONDENCEPROCESSRUNHISTORYID = CORRESPONDENCEPROCESSRUNHISTORY.ID
left join dbo.[CORRESPONDENCEPROCESSSTATUS]
on CORRESPONDENCEPROCESSSTATUS.ID = CORRESPONDENCEPROCESSRUNHISTORY.CORRESPONDENCEPROCESSSTATUSID
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = C.[ADDEDBYID]
inner join dbo.GROUPMEMBER GM
on C.CONSTITUENTID = GM.MEMBERID
where GM.GROUPID = @CONSTITUENTID
and (
@CORRESPONDENCETYPECODE = 0
or @CORRESPONDENCETYPECODE = 99
)
and (
C.[DATESENT] >= @STARTDATE
and C.[DATESENT] <= @ENDDATE
)
and @ENTERPRISEINSTALLED = 1
and @CHANNEL = 99
union all
-- group general correspondence
select convert(nchar(36), C.[ID]) ID,
C.CONSTITUENTID CONSTITUENTID,
C.[DATESENT] DATESENT,
0 CORRESPONDENCETYPECODE,
'General Correspondence' CORRESPONDENCETYPE,
CC.NAME DETAILS,
CA.[USERNAME] PROCESSOR,
C.[COMMENTS] COMMENTS,
convert(nchar(36), CORRESPONDENCEPROCESSSTATUS.PARAMETERSETID) RECORDID,
0 FINDERNUMBER,
case
when exists (
select 1
from dbo.CONSTITUENTCORRESPONDENCERESPONSE
where CONSTITUENTCORRESPONDENCERESPONSE.CONSTITUENTCORRESPONDENCEID = C.ID
)
then convert(bit, 1)
else convert(bit, 0)
end HASRESPONSES,
'E91F460E-43C0-40DF-BDA9-1D5346E6B535' as PREVIEWDATAFORM,
convert(nchar(36), C.[ID]) as PREVIEWDATAFORMRECORDID,
CC.[SITEID] as SITEID,
case --If correspondence doesn't have a code, the record is unsecured
when CC.ID is null
then 0
else 1
end as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[CONSTITUENTCORRESPONDENCE] C
left join dbo.[CORRESPONDENCECODE] CC
on CC.[ID] = C.[CORRESPONDENCECODEID]
left join dbo.[CORRESPONDENCEPROCESSRUNHISTORY]
on C.CORRESPONDENCEPROCESSRUNHISTORYID = CORRESPONDENCEPROCESSRUNHISTORY.ID
left join dbo.[CORRESPONDENCEPROCESSSTATUS]
on CORRESPONDENCEPROCESSSTATUS.ID = CORRESPONDENCEPROCESSRUNHISTORY.CORRESPONDENCEPROCESSSTATUSID
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = C.[ADDEDBYID]
where C.CONSTITUENTID = @CONSTITUENTID
and (
@CORRESPONDENCETYPECODE = 0
or @CORRESPONDENCETYPECODE = 99
)
and (
C.[DATESENT] >= @STARTDATE
and C.[DATESENT] <= @ENDDATE
)
and @ENTERPRISEINSTALLED = 1
and @CHANNEL = 99
union all
-- group member acknowledgements
select convert(nchar(36), R.[ID]),
R.CONSTITUENTID,
RL.[ACKNOWLEDGEDATE],
1,
'Acknowledgement',
case
when RL.MKTPACKAGEID is not null
then (
select COMMUNICATIONLETTER.NAME
from dbo.COMMUNICATIONLETTER
where COMMUNICATIONLETTER.EMAILPACKAGEID = RL.MKTPACKAGEID
or COMMUNICATIONLETTER.MAILPACKAGEID = RL.MKTPACKAGEID
)
else AP.[NAME] + case
when AP.[NAME] is not null
and AP.[NAME] <> ''
and LC.[NAME] is not null
and LC.[NAME] <> ''
then ' - '
else ''
end + LC.[NAME]
end,
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'7C0968B7-61C7-44EA-8F8D-96C139A42AD0',
convert(nchar(36), R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, 0) as CHANNEL
from dbo.[REVENUELETTER] RL
left join dbo.[LETTERCODE] LC
on LC.[ID] = RL.[LETTERCODEID]
left join dbo.[ACKNOWLEDGEMENTPROCESSSTATUS] APS
on APS.[ID] = RL.[ACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = RL.[ACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[ACKNOWLEDGEMENTPROCESS] AP
on AP.[ID] = APS.[PARAMETERSETID]
left join dbo.[REVENUE] R
on R.[ID] = RL.[REVENUEID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = RL.[ADDEDBYID]
inner join dbo.GROUPMEMBER GM
on R.CONSTITUENTID = GM.MEMBERID
left join dbo.BUSINESSPROCESSINSTANCE BPI
on AP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
left join dbo.MKTPACKAGE
on RL.MKTPACKAGEID = MKTPACKAGE.ID
where GM.GROUPID = @CONSTITUENTID
and RL.[ACKNOWLEDGEDATE] is not null
and (
@CORRESPONDENCETYPECODE = 1
or @CORRESPONDENCETYPECODE = 99
)
and (
RL.[ACKNOWLEDGEDATE] >= @STARTDATE
and RL.[ACKNOWLEDGEDATE] <= @ENDDATE
)
and (
@CHANNEL = 99
or MKTPACKAGE.ID is null
or MKTPACKAGE.CHANNELCODE = @CHANNEL
)
union all
-- group acknowledgements
select convert(nchar(36), R.[ID]),
R.CONSTITUENTID,
RL.[ACKNOWLEDGEDATE],
1,
'Acknowledgement',
case
when RL.MKTPACKAGEID is not null
then (
select COMMUNICATIONLETTER.NAME
from dbo.COMMUNICATIONLETTER
where COMMUNICATIONLETTER.EMAILPACKAGEID = RL.MKTPACKAGEID
or COMMUNICATIONLETTER.MAILPACKAGEID = RL.MKTPACKAGEID
)
else AP.[NAME] + case
when AP.[NAME] is not null
and AP.[NAME] <> ''
and LC.[NAME] is not null
and LC.[NAME] <> ''
then ' - '
else ''
end + LC.[NAME]
end,
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'7C0968B7-61C7-44EA-8F8D-96C139A42AD0',
convert(nchar(36), R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, 0) as CHANNEL
from dbo.[REVENUELETTER] RL
left join dbo.[LETTERCODE] LC
on LC.[ID] = RL.[LETTERCODEID]
left join dbo.[ACKNOWLEDGEMENTPROCESSSTATUS] APS
on APS.[ID] = RL.[ACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = RL.[ACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[ACKNOWLEDGEMENTPROCESS] AP
on AP.[ID] = APS.[PARAMETERSETID]
left join dbo.[REVENUE] R
on R.[ID] = RL.[REVENUEID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = RL.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI
on AP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
left join dbo.MKTPACKAGE
on RL.MKTPACKAGEID = MKTPACKAGE.ID
where R.CONSTITUENTID = @CONSTITUENTID
and RL.[ACKNOWLEDGEDATE] is not null
and (
@CORRESPONDENCETYPECODE = 1
or @CORRESPONDENCETYPECODE = 99
)
and (
RL.[ACKNOWLEDGEDATE] >= @STARTDATE
and RL.[ACKNOWLEDGEDATE] <= @ENDDATE
)
and (
@CHANNEL = 99
or MKTPACKAGE.ID is null
or MKTPACKAGE.CHANNELCODE = @CHANNEL
)
union all
-- group member receipts
select convert(nchar(36), R.[ID]),
R.CONSTITUENTID,
RECEIPT.[RECEIPTDATE],
2,
'Receipt',
RP.[NAME],
AU.USERNAME,
'',
'',
0,
convert(bit, 0),
'44E05002-D3C8-491F-AE69-C71594AE8C4C',
convert(nchar(36), R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[REVENUE] R
inner join dbo.[REVENUERECEIPT] RECEIPT
on R.ID = RECEIPT.REVENUEID
left join dbo.[RECEIPTINGPROCESSSTATUS] RPS
on RPS.[ID] = RECEIPT.[RECEIPTINGPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = RECEIPT.[RECEIPTINGPROCESSSTATUSID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[RECEIPTINGPROCESS] RP
on RP.[ID] = RPS.[PARAMETERSETID]
inner join dbo.GROUPMEMBER GM
on R.CONSTITUENTID = GM.MEMBERID
left join dbo.BUSINESSPROCESSINSTANCE BPI
on RP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where GM.GROUPID = @CONSTITUENTID
and RECEIPT.[RECEIPTDATE] is not null
and (
@CORRESPONDENCETYPECODE = 2
or @CORRESPONDENCETYPECODE = 99
)
and (
RECEIPT.[RECEIPTDATE] >= @STARTDATE
and RECEIPT.[RECEIPTDATE] <= @ENDDATE
)
and @CHANNEL = 99
union all
-- group receipts
select convert(nchar(36), R.[ID]),
R.CONSTITUENTID,
RECEIPT.[RECEIPTDATE],
2,
'Receipt',
RP.[NAME],
AU.USERNAME,
'',
'',
0,
convert(bit, 0),
'44E05002-D3C8-491F-AE69-C71594AE8C4C',
convert(nchar(36), R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[REVENUE] R
inner join dbo.[REVENUERECEIPT] RECEIPT
on R.ID = RECEIPT.REVENUEID
left join dbo.[RECEIPTINGPROCESSSTATUS] RPS
on RPS.[ID] = RECEIPT.[RECEIPTINGPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = RECEIPT.[RECEIPTINGPROCESSSTATUSID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[RECEIPTINGPROCESS] RP
on RP.[ID] = RPS.[PARAMETERSETID]
left join dbo.BUSINESSPROCESSINSTANCE BPI
on RP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where R.CONSTITUENTID = @CONSTITUENTID
and RECEIPT.[RECEIPTDATE] is not null
and (
@CORRESPONDENCETYPECODE = 2
or @CORRESPONDENCETYPECODE = 99
)
and (
RECEIPT.[RECEIPTDATE] >= @STARTDATE
and RECEIPT.[RECEIPTDATE] <= @ENDDATE
)
and @CHANNEL = 99
union all
-- group member reminders
select convert(nchar(36), R.[ID]),
R.CONSTITUENTID,
PRS.[SENTDATE],
3,
'Reminder',
PRP.[NAME],
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'A5F58EB7-5775-4B6F-9C69-CD91CD5A0103',
convert(nchar(36), R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, 0) as CHANNEL
from dbo.[PLEDGEREMINDERSENT] PRS
left join dbo.[PLEDGEREMINDERPROCESSSTATUS] PRPS
on PRPS.[ID] = PRS.[PLEDGEREMINDERPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = PRS.[PLEDGEREMINDERPROCESSSTATUSID]
left join dbo.[PLEDGEREMINDERPROCESS] PRP
on PRP.[ID] = PRPS.[PARAMETERSETID]
left join dbo.[REVENUE] R
on R.[ID] = PRS.[REVENUEID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = PRS.[ADDEDBYID]
inner join dbo.GROUPMEMBER GM
on R.CONSTITUENTID = GM.MEMBERID
left join dbo.BUSINESSPROCESSINSTANCE BPI
on PRP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
left join dbo.MKTPACKAGE
on PRS.PACKAGEID = MKTPACKAGE.ID
where GM.GROUPID = @CONSTITUENTID
and PRS.[SENTDATE] is not null
and (
@CORRESPONDENCETYPECODE = 3
or @CORRESPONDENCETYPECODE = 99
)
and (
PRS.[SENTDATE] >= @STARTDATE
and PRS.[SENTDATE] <= @ENDDATE
)
and (
@CHANNEL = 99
or MKTPACKAGE.ID is null
or MKTPACKAGE.CHANNELCODE = @CHANNEL
)
union all
-- group reminders
select convert(nchar(36), R.[ID]),
R.CONSTITUENTID,
PRS.[SENTDATE],
3,
'Reminder',
PRP.[NAME],
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'A5F58EB7-5775-4B6F-9C69-CD91CD5A0103',
convert(nchar(36), R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, 0) as CHANNEL
from dbo.[PLEDGEREMINDERSENT] PRS
left join dbo.[PLEDGEREMINDERPROCESSSTATUS] PRPS
on PRPS.[ID] = PRS.[PLEDGEREMINDERPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = PRS.[PLEDGEREMINDERPROCESSSTATUSID]
left join dbo.[PLEDGEREMINDERPROCESS] PRP
on PRP.[ID] = PRPS.[PARAMETERSETID]
left join dbo.[REVENUE] R
on R.[ID] = PRS.[REVENUEID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = PRS.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI
on PRP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
left join dbo.MKTPACKAGE
on PRS.PACKAGEID = MKTPACKAGE.ID
where R.CONSTITUENTID = @CONSTITUENTID
and PRS.[SENTDATE] is not null
and (
@CORRESPONDENCETYPECODE = 3
or @CORRESPONDENCETYPECODE = 99
)
and (
PRS.[SENTDATE] >= @STARTDATE
and PRS.[SENTDATE] <= @ENDDATE
)
and (
@CHANNEL = 99
or MKTPACKAGE.ID is null
or MKTPACKAGE.CHANNELCODE = @CHANNEL
)
union all
-- group member planned gift acknowledgements
select convert(nchar(36), PG.[ID]),
PG.CONSTITUENTID,
PGL.[ACKNOWLEDGEDATE],
4,
'Planned Gift Acknowledgement',
PGAP.[NAME] + case
when PGAP.[NAME] is not null
and PGAP.[NAME] <> ''
and PGLC.[NAME] is not null
and PGLC.[NAME] <> ''
then ' - '
else ''
end + PGLC.[NAME],
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'F0E64049-598A-4900-8404-343C63DE7405',
convert(nchar(36), PG.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[PLANNEDGIFTLETTER] PGL
left join dbo.[PLANNEDGIFTLETTERCODE] PGLC
on PGLC.[ID] = PGL.[PLANNEDGIFTLETTERCODEID]
left join dbo.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUS] PGAPS
on PGAPS.[ID] = PGL.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = PGL.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[PLANNEDGIFTACKNOWLEDGEMENTPROCESS] PGAP
on PGAP.[ID] = PGAPS.[PARAMETERSETID]
left join dbo.[PLANNEDGIFT] PG
on PG.[ID] = PGL.[PLANNEDGIFTID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = PGL.[ADDEDBYID]
inner join dbo.GROUPMEMBER GM
on PG.CONSTITUENTID = GM.MEMBERID
left join dbo.BUSINESSPROCESSINSTANCE BPI
on PGAP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where GM.GROUPID = @CONSTITUENTID
and PGL.[ACKNOWLEDGEDATE] is not null
and (
@CORRESPONDENCETYPECODE = 4
or @CORRESPONDENCETYPECODE = 99
)
and (
PGL.[ACKNOWLEDGEDATE] >= @STARTDATE
and PGL.[ACKNOWLEDGEDATE] <= @ENDDATE
)
and @CHANNEL = 99
union all
-- group planned gift acknowledgements
select convert(nchar(36), PG.[ID]),
PG.CONSTITUENTID,
PGL.[ACKNOWLEDGEDATE],
4,
'Planned Gift Acknowledgement',
PGAP.[NAME] + case
when PGAP.[NAME] is not null
and PGAP.[NAME] <> ''
and PGLC.[NAME] is not null
and PGLC.[NAME] <> ''
then ' - '
else ''
end + PGLC.[NAME],
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'F0E64049-598A-4900-8404-343C63DE7405',
convert(nchar(36), PG.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
2 as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[PLANNEDGIFTLETTER] PGL
left join dbo.[PLANNEDGIFTLETTERCODE] PGLC
on PGLC.[ID] = PGL.[PLANNEDGIFTLETTERCODEID]
left join dbo.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUS] PGAPS
on PGAPS.[ID] = PGL.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = PGL.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[PLANNEDGIFTACKNOWLEDGEMENTPROCESS] PGAP
on PGAP.[ID] = PGAPS.[PARAMETERSETID]
left join dbo.[PLANNEDGIFT] PG
on PG.[ID] = PGL.[PLANNEDGIFTID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = PGL.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI
on PGAP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where PG.CONSTITUENTID = @CONSTITUENTID
and PGL.[ACKNOWLEDGEDATE] is not null
and (
@CORRESPONDENCETYPECODE = 4
or @CORRESPONDENCETYPECODE = 99
)
and (
PGL.[ACKNOWLEDGEDATE] >= @STARTDATE
and PGL.[ACKNOWLEDGEDATE] <= @ENDDATE
)
and @CHANNEL = 99
union all
-- group member event invitations
select upper(IVH.[PARAMETERSETID]) + convert(nchar(36), IVH.[EVENTID]),
IH.CONSTITUENTID,
isnull(IVH.MAILDATE, IVH.[DATECHANGED]),
5,
'Event Invitation',
IVH.[NAME] + case
when IVH.[NAME] is not null
and IVH.[NAME] <> ''
and E.[NAME] is not null
and E.[NAME] <> ''
then ' - '
else ''
end + E.[NAME],
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'D11CEB65-90F4-4152-9066-F9631835FD8D',
upper(IVH.[PARAMETERSETID]) + convert(nchar(36), IVH.[EVENTID]) as PREVIEWDATAFORMRECORDID,
null as SITEID,
0 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, - 1) as CHANNEL
from dbo.[INVITEEHISTORY] IH
left join dbo.[INVITATIONHISTORY] IVH
on IVH.[ID] = IH.[INVITATIONHISTORYID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = IVH.[BUSINESSPROCESSSTATUSID]
left join dbo.[EVENT] E
on E.[ID] = IH.[EVENTID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = IH.[ADDEDBYID]
inner join dbo.GROUPMEMBER GM
on IH.CONSTITUENTID = GM.MEMBERID
left join dbo.MKTPACKAGE
on IH.MKTPACKAGEID = MKTPACKAGE.ID
where GM.GROUPID = @CONSTITUENTID
and (
@CORRESPONDENCETYPECODE = 5
or @CORRESPONDENCETYPECODE = 99
)
and (
IVH.[DATECHANGED] >= @STARTDATE
and IVH.[DATECHANGED] <= @ENDDATE
)
and (
@CHANNEL = 99
or MKTPACKAGE.CHANNELCODE = @CHANNEL
)
union all
-- group event invitations
select upper(IVH.[PARAMETERSETID]) + convert(nchar(36), IVH.[EVENTID]),
IH.CONSTITUENTID,
isnull(IVH.MAILDATE, IVH.[DATECHANGED]),
5,
'Event Invitation',
IVH.[NAME] + case
when IVH.[NAME] is not null
and IVH.[NAME] <> ''
and E.[NAME] is not null
and E.[NAME] <> ''
then ' - '
else ''
end + E.[NAME],
case
when AU.USERNAME is not null
then AU.USERNAME
else CA.[USERNAME]
end,
'',
'',
0,
convert(bit, 0),
'D11CEB65-90F4-4152-9066-F9631835FD8D',
upper(IVH.[PARAMETERSETID]) + convert(nchar(36), IVH.[EVENTID]) as PREVIEWDATAFORMRECORDID,
null as SITEID,
0 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, - 1) as CHANNEL
from dbo.[INVITEEHISTORY] IH
left join dbo.[INVITATIONHISTORY] IVH
on IVH.[ID] = IH.[INVITATIONHISTORYID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS
on BPS.[ID] = IVH.[BUSINESSPROCESSSTATUSID]
left join dbo.[EVENT] E
on E.[ID] = IH.[EVENTID]
left join dbo.[APPUSER] AU
on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA
on CA.[ID] = IH.[ADDEDBYID]
left join dbo.MKTPACKAGE
on IH.MKTPACKAGEID = MKTPACKAGE.ID
where IH.CONSTITUENTID = @CONSTITUENTID
and (
@CORRESPONDENCETYPECODE = 5
or @CORRESPONDENCETYPECODE = 99
)
and (
IVH.[DATECHANGED] >= @STARTDATE
and IVH.[DATECHANGED] <= @ENDDATE
)
and (
@CHANNEL = 99
or MKTPACKAGE.CHANNELCODE = @CHANNEL
)
union all
-- group member appeal mailings
select convert(nchar(36), MS.[ID]),
CA.CONSTITUENTID,
CA.[DATESENT],
case
when MS.MAILINGTYPECODE = 2
then 8
when MS.MAILINGTYPECODE = 0
and APPEALMAILING.ID is not null
then 9
else 6
end as [CORRESPONDANCETYPECODE],
case
when MS.MAILINGTYPECODE = 2
then 'Membership Renewal'
else 'Appeal Mailing'
end as [CORRESPONDANCETYPE],
A.[NAME] + case
when A.[NAME] is not null
and A.[NAME] <> ''
and MS.[NAME] is not null
and MS.[NAME] <> ''
then ' - '
else ''
end + coalesce(MS.[NAME], ''),
CHA.[USERNAME],
CA.[COMMENTS],
convert(nchar(36), CA.[ID]),
CA.[FINDERNUMBER],
case
when exists (
select 1
from dbo.CONSTITUENTAPPEALRESPONSE
where CONSTITUENTAPPEALRESPONSE.CONSTITUENTAPPEALID = CA.ID
)
then convert(bit, 1)
else convert(bit, 0)
end HASRESPONSES,
'F37F65F4-B9BC-4F70-9FF9-F40493EBAE6C',
convert(nchar(36), CA.[ID]) as PREVIEWDATAFORMRECORDID,
A.[SITEID] as SITEID,
1 as SITEENFORCEMENT,
coalesce(PAC.CHANNELCODE, 0) as CHANNEL
from dbo.[CONSTITUENTAPPEAL] CA
left join dbo.[APPEAL] A
on A.[ID] = CA.[APPEALID]
left join dbo.[MKTSEGMENTATION] MS
on MS.[ID] = CA.[MKTSEGMENTATIONID]
left join dbo.[CHANGEAGENT] CHA
on CHA.[ID] = CA.[ADDEDBYID]
inner join dbo.GROUPMEMBER GM
on CA.CONSTITUENTID = GM.MEMBERID
left join dbo.APPEALMAILING
on APPEALMAILING.ID = MS.ID
left join dbo.MKTPACKAGE PAC
on PAC.ID = CA.MKTPACKAGEID
where GM.GROUPID = @CONSTITUENTID
and (
(
@CORRESPONDENCETYPECODE = 6
and isnull(MS.MAILINGTYPECODE, 0) = 0
)
or (
@CORRESPONDENCETYPECODE = 8
and MS.MAILINGTYPECODE = 2
)
or @CORRESPONDENCETYPECODE = 99
)
and (
(
CA.[DATESENT] >= @STARTDATE
and CA.[DATESENT] <= @ENDDATE
)
or CA.[DATESENT] is null
)
and (
@CHANNEL = 99
or PAC.ID is null
or PAC.CHANNELCODE = @CHANNEL
)
union all
-- group appeal mailings
select convert(nchar(36), MS.[ID]),
CA.CONSTITUENTID,
CA.[DATESENT],
case
when MS.MAILINGTYPECODE = 2
then 8
when MS.MAILINGTYPECODE = 0
and APPEALMAILING.ID is not null
then 9
else 6
end as [CORRESPONDANCETYPECODE],
case
when MS.MAILINGTYPECODE = 2
then 'Membership Renewal'
else 'Appeal Mailing'
end as [CORRESPONDANCETYPE],
A.[NAME] + case
when A.[NAME] is not null
and A.[NAME] <> ''
and MS.[NAME] is not null
and MS.[NAME] <> ''
then ' - '
else ''
end + coalesce(MS.[NAME], ''),
CHA.[USERNAME],
CA.[COMMENTS],
convert(nchar(36), CA.[ID]),
CA.[FINDERNUMBER],
case
when exists (
select 1
from dbo.CONSTITUENTAPPEALRESPONSE
where CONSTITUENTAPPEALRESPONSE.CONSTITUENTAPPEALID = CA.ID
)
then convert(bit, 1)
else convert(bit, 0)
end HASRESPONSES,
'F37F65F4-B9BC-4F70-9FF9-F40493EBAE6C',
convert(nchar(36), CA.[ID]) as PREVIEWDATAFORMRECORDID,
A.[SITEID] as SITEID,
1 as SITEENFORCEMENT,
coalesce(PAC.CHANNELCODE, 0) as CHANNEL
from dbo.[CONSTITUENTAPPEAL] CA
left join dbo.[APPEAL] A
on A.[ID] = CA.[APPEALID]
left join dbo.[MKTSEGMENTATION] MS
on MS.[ID] = CA.[MKTSEGMENTATIONID]
left join dbo.[CHANGEAGENT] CHA
on CHA.[ID] = CA.[ADDEDBYID]
left join dbo.APPEALMAILING
on APPEALMAILING.ID = MS.ID
left join dbo.MKTPACKAGE PAC
on PAC.ID = CA.MKTPACKAGEID
where CA.CONSTITUENTID = @CONSTITUENTID
and (
(
@CORRESPONDENCETYPECODE = 6
and isnull(MS.MAILINGTYPECODE, 0) = 0
)
or (
@CORRESPONDENCETYPECODE = 8
and MS.MAILINGTYPECODE = 2
)
or @CORRESPONDENCETYPECODE = 99
)
and (
(
CA.[DATESENT] >= @STARTDATE
and CA.[DATESENT] <= @ENDDATE
)
or CA.[DATESENT] is null
)
and (
@CHANNEL = 99
or PAC.ID is null
or PAC.CHANNELCODE = @CHANNEL
)
union all
--Group member tribute acknowledgement
select convert(nchar(36), [REVENUETRIBUTELETTER].[ID]) as ID,
[REVENUETRIBUTELETTER].[CONSTITUENTID] as CONSTITUENTID,
[REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] as DATESENT,
7 as CORRESPONDENCETYPECODE,
'Tribute Acknowledgement' as CORRESPONDENCETYPE,
[TRIBUTEACKNOWLEDGEMENTPROCESS].[NAME] + case
when [TRIBUTEACKNOWLEDGEMENTPROCESS].[NAME] is not null
and [TRIBUTEACKNOWLEDGEMENTPROCESS].[NAME] <> ''
and [TRIBUTELETTERCODE].[NAME] is not null
and [TRIBUTELETTERCODE].[NAME] <> ''
then ' - '
else ''
end + [TRIBUTELETTERCODE].[NAME] as DETAILS,
case
when [APPUSER].[USERNAME] is not null
then [APPUSER].[USERNAME]
else [CHANGEAGENT].[USERNAME]
end as PROCESSOR,
'' as COMMENTS,
'' as RECORDID,
0 as FINDERNUMBER,
convert(bit, 0) as HASRESPONSES,
'22A891A1-BF2D-4AA8-9580-BCFA066D4546' as PREVIEWDATAFORM,
CONVERT(nchar(36), [REVENUE].[ID]) as PREVIEWDATAFORMRECORDID,
[BUSINESSPROCESSINSTANCE].[SITEID] as SITEID,
2 as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[REVENUETRIBUTELETTER]
left join dbo.[REVENUETRIBUTE]
on [REVENUETRIBUTELETTER].[REVENUETRIBUTEID] = [REVENUETRIBUTE].[ID]
left join dbo.[TRIBUTELETTERCODE]
on [TRIBUTELETTERCODE].[ID] = [REVENUETRIBUTELETTER].[TRIBUTELETTERCODEID]
left join dbo.[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUS]
on [TRIBUTEACKNOWLEDGEMENTPROCESSSTATUS].[ID] = [REVENUETRIBUTELETTER].[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS]
on [BUSINESSPROCESSSTATUS].[ID] = [REVENUETRIBUTELETTER].[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[TRIBUTEACKNOWLEDGEMENTPROCESS]
on [TRIBUTEACKNOWLEDGEMENTPROCESS].[ID] = [TRIBUTEACKNOWLEDGEMENTPROCESSSTATUS].[PARAMETERSETID]
left join dbo.[REVENUE]
on [REVENUE].[ID] = [REVENUETRIBUTE].[REVENUEID]
left join dbo.[APPUSER]
on [APPUSER].[ID] = [BUSINESSPROCESSSTATUS].[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT]
on [CHANGEAGENT].[ID] = [REVENUETRIBUTELETTER].[ADDEDBYID]
left join dbo.[BUSINESSPROCESSINSTANCE]
on [TRIBUTEACKNOWLEDGEMENTPROCESS].[ID] = [BUSINESSPROCESSINSTANCE].[BUSINESSPROCESSPARAMETERSETID]
inner join dbo.[GROUPMEMBER]
on [REVENUETRIBUTELETTER].[CONSTITUENTID] = [GROUPMEMBER].[MEMBERID]
where [GROUPMEMBER].[GROUPID] = @CONSTITUENTID
and [REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] is not null
and (
@CORRESPONDENCETYPECODE = 7
or @CORRESPONDENCETYPECODE = 99
)
and (
[REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] >= @STARTDATE
and [REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] <= @ENDDATE
)
and @CHANNEL = 99
union all
--group tribute acknowledgement
select convert(nchar(36), [REVENUETRIBUTELETTER].[ID]) as ID,
[REVENUETRIBUTELETTER].[CONSTITUENTID] as CONSTITUENTID,
[REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] as DATESENT,
7 as CORRESPONDENCETYPECODE,
'Tribute Acknowledgement' as CORRESPONDENCETYPE,
[TRIBUTEACKNOWLEDGEMENTPROCESS].[NAME] + case
when [TRIBUTEACKNOWLEDGEMENTPROCESS].[NAME] is not null
and [TRIBUTEACKNOWLEDGEMENTPROCESS].[NAME] <> ''
and [TRIBUTELETTERCODE].[NAME] is not null
and [TRIBUTELETTERCODE].[NAME] <> ''
then ' - '
else ''
end + [TRIBUTELETTERCODE].[NAME] as DETAILS,
case
when [APPUSER].USERNAME is not null
then [APPUSER].USERNAME
else [CHANGEAGENT].[USERNAME]
end as PROCESSOR,
'' as COMMENTS,
'' as RECORDID,
0 as FINDERNUMBER,
convert(bit, 0) as HASRESPONSES,
'22A891A1-BF2D-4AA8-9580-BCFA066D4546' as PREVIEWDATAFORM,
CONVERT(nchar(36), [REVENUE].[ID]) as PREVIEWDATAFORMRECORDID,
[BUSINESSPROCESSINSTANCE].SITEID as [SITEID],
2 as SITEENFORCEMENT,
99 as CHANNEL
from dbo.[REVENUETRIBUTELETTER]
left join dbo.[REVENUETRIBUTE]
on [REVENUETRIBUTELETTER].[REVENUETRIBUTEID] = [REVENUETRIBUTE].[ID]
left join dbo.[TRIBUTELETTERCODE]
on [TRIBUTELETTERCODE].[ID] = [REVENUETRIBUTELETTER].[TRIBUTELETTERCODEID]
left join dbo.[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUS] TAPS
on TAPS.[ID] = [REVENUETRIBUTELETTER].[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS]
on [BUSINESSPROCESSSTATUS].[ID] = [REVENUETRIBUTELETTER].[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[TRIBUTEACKNOWLEDGEMENTPROCESS]
on [TRIBUTEACKNOWLEDGEMENTPROCESS].[ID] = TAPS.[PARAMETERSETID]
left join dbo.[REVENUE]
on [REVENUE].[ID] = [REVENUETRIBUTE].[REVENUEID]
left join dbo.[APPUSER]
on [APPUSER].[ID] = [BUSINESSPROCESSSTATUS].[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT]
on [CHANGEAGENT].[ID] = [REVENUETRIBUTELETTER].[ADDEDBYID]
left join dbo.[BUSINESSPROCESSINSTANCE]
on [TRIBUTEACKNOWLEDGEMENTPROCESS].[ID] = [BUSINESSPROCESSINSTANCE].[BUSINESSPROCESSPARAMETERSETID]
where [REVENUETRIBUTELETTER].[CONSTITUENTID] = @CONSTITUENTID
and [REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] is not null
and (
@CORRESPONDENCETYPECODE = 7
or @CORRESPONDENCETYPECODE = 99
)
and (
[REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] >= @STARTDATE
and [REVENUETRIBUTELETTER].[ACKNOWLEDGEDATE] <= @ENDDATE
)
and @CHANNEL = 99
)
insert into @CORRESPONDENCES
select C.ID,
C.CONSTITUENTID,
C.DATESENT,
NF.NAME CONSTITUENTNAME,
C.CORRESPONDENCETYPECODE,
C.CORRESPONDENCETYPE,
C.DETAILS,
C.PROCESSOR,
C.COMMENTS,
C.RECORDID,
C.FINDERNUMBER,
case
when C.DATESENT >= @THISMONTHSTART
then 'This month'
when C.DATESENT >= @LASTMONTHSTART
then 'Last month'
when C.DATESENT >= @TWOMONTHSAGOSTART
then 'Two months ago'
else 'Older'
end TIMEFRAMETEXT,
case
when C.DATESENT >= @THISMONTHSTART
then '0'
when C.DATESENT >= @LASTMONTHSTART
then '2'
when C.DATESENT >= @TWOMONTHSAGOSTART
then '4'
else '6'
end TIMEFRAMEGROUPSORT,
case
when @ISSYSADMIN = 1
or @USERGRANTEDALLCONSTITUENTS = 1
or CONSTITSECURITY.ID is not null
then 1
else 0
end as 'HASPERMISSIONS',
HASRESPONSES,
PREVIEWDATAFORM,
PREVIEWDATAFORMRECORDID,
case C.SITEENFORCEMENT
when 0
then 'N/A' --Type not secured
when 2
then coalesce(SITE.NAME, 'All sites') --Type is site secured, but null site means record is unsecured
else coalesce(SITE.NAME, '') --Normal site security
end SITE,
case C.CHANNEL
when 0
then 'Mail'
when 1
then 'Email'
when 2
then 'Phone'
when -1
then 'Unknown'
end as CHANNEL
from INTERACTIONS C
-- Need to include the filter on GROUPID in the join predicate; otherwise, if we are viewing the correspondence of a household that is a member of multiple groups,
-- this would include the household's GROUPMEMBER records in the join, leading to multiple rows for each of the household's correspondence.
left join dbo.GROUPMEMBER GM
on C.CONSTITUENTID = GM.MEMBERID
and GM.GROUPID = @CONSTITUENTID
left join dbo.GROUPMEMBERDATERANGE GMDR
on GM.ID = GMDR.GROUPMEMBERID
left join dbo.SITE
on SITE.ID = C.SITEID
left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORQUERYVIEW(@CURRENTAPPUSERID, @QUERYVIEWID) CONSTITSECURITY
on CONSTITSECURITY.ID = C.CONSTITUENTID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.CONSTITUENTID) NF
where (
(
GM.GROUPID = @CONSTITUENTID
and (
(
GMDR.DATEFROM is null
and (
GMDR.DATETO is null
or GMDR.DATETO >= C.DATESENT
)
)
or (
GMDR.DATETO is null
and (
GMDR.DATEFROM is null
or GMDR.DATEFROM <= C.DATESENT
)
)
or (
GMDR.DATEFROM <= C.DATESENT
and GMDR.DATETO >= C.DATESENT
)
)
)
or (C.CONSTITUENTID = @CONSTITUENTID)
)
and (
C.SITEENFORCEMENT = 0 --Type not site secured
or (
C.SITEENFORCEMENT = 2
and C.SITEID is null
) --Type is site secured, but null site means record is unsecured
or (
@ISSYSADMIN = 1
or exists
(
select 1
from dbo.[UFN_SITESFORUSERONFEATURE](@CURRENTAPPUSERID, @SECURITYFEATUREID, @SECURITYFEATURETYPE)
where [SITEID]=[C].[SITEID] or ([SITEID] is null and [C].[SITEID] is null)
)
) --Normal site security
)
and (
--Apply site filter
(@ISSYSADMIN = 1 and @SITEFILTERMODE <> 3)
or @SITEFILTERMODE = 0
or C.SITEID in (
select SITEID
from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED)
)
)
order by TIMEFRAMEGROUPSORT asc,
DATESENT desc,
CORRESPONDENCETYPECODE;
return;
end