USP_RELATIONSHIPS_ADDFROMXML
Adds all specified relationships to an existing constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RELATIONSHIPS | xml | IN | |
@DEFAULTRELATIONSHIPID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_RELATIONSHIPS_ADDFROMXML
(
@RELATIONSHIPS xml,
@DEFAULTRELATIONSHIPID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
declare @TempTbl table
(
ID uniqueidentifier,
RELATIONSHIPCONSTITUENTID uniqueidentifier,
RELATIONSHIPTYPECODEID uniqueidentifier,
RECIPROCALCONSTITUENTID uniqueidentifier,
RECIPROCALTYPECODEID uniqueidentifier,
STARTDATE datetime,
ISSPOUSE bit
)
insert into @TempTbl
select
coalesce(RELATIONSHIPS.ID, newid()),
RELATIONSHIPS.RELATIONSHIPCONSTITUENTID,
RELATIONSHIPS.RELATIONSHIPTYPECODEID,
coalesce(RELATIONSHIPS.RECIPROCALCONSTITUENTID, DEFAULTRELATIONSHIP.RECIPROCALCONSTITUENTID),
RELATIONSHIPS.RECIPROCALTYPECODEID,
coalesce(RELATIONSHIPS.STARTDATE, DEFAULTRELATIONSHIP.STARTDATE),
coalesce(RELATIONSHIPS.ISSPOUSE, 0)
from
dbo.UFN_RELATIONSHIPS_FROMITEMLISTXML(@RELATIONSHIPS) as RELATIONSHIPS
left join
dbo.RELATIONSHIP as DEFAULTRELATIONSHIP on DEFAULTRELATIONSHIP.ID = @DEFAULTRELATIONSHIPID
declare @SETID uniqueidentifier = newid();
insert into dbo.RELATIONSHIPSET
(
ID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@SETID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
insert into dbo.RELATIONSHIP
(
ID,
RELATIONSHIPCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALCONSTITUENTID,
RECIPROCALTYPECODEID,
STARTDATE,
ISSPOUSE,
RELATIONSHIPSETID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
[temp].ID,
[temp].RELATIONSHIPCONSTITUENTID,
[temp].RELATIONSHIPTYPECODEID,
[temp].RECIPROCALCONSTITUENTID,
[temp].RECIPROCALTYPECODEID,
[temp].STARTDATE,
[temp].ISSPOUSE,
@SETID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
@TempTbl as [temp]
where
[temp].RELATIONSHIPTYPECODEID is not null
and [temp].RECIPROCALTYPECODEID is not null
and not exists(select ID from dbo.RELATIONSHIP EXISTING where EXISTING.RELATIONSHIPCONSTITUENTID = [temp].RELATIONSHIPCONSTITUENTID
and EXISTING.RECIPROCALCONSTITUENTID = [temp].RECIPROCALCONSTITUENTID)
if @@Error <> 0
return 2;
return 0;