USP_DUPLICATESEARCH_ORGANIZATION

This provides the ability to search for duplicates on organization add forms.

Parameters

Parameter Parameter Type Mode Description
@NAME nvarchar(100) IN Name
@ADDRESS_POSTCODE nvarchar(12) IN ZIP/Postal Code
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN Address
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@ADDRESS_COUNTRYID uniqueidentifier IN
@ADDRESS_STATEID uniqueidentifier IN
@ADDRESS_CITY nvarchar(50) IN
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN
@PHONE_NUMBER nvarchar(100) IN
@ADDRESS_ADDRESSTYPECODEID uniqueidentifier IN
@EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier IN
@PHONE_PHONETYPECODEID uniqueidentifier IN
@WEBADDRESS UDT_WEBADDRESS IN
@ADDRESS_HISTORICALSTARTDATE date INOUT
@ADDRESS_HISTORICALENDDATE date INOUT
@ADDRESS_DONOTMAIL bit INOUT
@ADDRESS_DONOTMAILREASONCODEID uniqueidentifier INOUT
@ADDRESS_STARTDATE UDT_MONTHDAY INOUT
@ADDRESS_ENDDATE UDT_MONTHDAY INOUT
@DPC nvarchar(max) INOUT
@CART nvarchar(max) INOUT
@LOT nvarchar(5) INOUT
@INFOSOURCECODEID uniqueidentifier INOUT
@INFOSOURCECOMMENTS nvarchar(256) INOUT
@COUNTYCODEID uniqueidentifier INOUT
@REGIONCODEID uniqueidentifier INOUT
@CONGRESSIONALDISTRICTCODEID uniqueidentifier INOUT
@STATEHOUSEDISTRICTCODEID uniqueidentifier INOUT
@STATESENATEDISTRICTCODEID uniqueidentifier INOUT
@LOCALPRECINCTCODEID uniqueidentifier INOUT
@CERTIFICATIONDATA int INOUT
@LASTVALIDATIONATTEMPTDATE date INOUT
@OMITFROMVALIDATION bit INOUT
@VALIDATIONMESSAGE nvarchar(200) INOUT
@CURRENTAPPUSERID uniqueidentifier IN
@CONSTITUENTDUPLICATEMATCHINGENABLED bit IN

Definition

