USP_BBACONSTITUENTFILEIMPORT
This procedure is used by the Target Analytics Constituent File Import Record Operation for saving the information from a Target Analytics Constituent Import File to the database.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | INOUT | |
@LOOKUPID | nvarchar(100) | IN | |
@SYSRECID | int | IN | |
@KEYNAME | nvarchar(100) | IN | |
@FIRSTNAME | nvarchar(50) | IN | |
@MIDDLENAME | nvarchar(50) | IN | |
@GENDERCODE | int | IN | |
@BIRTHDATE | UDT_FUZZYDATE | IN | |
@TITLECODEID | uniqueidentifier | IN | |
@SUFFIXCODEID | uniqueidentifier | IN | |
@ADDRESSTYPECODEID | uniqueidentifier | IN | |
@COUNTRYID | uniqueidentifier | IN | |
@STATEID | uniqueidentifier | IN | |
@ADDRESSBLOCK | nvarchar(150) | IN | |
@CITY | nvarchar(50) | IN | |
@POSTCODE | nvarchar(12) | IN | |
@PHONETYPECODEID | uniqueidentifier | IN | |
@PHONENUMBER | nvarchar(100) | IN | |
@WINTERADDRESSTYPECODEID | uniqueidentifier | IN | |
@WINTERCOUNTRYID | uniqueidentifier | IN | |
@WINTERSTATEID | uniqueidentifier | IN | |
@WINTERADDRESSBLOCK | nvarchar(150) | IN | |
@WINTERCITY | nvarchar(50) | IN | |
@WINTERPOSTCODE | nvarchar(12) | IN | |
@WINTERPHONETYPECODEID | uniqueidentifier | IN | |
@WINTERPHONENUMBER | nvarchar(100) | IN | |
@BUSINESSNAME | nvarchar(100) | IN | |
@EMPLOYEERELATIONSHIPTYPECODEID | uniqueidentifier | IN | |
@EMPLOYERRELATIONSHIPTYPECODEID | uniqueidentifier | IN | |
@BUSINESSADDRESSTYPECODEID | uniqueidentifier | IN | |
@BUSINESSCOUNTRYID | uniqueidentifier | IN | |
@BUSINESSSTATEID | uniqueidentifier | IN | |
@BUSINESSADDRESSBLOCK | nvarchar(150) | IN | |
@BUSINESSCITY | nvarchar(50) | IN | |
@BUSINESSPOSTCODE | nvarchar(12) | IN | |
@SPOUSELOOKUPID | nvarchar(100) | IN | |
@SPOUSEKEYNAME | nvarchar(100) | IN | |
@SPOUSEFIRSTNAME | nvarchar(50) | IN | |
@SPOUSEMIDDLENAME | nvarchar(50) | IN | |
@SPOUSETITLECODEID | uniqueidentifier | IN | |
@SPOUSESUFFIXCODEID | uniqueidentifier | IN | |
@SPOUSERELATIONSHIPTYPECODEID | uniqueidentifier | IN | |
@FIRSTGIFTAMOUNT | money | IN | |
@FIRSTGIFTDATE | datetime | IN | |
@LARGESTGIFTAMOUNT | money | IN | |
@LARGESTGIFTDATE | datetime | IN | |
@LATESTGIFTAMOUNT | money | IN | |
@LATESTGIFTDATE | datetime | IN | |
@TOTALGIFTSGIVEN | int | IN | |
@TOTALGIFTAMOUNT | money | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@IMPORTID | nvarchar(100) | IN | |
@SPOUSEIMPORTID | nvarchar(100) | IN | |
@ALTERNATELOOKUPIDTYPECODEID | uniqueidentifier | IN | |
@EMAILADDRESSTYPECODEID | uniqueidentifier | IN | |
@EMAILADDRESS | UDT_EMAILADDRESS | IN | |
@ADDRESSDONOTMAIL | bit | IN | |
@WINTERADDRESSDONOTMAIL | bit | IN | |
@BUSINESSPHONETYPECODEID | uniqueidentifier | IN | |
@BUSINESSPHONENUMBER | nvarchar(100) | IN | |
@BUSINESSPOSITION | nvarchar(100) | IN | |
@NICKNAME | nvarchar(50) | IN | |
@MAIDENNAME | nvarchar(100) | IN | |
@SPOUSENICKNAME | nvarchar(50) | IN | |
@SPOUSEMAIDENNAME | nvarchar(100) | IN | |
@SPOUSEBIRTHDATE | UDT_FUZZYDATE | IN | |
@FIRSTGIFTDESIGNATION | nvarchar(100) | IN | |
@FIRSTGIFTTYPE | nvarchar(100) | IN | |
@LARGESTGIFTDESIGNATION | nvarchar(100) | IN | |
@LARGESTGIFTTYPE | nvarchar(100) | IN | |
@LATESTGIFTDESIGNATION | nvarchar(100) | IN | |
@LATESTGIFTTYPE | nvarchar(100) | IN | |
@PROSPECTMANAGERKEYNAME | nvarchar(100) | IN | |
@PROSPECTMANAGERFIRSTNAME | nvarchar(50) | IN |
Definition
Copy
CREATE procedure dbo.USP_BBACONSTITUENTFILEIMPORT(
@CONSTITUENTID uniqueidentifier output,
@LOOKUPID nvarchar(100),
@SYSRECID int,
@KEYNAME nvarchar(100),
@FIRSTNAME nvarchar(50),
@MIDDLENAME nvarchar(50),
@GENDERCODE int,
@BIRTHDATE dbo.UDT_FUZZYDATE,
@TITLECODEID uniqueidentifier,
@SUFFIXCODEID uniqueidentifier,
@ADDRESSTYPECODEID uniqueidentifier,
@COUNTRYID uniqueidentifier,
@STATEID uniqueidentifier,
@ADDRESSBLOCK nvarchar(150),
@CITY nvarchar(50),
@POSTCODE nvarchar(12),
@PHONETYPECODEID uniqueidentifier,
@PHONENUMBER nvarchar(100),
@WINTERADDRESSTYPECODEID uniqueidentifier,
@WINTERCOUNTRYID uniqueidentifier,
@WINTERSTATEID uniqueidentifier,
@WINTERADDRESSBLOCK nvarchar(150),
@WINTERCITY nvarchar(50),
@WINTERPOSTCODE nvarchar(12),
@WINTERPHONETYPECODEID uniqueidentifier,
@WINTERPHONENUMBER nvarchar(100),
@BUSINESSNAME nvarchar(100),
@EMPLOYEERELATIONSHIPTYPECODEID uniqueidentifier,
@EMPLOYERRELATIONSHIPTYPECODEID uniqueidentifier,
@BUSINESSADDRESSTYPECODEID uniqueidentifier,
@BUSINESSCOUNTRYID uniqueidentifier,
@BUSINESSSTATEID uniqueidentifier,
@BUSINESSADDRESSBLOCK nvarchar(150),
@BUSINESSCITY nvarchar(50),
@BUSINESSPOSTCODE nvarchar(12),
@SPOUSELOOKUPID nvarchar(100),
@SPOUSEKEYNAME nvarchar(100),
@SPOUSEFIRSTNAME nvarchar(50),
@SPOUSEMIDDLENAME nvarchar(50),
@SPOUSETITLECODEID uniqueidentifier,
@SPOUSESUFFIXCODEID uniqueidentifier,
@SPOUSERELATIONSHIPTYPECODEID uniqueidentifier,
@FIRSTGIFTAMOUNT money,
@FIRSTGIFTDATE datetime,
@LARGESTGIFTAMOUNT money,
@LARGESTGIFTDATE datetime,
@LATESTGIFTAMOUNT money,
@LATESTGIFTDATE datetime,
@TOTALGIFTSGIVEN integer,
@TOTALGIFTAMOUNT money,
@CHANGEAGENTID uniqueidentifier,
@IMPORTID nvarchar(100) = '',
@SPOUSEIMPORTID nvarchar(100) = '',
@ALTERNATELOOKUPIDTYPECODEID uniqueidentifier = null,
@EMAILADDRESSTYPECODEID uniqueidentifier = null,
@EMAILADDRESS dbo.UDT_EMAILADDRESS = '',
@ADDRESSDONOTMAIL bit = 0,
@WINTERADDRESSDONOTMAIL bit = 0,
@BUSINESSPHONETYPECODEID uniqueidentifier = null,
@BUSINESSPHONENUMBER nvarchar(100) = '',
@BUSINESSPOSITION nvarchar(100) = '',
@NICKNAME nvarchar(50) = '',
@MAIDENNAME nvarchar(100) = '',
@SPOUSENICKNAME nvarchar(50) = '',
@SPOUSEMAIDENNAME nvarchar(100) = '',
@SPOUSEBIRTHDATE dbo.UDT_FUZZYDATE = '00000000',
@FIRSTGIFTDESIGNATION nvarchar(100) = '',
@FIRSTGIFTTYPE nvarchar(100) = '',
@LARGESTGIFTDESIGNATION nvarchar(100) = '',
@LARGESTGIFTTYPE nvarchar(100) = '',
@LATESTGIFTDESIGNATION nvarchar(100) = '',
@LATESTGIFTTYPE nvarchar(100) = '',
@PROSPECTMANAGERKEYNAME nvarchar(100) = '',
@PROSPECTMANAGERFIRSTNAME nvarchar(50) = ''
) as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @SETID uniqueidentifier;
begin try
declare @EXISTINGCONSTITUENTID uniqueidentifier;
select
@EXISTINGCONSTITUENTID = C.ID
from
dbo.CONSTITUENT C
left join
dbo.TAIMPORTIDMAP MAP on MAP.ID = C.ID
where
MAP.LOOKUPID = @IMPORTID;
declare @MATCHEDLOOKUPIDONLY bit = 0;
if @EXISTINGCONSTITUENTID is null and len(@LOOKUPID) > 0 begin
select
@EXISTINGCONSTITUENTID = ID,
@MATCHEDLOOKUPIDONLY = 1
from
dbo.CONSTITUENT
where
LOOKUPID = @LOOKUPID and
ISGROUP = 0 and ISORGANIZATION = 0;
if @EXISTINGCONSTITUENTID is null begin
if (select count(ID) from dbo.ALTERNATELOOKUPID where ALTERNATELOOKUPID = @LOOKUPID) > 1
raiserror('The lookup ID specified relates to more than one alternate lookup ID in the database so a match cannot be determined.', 13, 1);
select
@EXISTINGCONSTITUENTID = A.CONSTITUENTID,
@MATCHEDLOOKUPIDONLY = 1
from
dbo.ALTERNATELOOKUPID A
left join dbo.CONSTITUENT C on A.CONSTITUENTID = C.ID
where
A.ALTERNATELOOKUPID = @LOOKUPID and
C.ISGROUP = 0 and C.ISORGANIZATION = 0;
end
end
declare @USEALTERNATECONSTITUENTLOOKUPID bit;
if @EXISTINGCONSTITUENTID is null begin
set @CONSTITUENTID = newid();
if @LOOKUPID = '' or (select count(ID) from dbo.CONSTITUENT where LOOKUPID = @LOOKUPID) = 0 begin
set @USEALTERNATECONSTITUENTLOOKUPID = 0;
end
else begin
set @USEALTERNATECONSTITUENTLOOKUPID = 1;
end
insert into dbo.CONSTITUENT (
ID,
CUSTOMIDENTIFIER,
KEYNAME,
FIRSTNAME,
MIDDLENAME,
NICKNAME,
MAIDENNAME,
TITLECODEID,
SUFFIXCODEID,
GENDERCODE,
BIRTHDATE,
ISCONSTITUENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
case when @USEALTERNATECONSTITUENTLOOKUPID = 0 then @LOOKUPID else '' end,
@KEYNAME,
@FIRSTNAME,
@MIDDLENAME,
@NICKNAME,
@MAIDENNAME,
@TITLECODEID,
@SUFFIXCODEID,
@GENDERCODE,
@BIRTHDATE,
1, -- ISCONSTITUENT
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if @MAIDENNAME is not null and @MAIDENNAME != ''
begin
insert into dbo.ALIAS
(CONSTITUENTID, KEYNAME, FIRSTNAME, MIDDLENAME, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values
(@CONSTITUENTID, @MAIDENNAME, @FIRSTNAME, @MIDDLENAME, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
insert into dbo.TAIMPORTIDMAP (
ID,
CUSTOMIDENTIFIER,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@IMPORTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
/*Start name format defaults*/
insert into dbo.[NAMEFORMAT] (
[CONSTITUENTID],
[NAMEFORMATTYPECODEID],
[NAMEFORMATFUNCTIONID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[PRIMARYADDRESSEE],
[PRIMARYSALUTATION])
select
@CONSTITUENTID,
NFD.NAMEFORMATTYPECODEID,
NFD.NAMEFORMATFUNCTIONID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
NFD.PRIMARYADDRESSEE,
NFD.PRIMARYSALUTATION
from dbo.NAMEFORMATDEFAULT as NFD
where NFD.APPLYTOCODE = 0
/*End name format defaults*/
end
else begin
set @CONSTITUENTID = @EXISTINGCONSTITUENTID;
declare @MAIDENNAMECHANGED bit = 0;
select @MAIDENNAMECHANGED = case when @MAIDENNAME = CONSTITUENT.MAIDENNAME then 0 else 1 end
from dbo.CONSTITUENT
where CONSTITUENT.ID = @EXISTINGCONSTITUENTID;
if @LOOKUPID = '' or (select count(ID) from dbo.CONSTITUENT where ID <> @EXISTINGCONSTITUENTID and LOOKUPID = @LOOKUPID) = 0 begin
set @USEALTERNATECONSTITUENTLOOKUPID = 0;
end
else begin
set @USEALTERNATECONSTITUENTLOOKUPID = 1;
end
update
dbo.CONSTITUENT
set
CUSTOMIDENTIFIER = case when @MATCHEDLOOKUPIDONLY = 0 and @USEALTERNATECONSTITUENTLOOKUPID = 0 then @LOOKUPID else CUSTOMIDENTIFIER end,
KEYNAME = coalesce(nullif(@KEYNAME, ''), KEYNAME, ''),
FIRSTNAME = coalesce(nullif(@FIRSTNAME, ''), FIRSTNAME, ''),
MIDDLENAME = coalesce(nullif(@MIDDLENAME, ''), MIDDLENAME, ''),
NICKNAME = coalesce(nullif(@NICKNAME, ''), NICKNAME, ''),
MAIDENNAME = coalesce(nullif(@MAIDENNAME, ''), MAIDENNAME, ''),
TITLECODEID = coalesce(@TITLECODEID, TITLECODEID),
SUFFIXCODEID = coalesce(@SUFFIXCODEID, SUFFIXCODEID),
GENDERCODE = coalesce(nullif(@GENDERCODE, 0), GENDERCODE, 0),
BIRTHDATE = coalesce(nullif(@BIRTHDATE,'00000000'),BIRTHDATE,'00000000'),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.CONSTITUENT
where
ID = @EXISTINGCONSTITUENTID;
if @MAIDENNAMECHANGED = 1 and @MAIDENNAME is not null and @MAIDENNAME != ''
begin
if (select ID from dbo.ALIAS where CONSTITUENTID = @EXISTINGCONSTITUENTID and KEYNAME = @MAIDENNAME and FIRSTNAME = @FIRSTNAME and MIDDLENAME = @MIDDLENAME) is null
insert into dbo.ALIAS
(CONSTITUENTID, KEYNAME, FIRSTNAME, MIDDLENAME, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values
(@EXISTINGCONSTITUENTID, @MAIDENNAME, @FIRSTNAME, @MIDDLENAME, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
if @MATCHEDLOOKUPIDONLY = 1 begin
if (select top 1 1 from TAIMPORTIDMAP where ID = @CONSTITUENTID) <> 0 begin
update
TAIMPORTIDMAP
set
CUSTOMIDENTIFIER = @IMPORTID
where
ID = @CONSTITUENTID
end else begin
insert into dbo.TAIMPORTIDMAP (
ID,
CUSTOMIDENTIFIER,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@IMPORTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
end
if @USEALTERNATECONSTITUENTLOOKUPID = 1 and @ALTERNATELOOKUPIDTYPECODEID is not null and @MATCHEDLOOKUPIDONLY = 0 begin
if not exists(select top 1 1 from dbo.ALTERNATELOOKUPID
where CONSTITUENTID = @CONSTITUENTID
and ALTERNATELOOKUPIDTYPECODEID = @ALTERNATELOOKUPIDTYPECODEID
and ALTERNATELOOKUPID = @LOOKUPID)
insert into dbo.[ALTERNATELOOKUPID] (
CONSTITUENTID,
ALTERNATELOOKUPIDTYPECODEID,
ALTERNATELOOKUPID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@ALTERNATELOOKUPIDTYPECODEID,
@LOOKUPID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
if @SYSRECID is not null and @SYSRECID > 0 begin
--remove any entries that are already using the given RE7INTEGRATIONCONSTITUENTMAP entry
delete
dbo.RE7INTEGRATIONCONSTITUENTMAP
where
RE7RECORDID = @SYSRECID and
ID <> @CONSTITUENTID;
if exists (select ID from dbo.RE7INTEGRATIONCONSTITUENTMAP where ID = @CONSTITUENTID) begin
update
dbo.RE7INTEGRATIONCONSTITUENTMAP
set
RE7RECORDID = @SYSRECID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @CONSTITUENTID;
end
else begin
insert into dbo.RE7INTEGRATIONCONSTITUENTMAP (
ID,
RE7RECORDID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@SYSRECID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Constituent address
if (@STATEID is not null) or len(@ADDRESSBLOCK) > 0 or len(@CITY) > 0 or len(@POSTCODE) > 0 begin
if not exists (select ID from dbo.ADDRESS where
CONSTITUENTID = @CONSTITUENTID and
COUNTRYID = @COUNTRYID and
STATEID = @STATEID and
ADDRESSBLOCK = @ADDRESSBLOCK and
CITY = @CITY and
POSTCODE = @POSTCODE) begin
update
dbo.ADDRESS
set
ISPRIMARY = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
CONSTITUENTID = @CONSTITUENTID;
insert into dbo.ADDRESS (
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
DONOTMAIL,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@ADDRESSTYPECODEID,
1,
@COUNTRYID,
@STATEID,
@ADDRESSBLOCK,
@CITY,
@POSTCODE,
@ADDRESSDONOTMAIL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Constituent phone
if len(@PHONENUMBER) > 0 begin
if not exists (select ID from dbo.PHONE where
CONSTITUENTID = @CONSTITUENTID and
NUMBER = @PHONENUMBER) begin
update
dbo.PHONE
set
ISPRIMARY = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
CONSTITUENTID = @CONSTITUENTID;
insert into dbo.PHONE (
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@PHONETYPECODEID,
@PHONENUMBER,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Constituent winter address
if (@WINTERSTATEID is not null) or len(@WINTERADDRESSBLOCK) > 0 or len(@WINTERCITY) > 0 or len(@WINTERPOSTCODE) > 0 begin
if not exists (select ID from dbo.ADDRESS where
CONSTITUENTID = @CONSTITUENTID and
COUNTRYID = @WINTERCOUNTRYID and
STATEID = @WINTERSTATEID and
ADDRESSBLOCK = @WINTERADDRESSBLOCK and
CITY = @WINTERCITY and
POSTCODE = @WINTERPOSTCODE) begin
insert into dbo.ADDRESS (
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
DONOTMAIL,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@WINTERADDRESSTYPECODEID,
0,
@WINTERCOUNTRYID,
@WINTERSTATEID,
@WINTERADDRESSBLOCK,
@WINTERCITY,
@WINTERPOSTCODE,
@WINTERADDRESSDONOTMAIL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Constituent winter phone
if len(@WINTERPHONENUMBER) > 0 begin
if not exists (select ID from dbo.PHONE where
CONSTITUENTID = @CONSTITUENTID and
NUMBER = @WINTERPHONENUMBER) begin
insert into dbo.PHONE (
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@WINTERPHONETYPECODEID,
@WINTERPHONENUMBER,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Constituent email address
if @EMAILADDRESSTYPECODEID is not null and len(@EMAILADDRESS) > 0 begin
if not exists (select ID from dbo.EMAILADDRESS where
CONSTITUENTID = @CONSTITUENTID and
EMAILADDRESS = @EMAILADDRESS) begin
declare @CURRENTPRIMARYEMAILID uniqueidentifier;
select
@CURRENTPRIMARYEMAILID = ID
from
dbo.EMAILADDRESS
where
ISPRIMARY = 1 and
CONSTITUENTID = @CONSTITUENTID;
update
dbo.EMAILADDRESS
set
ISPRIMARY = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
CONSTITUENTID = @CONSTITUENTID;
BEGIN TRY
insert into dbo.EMAILADDRESS (
CONSTITUENTID,
EMAILADDRESSTYPECODEID,
EMAILADDRESS,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@EMAILADDRESSTYPECODEID,
@EMAILADDRESS,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
END TRY
BEGIN CATCH
--TA has requested that we do not fail the import if an email address is invalid.
--So we continue with import if the email is invalid, and rethrow for any other errors
if ERROR_MESSAGE() not like '%CK_EMAILADDRESS_EMAILADDRESS%'
BEGIN
exec dbo.USP_RAISE_ERROR;
END
--If we get here, then we are continuing with the import.
--Restore previous primary email in case it was changed.
update
dbo.EMAILADDRESS
set
ISPRIMARY = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @CURRENTPRIMARYEMAILID
END CATCH
end
end
--Business
if len(@BUSINESSNAME) > 0 begin
declare @BUSINESSID uniqueidentifier;
select
@BUSINESSID = B.ID
from
dbo.CONSTITUENT B left join dbo.ADDRESS BA on BA.CONSTITUENTID = B.ID and BA.ISPRIMARY = 1
where
B.NAME = @BUSINESSNAME and
(BA.COUNTRYID = @BUSINESSCOUNTRYID or BA.COUNTRYID is null) and
(BA.STATEID = @BUSINESSSTATEID or (BA.STATEID is null and @BUSINESSSTATEID is null)) and
(BA.ADDRESSBLOCK = @BUSINESSADDRESSBLOCK or (BA.ADDRESSBLOCK is null and @BUSINESSADDRESSBLOCK is null) or (BA.ADDRESSBLOCK = '' and @BUSINESSADDRESSBLOCK is null) or (BA.ADDRESSBLOCK is null and @BUSINESSADDRESSBLOCK = '')) and
(BA.CITY = @BUSINESSCITY or (BA.CITY is null and @BUSINESSCITY is null) or (BA.CITY = '' and @BUSINESSCITY is null) or (BA.CITY is null and @BUSINESSCITY = '')) and
(BA.POSTCODE = @BUSINESSPOSTCODE or (BA.POSTCODE is null and @BUSINESSPOSTCODE is null) or (BA.POSTCODE = '' and @BUSINESSPOSTCODE is null) or (BA.POSTCODE is null and @BUSINESSPOSTCODE = '')) and
B.ISORGANIZATION = 1;
if @BUSINESSID is null begin
set @BUSINESSID = newid();
insert into dbo.CONSTITUENT (
ID,
KEYNAME,
ISORGANIZATION,
ISCONSTITUENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@BUSINESSID,
@BUSINESSNAME,
1,
1, --TA import should import business as constituents
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
insert into dbo.ORGANIZATIONDATA (
ID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@BUSINESSID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
--Business address
if (@BUSINESSSTATEID is not null) or len(@BUSINESSADDRESSBLOCK) > 0 or len(@BUSINESSCITY) > 0 or len(@BUSINESSPOSTCODE) > 0 begin
insert into dbo.ADDRESS (
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@BUSINESSID,
@BUSINESSADDRESSTYPECODEID,
1,
@BUSINESSCOUNTRYID,
@BUSINESSSTATEID,
@BUSINESSADDRESSBLOCK,
@BUSINESSCITY,
@BUSINESSPOSTCODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Business phone
if len(@BUSINESSPHONENUMBER ) > 0 begin
if not exists (select ID from dbo.PHONE where
CONSTITUENTID = @BUSINESSID and
NUMBER = @BUSINESSPHONENUMBER) begin
declare @BUSINESSPHONEISPRIMARY bit;
if (select ID from dbo.PHONE where CONSTITUENTID = @BUSINESSID and ISPRIMARY = 1) is null
set @BUSINESSPHONEISPRIMARY = 1;
else
set @BUSINESSPHONEISPRIMARY = 0;
insert into dbo.PHONE (
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@BUSINESSID,
@BUSINESSPHONETYPECODEID ,
@BUSINESSPHONENUMBER,
@BUSINESSPHONEISPRIMARY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Business relationship
declare @EXISTINGPRIMARYBUSINESSID uniqueidentifier;
select
@EXISTINGPRIMARYBUSINESSID = R.RECIPROCALCONSTITUENTID
from
dbo.RELATIONSHIP R
where
R.ISPRIMARYBUSINESS = 1 and
R.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID;
if @EXISTINGPRIMARYBUSINESSID is null or @BUSINESSID <> @EXISTINGPRIMARYBUSINESSID begin
if not @EXISTINGPRIMARYBUSINESSID is null begin
-- update the existing relationship to not be the primary business one
update
dbo.RELATIONSHIP
set
ISPRIMARYBUSINESS = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ISPRIMARYBUSINESS = 1 and
RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
RECIPROCALCONSTITUENTID = @EXISTINGPRIMARYBUSINESSID;
end
-- add the primary business relationship
set @SETID = newid();
insert into dbo.RELATIONSHIPSET (
ID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SETID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
insert into dbo.RELATIONSHIP (
RELATIONSHIPSETID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISSPOUSE,
ISPRIMARYBUSINESS,
POSITION,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SETID,
@CONSTITUENTID,
@BUSINESSID,
@EMPLOYEERELATIONSHIPTYPECODEID,
@EMPLOYERRELATIONSHIPTYPECODEID,
0,
1,
@BUSINESSPOSITION,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if (len(@BUSINESSPOSITION) > 0)
insert into dbo.RELATIONSHIPJOBINFO (
RELATIONSHIPSETID,
JOBTITLE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SETID,
@BUSINESSPOSITION,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Spouse
if (len(@SPOUSEIMPORTID) > 0 or len(@SPOUSEFIRSTNAME) > 0) and (@SPOUSEKEYNAME is null or @SPOUSEKEYNAME = '') begin
set @SPOUSEKEYNAME = @KEYNAME;
end
declare @SPOUSEID uniqueidentifier;
declare @SPOUSEMATCHEDLOOKUPIDONLY bit = 0;
if len(@SPOUSEIMPORTID) > 0 begin
select
@SPOUSEID = S.ID
from
dbo.CONSTITUENT S
left join
dbo.TAIMPORTIDMAP MAP on MAP.ID = S.ID
where
MAP.LOOKUPID = @SPOUSEIMPORTID;
if @SPOUSEID is null and len(@SPOUSELOOKUPID) > 0 begin
select
@SPOUSEID = ID,
@SPOUSEMATCHEDLOOKUPIDONLY = 1
from
dbo.CONSTITUENT
where
LOOKUPID = @SPOUSELOOKUPID and
ISGROUP = 0 and ISORGANIZATION = 0;
if @SPOUSEID is null begin
if (select count(ID) from dbo.ALTERNATELOOKUPID where ALTERNATELOOKUPID = @SPOUSELOOKUPID) > 1
raiserror('The spouse lookup ID specified relates to more than one alternate lookup ID in the database so a match cannot be determined.', 13, 1);
select
@SPOUSEID = A.CONSTITUENTID,
@SPOUSEMATCHEDLOOKUPIDONLY = 1
from
dbo.ALTERNATELOOKUPID A
left join dbo.CONSTITUENT C on A.CONSTITUENTID = C.ID
where
A.ALTERNATELOOKUPID = @SPOUSELOOKUPID and
ISGROUP = 0 and ISORGANIZATION = 0;
end
end
end
if (len(@SPOUSELOOKUPID) > 0 and @SPOUSEID is null and len(@SPOUSEKEYNAME) <= 0) begin
raiserror('A spouse lookup ID has been included, but no spouse can be added or linked. A last name, first name, matching lookup ID, or matching import ID is required.',13,1);
end
if not @SPOUSEID is null or len(@SPOUSEKEYNAME) > 0 begin
declare @USEALTERNATESPOUSELOOKUPID bit;
if @SPOUSEID is null begin
set @SPOUSEID = newid();
if isnull(@SPOUSELOOKUPID, '') = '' or (select count(ID) from dbo.CONSTITUENT where LOOKUPID = @SPOUSELOOKUPID) = 0 begin
set @USEALTERNATESPOUSELOOKUPID = 0;
end
else begin
set @USEALTERNATESPOUSELOOKUPID = 1;
end
insert into dbo.CONSTITUENT (
ID,
CUSTOMIDENTIFIER,
KEYNAME,
FIRSTNAME,
MIDDLENAME,
NICKNAME,
MAIDENNAME,
TITLECODEID,
SUFFIXCODEID,
BIRTHDATE,
ISCONSTITUENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
case when @USEALTERNATESPOUSELOOKUPID = 0 then @SPOUSELOOKUPID else '' end,
@SPOUSEKEYNAME,
@SPOUSEFIRSTNAME,
@SPOUSEMIDDLENAME,
@SPOUSENICKNAME,
@SPOUSEMAIDENNAME,
@SPOUSETITLECODEID,
@SPOUSESUFFIXCODEID,
@SPOUSEBIRTHDATE,
dbo.UFN_CONSTITUENCYCRITERIASPOUSE_SPOUSEISCONSTITUENT(),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if @SPOUSEMAIDENNAME is not null and @SPOUSEMAIDENNAME != ''
begin
insert into dbo.ALIAS
(CONSTITUENTID, KEYNAME, FIRSTNAME, MIDDLENAME, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values
(@SPOUSEID, @SPOUSEMAIDENNAME, @SPOUSEFIRSTNAME, @SPOUSEMIDDLENAME, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
insert into dbo.TAIMPORTIDMAP (
ID,
CUSTOMIDENTIFIER,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@SPOUSEIMPORTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
/*Start name format defaults*/
insert into dbo.[NAMEFORMAT]
([CONSTITUENTID],
[NAMEFORMATTYPECODEID],
[NAMEFORMATFUNCTIONID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[PRIMARYADDRESSEE],
[PRIMARYSALUTATION])
select
@SPOUSEID,
NFD.NAMEFORMATTYPECODEID,
NFD.NAMEFORMATFUNCTIONID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
NFD.PRIMARYADDRESSEE,
NFD.PRIMARYSALUTATION
from dbo.NAMEFORMATDEFAULT as NFD
where NFD.APPLYTOCODE = 0
/*End name format defaults*/
end
else begin
if isnull(@SPOUSELOOKUPID, '') = '' or (select count(ID) from dbo.CONSTITUENT where LOOKUPID = @SPOUSELOOKUPID and ID <> @SPOUSEID) = 0 begin
set @USEALTERNATESPOUSELOOKUPID = 0;
end
else begin
set @USEALTERNATESPOUSELOOKUPID = 1;
end
declare @SPOUSEMAIDENNAMECHANGED bit = 0;
select @SPOUSEMAIDENNAMECHANGED = case when @SPOUSEMAIDENNAME = CONSTITUENT.MAIDENNAME then 0 else 1 end
from dbo.CONSTITUENT
where CONSTITUENT.ID = @SPOUSEID;
update
dbo.CONSTITUENT
set
CUSTOMIDENTIFIER = case when @SPOUSEMATCHEDLOOKUPIDONLY = 0 and @USEALTERNATESPOUSELOOKUPID = 0 then @SPOUSELOOKUPID else CUSTOMIDENTIFIER end,
KEYNAME = coalesce(nullif(@SPOUSEKEYNAME, ''), KEYNAME, ''),
FIRSTNAME = coalesce(nullif(@SPOUSEFIRSTNAME, ''), FIRSTNAME, ''),
MIDDLENAME = coalesce(nullif(@SPOUSEMIDDLENAME, ''), MIDDLENAME, ''),
NICKNAME = coalesce(nullif(@SPOUSENICKNAME, ''), NICKNAME, ''),
MAIDENNAME = coalesce(nullif(@SPOUSEMAIDENNAME, ''), MAIDENNAME, ''),
TITLECODEID = coalesce(@SPOUSETITLECODEID, TITLECODEID),
SUFFIXCODEID = coalesce(@SPOUSESUFFIXCODEID, SUFFIXCODEID),
BIRTHDATE = coalesce(nullif(@SPOUSEBIRTHDATE,'00000000'),BIRTHDATE,'00000000'),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.CONSTITUENT
where
ID = @SPOUSEID;
if @SPOUSEMAIDENNAMECHANGED = 1 and @SPOUSEMAIDENNAME is not null and @SPOUSEMAIDENNAME != ''
begin
if (select ID from dbo.ALIAS where CONSTITUENTID = @SPOUSEID and KEYNAME = @SPOUSEMAIDENNAME and FIRSTNAME = @SPOUSEFIRSTNAME and MIDDLENAME = @SPOUSEMIDDLENAME) is null
insert into dbo.ALIAS
(CONSTITUENTID, KEYNAME, FIRSTNAME, MIDDLENAME, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values
(@SPOUSEID, @SPOUSEMAIDENNAME, @SPOUSEFIRSTNAME, @SPOUSEMIDDLENAME, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
if @SPOUSEMATCHEDLOOKUPIDONLY = 1 begin
if (select top 1 1 from TAIMPORTIDMAP where ID = @SPOUSEID) <> 0 begin
update
TAIMPORTIDMAP
set
CUSTOMIDENTIFIER = @SPOUSEIMPORTID
where
ID = @SPOUSEID
end else begin
insert into dbo.TAIMPORTIDMAP (
ID,
CUSTOMIDENTIFIER,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@SPOUSEIMPORTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
end
if @USEALTERNATESPOUSELOOKUPID = 1 and @ALTERNATELOOKUPIDTYPECODEID is not null and @SPOUSEMATCHEDLOOKUPIDONLY = 0 begin
if not exists(select top 1 1 from dbo.ALTERNATELOOKUPID
where CONSTITUENTID = @SPOUSEID
and ALTERNATELOOKUPIDTYPECODEID = @ALTERNATELOOKUPIDTYPECODEID
and ALTERNATELOOKUPID = @SPOUSELOOKUPID)
insert into dbo.[ALTERNATELOOKUPID] (
CONSTITUENTID,
ALTERNATELOOKUPIDTYPECODEID,
ALTERNATELOOKUPID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@ALTERNATELOOKUPIDTYPECODEID,
@SPOUSELOOKUPID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
--Spouse address
if (@STATEID is not null) or len(@ADDRESSBLOCK) > 0 or len(@CITY) > 0 or len(@POSTCODE) > 0 begin
if not exists (select ID from dbo.ADDRESS where
CONSTITUENTID = @SPOUSEID and
COUNTRYID = @COUNTRYID and
STATEID = @STATEID and
ADDRESSBLOCK = @ADDRESSBLOCK and
CITY = @CITY and
POSTCODE = @POSTCODE) begin
declare @SPOUSEADDRESSISPRIMARY bit;
if (select ID from dbo.ADDRESS where CONSTITUENTID = @SPOUSEID and ISPRIMARY = 1) is null
set @SPOUSEADDRESSISPRIMARY = 1;
else
set @SPOUSEADDRESSISPRIMARY = 0;
insert into dbo.ADDRESS (
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
DONOTMAIL,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@ADDRESSTYPECODEID,
@SPOUSEADDRESSISPRIMARY,
@COUNTRYID,
@STATEID,
@ADDRESSBLOCK,
@CITY,
@POSTCODE,
@ADDRESSDONOTMAIL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Spouse phone
if len(@PHONENUMBER) > 0 begin
if not exists (select ID from dbo.PHONE where
CONSTITUENTID = @SPOUSEID and
NUMBER = @PHONENUMBER) begin
declare @SPOUSEPHONEISPRIMARY bit;
if (select ID from dbo.PHONE where CONSTITUENTID = @SPOUSEID and ISPRIMARY = 1) is null
set @SPOUSEPHONEISPRIMARY = 1;
else
set @SPOUSEPHONEISPRIMARY = 0;
insert into dbo.PHONE (
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@PHONETYPECODEID,
@PHONENUMBER,
@SPOUSEPHONEISPRIMARY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Spouse winter address
if (@WINTERSTATEID is not null) or len(@WINTERADDRESSBLOCK) > 0 or len(@WINTERCITY) > 0 or len(@WINTERPOSTCODE) > 0 begin
if not exists (select ID from dbo.ADDRESS where
CONSTITUENTID = @SPOUSEID and
COUNTRYID = @WINTERCOUNTRYID and
STATEID = @WINTERSTATEID and
ADDRESSBLOCK = @WINTERADDRESSBLOCK and
CITY = @WINTERCITY and
POSTCODE = @WINTERPOSTCODE) begin
insert into dbo.ADDRESS (
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
DONOTMAIL,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@WINTERADDRESSTYPECODEID,
0,
@WINTERCOUNTRYID,
@WINTERSTATEID,
@WINTERADDRESSBLOCK,
@WINTERCITY,
@WINTERPOSTCODE,
@WINTERADDRESSDONOTMAIL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Spouse winter phone
if len(@WINTERPHONENUMBER) > 0 begin
if not exists (select ID from dbo.PHONE where
CONSTITUENTID = @SPOUSEID and
NUMBER = @WINTERPHONENUMBER) begin
insert into dbo.PHONE (
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@WINTERPHONETYPECODEID,
@WINTERPHONENUMBER,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
--Spouse email address
if @EMAILADDRESSTYPECODEID is not null and len(@EMAILADDRESS) > 0 begin
if not exists (select ID from dbo.EMAILADDRESS where
CONSTITUENTID = @SPOUSEID and
EMAILADDRESS = @EMAILADDRESS) begin
declare @SPOUSEEMAILISPRIMARY bit;
if (select ID from dbo.EMAILADDRESS where CONSTITUENTID = @SPOUSEID and ISPRIMARY = 1) is null
set @SPOUSEEMAILISPRIMARY = 1;
else
set @SPOUSEEMAILISPRIMARY = 0;
BEGIN TRY
insert into dbo.EMAILADDRESS (
CONSTITUENTID,
EMAILADDRESSTYPECODEID,
EMAILADDRESS,
ISPRIMARY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SPOUSEID,
@EMAILADDRESSTYPECODEID,
@EMAILADDRESS,
@SPOUSEEMAILISPRIMARY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
END TRY
BEGIN CATCH
--TA has requested that we do not fail the import if an email address is invalid.
--So we continue with import if the email is invalid, and rethrow for any other errors
if ERROR_MESSAGE() not like '%CK_EMAILADDRESS_EMAILADDRESS%'
BEGIN
exec dbo.USP_RAISE_ERROR;
END
END CATCH
end
end
--Spouse relationship
if exists(
select
ID
from
dbo.RELATIONSHIP
where
ISSPOUSE = 1 and
RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
RECIPROCALCONSTITUENTID <> @SPOUSEID) begin
raiserror('Constituent entered has an existing spouse that is different than the spouse entered in the row.',13,1);
end
if exists(
select
ID
from
dbo.RELATIONSHIP
where
ISSPOUSE = 1 and
RELATIONSHIPCONSTITUENTID = @SPOUSEID and
RECIPROCALCONSTITUENTID <> @CONSTITUENTID) begin
raiserror('Spouse entered has an existing spouse that is different than the constituent listed in the row.',13,1);
end
if exists(
select
GD.ID
from
dbo.GROUPMEMBER GM
inner join
dbo.GROUPDATA GD on GD.ID = GM.GROUPID and GD.GROUPTYPECODE = 0
where
GM.MEMBERID = @CONSTITUENTID and
not exists(
select
ID
from
dbo.GROUPMEMBER
where
GROUPID = GD.ID and
MEMBERID = @SPOUSEID)) begin
raiserror('Constituent entered is part of an existing household that does not include the listed spouse.',13,1);
end
if exists(
select
GD.ID
from
dbo.GROUPMEMBER GM
inner join
dbo.GROUPDATA GD on GD.ID = GM.GROUPID and GD.GROUPTYPECODE = 0
where
GM.MEMBERID = @SPOUSEID and
not exists(
select
ID
from
dbo.GROUPMEMBER
where
GROUPID = GD.ID and
MEMBERID = @CONSTITUENTID)) begin
raiserror('Spouse entered is part of an existing household that does not include the listed constituent.',13,1);
end
if not exists (select ID from dbo.RELATIONSHIP where ISSPOUSE = 1 and (RELATIONSHIPCONSTITUENTID = @CONSTITUENTID or RELATIONSHIPCONSTITUENTID = @SPOUSEID)) begin
set @SETID = newid();
insert into dbo.RELATIONSHIPSET (
ID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SETID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
insert into dbo.RELATIONSHIP (
RELATIONSHIPSETID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISSPOUSE,
ISPRIMARYBUSINESS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@SETID,
@CONSTITUENTID,
@SPOUSEID,
@SPOUSERELATIONSHIPTYPECODEID,
@SPOUSERELATIONSHIPTYPECODEID,
1,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
--Household for constituent and spouse
exec dbo.USP_SPOUSERELATIONSHIP_SETUPHOUSEHOLD @CONSTITUENTID, @SPOUSEID, 1, @CHANGEAGENTID, @CURRENTDATE,1,null;
end
if @FIRSTGIFTAMOUNT is not null and @LARGESTGIFTAMOUNT is not null and @LATESTGIFTAMOUNT is not null and @TOTALGIFTSGIVEN is not null and @TOTALGIFTAMOUNT is not null and
(@FIRSTGIFTAMOUNT > 0 or @LARGESTGIFTAMOUNT > 0 or @LATESTGIFTAMOUNT > 0 or @TOTALGIFTSGIVEN > 0 or @TOTALGIFTAMOUNT is not null) begin
if not exists (select ID from dbo.RE7INTEGRATIONGIVINGSUMMARY where ID = @CONSTITUENTID) begin
insert into dbo.RE7INTEGRATIONGIVINGSUMMARY (
ID,
FIRSTGIFTAMOUNT,
FIRSTGIFTDATE,
FIRSTGIFTDESIGNATION,
FIRSTGIFTTYPE,
LARGESTGIFTAMOUNT,
LARGESTGIFTDATE,
LARGESTGIFTDESIGNATION ,
LARGESTGIFTTYPE,
LATESTGIFTAMOUNT,
LATESTGIFTDATE,
LATESTGIFTDESIGNATION,
LATESTGIFTTYPE,
TOTALGIFTSGIVEN,
TOTALGIFTAMOUNT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@FIRSTGIFTAMOUNT,
@FIRSTGIFTDATE,
@FIRSTGIFTDESIGNATION,
@FIRSTGIFTTYPE,
@LARGESTGIFTAMOUNT,
@LARGESTGIFTDATE,
@LARGESTGIFTDESIGNATION ,
@LARGESTGIFTTYPE,
@LATESTGIFTAMOUNT,
@LATESTGIFTDATE,
@LATESTGIFTDESIGNATION,
@LATESTGIFTTYPE,
@TOTALGIFTSGIVEN,
@TOTALGIFTAMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else begin
update
dbo.RE7INTEGRATIONGIVINGSUMMARY
set
FIRSTGIFTAMOUNT = coalesce(nullif(@FIRSTGIFTAMOUNT, 0), FIRSTGIFTAMOUNT, 0),
FIRSTGIFTDATE = coalesce(@FIRSTGIFTDATE, FIRSTGIFTDATE),
FIRSTGIFTDESIGNATION = coalesce(nullif(@FIRSTGIFTDESIGNATION, ''), FIRSTGIFTDESIGNATION, ''),
FIRSTGIFTTYPE = coalesce(nullif(@FIRSTGIFTTYPE, ''), FIRSTGIFTTYPE, ''),
LARGESTGIFTAMOUNT = coalesce(nullif(@LARGESTGIFTAMOUNT, 0), LARGESTGIFTAMOUNT, 0),
LARGESTGIFTDATE = coalesce(@LARGESTGIFTDATE, LARGESTGIFTDATE),
LARGESTGIFTDESIGNATION = coalesce(nullif(@LARGESTGIFTDESIGNATION, ''), LARGESTGIFTDESIGNATION, ''),
LARGESTGIFTTYPE = coalesce(nullif(@LARGESTGIFTTYPE, ''), LARGESTGIFTTYPE, ''),
LATESTGIFTAMOUNT = coalesce(nullif(@LATESTGIFTAMOUNT, 0), LATESTGIFTAMOUNT, 0),
LATESTGIFTDATE = coalesce(@LATESTGIFTDATE, LATESTGIFTDATE),
LATESTGIFTDESIGNATION = coalesce(nullif(@LATESTGIFTDESIGNATION, ''), LATESTGIFTDESIGNATION, ''),
LATESTGIFTTYPE = coalesce(nullif(@LATESTGIFTTYPE, ''), LATESTGIFTTYPE, ''),
TOTALGIFTSGIVEN = coalesce(nullif(@TOTALGIFTSGIVEN, 0), TOTALGIFTSGIVEN, 0),
TOTALGIFTAMOUNT = coalesce(nullif(@TOTALGIFTAMOUNT, 0), TOTALGIFTAMOUNT, 0),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.RE7INTEGRATIONGIVINGSUMMARY
where
ID = @CONSTITUENTID;
end
exec dbo.USP_WEALTHCAPACITY_UPDATE @CONSTITUENTID, @CHANGEAGENTID;
end
if @PROSPECTMANAGERKEYNAME is not null and len(@PROSPECTMANAGERKEYNAME) > 0 begin
declare @PROSPECTMANAGERID uniqueidentifier;
declare @CURRENTDATEEARLIESTTIME datetime;
set @CURRENTDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE);
select
@PROSPECTMANAGERID = C.ID
from
dbo.CONSTITUENT C
inner join
dbo.FUNDRAISERDATERANGE FDR
on
FDR.CONSTITUENTID = C.ID
where
C.KEYNAME = @PROSPECTMANAGERKEYNAME and
C.FIRSTNAME = @PROSPECTMANAGERFIRSTNAME and
(FDR.DATEFROM is null or @CURRENTDATEEARLIESTTIME >= FDR.DATEFROM) and
(FDR.DATETO is null or @CURRENTDATEEARLIESTTIME <= FDR.DATETO);
if @PROSPECTMANAGERID is null begin
set @PROSPECTMANAGERID = newid();
insert into dbo.CONSTITUENT (
ID,
KEYNAME,
FIRSTNAME,
ISCONSTITUENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@PROSPECTMANAGERID,
@PROSPECTMANAGERKEYNAME,
@PROSPECTMANAGERFIRSTNAME,
1, --TA import we always want these to be constituents
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
insert into dbo.FUNDRAISERDATERANGE (
CONSTITUENTID,
DATEFROM,
DATETO,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@PROSPECTMANAGERID,
@CURRENTDATEEARLIESTTIME,
null,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
if (select ID from dbo.PROSPECT where ID = @CONSTITUENTID) is not null begin
update
dbo.PROSPECT
set
PROSPECTMANAGERFUNDRAISERID = coalesce(@PROSPECTMANAGERID,PROSPECTMANAGERFUNDRAISERID),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.PROSPECT
where
ID = @CONSTITUENTID;
end
else begin
insert into dbo.PROSPECT (
ID,
PROSPECTMANAGERFUNDRAISERID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@CONSTITUENTID,
@PROSPECTMANAGERID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;