USP_CONSTITUENTUPDATEBATCH_APPLYCONSTITUENTMATCHINGRULES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@PRIMARYRECORDID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_CONSTITUENTUPDATEBATCH_APPLYCONSTITUENTMATCHINGRULES(
@ID uniqueidentifier,
@PRIMARYRECORDID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @FIRSTNAME nvarchar(100)
declare @KEYNAME nvarchar(200)
declare @MIDDLENAME nvarchar(100)
declare @SUFFIXCODEID uniqueidentifier
declare @TITLECODEID uniqueidentifier
declare @EXISTINGFIRSTNAME nvarchar(100)
declare @EXISTINGKEYNAME nvarchar(200)
declare @EXISTINGMIDDLENAME nvarchar(100)
declare @EXISTINGSUFFIXCODEID uniqueidentifier
declare @EXISTINGTITLECODEID uniqueidentifier
-- Get existing constituent names
select
@EXISTINGFIRSTNAME = FIRSTNAME,
@EXISTINGKEYNAME = KEYNAME,
@EXISTINGMIDDLENAME = MIDDLENAME,
@EXISTINGSUFFIXCODEID = SUFFIXCODEID,
@EXISTINGTITLECODEID = TITLECODEID
from dbo.CONSTITUENT
where ID = @PRIMARYRECORDID
-- Get names in batch
select
@FIRSTNAME = FIRSTNAME,
@KEYNAME = KEYNAME,
@MIDDLENAME = MIDDLENAME,
@SUFFIXCODEID = SUFFIXCODEID,
@TITLECODEID = TITLECODEID
from dbo.BATCHCONSTITUENTUPDATE
where ID = @ID
declare @UPDATENAMES tinyint = 0;
-- check to see if there are any conflicts. If none, we are allowed to apply any new information.
-- If there are conflicts we don't want to apply new information. So if 'Tim J Littleton' is coming in
-- and 'Tim Jones' is the existing name, we don't want to add the J to the existing record.
select top 1
@UPDATENAMES=CONSTITUENTUPDATENAMESGLOBALSETTINGCODE
from dbo.CONSTITUENTBUSINESSRULESSETTINGS;
-- if its an update or ignore or Alias, see if there are any conflicts. If not set to replace to fill in any new data to current record.
if @UPDATENAMES IN (0,3) and
(@EXISTINGFIRSTNAME = '' or @EXISTINGFIRSTNAME = @FIRSTNAME or @FIRSTNAME = '') and
(@EXISTINGKEYNAME = '' or @EXISTINGKEYNAME = @KEYNAME or @KEYNAME = '') and
(@EXISTINGMIDDLENAME = '' or @EXISTINGMIDDLENAME = @MIDDLENAME or @MIDDLENAME = '') and
(@EXISTINGSUFFIXCODEID is null or @SUFFIXCODEID is null or @EXISTINGSUFFIXCODEID = @SUFFIXCODEID ) and
(@EXISTINGTITLECODEID is null or @TITLECODEID is null or @EXISTINGTITLECODEID = @TITLECODEID)
set @UPDATENAMES = 1
--If the setting is replace we want to populate any name conflicts with the newly entered value.
--If there is no new value, we want to use the existing value.
if @UPDATENAMES = 1
update dbo.BATCHCONSTITUENTUPDATE set
FIRSTNAME = coalesce(NULLIF(FIRSTNAME,''),@EXISTINGFIRSTNAME),
KEYNAME = coalesce(NULLIF(KEYNAME,''),@EXISTINGKEYNAME),
MIDDLENAME = coalesce(NULLIF(MIDDLENAME,''),@EXISTINGMIDDLENAME),
SUFFIXCODEID = coalesce(SUFFIXCODEID,@EXISTINGSUFFIXCODEID),
TITLECODEID = coalesce(TITLECODEID,@EXISTINGTITLECODEID),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
--If the setting is Do not replace we want to populate any name conflicts with what already exists in the constituent table.
--In this case we can blank out values in the Batch line if the existing value in the database table is blank.
else if @UPDATENAMES in (0,3)
begin
update dbo.BATCHCONSTITUENTUPDATE set
FIRSTNAME = @EXISTINGFIRSTNAME,
KEYNAME = @EXISTINGKEYNAME,
MIDDLENAME = @EXISTINGMIDDLENAME,
SUFFIXCODEID = @EXISTINGSUFFIXCODEID,
TITLECODEID = @EXISTINGTITLECODEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
-- Handle Alias. Insert into Alias table and ignore name in batch since we don't want to replace during commit.
if @UPDATENAMES = 3
exec dbo.USP_DATAFORMTEMPLATE_ADD_INDIVIDUALALIAS
@CHANGEAGENTID = @CHANGEAGENTID,
@CONSTITUENTID = @PRIMARYRECORDID,
@KEYNAME = @KEYNAME,
@FIRSTNAME = @FIRSTNAME,
@MIDDLENAME = @MIDDLENAME,
@TITLECODEID = @TITLECODEID,
@SUFFIXCODEID = @SUFFIXCODEID;
end
end