USP_BBNC_COMMITPROFILEUPDATEEMPLOYMENTHISTORY
Updates a constituent's employment history information from a Blackbaud Internet Solutions profile transaction to the system from a given batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@RELATIONSHIPJOBINFOID | uniqueidentifier | IN | |
@ORGNAME | nvarchar(100) | IN | |
@ORGLINKID | uniqueidentifier | INOUT | |
@POSITION | nvarchar(100) | IN | |
@INDUSTRYCODEID | uniqueidentifier | IN | |
@UPDATEINDUSTRYCODEID | bit | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ISCONTACT | bit | IN | |
@CONTACTTYPE | uniqueidentifier | IN | |
@DEPARTMENT | nvarchar(200) | IN | |
@DIVISION | nvarchar(200) | IN | |
@JOBSCHEDULECODEID | uniqueidentifier | IN | |
@JOBCATEGORYCODEID | uniqueidentifier | IN | |
@CAREERLEVELCODEID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@MATCHESGIFTS | bit | IN | |
@MAKEPRIMARY | bit | IN | |
@CHANGEDATE | datetime | IN | |
@COMMENTS | nvarchar(max) | IN | |
@RELATIONSHIPSETID | uniqueidentifier | IN | |
@RESPONSIBILITY | nvarchar(250) | IN | |
@ISPRIVATERECORD | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEEMPLOYMENTHISTORY
(
@CONSTITUENTID uniqueidentifier = null,
@RELATIONSHIPJOBINFOID uniqueidentifier = null,
@ORGNAME nvarchar(100) = '',
@ORGLINKID uniqueidentifier = null output,
@POSITION nvarchar(100) = '',
@INDUSTRYCODEID uniqueidentifier = null,
@UPDATEINDUSTRYCODEID bit = 0,
@CHANGEAGENTID uniqueidentifier = null,
@ISCONTACT bit = 0,
@CONTACTTYPE uniqueidentifier = null,
@DEPARTMENT nvarchar(200) = '',
@DIVISION nvarchar(200) = '',
@JOBSCHEDULECODEID uniqueidentifier = null,
@JOBCATEGORYCODEID uniqueidentifier = null,
@CAREERLEVELCODEID uniqueidentifier = null,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@MATCHESGIFTS bit = 0,
@MAKEPRIMARY bit = 0,
@CHANGEDATE datetime = null,
@COMMENTS nvarchar(max) = '',
@RELATIONSHIPSETID uniqueidentifier = null,
@RESPONSIBILITY nvarchar(250) = '',
@ISPRIVATERECORD bit = 0
) as
set nocount on;
declare @RELATIONSHIPID uniqueidentifier;
declare @ORGID uniqueidentifier;
declare @RELATIONSHIPTYPECODEID uniqueidentifier;
declare @RECIPROCALTYPECODEID uniqueidentifier;
declare @BUSINESSADDRESSTYPECODEID uniqueidentifier;
declare @BUSINESSADDRESSID uniqueidentifier;
declare @SEQUENCE int;
declare @ORGANIZATIONPRIMARYADDRESSTYPECODEID 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();
declare @INFOSOURCECODEID uniqueidentifier;
set @INFOSOURCECODEID = null;
--ORGANIZATIONPRIMARYADDRESSTYPECODEID can be null
select top (1)
@BUSINESSADDRESSTYPECODEID = [BUSINESSADDRESSTYPECODEID],
@ORGANIZATIONPRIMARYADDRESSTYPECODEID = [ORGANIZATIONPRIMARYADDRESSTYPECODEID],
@INFOSOURCECODEID = [INFOSOURCECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @BUSINESSADDRESSTYPECODEID is null
begin
raiserror('You must define the default primary business address type code.',16,1);
return -2;
end
select top 1
@RELATIONSHIPTYPECODEID = [PRIMARYBUSINESSRELATIONSHIPTYPECODEID],
@RECIPROCALTYPECODEID = [PRIMARYBUSINESSRECIPROCALTYPECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @RELATIONSHIPTYPECODEID is null or @RECIPROCALTYPECODEID is null
begin
raiserror('You must define the default relationship type codes for primary business relationships.',16,1);
return -2;
end
begin try
-- We will have a primary business
set @ORGID = @ORGLINKID;
if @ORGID is null
begin
-- We need a new primary business
set @ORGID = newid();
insert into dbo.CONSTITUENT
(
ID,
ISORGANIZATION,
KEYNAME,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ORGID,
1,
@ORGNAME,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
set @ORGLINKID = @ORGID; --JamesWill 09/27/2007 CR284214-092707
--add origin information
if @INFOSOURCECODEID is not null
begin
exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @ID = @ORGLINKID,
@CHANGEAGENTID=@CHANGEAGENTID,
@INFOSOURCECODEID = @INFOSOURCECODEID,
@REVENUEID = null
end
end
if @RELATIONSHIPSETID is null
begin
if @RELATIONSHIPJOBINFOID is not null
begin
set @RELATIONSHIPSETID = (select RELATIONSHIPSETID from RELATIONSHIPJOBINFO where ID = @RELATIONSHIPJOBINFOID);
end
else
begin
set @RELATIONSHIPSETID = (select RELATIONSHIPSETID
from RELATIONSHIP
where RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
RELATIONSHIP.RECIPROCALCONSTITUENTID = @ORGID and
RELATIONSHIP.RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID)
end
end
if @MAKEPRIMARY = 1
begin
-- If there is an existing primary business relationship with a different org, mark it as not primary
update dbo.RELATIONSHIP set
ISPRIMARYBUSINESS = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
(RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
or RELATIONSHIP.RECIPROCALCONSTITUENTID = @CONSTITUENTID)
and RELATIONSHIP.ISPRIMARYBUSINESS = 1;
-- Use the existing relationship if the organization is the same
if @RELATIONSHIPJOBINFOID is not null
begin
select
@RELATIONSHIPSETID = RELATIONSHIPSETID
from
dbo.RELATIONSHIP
where
RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
and RELATIONSHIP.RECIPROCALCONSTITUENTID = @ORGID
and RELATIONSHIP.ISPRIMARYBUSINESS = 0;
update dbo.RELATIONSHIP set
ISPRIMARYBUSINESS = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
RELATIONSHIP.RELATIONSHIPSETID = @RELATIONSHIPSETID;
end
end
else
begin
if @RELATIONSHIPSETID is not null
begin
update dbo.RELATIONSHIP set
ISPRIMARYBUSINESS = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
(RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
or RELATIONSHIP.RECIPROCALCONSTITUENTID = @CONSTITUENTID)
and RELATIONSHIP.RELATIONSHIPSETID = @RELATIONSHIPSETID;
end
end
-- If we did not find an update an existing non-primary relationship for this org, look for an existing primary relationship
select
@RELATIONSHIPID = ID
from
dbo.RELATIONSHIP
where
RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
and RELATIONSHIP.RECIPROCALCONSTITUENTID = @ORGID
and RELATIONSHIP.RELATIONSHIPSETID = @RELATIONSHIPSETID;
if (@RELATIONSHIPJOBINFOID is null and @RELATIONSHIPSETID is null)
begin
set @RELATIONSHIPSETID = newid();
insert into dbo.RELATIONSHIPSET
(
ID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@RELATIONSHIPSETID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
set @RELATIONSHIPID = newid();
insert into dbo.RELATIONSHIP
(
ID,
RELATIONSHIPSETID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISPRIMARYBUSINESS,
ISCONTACT,
CONTACTTYPECODEID,
ISMATCHINGGIFTRELATIONSHIP,
COMMENTS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@RELATIONSHIPID,
@RELATIONSHIPSETID,
@CONSTITUENTID,
@ORGID,
@RELATIONSHIPTYPECODEID,
@RECIPROCALTYPECODEID,
@MAKEPRIMARY,
@ISCONTACT,
@CONTACTTYPE,
@MATCHESGIFTS,
@COMMENTS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
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
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 = @ORGID;
-- 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=@RELATIONSHIPTYPECODEID
select @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 1,
@RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@RECIPROCALSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=@RECIPROCALCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RECIPROCALTYPECODEID
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @ORGID,
NULL, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
@PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;
end
else
begin
update
dbo.RELATIONSHIP
set
[ISPRIMARYBUSINESS] = @MAKEPRIMARY,
[ISCONTACT] = @ISCONTACT,
[CONTACTTYPECODEID] = @CONTACTTYPE,
[ISMATCHINGGIFTRELATIONSHIP] = @MATCHESGIFTS,
[COMMENTS] = @COMMENTS,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where
[RELATIONSHIPSETID] = @RELATIONSHIPSETID;
--Add relationshipsetid if missing
if @RELATIONSHIPSETID is null
exec dbo.USP_RELATIONSHIPSET_RETROCREATE @RELATIONSHIPSETID output, @CHANGEAGENTID, @RELATIONSHIPID
end
--An update is added if no position is passed then the current is removed.
if len(coalesce(@POSITION, '')) > 0
begin
--add if not present
if @RELATIONSHIPJOBINFOID is null
insert into dbo.RELATIONSHIPJOBINFO
(
RELATIONSHIPSETID,
JOBTITLE,
STARTDATE,
ENDDATE,
JOBDIVISION,
JOBDEPARTMENT,
JOBCATEGORYCODEID,
CAREERLEVELCODEID,
JOBSCHEDULECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
JOBRESPONSIBILITY,
ISPRIVATERECORD
)
values
(
@RELATIONSHIPSETID,
@POSITION,
@STARTDATE,
@ENDDATE,
@DIVISION,
@DEPARTMENT,
@JOBCATEGORYCODEID,
@CAREERLEVELCODEID,
@JOBSCHEDULECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@RESPONSIBILITY,
@ISPRIVATERECORD
);
else
update
dbo.RELATIONSHIPJOBINFO
set
[JOBTITLE] = @POSITION,
[STARTDATE] = @STARTDATE,
[ENDDATE] = @ENDDATE,
[JOBDIVISION] = @DIVISION,
[JOBDEPARTMENT] = @DEPARTMENT,
[JOBCATEGORYCODEID] = @JOBCATEGORYCODEID,
[CAREERLEVELCODEID] = @CAREERLEVELCODEID,
[JOBSCHEDULECODEID] = @JOBSCHEDULECODEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE,
[JOBRESPONSIBILITY] = @RESPONSIBILITY,
[ISPRIVATERECORD] = @ISPRIVATERECORD
where
[ID] = @RELATIONSHIPJOBINFOID;
end
else
exec dbo.USP_RELATIONSHIPJOBINFO_DELETEBYID_WITHCHANGEAGENTID @RELATIONSHIPJOBINFOID, @CHANGEAGENTID;
-- Now ORGID points to the correct record and RELATIONSHIPID points
-- to the correct relationship but the data that hangs off of it
-- may need to be updated.
if @UPDATEINDUSTRYCODEID = 1
if exists (select 1 from dbo.ORGANIZATIONDATA where [ID] = @ORGID)
update dbo.ORGANIZATIONDATA set
INDUSTRYCODEID = @INDUSTRYCODEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
ID = @ORGID
and
(
(INDUSTRYCODEID is null and @INDUSTRYCODEID is not null)
or
(INDUSTRYCODEID is not null and @INDUSTRYCODEID is null)
or
INDUSTRYCODEID <> @INDUSTRYCODEID
);
else
if @INDUSTRYCODEID is not null
insert into dbo.ORGANIZATIONDATA
(
ID,
INDUSTRYCODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ORGID,
@INDUSTRYCODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
--If it's a new primary business that didn't have an existing relationship before, add address
if @MAKEPRIMARY = 1
and @RELATIONSHIPJOBINFOID is null
and exists (select 1 from dbo.ADDRESS where [CONSTITUENTID] = @ORGID)
begin
declare @CONSTITADDRESSID uniqueidentifier;
set @CONSTITADDRESSID = newid();
declare @STATEID uniqueidentifier;
declare @COUNTRYID uniqueidentifier;
declare @ADDRESSBLOCK nvarchar(300);
declare @CITY nvarchar(100);
declare @POSTCODE nvarchar(24);
select top (1)
@STATEID = STATEID,
@COUNTRYID = COUNTRYID,
@ADDRESSBLOCK = ADDRESSBLOCK,
@CITY = CITY,
@POSTCODE = POSTCODE
from dbo.ADDRESS
where [CONSTITUENTID] = @ORGID;
insert into dbo.ADDRESS
(
ID,
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@CONSTITADDRESSID,
@CONSTITUENTID,
@BUSINESSADDRESSTYPECODEID,
0,
coalesce(@COUNTRYID, dbo.UFN_COUNTRY_GETDEFAULT()),
@STATEID,
@ADDRESSBLOCK,
@CITY,
@POSTCODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
insert into dbo.ADDRESSVALIDATIONUPDATE
(
ID,
INFOSOURCECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@CONSTITADDRESSID,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;