USP_DATAFORMTEMPLATE_EDIT_PHONE_8
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@PHONETYPECODEID | uniqueidentifier | IN | |
@NUMBER | nvarchar(100) | IN | |
@PRIMARY | bit | IN | |
@DONOTCALL | bit | IN | |
@UPDATEMATCHINGSPOUSEPHONE | bit | IN | |
@UPDATEMATCHINGHOUSEHOLDPHONE | bit | IN | |
@STARTTIME | UDT_HOURMINUTE | IN | |
@ENDTIME | UDT_HOURMINUTE | IN | |
@INFOSOURCECODEID | uniqueidentifier | IN | |
@INFOSOURCECOMMENTS | nvarchar(256) | IN | |
@COUNTRYID | uniqueidentifier | IN | |
@STARTDATE | date | IN | |
@ENDDATE | date | IN | |
@DONOTCALLREASONCODEID | uniqueidentifier | IN | |
@ISCONFIDENTIAL | bit | IN | |
@CONSTITUENTDATAREVIEWROLLBACKREASONID | uniqueidentifier | IN | |
@SEASONALSTARTDATE | UDT_MONTHDAY | IN | |
@SEASONALENDDATE | UDT_MONTHDAY | IN | |
@DONOTTEXT | bit | IN |
Definition
Copy
create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PHONE_8
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@PHONETYPECODEID uniqueidentifier,
@NUMBER nvarchar(100),
@PRIMARY bit,
@DONOTCALL bit,
@UPDATEMATCHINGSPOUSEPHONE bit,
@UPDATEMATCHINGHOUSEHOLDPHONE bit,
@STARTTIME dbo.UDT_HOURMINUTE,
@ENDTIME dbo.UDT_HOURMINUTE,
@INFOSOURCECODEID uniqueidentifier,
@INFOSOURCECOMMENTS nvarchar(256),
@COUNTRYID uniqueidentifier,
@STARTDATE date,
@ENDDATE date,
@DONOTCALLREASONCODEID uniqueidentifier,
@ISCONFIDENTIAL bit,
@CONSTITUENTDATAREVIEWROLLBACKREASONID uniqueidentifier, -- used by constituent data review
@SEASONALSTARTDATE dbo.UDT_MONTHDAY,
@SEASONALENDDATE dbo.UDT_MONTHDAY,
@DONOTTEXT bit
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
-- #253763 Check to see if there are duplicate phone numbers. Same phone type and same phone number.
-- If nothing has changed on the edit form we don't want to check for duplicates. This way if dups already exist and we
-- change nothing, we can still save the form without getting an error message.
if @ENDDATE is null
begin
declare @NULLVALUE uniqueidentifier = newid();
declare @NULLDATE date = '9999-01-01'
declare @NUMBERNOFORMAT nvarchar(100) = coalesce(dbo.UFN_PHONE_REMOVEFORMATTING(@NUMBER),'')
set @NUMBERNOFORMAT = dbo.UFN_PHONE_REMOVECOUNTRYCODE(@NUMBERNOFORMAT, @COUNTRYID);
if exists (select 'X' from dbo.PHONE a
inner join dbo.PHONE a2 on a2.CONSTITUENTID = a.CONSTITUENTID and a2.ID <> @ID
where (coalesce(a.NUMBERNOFORMAT,'') <> @NUMBERNOFORMAT
or coalesce(a.PHONETYPECODEID,@NULLVALUE) <> coalesce(@PHONETYPECODEID,@NULLVALUE)
or coalesce(a.COUNTRYID,@NULLVALUE) <> coalesce(@COUNTRYID,@NULLVALUE)
or coalesce(a.ENDDATE,@NULLDATE) <> coalesce(@ENDDATE,@NULLDATE))
and a.ID = @ID
and a2.ENDDATE is null
and coalesce(a2.NUMBERNOFORMAT,'') = @NUMBERNOFORMAT
and coalesce(a2.PHONETYPECODEID,@NULLVALUE) = coalesce(@PHONETYPECODEID,@NULLVALUE)
and coalesce(a2.COUNTRYID,@NULLVALUE) = coalesce(@COUNTRYID,@NULLVALUE))
raiserror('BBERR_PHONENUMBER_DUPLICATENOTALLOWED', 13, 1);
end
-- @UPDATEMATCHINGSPOUSEPHONE has been deprecated in favor of updating all of the members of a household
set @UPDATEMATCHINGHOUSEHOLDPHONE = case when @UPDATEMATCHINGSPOUSEPHONE = 1 then 1 else @UPDATEMATCHINGHOUSEHOLDPHONE end;
exec dbo.USP_PHONE_UPDATE @ID, @CHANGEAGENTID, @CURRENTDATE, @PHONETYPECODEID, @NUMBER,
@PRIMARY, @DONOTCALL, @UPDATEMATCHINGHOUSEHOLDPHONE, @STARTTIME, @ENDTIME, @INFOSOURCECODEID,
@INFOSOURCECOMMENTS, @COUNTRYID, @STARTDATE, @ENDDATE,
@DONOTCALLREASONCODEID, @ISCONFIDENTIAL, @SEASONALSTARTDATE, @SEASONALENDDATE, @DONOTTEXT;
return 0;