USP_BBNC_COMMITPROFILEUPDATESPOUSE
Updates a constituent's spouse information from a Blackbaud Internet Solutions profile transaction to the system from a given batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@REMOVESPOUSE | bit | IN | |
@SAMESPOUSE | bit | IN | |
@TITLECODEID | uniqueidentifier | IN | |
@FIRSTNAME | nvarchar(50) | IN | |
@MIDDLENAME | nvarchar(50) | IN | |
@KEYNAME | nvarchar(100) | IN | |
@MAIDENNAME | nvarchar(100) | IN | |
@SUFFIXCODEID | uniqueidentifier | IN | |
@CLASSOF | smallint | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@UPDATESPOUSE | bit | IN | |
@SPOUSELINKID | uniqueidentifier | INOUT | |
@TITLE2CODEID | uniqueidentifier | IN | |
@SUFFIX2CODEID | uniqueidentifier | IN | |
@GENDERCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATESPOUSE
(
@CONSTITUENTID uniqueidentifier = null,
@REMOVESPOUSE bit = 0,
@SAMESPOUSE bit = 0,
@TITLECODEID uniqueidentifier = null,
@FIRSTNAME nvarchar(50) = '',
@MIDDLENAME nvarchar(50) = '',
@KEYNAME nvarchar(100) = '',
@MAIDENNAME nvarchar(100) = '',
@SUFFIXCODEID uniqueidentifier = null,
@CLASSOF smallint = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@UPDATESPOUSE bit = 0,
@SPOUSELINKID uniqueidentifier = null output,
@TITLE2CODEID uniqueidentifier = null,
@SUFFIX2CODEID uniqueidentifier = null,
@GENDERCODE tinyint = 0
) as
set nocount on;
declare @ID uniqueidentifier;
declare @SPOUSEID uniqueidentifier;
declare @RELATIONSHIPTYPEID uniqueidentifier;
declare @SPOUSEREMOVEDRELATIONSHIPTYPECODEID uniqueidentifier;
if @CONSTITUENTID is null
begin
raiserror('The constituent ID is required',16,1);
return -2;
end
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
begin try
-- Update the current spouse's record
if @SAMESPOUSE = 1 and @UPDATESPOUSE = 1
begin
update dbo.CONSTITUENT set
[TITLECODEID] = @TITLECODEID,
[TITLE2CODEID] = @TITLE2CODEID,
[FIRSTNAME] = @FIRSTNAME,
[MIDDLENAME] = @MIDDLENAME,
[KEYNAME] = @KEYNAME,
[MAIDENNAME] = @MAIDENNAME,
[SUFFIXCODEID] = @SUFFIXCODEID,
[SUFFIX2CODEID] = @SUFFIX2CODEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
from dbo.CONSTITUENT
inner join dbo.RELATIONSHIP on
CONSTITUENT.ID = RELATIONSHIP.RECIPROCALCONSTITUENTID
and RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
and RELATIONSHIP.ISSPOUSE = 1;
if @@ROWCOUNT = 0
begin
raiserror('ERR_SPOUSE_UPDATE_NO_SPOUSE', 16, 1);
return -2;
end
-- Update the spouse's primary education record (if it exists)
if coalesce(@CLASSOF, 0) > 0
update dbo.EDUCATIONALHISTORY set
[CLASSOF] = @CLASSOF,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
from dbo.EDUCATIONALHISTORY
inner join dbo.RELATIONSHIP on
EDUCATIONALHISTORY.CONSTITUENTID = RELATIONSHIP.RECIPROCALCONSTITUENTID
and RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
and RELATIONSHIP.ISSPOUSE = 1
where EDUCATIONALHISTORY.ISPRIMARYRECORD = 1;
end
-- Update the existing spouse relationship to be a non-spousal
-- relationship if requested
if @REMOVESPOUSE = 1
begin
select top (1)
@SPOUSEREMOVEDRELATIONSHIPTYPECODEID = [SPOUSEREMOVEDRELATIONSHIPTYPECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @SPOUSEREMOVEDRELATIONSHIPTYPECODEID is null
begin
raiserror('You must define the default relationship type for removed spouses.',16,1);
return -2;
end
update dbo.RELATIONSHIP
set
[ISSPOUSE] = 0,
[RELATIONSHIPTYPECODEID] = @SPOUSEREMOVEDRELATIONSHIPTYPECODEID,
[RECIPROCALTYPECODEID] = @SPOUSEREMOVEDRELATIONSHIPTYPECODEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where
[RELATIONSHIP].[RELATIONSHIPCONSTITUENTID] = @CONSTITUENTID
and [RELATIONSHIP].[ISSPOUSE] = 1;
end
declare @PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit = 0
declare @PRIMARYSOFTCREDITMATCHFACTOR decimal(5,2) = 100
declare @PRIMARYRECOGNITIONTYPECODEID uniqueidentifier = null
declare @PRIMARYCONSTITUENTTYPE tinyint = 0
declare @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit = 0
declare @RECIPROCALSOFTCREDITMATCHFACTOR decimal(5,2) = 100
declare @RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier = null
declare @RECIPROCALCONSTITUENTTYPE tinyint = 0
-- Using an existing constituent as the new spouse
-- TMV 10/17/2007 CR285482-101207 Removed "and @UPDATESPOUSE = 1" clause, linking to an existing
-- constituent should happen even if there are no bio field updates, bio fields are ignored anyway
if @SAMESPOUSE <> 1 and @SPOUSELINKID is not null
begin
select top (1) @RELATIONSHIPTYPEID = [RELATIONSHIPTYPECODEID] from dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @RELATIONSHIPTYPEID is null
begin
raiserror('You must define the default relationship type for spouses.',16,1);
return -2;
end
declare @CONSTITUENTHASSPOUSE bit, @RECIRPOCALHASSPOUSE bit;
declare @CONSTITUENTSPOUSENAME nvarchar(700), @RECIPROCALSPOUSENAME nvarchar(700);
declare @CONSTITUENTHOUSEHOLDID uniqueidentifier, @RECIPROCALHOUSEHOLDID uniqueidentifier;
declare @ERROR nvarchar(800);
exec dbo.USP_DATAFORMTEMPLATE_VIEW_INDIVIDUALSPOUSEHOUSEHOLD @CONSTITUENTID, @HASSPOUSE=@CONSTITUENTHASSPOUSE output, @SPOUSENAME=@CONSTITUENTSPOUSENAME output, @HOUSEHOLDID=@RECIPROCALHOUSEHOLDID output
exec dbo.USP_DATAFORMTEMPLATE_VIEW_INDIVIDUALSPOUSEHOUSEHOLD @SPOUSELINKID, @HASSPOUSE=@RECIRPOCALHASSPOUSE output, @SPOUSENAME=@RECIPROCALSPOUSENAME output, @HOUSEHOLDID=@CONSTITUENTHOUSEHOLDID output
if @CONSTITUENTHASSPOUSE = 1
begin
set @ERROR = 'Individual is already married to ' + @CONSTITUENTSPOUSENAME + '.';
raiserror(@ERROR,16,1);
return -2;
end
if @RECIRPOCALHASSPOUSE = 1
begin
set @ERROR = 'Spouse entered has an existing spouse, ' + @RECIPROCALSPOUSENAME + '.';
raiserror('BBERR_RECIPROCALCONSTITUENTID_SPOUSEEXISTS',16,1);
return -2;
end
if @CONSTITUENTHOUSEHOLDID is not null and @RECIPROCALHOUSEHOLDID is not null and @CONSTITUENTHOUSEHOLDID <> @RECIPROCALHOUSEHOLDID
begin
raiserror('Individuals belong to different households.',16,1);
return -2;
end
-- If this relationship already exists, just flag it as ISSPOUSE
-- otherwise add the new spouse relationship
if exists
(
select top (1)
1
from
dbo.RELATIONSHIP
where
[RELATIONSHIP].[RELATIONSHIPCONSTITUENTID] = @CONSTITUENTID
and [RELATIONSHIP].[RECIPROCALCONSTITUENTID] = @SPOUSELINKID
and [RELATIONSHIP].[RELATIONSHIPTYPECODEID] = @RELATIONSHIPTYPEID
and [RELATIONSHIP].[RECIPROCALTYPECODEID] = @RELATIONSHIPTYPEID
)
update dbo.RELATIONSHIP
set
[ISSPOUSE] = 1,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where
[RELATIONSHIP].[RELATIONSHIPCONSTITUENTID] = @CONSTITUENTID
and [RELATIONSHIP].[RECIPROCALCONSTITUENTID] = @SPOUSELINKID
and [RELATIONSHIP].[RELATIONSHIPTYPECODEID] = @RELATIONSHIPTYPEID
and [RELATIONSHIP].[RECIPROCALTYPECODEID] = @RELATIONSHIPTYPEID
and [RELATIONSHIP].[ISSPOUSE] = 0;
else
insert into dbo.RELATIONSHIP
(
ID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISSPOUSE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
newid(),
@SPOUSELINKID,
@CONSTITUENTID,
@RELATIONSHIPTYPEID,
@RELATIONSHIPTYPEID,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
select @PRIMARYCONSTITUENTTYPE = case
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISGROUP(ID) = 1 then 3 --Household
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1 then 2 -- Group
when ISORGANIZATION = 1 then 1 --Organization
else 0 end --Individual
from dbo.CONSTITUENT where ID = @CONSTITUENTID;
select @RECIPROCALCONSTITUENTTYPE = case
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISGROUP(ID) = 1 then 3 --Household
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1 then 2 -- Group
when ISORGANIZATION = 1 then 1 --Organization
else 0 end --Individual
from dbo.CONSTITUENT where ID = @SPOUSELINKID;
-- add default recognition credits if creating a new relationship
select @PRIMARYSOFTCREDITRELATIONSHIPEXISTS = 1,
@PRIMARYRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@PRIMARYSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=@PRIMARYCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RELATIONSHIPTYPEID
select @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 1,
@RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@RECIPROCALSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=@RECIPROCALCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RELATIONSHIPTYPEID
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @SPOUSELINKID,
NULL, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
@PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;
exec dbo.USP_SPOUSERELATIONSHIP_SETUPHOUSEHOLD @CONSTITUENTID = @CONSTITUENTID, @SPOUSEID = @SPOUSELINKID, @COPYCONTACTINFO = 0, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE;
end
-- Creating a new constituent to use as the new spouse
if @SAMESPOUSE <> 1 and @SPOUSELINKID is null and @UPDATESPOUSE = 1
begin
declare @INFOSOURCECODEID uniqueidentifier;
select top (1)
@RELATIONSHIPTYPEID = [RELATIONSHIPTYPECODEID],
@INFOSOURCECODEID = [INFOSOURCECODEID]
from dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @RELATIONSHIPTYPEID is null
begin
raiserror('You must define the default relationship type for spouses.',16,1);
return -2;
end
-- Add the new spouse constituent record
set @SPOUSEID = newid();
insert into dbo.CONSTITUENT
(
[ID],
[TITLECODEID],
[TITLE2CODEID],
[KEYNAME],
[FIRSTNAME],
[MIDDLENAME],
[MAIDENNAME],
[SUFFIXCODEID],
[SUFFIX2CODEID],
[ISORGANIZATION],
[NETCOMMUNITYMEMBER],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[GENDERCODE]
)
values
(
@SPOUSEID,
@TITLECODEID,
@TITLE2CODEID,
@KEYNAME,
@FIRSTNAME,
@MIDDLENAME,
@MAIDENNAME,
@SUFFIXCODEID,
@SUFFIX2CODEID,
0,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@GENDERCODE
);
if @INFOSOURCECODEID is not null
begin
exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @ID = @SPOUSEID,
@CHANGEAGENTID=@CHANGEAGENTID,
@INFOSOURCECODEID = @INFOSOURCECODEID,
@REVENUEID = null
end
insert into dbo.[NAMEFORMAT]
([CONSTITUENTID]
,[NAMEFORMATTYPECODEID]
,[NAMEFORMATFUNCTIONID]
,[ADDEDBYID]
,[CHANGEDBYID]
,[DATEADDED]
,[DATECHANGED]
,[PRIMARYADDRESSEE]
,[PRIMARYSALUTATION])
select
@SPOUSEID
,NFD.NAMEFORMATTYPECODEID
,NFD.NAMEFORMATFUNCTIONID
,@CHANGEAGENTID
,@CHANGEAGENTID
,@CHANGEDATE
,@CHANGEDATE
,NFD.PRIMARYADDRESSEE
,NFD.PRIMARYSALUTATION
from dbo.NAMEFORMATDEFAULT as NFD
where NFD.APPLYTOCODE = 0
set @SPOUSELINKID = @SPOUSEID; --JamesWill 09/27/2007 CR284221-092707 Need to send the created spouse ID to the caller so it can (potentially) add the spouse to a security group
-- Add the new spouse relationship
insert into dbo.RELATIONSHIP
(
ID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISSPOUSE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
newid(),
@SPOUSEID,
@CONSTITUENTID,
@RELATIONSHIPTYPEID,
@RELATIONSHIPTYPEID,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
select @PRIMARYCONSTITUENTTYPE = case
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISGROUP(ID) = 1 then 3 --Household
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1 then 2 -- Group
when ISORGANIZATION = 1 then 1 --Organization
else 0 end --Individual
from dbo.CONSTITUENT where ID = @CONSTITUENTID;
select @RECIPROCALCONSTITUENTTYPE = case
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISGROUP(ID) = 1 then 3 --Household
when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1 then 2 -- Group
when ISORGANIZATION = 1 then 1 --Organization
else 0 end --Individual
from dbo.CONSTITUENT where ID = @SPOUSEID;
-- add default recognition credits if creating a new relationship
select @PRIMARYSOFTCREDITRELATIONSHIPEXISTS = 1,
@PRIMARYRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@PRIMARYSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=@PRIMARYCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RELATIONSHIPTYPEID
select @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 1,
@RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@RECIPROCALSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=@RECIPROCALCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RELATIONSHIPTYPEID
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @SPOUSEID,
NULL, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
@PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;
exec dbo.USP_SPOUSERELATIONSHIP_SETUPHOUSEHOLD @CONSTITUENTID = @CONSTITUENTID, @SPOUSEID = @SPOUSEID, @COPYCONTACTINFO = 0, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;