UFN_ADDRESSPROCESS_ADDRESSES_CONSTITUENT_BULK
Returns addresses according to address processing rules for all constituents.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ADDRESSPROCESSINGOPTIONID | uniqueidentifier | IN | |
@MAILTYPE | tinyint | IN | |
@PARAMETERSETID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@INCLUDEHOUSEHOLDPROCESSING | bit | IN | |
@INDUSESEASONALADDRESS | bit | IN | |
@ORGMAILINGPREFERENCE | tinyint | IN | |
@INDALTADDRESS1TYPECODEID | uniqueidentifier | IN | |
@INDALTADDRESS1ISPRIMARY | bit | IN | |
@INDALTADDRESS2TYPECODEID | uniqueidentifier | IN | |
@INDALTADDRESS2ISPRIMARY | bit | IN | |
@ORGALTADDRESS1TYPECODEID | uniqueidentifier | IN | |
@ORGALTADDRESS1ISPRIMARY | bit | IN | |
@ORGALTADDRESS2TYPECODEID | uniqueidentifier | IN | |
@ORGALTADDRESS2ISPRIMARY | bit | IN | |
@INDINCLUDEWITHNOADDRESS | bit | IN | |
@ORGINCLUDEWITHNOADDRESS | bit | IN | |
@ORGINCLUDEWITHNOCONTACT | bit | IN | |
@ORGSENDTOALLCONTACTS | bit | IN | |
@INDUSECONSTITUENTPREFS | bit | IN | |
@ORGUSECONSTITUENTPREFS | bit | IN | |
@GROUPALTADDRESS1TYPECODEID | uniqueidentifier | IN | |
@GROUPALTADDRESS1ISPRIMARY | bit | IN | |
@GROUPALTADDRESS2TYPECODEID | uniqueidentifier | IN | |
@GROUPALTADDRESS2ISPRIMARY | bit | IN | |
@GROUPINCLUDEWITHNOADDRESS | bit | IN | |
@GROUPUSECONSTITUENTPREFS | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_ADDRESSPROCESS_ADDRESSES_CONSTITUENT_BULK(
@ADDRESSPROCESSINGOPTIONID uniqueidentifier,
@MAILTYPE tinyint,
@PARAMETERSETID uniqueidentifier,
@DATE datetime,
@INCLUDEHOUSEHOLDPROCESSING bit,
@INDUSESEASONALADDRESS bit,
@ORGMAILINGPREFERENCE tinyint,
@INDALTADDRESS1TYPECODEID uniqueidentifier,
@INDALTADDRESS1ISPRIMARY bit,
@INDALTADDRESS2TYPECODEID uniqueidentifier,
@INDALTADDRESS2ISPRIMARY bit,
@ORGALTADDRESS1TYPECODEID uniqueidentifier,
@ORGALTADDRESS1ISPRIMARY bit,
@ORGALTADDRESS2TYPECODEID uniqueidentifier,
@ORGALTADDRESS2ISPRIMARY bit,
@INDINCLUDEWITHNOADDRESS bit,
@ORGINCLUDEWITHNOADDRESS bit,
@ORGINCLUDEWITHNOCONTACT bit,
@ORGSENDTOALLCONTACTS bit,
@INDUSECONSTITUENTPREFS bit,
@ORGUSECONSTITUENTPREFS bit,
@GROUPALTADDRESS1TYPECODEID uniqueidentifier,
@GROUPALTADDRESS1ISPRIMARY bit,
@GROUPALTADDRESS2TYPECODEID uniqueidentifier,
@GROUPALTADDRESS2ISPRIMARY bit,
@GROUPINCLUDEWITHNOADDRESS bit,
@GROUPUSECONSTITUENTPREFS tinyint
)
returns table
as
return (
select distinct
C.CONSTITUENTID as CONSTITUENTID,
coalesce(MP.ADDRESSID,SA.ADDRESSID,CA.ADDRESSID,A1.ADDRESSID,A2.ADDRESSID,O1.ADDRESSID,O2.ADDRESSID, G1.ADDRESSID, G2.ADDRESSID) as ADDRESSID,
coalesce(MP.CONTACTID,CA.CONTACTID) as CONTACTID,
coalesce(MP.POSITION,CA.POSITION) as POSITION,
C.HOUSEHOLDID,
C.RETURNEDASHOUSEHOLDMEMBER,
case
when (C.RETURNEDASHOUSEHOLDMEMBER = 1)
then coalesce(MP.GROUPCONTACTID, C.HOUSEHOLDID)
when (C.ISGROUP = 1 and C.HOUSEHOLDID is not null)
then coalesce(MP.GROUPCONTACTID, C.HOUSEHOLDID)
else null
end as GROUPCONTACTID
from dbo.UFN_ADDRESSPROCESS_GETCONSTITUENTS_BYCONSTITUENT_BULK(@DATE, @INCLUDEHOUSEHOLDPROCESSING) C
left join dbo.UFN_ADDRESSPROCESS_MAILPREFERENCES(@ADDRESSPROCESSINGOPTIONID,@MAILTYPE,@PARAMETERSETID,@DATE) as MP on C.ID = MP.CONSTITUENTID
left join dbo.UFN_ADDRESSPROCESS_SEASONALADDRESSES(@DATE) SA on C.ID = SA.CONSTITUENTID and @INDUSESEASONALADDRESS = 1
left join dbo.UFN_ADDRESSPROCESS_CONTACTADDRESSES(@ADDRESSPROCESSINGOPTIONID,@MAILTYPE,@PARAMETERSETID) CA on C.ID = CA.CONSTITUENTID and (@ORGMAILINGPREFERENCE = 0)
left join dbo.UFN_ADDRESSPROCESS_ALTERNATEADDRESSES(@INDALTADDRESS1TYPECODEID,@INDALTADDRESS1ISPRIMARY) as A1 on C.ID = A1.CONSTITUENTID AND C.ISORGANIZATION = 0 AND C.ISGROUP = 0
left join dbo.UFN_ADDRESSPROCESS_ALTERNATEADDRESSES(@INDALTADDRESS2TYPECODEID,@INDALTADDRESS2ISPRIMARY) as a2 on C.ID = a2.constituentid AND c.isorganization = 0 AND C.ISGROUP = 0
left join dbo.UFN_ADDRESSPROCESS_ALTERNATEADDRESSES(@ORGALTADDRESS1TYPECODEID,@ORGALTADDRESS1ISPRIMARY) as O1 on C.ID = O1.constituentid AND c.isorganization = 1 and (@ORGMAILINGPREFERENCE = 1)
left join dbo.UFN_ADDRESSPROCESS_ALTERNATEADDRESSES(@ORGALTADDRESS2TYPECODEID,@ORGALTADDRESS2ISPRIMARY) as O2 on C.ID = O2.constituentid AND c.isorganization = 1 and (@ORGMAILINGPREFERENCE = 1)
left join dbo.UFN_ADDRESSPROCESS_ALTERNATEADDRESSES(@GROUPALTADDRESS1TYPECODEID,@GROUPALTADDRESS1ISPRIMARY) as G1 on C.ID = G1.CONSTITUENTID AND C.ISGROUP = 1
left join dbo.UFN_ADDRESSPROCESS_ALTERNATEADDRESSES(@GROUPALTADDRESS2TYPECODEID,@GROUPALTADDRESS2ISPRIMARY ) as G2 on C.ID = G2.CONSTITUENTID AND C.ISGROUP = 1
where
(
(C.ISORGANIZATION = 1
and (
(@ORGMAILINGPREFERENCE = 0
and (
(@ORGINCLUDEWITHNOCONTACT = 0
and (MP.ADDRESSID is not null or CA.CONTACTID is not null)
)
or @ORGINCLUDEWITHNOCONTACT = 1
)
)
or (@ORGMAILINGPREFERENCE = 1
and (
(@ORGINCLUDEWITHNOADDRESS = 0
and coalesce(MP.ADDRESSID,CA.ADDRESSID,O1.ADDRESSID,O2.ADDRESSID) is not null
)
or @ORGINCLUDEWITHNOADDRESS = 1
)
)
)
)
or (C.ISORGANIZATION = 0
and C.ISGROUP = 0
and (
(@INDINCLUDEWITHNOADDRESS = 0
and coalesce(MP.ADDRESSID,SA.ADDRESSID,A1.ADDRESSID,A2.ADDRESSID) is not null
)
or @INDINCLUDEWITHNOADDRESS = 1
)
)
or (C.ISGROUP = 1
and (
(@GROUPINCLUDEWITHNOADDRESS = 0
and coalesce(MP.ADDRESSID,SA.ADDRESSID,G1.ADDRESSID,G2.ADDRESSID) is not null
)
or @GROUPINCLUDEWITHNOADDRESS = 1
)
)
)
and(
coalesce(
(
select SUPPRESSMAILING
from (
select top 1
case
when (SENDMAIL = 0
or (SENDMAIL = 1 and DELIVERYMETHODCODE = 1
and (
case
when exists(
select * from
dbo.[INSTALLEDPRODUCTLIST]
where [ID] = '42c15648-749e-4859-a56d-3a6474814cc7'
and ([EXPIREDATE] = ''
or [EXPIREDATE] >= getdate()
)
) then DONOTSENDOTHERCHANNEL
else 1
end
) = 1
)
) then 1
else 0
end as SUPPRESSMAILING,
case
when @MAILTYPE = 0 and ACKNOWLEDGEMENTID is not null
then 1 -- Revenue acknowledgements
when @MAILTYPE = 1 and (SITEID is not null and BUSINESSUNITCODEID is not null and CATEGORYCODEID is not null)
then 3 -- Appeals
when @MAILTYPE = 1 and (SITEID is not null and BUSINESSUNITCODEID is not null)
then 2 -- Appeals
when @MAILTYPE = 1 and (SITEID is not null and CATEGORYCODEID is not null)
then 2 -- Appeals
when @MAILTYPE = 1 and (BUSINESSUNITCODEID is not null and CATEGORYCODEID is not null)
then 2 -- Appeals
when @MAILTYPE = 1 and (SITEID is not null or BUSINESSUNITCODEID is not null or CATEGORYCODEID is not null)
then 1 -- Appeals
when @MAILTYPE = 2 and EVENTCATEGORYCODEID is not null and SITEID is not null
then 2 -- Events
when @MAILTYPE = 2 and (EVENTCATEGORYCODEID is not null or SITEID is not null)
then 1 -- Events
when @MAILTYPE = 3 and CORRESPONDENCECODEID is not null and CORRESPONDENCEID is not null
then 2 -- Correspondence
when @MAILTYPE = 3 and (CORRESPONDENCECODEID is not null or CORRESPONDENCEID is not null)
then 1 -- Correspondence
when @MAILTYPE = 4 and PLEDGEREMINDERID is not null
then 1 -- Reminders
when @MAILTYPE = 8 and PURPOSEID is not null
then 1 -- Stewardship
else 0
end as CRITERIAMATCHSCORE
from dbo.MAILPREFERENCE
where CONSTITUENTID = C.ID
and MAILTYPECODE = @MAILTYPE
and (
(C.ISORGANIZATION = 0
and C.ISGROUP = 0
and @INDUSECONSTITUENTPREFS = 1
)
or (C.ISORGANIZATION = 1
and @ORGUSECONSTITUENTPREFS = 1
)
or (C.ISGROUP = 1
and @GROUPUSECONSTITUENTPREFS = 1
)
)
and (
(@PARAMETERSETID =
case @MAILTYPE
when 0 then ACKNOWLEDGEMENTID
when 3 then CORRESPONDENCEID
when 4 then PLEDGEREMINDERID
else null
end
)
or (
case @MAILTYPE
when 0 then ACKNOWLEDGEMENTID
when 3 then CORRESPONDENCEID
when 4 then PLEDGEREMINDERID
else null
end is null
)
)
and (CORRESPONDENCECODEID is null
or (@MAILTYPE = 3
and CORRESPONDENCECODEID = (
select CORRESPONDENCECODEID
from dbo.CORRESPONDENCEPROCESS
where ID = @PARAMETERSETID
)
)
)
and (EVENTCATEGORYCODEID is null
or (@MAILTYPE = 2
and EVENTCATEGORYCODEID = (
select E.EVENTCATEGORYCODEID
from dbo.EVENT E
inner join dbo.INVITATION I on E.ID = I.EVENTID
where I.ID = @PARAMETERSETID
)
)
)
and (SITEID is null
or (@MAILTYPE = 1
and SITEID = (
select SITEID
from dbo.APPEAL
where ID = @PARAMETERSETID
)
)
or (@MAILTYPE = 2
and SITEID in (
select E.SITEID
from dbo.EVENTSITE E
inner join dbo.INVITATION I on E.EVENTID = I.EVENTID
where I.ID = @PARAMETERSETID
)
)
)
and (PURPOSEID is null
or (@MAILTYPE = 8
and PURPOSEID = @PARAMETERSETID
)
)
and (BUSINESSUNITCODEID is null
or (@MAILTYPE = 1
and BUSINESSUNITCODEID in (
select BUSINESSUNITCODEID
from dbo.APPEALBUSINESSUNIT
where APPEALID = @PARAMETERSETID
)
)
)
and (CATEGORYCODEID is null
or (@MAILTYPE = 1
and CATEGORYCODEID = (
select APPEALCATEGORYCODEID
from dbo.APPEAL
where ID = @PARAMETERSETID
)
)
)
order by CRITERIAMATCHSCORE desc, SUPPRESSMAILING desc
) as MATCHEDPREFERENCES
)
, 0
) = 0 -- Verify that the comm prefs allow the user to receive mailings
)
)