USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTUPDATEBATCHDUPLICATEMATCH_7
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@LOOKUPID | nvarchar(50) | IN | |
@FIRSTNAME | nvarchar(50) | IN | |
@MIDDLENAME | nvarchar(50) | IN | |
@LASTNAME | nvarchar(100) | IN | |
@SUFFIXCODEID | uniqueidentifier | IN | |
@TITLECODEID | uniqueidentifier | IN | |
@MAIDENNAME | nvarchar(100) | IN | |
@NICKNAME | nvarchar(50) | IN | |
@GENDERCODE | tinyint | IN | |
@BIRTHDATE | UDT_FUZZYDATE | IN | |
@ADDRESSID | uniqueidentifier | IN | |
@ADDRESSTYPECODEID | uniqueidentifier | IN | |
@ADDRESS_ADDRESSBLOCK | nvarchar(150) | IN | |
@ADDRESS_CITY | nvarchar(50) | IN | |
@ADDRESS_STATEID | uniqueidentifier | IN | |
@ADDRESS_POSTCODE | nvarchar(12) | IN | |
@ADDRESS_COUNTRYID | uniqueidentifier | IN | |
@PHONEID | uniqueidentifier | IN | |
@PHONETYPECODEID | uniqueidentifier | IN | |
@PHONENUMBER | nvarchar(100) | IN | |
@EMAILID | uniqueidentifier | IN | |
@EMAILADDRESSTYPECODEID | uniqueidentifier | IN | |
@EMAILADDRESS | UDT_EMAILADDRESS | IN | |
@CREATEDON | datetime | IN | |
@DATECHANGED | datetime | IN | |
@ADDRESSES | xml | IN | |
@PHONES | xml | IN | |
@EMAILADDRESSES | xml | IN | |
@CONSTITUENTACTION | tinyint | IN | |
@ADDRESSACTION | tinyint | IN | |
@EMAILACTION | tinyint | IN | |
@PHONEACTION | tinyint | IN | |
@PRIMARYRECORDID | uniqueidentifier | IN | |
@EMAILISPRIMARY | bit | IN | |
@PHONEISPRIMARY | bit | IN | |
@ADDRESSISPRIMARY | bit | IN | |
@INCOMINGADDRESSID | uniqueidentifier | IN | |
@INCOMINGEMAILID | uniqueidentifier | IN | |
@INCOMINGPHONEID | uniqueidentifier | IN | |
@SIMILARADDRESSCODE | tinyint | IN | |
@UNSIMILARADDRESSCODE | tinyint | IN | |
@NEWADDRESSPRIMARYCODE | tinyint | IN | |
@DIFFERENTPHONECODE | tinyint | IN | |
@NEWPHONEPRIMARYCODE | tinyint | IN | |
@DIFFERENTEMAILCODE | tinyint | IN | |
@NEWEMAILPRIMARYCODE | tinyint | IN | |
@DECEASED | bit | IN | |
@DECEASEDDATE | UDT_FUZZYDATE | IN | |
@GIVESANONYMOUSLY | bit | IN | |
@MARITALSTATUSCODEID | uniqueidentifier | IN | |
@WEBADDRESS | UDT_WEBADDRESS | IN | |
@ADDRESSHISTORICALSTARTDATE | date | IN | |
@ADDRESSHISTORICALENDDATE | date | IN | |
@ADDRESSDONOTMAIL | bit | IN | |
@ADDRESSDONOTMAILREASONCODEID | uniqueidentifier | IN | |
@ADDRESSSTARTDATE | UDT_MONTHDAY | IN | |
@ADDRESSENDDATE | UDT_MONTHDAY | IN | |
@ADDRESSDPC | nvarchar(max) | IN | |
@ADDRESSCART | nvarchar(max) | IN | |
@ADDRESSLOT | nvarchar(5) | IN | |
@ADDRESSINFOSOURCECODEID | uniqueidentifier | IN | |
@ADDRESSINFOSOURCECOMMENTS | nvarchar(256) | IN | |
@ADDRESSCOUNTYCODEID | uniqueidentifier | IN | |
@ADDRESSREGIONCODEID | uniqueidentifier | IN | |
@ADDRESSCONGRESSIONALDISTRICTCODEID | uniqueidentifier | IN | |
@ADDRESSSTATEHOUSEDISTRICTCODEID | uniqueidentifier | IN | |
@ADDRESSSTATESENATEDISTRICTCODEID | uniqueidentifier | IN | |
@ADDRESSLOCALPRECINCTCODEID | uniqueidentifier | IN | |
@ADDRESSCERTIFICATIONDATA | int | IN | |
@ADDRESSLASTVALIDATIONATTEMPTDATE | date | IN | |
@ADDRESSOMITFROMVALIDATION | bit | IN | |
@ADDRESSVALIDATIONMESSAGE | nvarchar(200) | IN | |
@PHONEDONOTCALL | bit | IN | |
@PHONESTARTTIME | UDT_HOURMINUTE | IN | |
@PHONEENDTIME | UDT_HOURMINUTE | IN | |
@PHONEINFOSOURCECODEID | uniqueidentifier | IN | |
@PHONECOUNTRYID | uniqueidentifier | IN | |
@PHONESTARTDATE | date | IN | |
@PHONEENDDATE | date | IN | |
@PHONESEASONALSTARTDATE | UDT_MONTHDAY | IN | |
@PHONESEASONALENDDATE | UDT_MONTHDAY | IN | |
@EMAILADDRESSDONOTEMAIL | bit | IN | |
@EMAILADDRESSINFOSOURCECODEID | uniqueidentifier | IN | |
@EMAILADDRESSSTARTDATE | date | IN | |
@EMAILADDRESSENDDATE | date | IN | |
@CONSTITUENCIES | xml | IN | |
@ORIGINAL_KEYNAME | nvarchar(100) | IN | |
@ORIGINAL_FIRSTNAME | nvarchar(50) | IN | |
@SOLICITCODES | xml | IN | |
@GENDERCODEID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTUPDATEBATCHDUPLICATEMATCH_7 (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@LOOKUPID nvarchar(50),
@FIRSTNAME nvarchar(50),
@MIDDLENAME nvarchar(50),
@LASTNAME nvarchar(100),
@SUFFIXCODEID uniqueidentifier,
@TITLECODEID uniqueidentifier,
@MAIDENNAME nvarchar(100),
@NICKNAME nvarchar(50),
@GENDERCODE tinyint,
@BIRTHDATE dbo.UDT_FUZZYDATE,
@ADDRESSID uniqueidentifier, -- matched addressID
@ADDRESSTYPECODEID uniqueidentifier,
@ADDRESS_ADDRESSBLOCK nvarchar(150),
@ADDRESS_CITY nvarchar(50),
@ADDRESS_STATEID uniqueidentifier,
@ADDRESS_POSTCODE nvarchar(12),
@ADDRESS_COUNTRYID uniqueidentifier,
@PHONEID uniqueidentifier,
@PHONETYPECODEID uniqueidentifier,
@PHONENUMBER nvarchar(100),
@EMAILID uniqueidentifier,
@EMAILADDRESSTYPECODEID uniqueidentifier,
@EMAILADDRESS dbo.UDT_EMAILADDRESS,
@CREATEDON datetime,
@DATECHANGED datetime,
@ADDRESSES xml,
@PHONES xml,
@EMAILADDRESSES xml,
@CONSTITUENTACTION tinyint,
@ADDRESSACTION tinyint,
@EMAILACTION tinyint,
@PHONEACTION tinyint,
@PRIMARYRECORDID uniqueidentifier, -- matched constituentID
@EMAILISPRIMARY bit,
@PHONEISPRIMARY bit,
@ADDRESSISPRIMARY bit,
@INCOMINGADDRESSID uniqueidentifier, -- the ID of the incoming address displayed on the screen
@INCOMINGEMAILID uniqueidentifier, -- the ID of the incoming email displayed on the screen
@INCOMINGPHONEID uniqueidentifier, -- the ID of the incoming phone displayed on the screen
@SIMILARADDRESSCODE tinyint,
@UNSIMILARADDRESSCODE tinyint,
@NEWADDRESSPRIMARYCODE tinyint,
@DIFFERENTPHONECODE tinyint,
@NEWPHONEPRIMARYCODE tinyint,
@DIFFERENTEMAILCODE tinyint,
@NEWEMAILPRIMARYCODE tinyint,
@DECEASED bit,
@DECEASEDDATE dbo.UDT_FUZZYDATE,
@GIVESANONYMOUSLY bit,
@MARITALSTATUSCODEID uniqueidentifier,
@WEBADDRESS dbo.UDT_WEBADDRESS,
@ADDRESSHISTORICALSTARTDATE date,
@ADDRESSHISTORICALENDDATE date,
@ADDRESSDONOTMAIL bit,
@ADDRESSDONOTMAILREASONCODEID uniqueidentifier,
@ADDRESSSTARTDATE dbo.UDT_MONTHDAY,
@ADDRESSENDDATE dbo.UDT_MONTHDAY,
@ADDRESSDPC nvarchar(max),
@ADDRESSCART nvarchar(max),
@ADDRESSLOT nvarchar(5),
@ADDRESSINFOSOURCECODEID uniqueidentifier,
@ADDRESSINFOSOURCECOMMENTS nvarchar(256),
@ADDRESSCOUNTYCODEID uniqueidentifier,
@ADDRESSREGIONCODEID uniqueidentifier,
@ADDRESSCONGRESSIONALDISTRICTCODEID uniqueidentifier,
@ADDRESSSTATEHOUSEDISTRICTCODEID uniqueidentifier,
@ADDRESSSTATESENATEDISTRICTCODEID uniqueidentifier,
@ADDRESSLOCALPRECINCTCODEID uniqueidentifier,
@ADDRESSCERTIFICATIONDATA int,
@ADDRESSLASTVALIDATIONATTEMPTDATE date,
@ADDRESSOMITFROMVALIDATION bit,
@ADDRESSVALIDATIONMESSAGE nvarchar(200),
@PHONEDONOTCALL bit,
@PHONESTARTTIME dbo.UDT_HOURMINUTE,
@PHONEENDTIME dbo.UDT_HOURMINUTE,
@PHONEINFOSOURCECODEID uniqueidentifier,
@PHONECOUNTRYID uniqueidentifier,
@PHONESTARTDATE date,
@PHONEENDDATE date,
@PHONESEASONALSTARTDATE dbo.UDT_MONTHDAY,
@PHONESEASONALENDDATE dbo.UDT_MONTHDAY,
@EMAILADDRESSDONOTEMAIL bit,
@EMAILADDRESSINFOSOURCECODEID uniqueidentifier,
@EMAILADDRESSSTARTDATE date,
@EMAILADDRESSENDDATE date,
@CONSTITUENCIES xml,
@ORIGINAL_KEYNAME nvarchar(100),
@ORIGINAL_FIRSTNAME nvarchar(50),
@SOLICITCODES xml,
@GENDERCODEID uniqueidentifier
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @ISERB bit = 0;
if exists (
select 'x'
from dbo.BATCHREVENUE
where ID = @ID
)
set @ISERB = 1;
if @CONSTITUENTACTION is null
set @CONSTITUENTACTION = 0;
if @ADDRESSACTION is null
set @ADDRESSACTION = 0;
if @EMAILACTION is null
set @EMAILACTION = 0;
if @PHONEACTION is null
set @PHONEACTION = 0;
begin try
------------CONSTITUENT HANDLING------------------------
if @CONSTITUENTACTION = 1 --Add constituent as alias (same SP can be used for both individuals and organizations)
begin
declare @IGNOREDUPLICATE bit = 1;--if we are here we want to ignore the duplicate error message and continue on.
exec dbo.USP_ADD_INDIVIDUAL_ALIAS @CHANGEAGENTID = @CHANGEAGENTID,
@CONSTITUENTID = @PRIMARYRECORDID,
@KEYNAME = @LASTNAME,
@FIRSTNAME = @FIRSTNAME,
@MIDDLENAME = @MIDDLENAME,
@TITLECODEID = @TITLECODEID,
@SUFFIXCODEID = @SUFFIXCODEID,
@IGNOREDUPLICATE = @IGNOREDUPLICATE;
-- reload the fields with the correct data for the batch row
select @LASTNAME = KEYNAME,
@FIRSTNAME = FIRSTNAME,
@MIDDLENAME = MIDDLENAME,
@TITLECODEID = TITLECODEID,
@SUFFIXCODEID = SUFFIXCODEID,
@BIRTHDATE = BIRTHDATE,
@LOOKUPID = LOOKUPID
from dbo.CONSTITUENT
where ID = @PRIMARYRECORDID;
end
-- always update the constituent data.
update CUB
set CUB.FIRSTNAME = coalesce(@FIRSTNAME, ''),
CUB.MIDDLENAME = coalesce(@MIDDLENAME, ''),
CUB.KEYNAME = @LASTNAME,
CUB.ORIGINAL_FIRSTNAME = coalesce(@ORIGINAL_FIRSTNAME, ''),
CUB.ORIGINAL_KEYNAME = coalesce(@ORIGINAL_KEYNAME, ''),
CUB.SUFFIXCODEID = @SUFFIXCODEID,
CUB.TITLECODEID = @TITLECODEID,
CUB.BIRTHDATE = coalesce(@BIRTHDATE, '00000000'),
CUB.CHANGEDBYID = @CHANGEAGENTID,
CUB.DATECHANGED = @CURRENTDATE,
CUB.PRIMARYRECORDID = @PRIMARYRECORDID,
CUB.DOMANUALREVIEWFORAUTOMATCH = 0,
CUB.LOOKUP_ID = coalesce(@LOOKUPID, ''),
CUB.MARITALSTATUSCODEID = @MARITALSTATUSCODEID,
CUB.GIVESANONYMOUSLY = @GIVESANONYMOUSLY,
CUB.MAIDENNAME = coalesce(@MAIDENNAME, ''),
CUB.NICKNAME = coalesce(@NICKNAME, ''),
CUB.GENDERCODE = @GENDERCODE,
CUB.DECEASED = @DECEASED,
CUB.DECEASEDDATE = @DECEASEDDATE,
CUB.WEBADDRESS = @WEBADDRESS,
CUB.GENDERCODEID = @GENDERCODEID
from dbo.BATCHCONSTITUENTUPDATE CUB
where CUB.ID = @ID
--------------ADDRESSES----------------------------------
if @ADDRESSACTION = 1 -- Add address
begin
update CUBA
set CUBA.ISPRIMARY = @ADDRESSISPRIMARY,
CUBA.CHANGEDBYID = @CHANGEAGENTID,
CUBA.DATECHANGED = @CURRENTDATE
from dbo.BATCHCONSTITUENTUPDATEADDRESSES CUBA
where CUBA.ID = @INCOMINGADDRESSID
end
else
if @ADDRESSACTION = 2 -- Update current action
begin
declare @PRIMARY bit,
@UPDATECONTACTS bit,
@UPDATEMATCHINGHOUSEHOLDADDRESSES bit;
exec dbo.USP_ADDRESS_EDITLOAD @ADDRESSID,
@PRIMARY = @PRIMARY output,
@UPDATECONTACTS = @UPDATECONTACTS output,
@UPDATEMATCHINGHOUSEHOLDADDRESSES = @UPDATEMATCHINGHOUSEHOLDADDRESSES output;
update CUBA
set CUBA.ADDRESSID = @ADDRESSID,
CUBA.ADDRESSTYPECODEID = coalesce(nullif(CUBA.ADDRESSTYPECODEID, '00000000-0000-0000-0000-000000000000'), @ADDRESSTYPECODEID),
CUBA.ADDRESSBLOCK = @ADDRESS_ADDRESSBLOCK,
CUBA.CITY = @ADDRESS_CITY,
CUBA.STATEID = @ADDRESS_STATEID,
CUBA.POSTCODE = @ADDRESS_POSTCODE,
CUBA.COUNTRYID = @ADDRESS_COUNTRYID,
CUBA.ENDDATE = coalesce(nullif(CUBA.ENDDATE, '0000'), @ADDRESSENDDATE),
CUBA.STARTDATE = coalesce(nullif(CUBA.STARTDATE, '0000'), @ADDRESSSTARTDATE),
CUBA.HISTORICALSTARTDATE = coalesce(CUBA.HISTORICALSTARTDATE, @ADDRESSHISTORICALSTARTDATE),
CUBA.HISTORICALENDDATE = coalesce(CUBA.HISTORICALENDDATE, @ADDRESSHISTORICALENDDATE),
CUBA.CART = coalesce(nullif(CUBA.CART, ''), @ADDRESSCART),
CUBA.DONOTMAIL = coalesce(nullif(CUBA.DONOTMAIL, 0), @ADDRESSDONOTMAIL),
CUBA.DONOTMAILREASONCODEID = coalesce(CUBA.DONOTMAILREASONCODEID, @ADDRESSDONOTMAILREASONCODEID),
CUBA.DPC = coalesce(nullif(CUBA.DPC, ''), @ADDRESSDPC),
CUBA.ISPRIMARY = coalesce(nullif(CUBA.ISPRIMARY, 0), @PRIMARY),
CUBA.LOT = coalesce(nullif(CUBA.LOT, ''), @ADDRESSLOT),
CUBA.OMITFROMVALIDATION = coalesce(nullif(CUBA.OMITFROMVALIDATION, 0), coalesce(@ADDRESSOMITFROMVALIDATION, 0)),
CUBA.COUNTYCODEID = coalesce(CUBA.COUNTYCODEID, @ADDRESSCOUNTYCODEID),
CUBA.CONGRESSIONALDISTRICTCODEID = coalesce(CUBA.CONGRESSIONALDISTRICTCODEID, @ADDRESSCONGRESSIONALDISTRICTCODEID),
CUBA.STATEHOUSEDISTRICTCODEID = coalesce(CUBA.STATEHOUSEDISTRICTCODEID, @ADDRESSSTATEHOUSEDISTRICTCODEID),
CUBA.STATESENATEDISTRICTCODEID = coalesce(CUBA.STATESENATEDISTRICTCODEID, @ADDRESSSTATESENATEDISTRICTCODEID),
CUBA.LOCALPRECINCTCODEID = coalesce(CUBA.LOCALPRECINCTCODEID, @ADDRESSLOCALPRECINCTCODEID),
CUBA.INFOSOURCECODEID = coalesce(CUBA.INFOSOURCECODEID, @ADDRESSINFOSOURCECODEID),
CUBA.REGIONCODEID = coalesce(CUBA.REGIONCODEID, @ADDRESSREGIONCODEID),
CUBA.LASTVALIDATIONATTEMPTDATE = coalesce(CUBA.LASTVALIDATIONATTEMPTDATE, @ADDRESSLASTVALIDATIONATTEMPTDATE),
CUBA.VALIDATIONMESSAGE = coalesce(nullif(CUBA.VALIDATIONMESSAGE, ''), coalesce(@ADDRESSVALIDATIONMESSAGE, '')),
CUBA.CERTIFICATIONDATA = coalesce(nullif(CUBA.CERTIFICATIONDATA, 0), coalesce(@ADDRESSCERTIFICATIONDATA, 0)),
CUBA.UPDATEHOUSEHOLD = coalesce(nullif(CUBA.UPDATEHOUSEHOLD, 0), coalesce(@UPDATEMATCHINGHOUSEHOLDADDRESSES, 0)),
CUBA.INFOSOURCECOMMENTS = coalesce(nullif(CUBA.INFOSOURCECOMMENTS, ''), coalesce(@ADDRESSINFOSOURCECOMMENTS, '')),
CUBA.CHANGEDBYID = @CHANGEAGENTID,
CUBA.DATECHANGED = @CURRENTDATE
from dbo.BATCHCONSTITUENTUPDATEADDRESSES CUBA
where CUBA.ID = @INCOMINGADDRESSID
end
else -- ignore
begin
delete
from dbo.BATCHCONSTITUENTUPDATEADDRESSES
where ID = @INCOMINGADDRESSID
end
-- process all the other addresses here only if this a CUB (if it's a generate exception ERB originating scenario don't process)
if @ISERB = 0
begin
-- if the incoming address was added as primary don't add another one as primary
if @ADDRESSISPRIMARY = 1
set @NEWADDRESSPRIMARYCODE = 0;
-- if the rule for adding an address is manual review then add that address as new
if @SIMILARADDRESSCODE = 2
set @SIMILARADDRESSCODE = 3;
if @UNSIMILARADDRESSCODE = 2
set @UNSIMILARADDRESSCODE = 3;
-- apply the address rules on all the incoming addresses except for the one displayed in the resolution screen
exec dbo.USP_CONSTITUENTUPDATEBATCH_APPLYADDRESSRULES @ID,
@PRIMARYRECORDID,
@CHANGEAGENTID,
1,
@SIMILARADDRESSCODE,
@UNSIMILARADDRESSCODE,
@NEWADDRESSPRIMARYCODE,
@INCOMINGADDRESSID
end
----------------EMAILS----------------------------
if @EMAILACTION = 1 -- add as secondary email
begin
update CUBE
set CUBE.ISPRIMARY = @EMAILISPRIMARY,
CUBE.CHANGEDBYID = @CHANGEAGENTID,
CUBE.DATECHANGED = @CURRENTDATE
from dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES CUBE
where CUBE.ID = @INCOMINGEMAILID
end
else
if @EMAILACTION = 2 -- update current email
begin
declare @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit,
@EMAILINFOSOURCECOMMENTS nvarchar(256);
-- invoke email load
exec dbo.USP_EMAILADDRESS_EDITLOAD @EMAILID,
@PRIMARY = @EMAILISPRIMARY output,
@UPDATEMATCHINGHOUSEHOLDEMAILADDRESS = @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS output,
@INFOSOURCECOMMENTS = @EMAILINFOSOURCECOMMENTS output;
update CUBE
set CUBE.EMAILADDRESS = @EMAILADDRESS,
CUBE.EMAILADDRESSID = @EMAILID,
CUBE.EMAILADDRESSTYPECODEID = coalesce(CUBE.EMAILADDRESSTYPECODEID, @EMAILADDRESSTYPECODEID),
CUBE.ISPRIMARY = coalesce(nullif(CUBE.ISPRIMARY, 0), @EMAILISPRIMARY),
CUBE.DONOTEMAIL = coalesce(nullif(CUBE.DONOTEMAIL, 0), @EMAILADDRESSDONOTEMAIL),
CUBE.STARTDATE = coalesce(cube.STARTDATE, @EMAILADDRESSSTARTDATE),
CUBE.ENDDATE = coalesce(cube.ENDDATE, @EMAILADDRESSENDDATE),
CUBE.INFOSOURCECODEID = coalesce(cube.INFOSOURCECODEID, @EMAILADDRESSINFOSOURCECODEID),
CUBE.UPDATEHOUSEHOLD = coalesce(nullif(CUBE.UPDATEHOUSEHOLD, 0), coalesce(@UPDATEMATCHINGHOUSEHOLDEMAILADDRESS, 0)),
CUBE.CHANGEDBYID = @CHANGEAGENTID,
CUBE.DATECHANGED = @CURRENTDATE
from dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES CUBE
where CUBE.ID = @INCOMINGEMAILID
end
else -- ignore means to delete from batch
begin
delete
from dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES
where ID = @INCOMINGEMAILID
end
-- process all the other emails here only if this a CUB (if it's a generate exception ERB originating scenario don't process)
if @ISERB = 0
begin
-- if the incoming email was added as primary don't add another one as primary
if @EMAILISPRIMARY = 1
set @NEWEMAILPRIMARYCODE = 0;
-- if the rule for adding an email is manual review then add that address as new
if @DIFFERENTEMAILCODE = 2
set @DIFFERENTEMAILCODE = 3;
-- apply the address rules on all the incoming email except for the one displayed in the resolution screen
exec dbo.USP_CONSTITUENTUPDATEBATCH_APPLYEMAILRULES @ID,
@PRIMARYRECORDID,
@CHANGEAGENTID,
1,
@DIFFERENTEMAILCODE,
@NEWEMAILPRIMARYCODE,
@INCOMINGEMAILID
end
----------------PHONES----------------------------
if @PHONEACTION = 1 -- add as secondary phone
begin
update CUBP
set CUBP.ISPRIMARY = @PHONEISPRIMARY,
CUBP.CHANGEDBYID = @CHANGEAGENTID,
CUBP.DATECHANGED = @CURRENTDATE
from dbo.BATCHCONSTITUENTUPDATEPHONES CUBP
where CUBP.ID = @INCOMINGPHONEID
end
else
if @PHONEACTION = 2 -- update current phone
begin
declare @UPDATEMATCHINGHOUSEHOLDPHONE bit,
@PHONEINFOSOURCECOMMENTS nvarchar(256),
@PHONEDONOTCALLREASONCODEID uniqueidentifier;
exec dbo.USP_PHONE_EDITLOAD @PHONEID,
@PRIMARY = @PHONEISPRIMARY output,
@UPDATEMATCHINGHOUSEHOLDPHONE = @UPDATEMATCHINGHOUSEHOLDPHONE output,
@INFOSOURCECOMMENTS = @PHONEINFOSOURCECOMMENTS output,
@DONOTCALLREASONCODEID = @PHONEDONOTCALLREASONCODEID output;
update CUBP
set CUBP.NUMBER = @PHONENUMBER,
CUBP.PHONEID = @PHONEID,
CUBP.ISPRIMARY = coalesce(nullif(CUBP.ISPRIMARY, 0), @PHONEISPRIMARY),
CUBP.PHONETYPECODEID = coalesce(CUBP.PHONETYPECODEID, @PHONETYPECODEID),
CUBP.DONOTCALL = coalesce(nullif(CUBP.DONOTCALL, 0), @PHONEDONOTCALL),
CUBP.UPDATEHOUSEHOLD = coalesce(nullif(CUBP.UPDATEHOUSEHOLD, 0), coalesce(@UPDATEMATCHINGHOUSEHOLDPHONE, 0)),
CUBP.COUNTRYID = coalesce(CUBP.COUNTRYID, @PHONECOUNTRYID),
CUBP.SEASONALSTARTDATE = coalesce(nullif(CUBP.SEASONALSTARTDATE, '0000'), @PHONESEASONALSTARTDATE),
CUBP.SEASONALENDDATE = coalesce(nullif(CUBP.SEASONALENDDATE, '0000'), @PHONESEASONALENDDATE),
CUBP.STARTTIME = coalesce(nullif(CUBP.STARTTIME, ''), @PHONESTARTTIME),
CUBP.ENDTIME = coalesce(nullif(CUBP.ENDTIME, ''), @PHONEENDTIME),
CUBP.STARTDATE = coalesce(CUBP.STARTDATE, @PHONESTARTDATE),
CUBP.ENDDATE = coalesce(CUBP.ENDDATE, @PHONEENDDATE),
CUBP.INFOSOURCECODEID = coalesce(CUBP.INFOSOURCECODEID, @PHONEINFOSOURCECODEID),
CUBP.CHANGEDBYID = @CHANGEAGENTID,
CUBP.DATECHANGED = @CURRENTDATE
from dbo.BATCHCONSTITUENTUPDATEPHONES CUBP
where CUBP.ID = @INCOMINGPHONEID
end
else -- ignore
begin
delete
from dbo.BATCHCONSTITUENTUPDATEPHONES
where ID = @INCOMINGPHONEID
end
-- process all the other emails here only if this a CUB (if it's a generate exception ERB originating scenario don't process)
if @ISERB = 0
begin
-- if the incoming phone was added as primary don't add another one as primary
if @PHONEISPRIMARY = 1
set @NEWPHONEPRIMARYCODE = 0;
-- if the rule for adding an phone is manual review then add that address as new
if @DIFFERENTPHONECODE = 2
set @DIFFERENTPHONECODE = 3;
-- apply the address rules on all the incoming phone except for the one displayed in the resolution screen
exec dbo.USP_CONSTITUENTUPDATEBATCH_APPLYPHONERULES @ID,
@PRIMARYRECORDID,
@CHANGEAGENTID,
1,
@DIFFERENTPHONECODE,
@NEWPHONEPRIMARYCODE,
@INCOMINGPHONEID
end
----------------SOLICITCODES---------------------------------
-- Need to load the new codes from the @SOLICITCODES variable
-- and also the in system solicit codes from the table
-- dbo.CONSTITUENTSOLICITCODE taking account of the dates
-------------------------------------------------------------
-- load existing solicit codes from dbo.CONSTITUENTSOLICITCODE
insert into [dbo].[BATCHCONSTITUENTUPDATESOLICITCODE]
(
[ID],
[BATCHCONSTITUENTUPDATEID],
[SOLICITCODEID],
[CONSTITUENTSOLICITCODEID],
[STARTDATE],
[ENDDATE],
[COMMENTS],
[SEQUENCE],
[CONSENTPREFERENCECODE],
[SOURCECODEID],
[SOURCEFILEPATH],
[PRIVACYPOLICYFILEPATH],
[SUPPORTINGINFORMATION],
[CONSENTSTATEMENT],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
select
newid() ID,
@ID [BATCHCONSTITUENTUPDATEID],
[SOLICITCODEID],
[ID] CONSTITUENTSOLICITCODEID,
[STARTDATE],
[ENDDATE],
[COMMENTS],
[SEQUENCE],
[CONSENTPREFERENCECODE],
[SOURCECODEID],
[SOURCEFILEPATH],
[PRIVACYPOLICYFILEPATH],
[SUPPORTINGINFORMATION],
[CONSENTSTATEMENT],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.CONSTITUENTSOLICITCODE
where
[CONSTITUENTID] = @PRIMARYRECORDID
and not ID in (select CONSTITUENTSOLICITCODEID from dbo.BATCHCONSTITUENTUPDATESOLICITCODE where BATCHCONSTITUENTUPDATEID = @ID and CONSTITUENTSOLICITCODEID is not null);
-- address the auto end date issues for consent based SC
exec USP_CONSTITUENTUPDATEBATCH_ADJUSTSOLICITCODEDATERANGES @PRIMARYRECORDID, @SOLICITCODES, @CHANGEAGENTID;
----------------CONSTITUENCIES----------------------------
declare @CONSTITUENCIESTABLE table
(
CONSTITUENCYCODEID uniqueidentifier,
ORIGINALCONSTITUENCYID uniqueidentifier,
DATEFROM date,
DATETO date
)
insert into @CONSTITUENCIESTABLE
select
CONSTITUENCIES.ITEM.value('@CONSTITUENCYCODEID[1]', 'uniqueidentifier'),
CONSTITUENCIES.ITEM.value('@ORIGINALCONSTITUENCYID[1]', 'uniqueidentifier'),
CONSTITUENCIES.ITEM.value('@DATEFROM[1]', 'date'),
CONSTITUENCIES.ITEM.value('@DATETO[1]', 'date')
from @CONSTITUENCIES.nodes('/CONSTITUENCIES/ITEM') as CONSTITUENCIES(ITEM)
declare @EARLIESTDATE datetime = '1753-01-01'
declare @LATESTDATE datetime = '9999-12-31'
-- add user-defined constituencies
insert into dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES
(
BATCHCONSTITUENTUPDATEID,
CONSTITUENCYCODEID,
DATEFROM,
DATETO,
ORIGINALCONSTITUENCYID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@ID,
CONSTITUENCYCODEID,
DATEFROM,
DATETO,
ORIGINALCONSTITUENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@CONSTITUENCIESTABLE CONSTITUENCIES
left join dbo.CONSTITUENCYSYSTEMNAME
on CONSTITUENCYSYSTEMNAME.ID = CONSTITUENCIES.CONSTITUENCYCODEID
where
CONSTITUENCYSYSTEMNAME.ID is null
and not exists
(
select 1
from
dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES
where
BATCHCONSTITUENTUPDATECONSTITUENCIES.BATCHCONSTITUENTUPDATEID = @ID
and BATCHCONSTITUENTUPDATECONSTITUENCIES.CONSTITUENCYCODEID = CONSTITUENCIES.CONSTITUENCYCODEID
and coalesce(BATCHCONSTITUENTUPDATECONSTITUENCIES.DATEFROM, @EARLIESTDATE) = coalesce(CONSTITUENCIES.DATEFROM, @EARLIESTDATE)
and coalesce(BATCHCONSTITUENTUPDATECONSTITUENCIES.DATETO, @LATESTDATE) = coalesce(CONSTITUENCIES.DATETO, @LATESTDATE)
)
-- add system constituencies
insert into dbo.BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM
(
BATCHCONSTITUENTUPDATEID,
CONSTITUENCYCODEID,
DATEFROM,
DATETO,
ORIGINALCONSTITUENCYID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@ID,
CONSTITUENCYCODEID,
DATEFROM,
DATETO,
ORIGINALCONSTITUENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@CONSTITUENCIESTABLE CONSTITUENCIES
left join dbo.CONSTITUENCYSYSTEMNAME
on CONSTITUENCYSYSTEMNAME.ID = CONSTITUENCIES.CONSTITUENCYCODEID
where
CONSTITUENCYSYSTEMNAME.ID is not null
and not exists
(
select 1
from
dbo.BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM
where
BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.BATCHCONSTITUENTUPDATEID = @ID
and BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.CONSTITUENCYCODEID = CONSTITUENCIES.CONSTITUENCYCODEID
and coalesce(BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATEFROM, @EARLIESTDATE) = coalesce(CONSTITUENCIES.DATEFROM, @EARLIESTDATE)
and coalesce(BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATETO, @LATESTDATE) = coalesce(CONSTITUENCIES.DATETO, @LATESTDATE)
)
-- Defaulting DATEFROM/DATETO if possible for constituency
declare @ALLCONSTITUENCY xml = dbo.UFN_CONSTITUENTUPDATEBATCH_GETCONSTITUENCIES_TOITEMLISTXML(@ID);
if @ALLCONSTITUENCY is not null
begin
exec USP_CONSTITUENTUPDATEBATCH_ADJUSTCONSTITUENCYDATERANGE @ID, @PRIMARYRECORDID, @ALLCONSTITUENCY, @CHANGEAGENTID;
end
-- reset the generate manual exception flag when the duplicate is resolved
update dbo.BATCHCONSTITUENTUPDATEADDRESSES
set ISMANUALEXCEPTION = 0,
MANUALEXCEPTIONSIMILARADDRESSID = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where BATCHCONSTITUENTUPDATEID = @ID
update dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES
set ISMANUALEXCEPTION = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where BATCHCONSTITUENTUPDATEID = @ID
update dbo.BATCHCONSTITUENTUPDATEPHONES
set ISMANUALEXCEPTION = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where BATCHCONSTITUENTUPDATEID = @ID
-- remove the exception row when the duplicate is resolved
delete
from dbo.BATCHCONSTITUENTUPDATEBATCHSYSTEMMESSAGES
where BATCHCONSTITUENTUPDATEID = @ID and MESSAGETYPECODE = 1;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;