USP_DATAFORMTEMPLATE_EDIT_RELATIONSHIP_INDTOORG_9
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@RELATIONSHIPTYPECODEID | uniqueidentifier | IN | |
@RECIPROCALTYPECODEID | uniqueidentifier | IN | |
@RELATIONSHIPSTARTDATE | datetime | IN | |
@RELATIONSHIPENDDATE | datetime | IN | |
@ISCONTACT | bit | IN | |
@ISPRIMARYCONTACT | bit | IN | |
@CONTACTTYPECODEID | uniqueidentifier | IN | |
@POSITION | nvarchar(100) | IN | |
@ISPRIMARYBUSINESS | bit | IN | |
@ISMATCHINGGIFTRELATIONSHIP | bit | IN | |
@RELATIONADDRESSID | uniqueidentifier | IN | |
@ADDADDRESS | bit | IN | |
@EDITADDRESS | bit | IN | |
@ADDRESSTYPECODEID | uniqueidentifier | IN | |
@PRIMARY | bit | IN | |
@DONOTMAIL | bit | IN | |
@STARTDATE | UDT_MONTHDAY | IN | |
@ENDDATE | UDT_MONTHDAY | IN | |
@COUNTRYID | uniqueidentifier | IN | |
@STATEID | uniqueidentifier | IN | |
@ADDRESSBLOCK | nvarchar(150) | IN | |
@CITY | nvarchar(50) | IN | |
@POSTCODE | nvarchar(12) | IN | |
@CART | nvarchar(10) | IN | |
@DPC | nvarchar(8) | IN | |
@LOT | nvarchar(5) | IN | |
@UPDATEMATCHINGSPOUSEADDRESSES | bit | IN | |
@OMITFROMVALIDATION | bit | IN | |
@COUNTYCODEID | uniqueidentifier | IN | |
@CONGRESSIONALDISTRICTCODEID | uniqueidentifier | IN | |
@STATEHOUSEDISTRICTCODEID | uniqueidentifier | IN | |
@STATESENATEDISTRICTCODEID | uniqueidentifier | IN | |
@LOCALPRECINCTCODEID | uniqueidentifier | IN | |
@INFOSOURCECODEID | uniqueidentifier | IN | |
@REGIONCODEID | uniqueidentifier | IN | |
@LASTVALIDATIONATTEMPTDATE | datetime | IN | |
@VALIDATIONMESSAGE | nvarchar(200) | IN | |
@CERTIFICATIONDATA | int | IN | |
@UPDATECONTACTS | bit | IN | |
@DONOTMAILREASONCODEID | uniqueidentifier | IN | |
@INFOSOURCECOMMENTS | nvarchar(256) | IN | |
@COMMENTS | nvarchar(max) | IN | |
@RELATIONPHONEID | uniqueidentifier | IN | |
@ADDPHONE | bit | IN | |
@EDITPHONE | bit | IN | |
@PHONETYPECODEID | uniqueidentifier | IN | |
@NUMBER | nvarchar(100) | IN | |
@PHONECOUNTRYID | uniqueidentifier | IN | |
@PHONESTARTTIME | UDT_HOURMINUTE | IN | |
@PHONEENDTIME | UDT_HOURMINUTE | IN | |
@PHONESTARTDATE | date | IN | |
@PHONEENDDATE | date | IN | |
@PHONEPRIMARY | bit | IN | |
@DONOTCALL | bit | IN | |
@DONOTCALLREASONCODEID | uniqueidentifier | IN | |
@PHONEISCONFIDENTIAL | bit | IN | |
@PHONEINFOSOURCECODEID | uniqueidentifier | IN | |
@PHONEINFOSOURCECOMMENTS | nvarchar(256) | IN | |
@RELATIONEMAILADDRESSID | uniqueidentifier | IN | |
@ADDEMAILADDRESS | bit | IN | |
@EDITEMAILADDRESS | bit | IN | |
@EMAILADDRESSTYPECODEID | uniqueidentifier | IN | |
@EMAILADDRESS | UDT_EMAILADDRESS | IN | |
@EMAILADDRESSPRIMARY | bit | IN | |
@DONOTEMAIL | bit | IN | |
@EMAILADDRESSINFOSOURCECODEID | uniqueidentifier | IN | |
@EMAILADDRESSINFOSOURCECOMMENTS | nvarchar(256) | IN | |
@PRIMARYSOFTCREDITRELATIONSHIPEXISTS | bit | IN | |
@PRIMARYSOFTCREDITMATCHFACTOR | decimal(5, 2) | IN | |
@RECIPROCALSOFTCREDITRELATIONSHIPEXISTS | bit | IN | |
@RECIPROCALSOFTCREDITMATCHFACTOR | decimal(5, 2) | IN | |
@PRIMARYRECOGNITIONTYPECODEID | uniqueidentifier | IN | |
@RECIPROCALRECOGNITIONTYPECODEID | uniqueidentifier | IN | |
@HISTORICALSTARTDATE | date | IN | |
@HISTORICALENDDATE | date | IN | |
@EMAILSTARTDATE | date | IN | |
@EMAILENDDATE | date | IN | |
@SYNCENDDATETOHISTORY | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RELATIONSHIP_INDTOORG_9
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@RELATIONSHIPTYPECODEID uniqueidentifier,
@RECIPROCALTYPECODEID uniqueidentifier,
@RELATIONSHIPSTARTDATE datetime,
@RELATIONSHIPENDDATE datetime,
@ISCONTACT bit,
@ISPRIMARYCONTACT bit,
@CONTACTTYPECODEID uniqueidentifier,
@POSITION nvarchar(100),
@ISPRIMARYBUSINESS bit,
@ISMATCHINGGIFTRELATIONSHIP bit,
@RELATIONADDRESSID uniqueidentifier,
@ADDADDRESS bit,
@EDITADDRESS bit,
@ADDRESSTYPECODEID uniqueidentifier,
@PRIMARY bit,
@DONOTMAIL bit,
@STARTDATE dbo.UDT_MONTHDAY,
@ENDDATE dbo.UDT_MONTHDAY,
@COUNTRYID uniqueidentifier,
@STATEID uniqueidentifier,
@ADDRESSBLOCK nvarchar(150),
@CITY nvarchar(50),
@POSTCODE nvarchar(12),
@CART nvarchar(10),
@DPC nvarchar(8),
@LOT nvarchar(5),
@UPDATEMATCHINGSPOUSEADDRESSES bit,
@OMITFROMVALIDATION bit,
@COUNTYCODEID uniqueidentifier,
@CONGRESSIONALDISTRICTCODEID uniqueidentifier,
@STATEHOUSEDISTRICTCODEID uniqueidentifier,
@STATESENATEDISTRICTCODEID uniqueidentifier,
@LOCALPRECINCTCODEID uniqueidentifier,
@INFOSOURCECODEID uniqueidentifier,
@REGIONCODEID uniqueidentifier,
@LASTVALIDATIONATTEMPTDATE datetime,
@VALIDATIONMESSAGE nvarchar(200),
@CERTIFICATIONDATA integer,
@UPDATECONTACTS bit,
@DONOTMAILREASONCODEID uniqueidentifier,
@INFOSOURCECOMMENTS nvarchar(256),
@COMMENTS nvarchar(max),
@RELATIONPHONEID uniqueidentifier,
@ADDPHONE bit,
@EDITPHONE bit,
@PHONETYPECODEID uniqueidentifier,
@NUMBER nvarchar(100),
@PHONECOUNTRYID uniqueidentifier,
@PHONESTARTTIME dbo.UDT_HOURMINUTE,
@PHONEENDTIME dbo.UDT_HOURMINUTE,
@PHONESTARTDATE date,
@PHONEENDDATE date,
@PHONEPRIMARY bit,
@DONOTCALL bit,
@DONOTCALLREASONCODEID uniqueidentifier,
@PHONEISCONFIDENTIAL bit,
@PHONEINFOSOURCECODEID uniqueidentifier,
@PHONEINFOSOURCECOMMENTS nvarchar(256),
@RELATIONEMAILADDRESSID uniqueidentifier,
@ADDEMAILADDRESS bit,
@EDITEMAILADDRESS bit,
@EMAILADDRESSTYPECODEID uniqueidentifier,
@EMAILADDRESS dbo.UDT_EMAILADDRESS,
@EMAILADDRESSPRIMARY bit,
@DONOTEMAIL bit,
@EMAILADDRESSINFOSOURCECODEID uniqueidentifier,
@EMAILADDRESSINFOSOURCECOMMENTS nvarchar(256),
@PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit,
@PRIMARYSOFTCREDITMATCHFACTOR decimal(5,2),
@RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit,
@RECIPROCALSOFTCREDITMATCHFACTOR decimal(5,2),
@PRIMARYRECOGNITIONTYPECODEID uniqueidentifier,
@RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier,
@HISTORICALSTARTDATE date,
@HISTORICALENDDATE date,
@EMAILSTARTDATE date,
@EMAILENDDATE date,
@SYNCENDDATETOHISTORY bit
)
as
set nocount on;
declare @contextCache varbinary(128);
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @RELATIONSHIPSETID uniqueidentifier;
select @RELATIONSHIPSETID = RELATIONSHIPSETID
from dbo.RELATIONSHIP where ID = @ID;
if @RELATIONSHIPSETID is null
begin
exec dbo.USP_RELATIONSHIPSET_RETROCREATE @RELATIONSHIPSETID output, @CHANGEAGENTID, @ID;
end
begin try
if exists(select 1 from
dbo.RELATIONSHIPORGANIZATION
inner join
dbo.RELATIONSHIP on RELATIONSHIPORGANIZATION.RELATIONSHIPSETID = RELATIONSHIP.RELATIONSHIPSETID
where RELATIONSHIP.ID = @ID
)
begin
update RELATIONSHIPORGANIZATION
set
SYNCENDDATETOHISTORY = @SYNCENDDATETOHISTORY
from
dbo.RELATIONSHIPORGANIZATION
inner join
dbo.RELATIONSHIP on RELATIONSHIPORGANIZATION.RELATIONSHIPSETID = RELATIONSHIP.RELATIONSHIPSETID
where RELATIONSHIP.ID = @ID;
end
else
begin
insert into dbo.RELATIONSHIPORGANIZATION
(
RELATIONSHIPSETID,
SYNCENDDATETOHISTORY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
RELATIONSHIP.RELATIONSHIPSETID,
@SYNCENDDATETOHISTORY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.RELATIONSHIP
where RELATIONSHIP.ID = @ID;
end
if @ISMATCHINGGIFTRELATIONSHIP = 1
update
dbo.RELATIONSHIP
set
ISMATCHINGGIFTRELATIONSHIP = 0,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID in (
select
TOUPDATE.ID
from
dbo.RELATIONSHIP TOUPDATE
left join
dbo.RELATIONSHIP on RELATIONSHIP.ID = @ID
where
TOUPDATE.RELATIONSHIPCONSTITUENTID = RELATIONSHIP.RELATIONSHIPCONSTITUENTID and
TOUPDATE.RECIPROCALCONSTITUENTID = RELATIONSHIP.RECIPROCALCONSTITUENTID and
TOUPDATE.ISMATCHINGGIFTRELATIONSHIP = 1 and
TOUPDATE.ID <> RELATIONSHIP.ID)
update
dbo.RELATIONSHIP
set
RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID = @RECIPROCALTYPECODEID,
STARTDATE = @RELATIONSHIPSTARTDATE,
ENDDATE = @RELATIONSHIPENDDATE,
ISCONTACT = @ISCONTACT,
ISPRIMARYCONTACT = @ISPRIMARYCONTACT,
POSITION = @POSITION,
CONTACTTYPECODEID = @CONTACTTYPECODEID,
ISPRIMARYBUSINESS = @ISPRIMARYBUSINESS,
ISMATCHINGGIFTRELATIONSHIP = @ISMATCHINGGIFTRELATIONSHIP,
COMMENTS = @COMMENTS,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID;
declare @RECIPROCALRELATIONSHIPID uniqueidentifier;
declare @CONSTITUENTID uniqueidentifier;
declare @RECIPROCALCONSTITUENTID uniqueidentifier;
select
@RECIPROCALRELATIONSHIPID = r2.ID,
@CONSTITUENTID = r1.RELATIONSHIPCONSTITUENTID,
@RECIPROCALCONSTITUENTID = r1.RECIPROCALCONSTITUENTID
from
dbo.RELATIONSHIP r1
inner join
dbo.RELATIONSHIP r2 on (r1.RELATIONSHIPCONSTITUENTID = r2.RECIPROCALCONSTITUENTID and
r1.RECIPROCALCONSTITUENTID = r2.RELATIONSHIPCONSTITUENTID and
r1.RELATIONSHIPTYPECODEID = r2.RECIPROCALTYPECODEID and
r1.RECIPROCALTYPECODEID = r2.RELATIONSHIPTYPECODEID)
where
r1.ID = @ID;
if @EDITADDRESS = 1
begin
exec dbo.USP_ADDRESS_UPDATE @RELATIONADDRESSID, @CHANGEAGENTID, @ADDRESSTYPECODEID, @PRIMARY, @DONOTMAIL, @STARTDATE, @ENDDATE,
@COUNTRYID, @STATEID, @ADDRESSBLOCK, @CITY, @POSTCODE, @CART, @DPC, @LOT, @UPDATEMATCHINGSPOUSEADDRESSES,
@OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID, @STATEHOUSEDISTRICTCODEID,
@STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID, @REGIONCODEID, @LASTVALIDATIONATTEMPTDATE,
@VALIDATIONMESSAGE, @CERTIFICATIONDATA, @UPDATECONTACTS, @DONOTMAILREASONCODEID, @HISTORICALSTARTDATE, @HISTORICALENDDATE,
@INFOSOURCECOMMENTS;
end
else if @ADDADDRESS = 1
begin
select top 1 @RELATIONADDRESSID = ID
from dbo.ADDRESS
where ADDRESS.CONSTITUENTID = @CONSTITUENTID
and (ADDRESS.ADDRESSTYPECODEID = @ADDRESSTYPECODEID or (ADDRESS.ADDRESSTYPECODEID is null and @ADDRESSTYPECODEID is null))
and ADDRESS.ADDRESSBLOCK = @ADDRESSBLOCK
and ADDRESS.CITY = @CITY
and (ADDRESS.STATEID = @STATEID or (ADDRESS.STATEID is null and @STATEID is null))
and (ADDRESS.COUNTRYID = @COUNTRYID or (ADDRESS.COUNTRYID is null and @COUNTRYID is null))
and ADDRESS.POSTCODE = @POSTCODE
and ADDRESS.RELATIONSHIPID is null
if @RELATIONADDRESSID is null
exec dbo.USP_ADDRESS_CREATE @RELATIONADDRESSID output, @CHANGEAGENTID, @CONSTITUENTID, @ADDRESSTYPECODEID, @PRIMARY, @DONOTMAIL,
@STARTDATE, @ENDDATE, @COUNTRYID, @STATEID, @ADDRESSBLOCK, @CITY, @POSTCODE, @CART, @DPC, @LOT,
@UPDATEMATCHINGSPOUSEADDRESSES, @OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID,
@STATEHOUSEDISTRICTCODEID, @STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID,
@REGIONCODEID, @LASTVALIDATIONATTEMPTDATE, @VALIDATIONMESSAGE, @CERTIFICATIONDATA, @DONOTMAILREASONCODEID,
@HISTORICALSTARTDATE, @INFOSOURCECOMMENTS;
if @RELATIONADDRESSID is not null
begin
update
dbo.ADDRESS
set
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @RELATIONADDRESSID;
end
end
declare @ADDRESSESTODELETE table (ID uniqueidentifier);
--Is there currently an address associated with this relationship?
if @RELATIONADDRESSID is not null
begin
--If so, set the address's RELATIONSHIPID.
update dbo.ADDRESS set
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @RELATIONADDRESSID;
--Cache CONTEXT INFO
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
--Delete the old address, if there was one and if it's not currently primary.
insert into
@ADDRESSESTODELETE
select
ID
from
dbo.ADDRESS
where
ID <> @RELATIONADDRESSID and
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID and
ISPRIMARY = 0 and
not exists(select 1 from dbo.[SALESORDER] where [SALESORDER].[ADDRESSID] = [ADDRESS].[ID]);
delete MAILPREFERENCE from
dbo.MAILPREFERENCE
inner join
@ADDRESSESTODELETE ADDRESSESTODELETE on ADDRESSESTODELETE.ID = MAILPREFERENCE.ADDRESSID;
--remove ADDRESSID from committed address update batches
update BATCHCONSTITUENTADDRESSUPDATE
set ADDRESSID = null
from dbo.BATCHCONSTITUENTADDRESSUPDATE bcau
inner join dbo.BATCH b on bcau.BATCHID = b.ID
inner join @ADDRESSESTODELETE a on bcau.ADDRESSID = a.ID
where b.STATUSCODE = 1
delete ADDRESS from
dbo.ADDRESS
inner join
@ADDRESSESTODELETE ADDRESSESTODELETE on ADDRESSESTODELETE.ID = ADDRESS.ID;
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end
else
begin
--If there isn't currently an address, delete all address that refer to this relationship that aren't primary.
--Cache CONTEXT INFO
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
insert into
@ADDRESSESTODELETE
select
ID
from
dbo.ADDRESS
where
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID and
ISPRIMARY = 0 and
not exists(select 1 from dbo.[SALESORDER] where [SALESORDER].[ADDRESSID] = [ADDRESS].[ID]);
delete MAILPREFERENCE from
dbo.MAILPREFERENCE
inner join
@ADDRESSESTODELETE ADDRESSESTODELETE on ADDRESSESTODELETE.ID = MAILPREFERENCE.ADDRESSID;
--remove ADDRESSID from committed address update batches
update BATCHCONSTITUENTADDRESSUPDATE
set ADDRESSID = null
from dbo.BATCHCONSTITUENTADDRESSUPDATE bcau
inner join dbo.BATCH b on bcau.BATCHID = b.ID
inner join @ADDRESSESTODELETE a on bcau.ADDRESSID = a.ID
where b.STATUSCODE = 1
delete ADDRESS from
dbo.ADDRESS
inner join
@ADDRESSESTODELETE ADDRESSESTODELETE on ADDRESSESTODELETE.ID = ADDRESS.ID;
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
--Disassociate any remaining addresses.
update dbo.ADDRESS set
RELATIONSHIPID = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID;
end
if @EDITPHONE = 1
begin
exec dbo.USP_PHONE_UPDATE @RELATIONPHONEID, @CHANGEAGENTID, @CURRENTDATE, @PHONETYPECODEID, @NUMBER,
@PHONEPRIMARY, @DONOTCALL, 0, @PHONESTARTTIME, @PHONEENDTIME, @PHONEINFOSOURCECODEID, @PHONEINFOSOURCECOMMENTS,
@PHONECOUNTRYID, @PHONESTARTDATE, @PHONEENDDATE, @DONOTCALLREASONCODEID, @PHONEISCONFIDENTIAL;
end
else if @ADDPHONE = 1
begin
select top 1 @RELATIONPHONEID = ID
from dbo.PHONE
where PHONE.CONSTITUENTID = @CONSTITUENTID
and (PHONE.PHONETYPECODEID = @PHONETYPECODEID or (PHONE.PHONETYPECODEID is null and @PHONETYPECODEID is null))
and PHONE.NUMBER = @NUMBER
and PHONE.RELATIONSHIPID is null;
if @RELATIONPHONEID is null
exec dbo.USP_PHONE_CREATE @RELATIONPHONEID output, @CHANGEAGENTID, @CURRENTDATE,
@CONSTITUENTID, @PHONETYPECODEID, @NUMBER, @PHONEPRIMARY,
@PHONESTARTTIME, @PHONEENDTIME, @PHONESTARTDATE, @DONOTCALL, @DONOTCALLREASONCODEID,
@PHONEINFOSOURCECODEID, @PHONEINFOSOURCECOMMENTS, @PHONECOUNTRYID, @PHONEISCONFIDENTIAL,
0, @RECIPROCALRELATIONSHIPID;
else
update dbo.PHONE
set
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
PHONE.ID = @RELATIONPHONEID;
end
--Is there currently a phone associated with this relationship?
if @RELATIONPHONEID is not null
begin
--Cache CONTEXT INFO
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
--Delete the old phone, if there was one and if it's not currently primary or on a sales order.
delete from
dbo.PHONE
where
ID <> @RELATIONPHONEID and
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID and
ISPRIMARY = 0 and
not exists(select 1 from dbo.[SALESORDER] where [SALESORDER].[PHONEID] = [PHONE].[ID]);
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end
else
begin
--Cache CONTEXT INFO
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
--If there isn't currently a phone, delete all phones that refer to this relationship that aren't primary or on a sales order.
delete from
dbo.PHONE
where
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID and
ISPRIMARY = 0 and
not exists(select 1 from dbo.[SALESORDER] where [SALESORDER].[PHONEID] = [PHONE].[ID]);
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
--Disassociate any remaining phones.
update dbo.PHONE set
RELATIONSHIPID = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID;
end
--Are we editting the existing email address?
if @EDITEMAILADDRESS = 1
begin
if isnull(@EMAILADDRESS, '') = ''
raiserror('ERR_EMAILADDRESSREQUIRED', 13, 1);
exec dbo.USP_EMAILADDRESS_UPDATE @RELATIONEMAILADDRESSID, @CHANGEAGENTID, @CURRENTDATE,
@EMAILADDRESSTYPECODEID, @EMAILADDRESS, @EMAILADDRESSPRIMARY, @DONOTEMAIL,
0, @EMAILADDRESSINFOSOURCECODEID, @EMAILADDRESSINFOSOURCECOMMENTS, @EMAILSTARTDATE, @EMAILENDDATE;
end
else if @ADDEMAILADDRESS = 1
begin
if isnull(@EMAILADDRESS, '') = ''
raiserror('ERR_EMAILADDRESSREQUIRED', 13, 1);
select top 1 @RELATIONEMAILADDRESSID = ID
from dbo.EMAILADDRESS
where EMAILADDRESS.CONSTITUENTID = @CONSTITUENTID
and EMAILADDRESS = @EMAILADDRESS
and ( (EMAILADDRESSTYPECODEID = @EMAILADDRESSTYPECODEID) or (EMAILADDRESSTYPECODEID is null and @EMAILADDRESSTYPECODEID is null) )
if @RELATIONEMAILADDRESSID is null
exec dbo.USP_EMAILADDRESS_CREATE @RELATIONEMAILADDRESSID output, @CHANGEAGENTID, @CURRENTDATE,
@CONSTITUENTID, @EMAILADDRESSTYPECODEID, @EMAILADDRESS, @EMAILADDRESSPRIMARY,
@DONOTEMAIL, @EMAILADDRESSINFOSOURCECODEID, @EMAILADDRESSINFOSOURCECOMMENTS, 0, @RECIPROCALRELATIONSHIPID,
0, @EMAILSTARTDATE;
else
update dbo.EMAILADDRESS
set
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
EMAILADDRESS.ID = @RELATIONEMAILADDRESSID;
end
--Is there currently an email address associated with this relationship?
if @RELATIONEMAILADDRESSID is not null
begin
--Cache CONTEXT INFO
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
--Delete the old email address, if there was one and if it's not currently primary or on a sales order.
delete from
dbo.EMAILADDRESS
where
ID <> @RELATIONEMAILADDRESSID and
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID and
ISPRIMARY = 0 and
not exists(select 1 from dbo.[SALESORDER] where [SALESORDER].[EMAILADDRESSID] = [EMAILADDRESS].[ID]);
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end
else
begin
--Cache CONTEXT INFO
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
--If there isn't currently an email address, delete all email addresses that refer to this relationship that aren't primary or on a sales order.
delete from
dbo.EMAILADDRESS
where
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID and
ISPRIMARY = 0 and
not exists(select 1 from dbo.[SALESORDER] where [SALESORDER].[EMAILADDRESSID] = [EMAILADDRESS].[ID]);
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
--Disassociate any remaining email addresses.
update dbo.EMAILADDRESS set
RELATIONSHIPID = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
RELATIONSHIPID = @RECIPROCALRELATIONSHIPID;
end
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @RECIPROCALCONSTITUENTID, @RELATIONSHIPSTARTDATE,
@RELATIONSHIPENDDATE, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR, @PRIMARYRECOGNITIONTYPECODEID,
@RECIPROCALSOFTCREDITRELATIONSHIPEXISTS, @RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID,
@CHANGEAGENTID;
exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE @CONSTITUENTID, @RECIPROCALCONSTITUENTID, @RELATIONSHIPTYPECODEID, @RECIPROCALTYPECODEID, @CHANGEAGENTID, @CURRENTDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;