USP_BBNC_CREATECONTACT
Creates a contact record for a given organization and individual for a Blackbaud Internet Solutions donation transaction.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@INDIVIDUALID | uniqueidentifier | IN | |
@ORGANIZATIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_CREATECONTACT
(
@INDIVIDUALID uniqueidentifier,
@ORGANIZATIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
set nocount on;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
if (not @INDIVIDUALID is null) and (not @ORGANIZATIONID is null)
begin
declare @RELATIONSHIPTYPECODEID uniqueidentifier;
declare @RECIPROCALTYPECODEID uniqueidentifier;
declare @CONTACTTYPECODEID uniqueidentifier;
select top 1
@RELATIONSHIPTYPECODEID = PRIMARYBUSINESSRELATIONSHIPTYPECODEID,
@RECIPROCALTYPECODEID = PRIMARYBUSINESSRECIPROCALTYPECODEID,
@CONTACTTYPECODEID = CONTACTTYPECODEID
from dbo.NETCOMMUNITYDEFAULTCODEMAP;
/* TODO For now, I'm not requiring CONTACTTYPECODEID, so just pick one if it's null */
if @CONTACTTYPECODEID is null
select top 1 @CONTACTTYPECODEID = ID from dbo.CONTACTTYPECODE;
if (select count(ID) from dbo.RELATIONSHIP
where RELATIONSHIPCONSTITUENTID = @INDIVIDUALID and RECIPROCALCONSTITUENTID = @ORGANIZATIONID
and RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID and RECIPROCALTYPECODEID = @RECIPROCALTYPECODEID) = 0
begin
insert into dbo.RELATIONSHIP(ID, RELATIONSHIPCONSTITUENTID, RECIPROCALCONSTITUENTID, RELATIONSHIPTYPECODEID, RECIPROCALTYPECODEID, ISCONTACT, CONTACTTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @INDIVIDUALID, @ORGANIZATIONID, @RELATIONSHIPTYPECODEID, @RECIPROCALTYPECODEID, 1, @CONTACTTYPECODEID, @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 = @INDIVIDUALID;
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 = @ORGANIZATIONID;
-- 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 @INDIVIDUALID, @ORGANIZATIONID,
NULL, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
@PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;
end
else
begin
if (select top 1 ISCONTACT from dbo.RELATIONSHIP
where RELATIONSHIPCONSTITUENTID = @INDIVIDUALID and RECIPROCALCONSTITUENTID = @ORGANIZATIONID
and RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID and RECIPROCALTYPECODEID = @RECIPROCALTYPECODEID order by ISCONTACT desc) = 0
begin
update dbo.RELATIONSHIP
set ISCONTACT = 1,
CONTACTTYPECODEID = @CONTACTTYPECODEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where RELATIONSHIPCONSTITUENTID = @INDIVIDUALID and RECIPROCALCONSTITUENTID = @ORGANIZATIONID
and RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID and RECIPROCALTYPECODEID = @RECIPROCALTYPECODEID;
end
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;