Copy


                CREATE procedure dbo.USP_DUPLICATESEARCH_ORGANIZATION (
                    @NAME nvarchar(100) = '',
                    @ADDRESS_POSTCODE nvarchar(12) = '',
          @ADDRESS_ADDRESSBLOCK nvarchar(150) = '',
          @MAXROWS smallint = 100,
          @ADDRESS_COUNTRYID uniqueidentifier  = null,
          @ADDRESS_STATEID uniqueidentifier  = null,
          @ADDRESS_CITY nvarchar(50)  = null,
          @EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS = '',
          @PHONE_NUMBER nvarchar(100) = '',
          @ADDRESS_ADDRESSTYPECODEID uniqueidentifier = null,
          @EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier = null,
          @PHONE_PHONETYPECODEID uniqueidentifier = null,
          @WEBADDRESS dbo.UDT_WEBADDRESS = '',
          @ADDRESS_HISTORICALSTARTDATE date = null output,
          @ADDRESS_HISTORICALENDDATE date = null output,
          @ADDRESS_DONOTMAIL bit = null output,
          @ADDRESS_DONOTMAILREASONCODEID uniqueidentifier = null output,
          @ADDRESS_STARTDATE dbo.UDT_MONTHDAY = null output,
          @ADDRESS_ENDDATE dbo.UDT_MONTHDAY = null output,
          @DPC nvarchar(max) = null output,
          @CART nvarchar(max) = null output,
          @LOT nvarchar(5) = null output,
          @INFOSOURCECODEID uniqueidentifier = null output,
          @INFOSOURCECOMMENTS nvarchar(256) = null output,
          @COUNTYCODEID uniqueidentifier = null output,
          @REGIONCODEID uniqueidentifier = null output,
          @CONGRESSIONALDISTRICTCODEID uniqueidentifier = null output,
          @STATEHOUSEDISTRICTCODEID uniqueidentifier = null output,
          @STATESENATEDISTRICTCODEID uniqueidentifier = null output,
          @LOCALPRECINCTCODEID uniqueidentifier = null output,
          @CERTIFICATIONDATA int = null output,
          @LASTVALIDATIONATTEMPTDATE date = null output,
          @OMITFROMVALIDATION bit = null output,
          @VALIDATIONMESSAGE nvarchar(200) = null output,
          @CURRENTAPPUSERID uniqueidentifier = null,
          @CONSTITUENTDUPLICATEMATCHINGENABLED bit = null
        ) as begin

            declare @ISADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
            declare @APPUSER_IN_NONRACROLE bit = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
            declare @APPUSER_IN_NOSECGROUPROLE bit = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);

            declare @KEYNAME nvarchar(100);
            declare @KEYNAMEPREFIX nvarchar(50);
            declare @NULLVALUE uniqueidentifier = (select cast(cast(0 as binary) as uniqueidentifier))

          begin try
               exec dbo.USP_PARSE_ORGANIZATION_NAME @NAME, @KEYNAME output, @KEYNAMEPREFIX output;
          end try
          begin catch
            set @KEYNAME = @NAME;
          end catch

        ;with DUPLICATECANDIDATES_CTE as(
              select 
              CONSTITUENTID,
              ADDRESSID,
              EMAILADDRESSID,
              PHONEID,
              MATCHPERCENTAGE,
              STREETNUMBERRESULT,
              STREETNAMERESULT,
              POSTCODERESULT               
            from dbo.UFN_FINDCONSTITUENTMATCHES_COMPOSITETHRESHOLD_3(
              null,
              null,
              null,
              @KEYNAME,
              null,
              @ADDRESS_ADDRESSBLOCK,
              @ADDRESS_POSTCODE,
              @ADDRESS_COUNTRYID,
              1,
              0,
              null,
              null,
              @EMAILADDRESS_EMAILADDRESS,
              @PHONE_NUMBER,
              null,
              null,
              @CURRENTAPPUSERID,
              @CONSTITUENTDUPLICATEMATCHINGENABLED)
            )
            select top(@MAXROWS)
                C.ID,
                DC.MATCHPERCENTAGE,
                C.NAME,
                A.ADDRESSBLOCK,
                A.CITY,
                S.DESCRIPTION,
                A.POSTCODE,
                C.LOOKUPID,
                A.ID ADDRESSID,
                DC.EMAILADDRESSID,
                DC.PHONEID,
                DC.STREETNUMBERRESULT,
                DC.STREETNAMERESULT,
                DC.POSTCODERESULT,
                case when ADDRESSID is not null then dbo.UFN_BUILDFULLADDRESS(ADDRESSID,a.ADDRESSBLOCK,a.CITY,a.STATEID,a.POSTCODE,a.COUNTRYID) else dbo.UFN_CONSTITUENTDUPLICATESEARCH_DEFAULTADDRESS(C.ID,@ADDRESS_ADDRESSTYPECODEID) end as FULLADDRESS 
            from
                DUPLICATECANDIDATES_CTE DC 
                left outer join dbo.CONSTITUENT C on C.ID = DC.CONSTITUENTID
                left outer join dbo.ADDRESS A on A.ID = DC.ADDRESSID
                left outer join dbo.STATE S on S.ID = A.STATEID
                left join dbo.PHONE P on DC.PHONEID = P.ID
                left join dbo.EMAILADDRESS E on DC.EMAILADDRESSID = E.ID 
            where (@ISADMIN = 1 or @CURRENTAPPUSERID is null or @APPUSER_IN_NONRACROLE = 1 or
                dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, DC.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1)                           
            order by
                DC.MATCHPERCENTAGE desc,
                case when C.KEYNAME = @KEYNAME then 1 else 2 end
                case when isnull(A.ADDRESSTYPECODEID,@NULLVALUE) = isnull(@ADDRESS_ADDRESSTYPECODEID,@NULLVALUE) then 1 else 2 end,
                case when isnull(P.PHONETYPECODEID,@NULLVALUE) = isnull(@PHONE_PHONETYPECODEID,@NULLVALUE) then 1 else 2 end
                case when isnull(E.EMAILADDRESSTYPECODEID,@NULLVALUE) = isnull(@EMAILADDRESS_EMAILADDRESSTYPECODEID,@NULLVALUE) then 1 else 2 end,
                case when isnull(A.ADDRESSBLOCK,'') = isnull(@ADDRESS_ADDRESSBLOCK,'') then 1 else 2 end,
                A.ISPRIMARY desc,
                P.ISPRIMARY desc,
                E.ISPRIMARY desc

                end