USP_BBNC_COMMITPROFILEUPDATEORGRELATIONSHIPS
Updates a constituent's organization relationship information from a Blackbaud Internet Solutions profile transaction to the system from a given batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@RELATIONSHIPID | uniqueidentifier | IN | |
@ORGNAME | nvarchar(100) | IN | |
@ORGLINKID | uniqueidentifier | INOUT | |
@RELATIONSHIPTYPEID | uniqueidentifier | IN | |
@RECIPROCALRELATIONSHIPTYPEID | uniqueidentifier | IN | |
@ISCONTACT | bit | IN | |
@CONTACTTYPE | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@MATCHESGIFTS | bit | IN | |
@COMMENTS | nvarchar(max) | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEORGRELATIONSHIPS
(
@CONSTITUENTID uniqueidentifier = null,
@RELATIONSHIPID uniqueidentifier = null,
@ORGNAME nvarchar(100) = '',
@ORGLINKID uniqueidentifier = null output,
@RELATIONSHIPTYPEID uniqueidentifier = null,
@RECIPROCALRELATIONSHIPTYPEID uniqueidentifier = null,
@ISCONTACT bit = 0,
@CONTACTTYPE uniqueidentifier = null,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@MATCHESGIFTS bit = 0,
@COMMENTS nvarchar(max) = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
) as
set nocount on;
declare @RELATIONSHIPSETID uniqueidentifier;
declare @DEFAULTRELATIONSHIPTYPECODEID uniqueidentifier;
declare @DEFAULTRECIPROCALTYPECODEID uniqueidentifier;
declare @ORGID uniqueidentifier;
declare @BUSINESSADDRESSTYPECODEID uniqueidentifier;
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
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 @RELATIONSHIPID is not null
begin
set @RELATIONSHIPSETID = (select RELATIONSHIPSETID from RELATIONSHIP where ID = @RELATIONSHIPID);
end
select top 1
@DEFAULTRELATIONSHIPTYPECODEID = [PRIMARYBUSINESSRELATIONSHIPTYPECODEID],
@DEFAULTRECIPROCALTYPECODEID = [PRIMARYBUSINESSRECIPROCALTYPECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @RELATIONSHIPTYPEID is null
set @RELATIONSHIPTYPEID = @DEFAULTRELATIONSHIPTYPECODEID
if @RECIPROCALRELATIONSHIPTYPEID is null
set @RECIPROCALRELATIONSHIPTYPEID = @DEFAULTRECIPROCALTYPECODEID
if @RELATIONSHIPID is null and @ORGLINKID is not null
begin
select
@RELATIONSHIPID = ID
from
dbo.RELATIONSHIP
where
RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
and RECIPROCALCONSTITUENTID = @ORGLINKID
and RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPEID
and RECIPROCALTYPECODEID = @RECIPROCALRELATIONSHIPTYPEID
end
if @RELATIONSHIPID is null
begin
if @RELATIONSHIPTYPEID is null or @RECIPROCALRELATIONSHIPTYPEID is null
begin
raiserror('You must define the default relationship type codes for primary business relationships.',16,1);
return -2;
end
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,
STARTDATE,
ENDDATE,
ISCONTACT,
CONTACTTYPECODEID,
ISMATCHINGGIFTRELATIONSHIP,
COMMENTS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@RELATIONSHIPID,
@RELATIONSHIPSETID,
@CONSTITUENTID,
@ORGID,
@RELATIONSHIPTYPEID,
@RECIPROCALRELATIONSHIPTYPEID,
@STARTDATE,
@ENDDATE,
@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=@RELATIONSHIPTYPEID
select @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 1,
@RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@RECIPROCALSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=@RECIPROCALCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RECIPROCALRELATIONSHIPTYPEID
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @ORGID,
NULL, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
@PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;
end
else
begin
update
dbo.RELATIONSHIP
set
[RELATIONSHIPTYPECODEID] = @RELATIONSHIPTYPEID,
[RECIPROCALTYPECODEID] = @RECIPROCALRELATIONSHIPTYPEID,
[STARTDATE] = @STARTDATE,
[ENDDATE] = @ENDDATE,
[ISCONTACT] = @ISCONTACT,
[CONTACTTYPECODEID] = @CONTACTTYPE,
[ISMATCHINGGIFTRELATIONSHIP] = @MATCHESGIFTS,
[COMMENTS] = @COMMENTS,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where
[ID] = @RELATIONSHIPID;
--Add relationshipsetid if missing
if @RELATIONSHIPSETID is null
exec dbo.USP_RELATIONSHIPSET_RETROCREATE @RELATIONSHIPSETID output, @CHANGEAGENTID, @RELATIONSHIPID
end
--If it's a new business that didn't have an existing relationship before, and the constit is a contact, then add address
if @ISCONTACT = 1
and @RELATIONSHIPID 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;