USP_SEARCHLIST_MEMBER_DAILYSALESSEARCH
Provides the ability to search for a member.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERQUICKSEARCH | nvarchar(100) | IN | Quick search |
@LASTNAME | nvarchar(100) | IN | Last/Group/Org name |
@FIRSTNAME | nvarchar(100) | IN | First name |
@MEMBERSHIPLOOKUPID | nvarchar(50) | IN | Membership ID |
@PHONENUMBER | nvarchar(50) | IN | Phone number |
@COUNTRYID | uniqueidentifier | IN | Country |
@ADDRESSBLOCK | nvarchar(100) | IN | Address |
@CITY | nvarchar(100) | IN | City |
@STATEID | uniqueidentifier | IN | State |
@POSTCODE | nvarchar(20) | IN | ZIP/Postal code |
@INCLUDEINDIVIDUALS | bit | IN | Individuals |
@INCLUDEORGANIZATIONS | bit | IN | Organizations |
@INCLUDEGROUPS | bit | IN | Groups/Households |
@INCLUDEINACTIVE | bit | IN | Include inactive |
@INCLUDEDECEASED | bit | IN | Include Deceased |
@MAXROWS | smallint | IN | Input parameter indicating the maximum number of rows to return. |
Definition
Copy
CREATE procedure dbo.USP_SEARCHLIST_MEMBER_DAILYSALESSEARCH
(
@MEMBERQUICKSEARCH nvarchar(100) = null,
@LASTNAME nvarchar(100) = null,
@FIRSTNAME nvarchar(100) = null,
@MEMBERSHIPLOOKUPID nvarchar(50) = null,
@PHONENUMBER nvarchar(50) = null,
@COUNTRYID uniqueidentifier = null,
@ADDRESSBLOCK nvarchar(100) = null,
@CITY nvarchar(100) = null,
@STATEID uniqueidentifier = null,
@POSTCODE nvarchar(20) = null,
@INCLUDEINDIVIDUALS bit = 1,
@INCLUDEORGANIZATIONS bit = 1,
@INCLUDEGROUPS bit = 0,
@INCLUDEINACTIVE bit = 0,
@INCLUDEDECEASED bit = 0,
@MAXROWS smallint = 100
)
as
set nocount on;
set @MEMBERQUICKSEARCH = ltrim(rtrim(@MEMBERQUICKSEARCH))
declare @QUICKCARDNUMBER nvarchar(200) = @MEMBERQUICKSEARCH
set @MEMBERQUICKSEARCH = replace(replace(@MEMBERQUICKSEARCH,'*','%'),'?','_')
declare @QUICKORGGROUPKEYNAME nvarchar(100) = @MEMBERQUICKSEARCH
declare @QUICKFIRSTNAME nvarchar(100) = ''
declare @QUICKLASTNAME nvarchar(100) = ''
if @MEMBERQUICKSEARCH <> ''
begin
if charindex(',',@MEMBERQUICKSEARCH) > 0
begin
set @QUICKLASTNAME = rtrim(left(@MEMBERQUICKSEARCH,charindex(',',@MEMBERQUICKSEARCH) - 1))
set @QUICKFIRSTNAME = ltrim(right(@MEMBERQUICKSEARCH,len(@MEMBERQUICKSEARCH) - charindex(',',@MEMBERQUICKSEARCH)))
end
else
begin
if charindex(' ',@MEMBERQUICKSEARCH) > 0
begin
set @QUICKFIRSTNAME = rtrim(left(@MEMBERQUICKSEARCH,charindex(' ',@MEMBERQUICKSEARCH)))
set @QUICKLASTNAME = ltrim(right(@MEMBERQUICKSEARCH,len(@MEMBERQUICKSEARCH) - charindex(' ',@MEMBERQUICKSEARCH)))
end
else
set @QUICKLASTNAME = @MEMBERQUICKSEARCH
end
end
-- remove formatting (dashes, parens, etc...) from phone number input
declare @UNFORMATTEDPHONENUMBER nvarchar(100) = dbo.UFN_PHONE_REMOVEFORMATTING(@PHONENUMBER)
select distinct top(@MAXROWS)
[CONSTITUENT].[ID],
dbo.UFN_CONSTITUENT_BUILDNAME([CONSTITUENT].[ID]) as [MEMBERNAME],
[MEMBERSHIPPROGRAM].[NAME] + ' - ' + [MEMBERSHIPLEVEL].[NAME] + ' - ' + [MEMBERSHIPLEVELTERM].[TERM] as [MEMBERSHIPNAME],
(
select top 1 [NAMEONCARD]
from dbo.[MEMBERSHIPCARD]
where [MEMBERID] = [MEMBER].[ID]
) as [NAMEONCARD],
[MEMBERSHIP].[EXPIRATIONDATE],
(
select top 1 dbo.UFN_BUILDFULLADDRESS([ADDRESS].[ID], [ADDRESS].[ADDRESSBLOCK], [ADDRESS].[CITY], [ADDRESS].[STATEID], [ADDRESS].[POSTCODE], [ADDRESS].[COUNTRYID]) as [ADDRESSBLOCK]
from dbo.[ADDRESS]
where
[ADDRESS].[ISPRIMARY] = 1 and
[ADDRESS].[CONSTITUENTID] = [CONSTITUENT].[ID]
) as [ADDRESS],
(
select top 1 [NUMBER]
from dbo.[PHONE]
where
[PHONE].[ISPRIMARY] = 1 and
[PHONE].[CONSTITUENTID] = [CONSTITUENT].[ID]
),
[MEMBER].[ISPRIMARY],
[MEMBERSHIP].[ID]
from dbo.[CONSTITUENT]
inner join dbo.[MEMBER]
on [MEMBER].[CONSTITUENTID] = [CONSTITUENT].[ID]
inner join dbo.[MEMBERSHIP]
on [MEMBERSHIP].[ID] = [MEMBER].[MEMBERSHIPID]
inner join dbo.[MEMBERSHIPPROGRAM]
on [MEMBERSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
inner join dbo.[MEMBERSHIPLEVEL]
on [MEMBERSHIP].[MEMBERSHIPLEVELID] = [MEMBERSHIPLEVEL].[ID]
inner join dbo.[MEMBERSHIPLEVELTERM]
on [MEMBERSHIP].[MEMBERSHIPLEVELTERMID] = [MEMBERSHIPLEVELTERM].[ID]
left join dbo.[PHONE]
on [PHONE].[CONSTITUENTID] = [CONSTITUENT].[ID]
left join dbo.[ADDRESS]
on [ADDRESS].[CONSTITUENTID] = [CONSTITUENT].[ID]
where
(
(@INCLUDEINDIVIDUALS = 1 and [CONSTITUENT].[ISORGANIZATION] = 0 and [CONSTITUENT].[ISGROUP] = 0) or
(@INCLUDEORGANIZATIONS = 1 and [CONSTITUENT].[ISORGANIZATION] = 1) or
(@INCLUDEGROUPS = 1 and [CONSTITUENT].[ISGROUP] = 1)
) and
( --Quick Search
( --Name using quick search fields
(
([CONSTITUENT].[ISGROUP] = 0 and [CONSTITUENT].[ISORGANIZATION] = 0) and
(coalesce(@QUICKFIRSTNAME,'') = '' or [CONSTITUENT].[FIRSTNAME] like @QUICKFIRSTNAME + '%') and
(coalesce(@QUICKLASTNAME,'') = '' or [CONSTITUENT].[KEYNAME] like @QUICKLASTNAME + '%')
) or
(
([CONSTITUENT].[ISGROUP] = 1 or [CONSTITUENT].[ISORGANIZATION] = 1) and
(coalesce(@QUICKORGGROUPKEYNAME,'') = '' or [CONSTITUENT].[KEYNAME] like @QUICKORGGROUPKEYNAME + '%')
)
) or
exists (
select 1
from dbo.[MEMBERSHIPCARD]
where
(
[CARDNUMBER] = @MEMBERQUICKSEARCH or
[NAMEONCARD] like @MEMBERQUICKSEARCH + '%'
) and
[MEMBERID] = [MEMBER].[ID]
) or
[MEMBERSHIP].[LOOKUPID] = @MEMBERQUICKSEARCH or
[PHONE].[NUMBER] = @UNFORMATTEDPHONENUMBER
) and
(
( --Name using search fields other than quick search
(
([CONSTITUENT].[ISGROUP] = 0 and [CONSTITUENT].[ISORGANIZATION] = 0) and
(coalesce(@FIRSTNAME,'') = '' or [CONSTITUENT].[FIRSTNAME] like @FIRSTNAME + '%') and
(coalesce(@LASTNAME,'') = '' or [CONSTITUENT].[KEYNAME] like @LASTNAME + '%')
) or
(
([CONSTITUENT].[ISGROUP] = 1 or [CONSTITUENT].[ISORGANIZATION] = 1) and
(coalesce(@LASTNAME,'') = '' or [CONSTITUENT].[KEYNAME] like @LASTNAME + '%')
)
) and
(@MEMBERSHIPLOOKUPID is null or [MEMBERSHIP].[LOOKUPID] like @MEMBERSHIPLOOKUPID + '%') and
(@PHONENUMBER is null or [PHONE].[NUMBERNOFORMAT] like @UNFORMATTEDPHONENUMBER + '%') and
(@COUNTRYID is null or [ADDRESS].[COUNTRYID] = @COUNTRYID) and
(@ADDRESSBLOCK is null or [ADDRESS].[ADDRESSBLOCK] like @ADDRESSBLOCK + '%') and
(@CITY is null or [ADDRESS].[CITY] like @CITY + '%') and
(@STATEID is null or [ADDRESS].[STATEID] = @STATEID) and
(@POSTCODE is null or [ADDRESS].[POSTCODE] like @POSTCODE + '%')
) and
(
@INCLUDEDECEASED = 1 or
not exists (
select 1
from dbo.[DECEASEDCONSTITUENT]
where [DECEASEDCONSTITUENT].[ID] = [CONSTITUENT].[ID]
)
) and
[MEMBER].[ISDROPPED] = 0
order by
[MEMBERSHIPNAME],
[MEMBERSHIP].[ID],
[MEMBER].[ISPRIMARY] desc,
[MEMBERNAME]