USP_SEARCHLIST_PAYABLEVENDOR

Search for and view vendor records.

Parameters

Parameter Parameter Type Mode Description
@KEYNAME nvarchar(50) IN Last/Org name
@FIRSTNAME nvarchar(50) IN First name
@LOOKUPID nvarchar(36) IN Lookup ID
@CUSTOMERNUMBER nvarchar(20) IN Customer number
@INDUSTRYCODEID uniqueidentifier IN Industry
@ADDRESSBLOCK nvarchar(100) IN Address
@CITY nvarchar(100) IN City
@STATEID uniqueidentifier IN State
@POSTCODE nvarchar(20) IN ZIP/Postal code
@COUNTRYID uniqueidentifier IN Country
@EXACTMATCHONLY bit IN Match all criteria exactly
@INCLUDEINDIVIDUALS bit IN Individuals
@INCLUDEORGANIZATIONS bit IN Organizations
@CHECKALIASES bit IN Check aliases
@PRIMARYADDRESSONLY bit IN Only search primary addresses
@CHECKALTERNATELOOKUPIDS bit IN Check alternate lookup IDs
@FUZZYSEARCHONNAME bit IN Include fuzzy search on name
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.

Definition

Copy


CREATE procedure dbo.USP_SEARCHLIST_PAYABLEVENDOR
(
    @KEYNAME nvarchar(50) = null
  ,@FIRSTNAME nvarchar(50) = null
  ,@LOOKUPID nvarchar(36) = null
  ,@CUSTOMERNUMBER nvarchar(20) = null
  ,@INDUSTRYCODEID uniqueidentifier = null

  ,@ADDRESSBLOCK nvarchar(100) = null
  ,@CITY nvarchar(100) = null
  ,@STATEID uniqueidentifier = null
  ,@POSTCODE nvarchar(20) = null
  ,@COUNTRYID uniqueidentifier = null

  ,@EXACTMATCHONLY bit = null
  ,@INCLUDEINDIVIDUALS bit = null
  ,@INCLUDEORGANIZATIONS bit = null
  ,@CHECKALIASES bit = null
  ,@PRIMARYADDRESSONLY bit = null
  ,@CHECKALTERNATELOOKUPIDS bit = null
  ,@FUZZYSEARCHONNAME bit = null

    ,@MAXROWS smallint = 500
)
as
  -- Assume we are checking addresses unless ALL these requirements are met. 

  -- Empty strings are checked because of Infinity

  declare @CHECKADDRESS bit = 1;
  if (@ADDRESSBLOCK is null or @ADDRESSBLOCK = '')
      and (@CITY is null or @CITY = ''
      and (@POSTCODE is null or @POSTCODE = ''
      and @STATEID is null 
      and @COUNTRYID is null
    set @CHECKADDRESS = 0;

  set @EXACTMATCHONLY = COALESCE(@EXACTMATCHONLY, 0);
    set @INCLUDEINDIVIDUALS = COALESCE(@INCLUDEINDIVIDUALS, 0);
  set @INCLUDEORGANIZATIONS = COALESCE(@INCLUDEORGANIZATIONS, 0);
  set @PRIMARYADDRESSONLY = COALESCE(@PRIMARYADDRESSONLY, 0);
    set @CHECKALTERNATELOOKUPIDS = COALESCE(@CHECKALTERNATELOOKUPIDS, 0);
  set @FUZZYSEARCHONNAME = COALESCE(@FUZZYSEARCHONNAME, 0);

  if @EXACTMATCHONLY = 0
      begin
      set @KEYNAME = COALESCE(@KEYNAME,'') + '%';
          set @FIRSTNAME = COALESCE(@FIRSTNAME,'') + '%';
          set @LOOKUPID = COALESCE(@LOOKUPID,'') + '%';
      set @CUSTOMERNUMBER = COALESCE(@CUSTOMERNUMBER,'') + '%';
      set @ADDRESSBLOCK = COALESCE(@ADDRESSBLOCK,'') + '%';
      set @CITY = COALESCE(@CITY,'') + '%';
      set @POSTCODE = COALESCE(@POSTCODE,'') + '%';

      select top(@MAXROWS
          V.ID
          ,C.LOOKUPID [LOOKUPID]
          ,dbo.UFN_NAMEFORMAT_08(C.ID, C.KEYNAME, C.FIRSTNAME, C.MIDDLENAME, null, null, null, null, null, null, null) as SORTVENDORNAME
        ,C.NAME
          ,case 
            when C.ISGROUP = 0 and C.ISORGANIZATION = 0 then 'Individual'
            when C.ISORGANIZATION = 1 then 'Organization' 
           end as VENDORTYPE
          ,C.ISORGANIZATION
        ,V.CUSTOMERNUMBER
          ,A.ADDRESSBLOCK [ADDRESS]
          ,A.CITY
          ,S.ABBREVIATION [STATE]
          ,A.POSTCODE
          ,I.[DESCRIPTION] INDUSTRY
          ,C.WEBADDRESS
          ,E.EMAILADDRESS
          ,P.NUMBER [PHONE]
      from dbo.VENDOR V
          inner join dbo.CONSTITUENT C on V.ID = C.ID
          left join dbo.PHONE P on (P.ISPRIMARY = 1 and P.CONSTITUENTID = C.ID)
          left join dbo.EMAILADDRESS E on (E.ISPRIMARY = 1 and E.CONSTITUENTID = C.ID)
          left join dbo.[ADDRESS] A on (A.ISPRIMARY = 1 and A.CONSTITUENTID = C.ID)
          left join dbo.[STATE] S on A.STATEID = S.ID
          left join dbo.ORGANIZATIONDATA OD on (C.ISORGANIZATION = 1 and OD.ID = C.ID)
          left join dbo.CONSTITUENTJOBINFO CJ on (C.ISORGANIZATION = 0 and CJ.ID = C.ID)
          left join dbo.INDUSTRYCODE I on coalesce(OD.INDUSTRYCODEID, CJ.INDUSTRYCODEID) = I.ID
      where
        ((C.ISORGANIZATION = 1 and @INCLUDEORGANIZATIONS = 1) or (C.ISORGANIZATION = 0 and @INCLUDEINDIVIDUALS = 1))
        -- Last/Org Name & Fuzzy Search

        and (c.KEYNAME like @KEYNAME 
          or (C.KEYNAMESOUNDEX = soundex(@KEYNAME) and @FUZZYSEARCHONNAME <> 0)
          or (C.ID in (select A.CONSTITUENTID from dbo.ALIAS A where A.KEYNAME like @KEYNAME) and @CHECKALIASES <> 0))
        -- First Name & Fuzzy Search

        and (c.FIRSTNAME like @FIRSTNAME 
          or (soundex(C.FIRSTNAME) = soundex(@FIRSTNAME) and @FUZZYSEARCHONNAME <> 0 and C.ISORGANIZATION = 0)
          or (C.ID in (select A.CONSTITUENTID from dbo.ALIAS A where A.FIRSTNAME like @FIRSTNAME) and @CHECKALIASES <> 0 and C.ISORGANIZATION = 0))
        -- Lookup ID

        and ( (C.LOOKUPID like @LOOKUPID
          or ((C.ID in (select AL.CONSTITUENTID from dbo.ALTERNATELOOKUPID AL where AL.ALTERNATELOOKUPID like @LOOKUPID
            and @CHECKALTERNATELOOKUPIDS <> 0)) )
        -- Customer Number

        and (V.CUSTOMERNUMBER like @CUSTOMERNUMBER)
        -- Industry

        and (@INDUSTRYCODEID is null or I.ID = @INDUSTRYCODEID)
        -- Address fields

        and (
          (A.ADDRESSBLOCK like @ADDRESSBLOCK
          and A.CITY like @CITY
          and A.POSTCODE like @POSTCODE
          and (A.STATEID = @STATEID or @STATEID is null)
          and (A.COUNTRYID = @COUNTRYID or @COUNTRYID is null)) 
          or (A.ID is null and @CHECKADDRESS = 0
          or (@PRIMARYADDRESSONLY = 0 and @CHECKADDRESS = 1
              and C.ID in (select AD.CONSTITUENTID 
                           from dbo.[ADDRESS] AD 
                           where 
                            AD.ADDRESSBLOCK like @ADDRESSBLOCK 
                            and AD.CITY like @CITY 
                            and AD.POSTCODE like @POSTCODE 
                            and (AD.STATEID = @STATEID or @STATEID is null
                            and (AD.COUNTRYID = @COUNTRYID or @COUNTRYID is null)))
        )
      order by 
        SORTVENDORNAME ASC
    end
    else
    begin
      select top(@MAXROWS
          V.ID
          ,C.LOOKUPID [LOOKUPID]
          ,dbo.UFN_NAMEFORMAT_08(C.ID, C.KEYNAME, C.FIRSTNAME, C.MIDDLENAME, null, null, null, null, null, null, null) as SORTVENDORNAME
        ,C.NAME 
          ,case 
            when C.ISGROUP = 0 and C.ISORGANIZATION = 0 then 'Individual'
            when C.ISORGANIZATION = 1 then 'Organization' 
           end as VENDORTYPE
          ,C.ISORGANIZATION
        ,V.CUSTOMERNUMBER
          ,A.ADDRESSBLOCK [ADDRESS]
          ,A.CITY
          ,S.ABBREVIATION [STATE]
          ,A.POSTCODE
          ,I.[DESCRIPTION] INDUSTRY
          ,C.WEBADDRESS
          ,E.EMAILADDRESS
          ,P.NUMBER [PHONE]
      from dbo.VENDOR V
          inner join dbo.CONSTITUENT C on V.ID = C.ID
          left join dbo.PHONE P on (P.ISPRIMARY = 1 and P.CONSTITUENTID = C.ID)
          left join dbo.EMAILADDRESS E on (E.ISPRIMARY = 1 and E.CONSTITUENTID = C.ID)
          left join dbo.[ADDRESS] A on (A.ISPRIMARY = 1 and A.CONSTITUENTID = C.ID)
          left join dbo.[STATE] S on A.STATEID = S.ID
          left join dbo.ORGANIZATIONDATA OD on (C.ISORGANIZATION = 1 and OD.ID = C.ID)
          left join dbo.CONSTITUENTJOBINFO CJ on (C.ISORGANIZATION = 0 and CJ.ID = C.ID)
          left join dbo.INDUSTRYCODE I on coalesce(OD.INDUSTRYCODEID, CJ.INDUSTRYCODEID) = I.ID
      where
        ((C.ISORGANIZATION = 1 and @INCLUDEORGANIZATIONS = 1) or (C.ISORGANIZATION = 0 and @INCLUDEINDIVIDUALS = 1))
        -- Last/Org Name & Fuzzy Search

        and ((@KEYNAME is null
          or (c.KEYNAME = @KEYNAME 
            or (C.KEYNAMESOUNDEX = soundex(@KEYNAME) and @FUZZYSEARCHONNAME <> 0
            or (C.ID in (select A.CONSTITUENTID from dbo.ALIAS A where A.KEYNAME = @KEYNAME) and @CHECKALIASES <> 0)))
        -- First Name & Fuzzy Search

        and ((@FIRSTNAME is null
          or (c.FIRSTNAME = @FIRSTNAME 
            or (soundex(C.FIRSTNAME) = soundex(@FIRSTNAME) and @FUZZYSEARCHONNAME <> 0 and C.ISORGANIZATION = 0)
            or (C.ID in (select A.CONSTITUENTID from dbo.ALIAS A where A.FIRSTNAME = @FIRSTNAME) and @CHECKALIASES <> 0)))
        -- Lookup ID

        and (((@LOOKUPID is null
          or (C.LOOKUPID = @LOOKUPID
            or ((C.ID in (select AL.CONSTITUENTID from dbo.ALTERNATELOOKUPID AL where @LOOKUPID is not null and AL.ALTERNATELOOKUPID = @LOOKUPID
              and @CHECKALTERNATELOOKUPIDS <> 0))) )
        -- Customer Number

        and (@CUSTOMERNUMBER is null or v.CUSTOMERNUMBER = @CUSTOMERNUMBER)
        -- Industry

        and (@INDUSTRYCODEID is null or I.ID = @INDUSTRYCODEID)
        -- Address fields

        and (
          ((A.ADDRESSBLOCK = @ADDRESSBLOCK or @ADDRESSBLOCK is null)
          and (A.CITY = @CITY or @CITY is null)
          and (A.POSTCODE = @POSTCODE or @POSTCODE is null)
          and (A.STATEID = @STATEID or @STATEID is null)
          and (A.COUNTRYID = @COUNTRYID or @COUNTRYID is null)) 
          or (A.ID is null and @CHECKADDRESS = 0
          or (@PRIMARYADDRESSONLY = 0 and @CHECKADDRESS = 1
              and C.ID in (select AD.CONSTITUENTID 
                           from dbo.[ADDRESS] AD 
                           where 
                            (AD.ADDRESSBLOCK = @ADDRESSBLOCK or @ADDRESSBLOCK is null)
                            and (AD.CITY = @CITY or @CITY is null)
                            and (AD.POSTCODE = @POSTCODE or @POSTCODE is null)
                            and (AD.STATEID = @STATEID or @STATEID is null
                            and (AD.COUNTRYID = @COUNTRYID or @COUNTRYID is null)))
        )
      order by 
        SORTVENDORNAME ASC
    end