USP_DATAFORMTEMPLATE_ADD_HOUSEHOLD
The save procedure used by the add dataform template "Household Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@NAME | nvarchar(100) | IN | Custom name |
@DESCRIPTION | nvarchar(300) | IN | Description |
@GIVESANONYMOUSLY | bit | IN | Household gives anonymously |
@ADDRESS_ADDRESSTYPECODEID | uniqueidentifier | IN | Address type |
@ADDRESS_COUNTRYID | uniqueidentifier | IN | Country |
@ADDRESS_ADDRESSBLOCK | nvarchar(150) | IN | Address |
@ADDRESS_CITY | nvarchar(50) | IN | City |
@ADDRESS_STATEID | uniqueidentifier | IN | State |
@ADDRESS_POSTCODE | nvarchar(12) | IN | ZIP/Postal code |
@PHONE_PHONETYPECODEID | uniqueidentifier | IN | Phone type |
@PHONE_NUMBER | nvarchar(100) | IN | Phone number |
@EMAIL_EMAILADDRESSTYPECODEID | uniqueidentifier | IN | Email type |
@EMAIL_EMAILADDRESS | UDT_EMAILADDRESS | IN | Email address |
@PRIMARYCONTACTID | uniqueidentifier | IN | Full name |
@PRIMARYCONTACT_KEYNAME | nvarchar(100) | IN | Last name |
@PRIMARYCONTACT_FIRSTNAME | nvarchar(50) | IN | First name |
@PRIMARYCONTACT_MIDDLENAME | nvarchar(50) | IN | Middle name |
@PRIMARYCONTACT_TITLECODEID | uniqueidentifier | IN | Title |
@PRIMARYCONTACT_SUFFIXCODEID | uniqueidentifier | IN | Suffix |
@PRIMARYCONTACT_COPYHOUSEHOLDCONTACT | bit | IN | Copy household contact information |
@SECONDMEMBERID | uniqueidentifier | IN | Full name |
@SECONDMEMBER_KEYNAME | nvarchar(100) | IN | Last name |
@SECONDMEMBER_FIRSTNAME | nvarchar(50) | IN | First name |
@SECONDMEMBER_MIDDLENAME | nvarchar(50) | IN | Middle name |
@SECONDMEMBER_TITLECODEID | uniqueidentifier | IN | Title |
@SECONDMEMBER_SUFFIXCODEID | uniqueidentifier | IN | Suffix |
@SECONDMEMBER_COPYHOUSEHOLDCONTACT | bit | IN | Copy household contact information |
@SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID | uniqueidentifier | IN | Reciprocal relationship type |
@SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID | uniqueidentifier | IN | Relationship type |
@SECONDMEMBER_RELATIONSHIP_STARTDATE | datetime | IN | Start date |
@SECONDMEMBER_RELATIONSHIP_ISSPOUSE | bit | IN | This is the spouse relationship |
@WEBADDRESS | UDT_WEBADDRESS | IN | Website |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@DONOTMAIL | bit | IN | Do not send mail to this address |
@DONOTMAILREASONCODEID | uniqueidentifier | IN | Reason |
@SKIP_ADDING_SECURITYGROUPS | bit | IN | Skip adding security groups |
@OMITFROMVALIDATION | bit | IN | Omit this address from validation |
@CART | nvarchar(10) | IN | |
@DPC | nvarchar(8) | IN | |
@LOT | nvarchar(5) | IN | |
@COUNTYCODEID | uniqueidentifier | IN | |
@CONGRESSIONALDISTRICTCODEID | uniqueidentifier | IN | |
@LASTVALIDATIONATTEMPTDATE | datetime | IN | |
@VALIDATIONMESSAGE | nvarchar(200) | IN | |
@CERTIFICATIONDATA | int | IN | |
@SKIP_ADDING_SITES | bit | IN | Skip adding sites |
@DONOTEMAIL | bit | IN | Do not send email to this address |
@DONOTCALL | bit | IN | Do not call this phone number |
@ADDRESS_ISCONFIDENTIAL | bit | IN | Confidential |
@INFOSOURCECODEID | uniqueidentifier | IN | Information source |
@PRIMARYCONTACT_TITLE2CODEID | uniqueidentifier | IN | Title 2 |
@PRIMARYCONTACT_SUFFIX2CODEID | uniqueidentifier | IN | Suffix 2 |
@SECONDMEMBER_TITLE2CODEID | uniqueidentifier | IN | Title 2 |
@SECONDMEMBER_SUFFIX2CODEID | uniqueidentifier | IN | Suffix 2 |
@DONOTCALLREASONCODEID | uniqueidentifier | IN | Reason |
@PHONE_ISCONFIDENTIAL | bit | IN | Confidential |
@PRIMARYCONTACT_GENDERCODE | tinyint | IN | Gender |
@SECONDMEMBER_GENDERCODE | tinyint | IN | Gender |
@DONOTEMAILREASONCODEID | uniqueidentifier | IN | |
@PRIMARYCONTACT_GENDERCODEID | uniqueidentifier | IN | |
@SECONDMEMBER_GENDERCODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_HOUSEHOLD
(
@ID uniqueidentifier output,
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100) = null,
@DESCRIPTION nvarchar(300) = '',
@GIVESANONYMOUSLY bit = 0,
@ADDRESS_ADDRESSTYPECODEID uniqueidentifier = null,
@ADDRESS_COUNTRYID uniqueidentifier = null,
@ADDRESS_ADDRESSBLOCK nvarchar(150) = '',
@ADDRESS_CITY nvarchar(50) = '',
@ADDRESS_STATEID uniqueidentifier = null,
@ADDRESS_POSTCODE nvarchar(12) = '',
@PHONE_PHONETYPECODEID uniqueidentifier = null,
@PHONE_NUMBER nvarchar(100) = '',
@EMAIL_EMAILADDRESSTYPECODEID uniqueidentifier = null,
@EMAIL_EMAILADDRESS dbo.UDT_EMAILADDRESS = '',
@PRIMARYCONTACTID uniqueidentifier = null,
@PRIMARYCONTACT_KEYNAME nvarchar(100) = '',
@PRIMARYCONTACT_FIRSTNAME nvarchar(50) = '',
@PRIMARYCONTACT_MIDDLENAME nvarchar(50) = '',
@PRIMARYCONTACT_TITLECODEID uniqueidentifier = null,
@PRIMARYCONTACT_SUFFIXCODEID uniqueidentifier = null,
@PRIMARYCONTACT_COPYHOUSEHOLDCONTACT bit = 0,
@SECONDMEMBERID uniqueidentifier = null,
@SECONDMEMBER_KEYNAME nvarchar(100) = '',
@SECONDMEMBER_FIRSTNAME nvarchar(50) = '',
@SECONDMEMBER_MIDDLENAME nvarchar(50) = '',
@SECONDMEMBER_TITLECODEID uniqueidentifier = null,
@SECONDMEMBER_SUFFIXCODEID uniqueidentifier = null,
@SECONDMEMBER_COPYHOUSEHOLDCONTACT bit = 0,
@SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID uniqueidentifier = null,
@SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID uniqueidentifier = null,
@SECONDMEMBER_RELATIONSHIP_STARTDATE datetime = null,
@SECONDMEMBER_RELATIONSHIP_ISSPOUSE bit = 0,
@WEBADDRESS dbo.UDT_WEBADDRESS = '',
@CHANGEAGENTID uniqueidentifier = null,
@DONOTMAIL bit = 0,
@DONOTMAILREASONCODEID uniqueidentifier = null,
@SKIP_ADDING_SECURITYGROUPS bit=0,
@OMITFROMVALIDATION bit = 0,
@CART nvarchar(10) = '',
@DPC nvarchar(8) = '',
@LOT nvarchar(5) = '',
@COUNTYCODEID uniqueidentifier = null,
@CONGRESSIONALDISTRICTCODEID uniqueidentifier = null,
@LASTVALIDATIONATTEMPTDATE datetime = null,
@VALIDATIONMESSAGE nvarchar(200) = '',
@CERTIFICATIONDATA integer = 0,
@SKIP_ADDING_SITES bit=0,
@DONOTEMAIL bit = 0,
@DONOTCALL bit = 0,
@ADDRESS_ISCONFIDENTIAL bit = 0,
@INFOSOURCECODEID uniqueidentifier = null,
@PRIMARYCONTACT_TITLE2CODEID uniqueidentifier = null,
@PRIMARYCONTACT_SUFFIX2CODEID uniqueidentifier = null,
@SECONDMEMBER_TITLE2CODEID uniqueidentifier = null,
@SECONDMEMBER_SUFFIX2CODEID uniqueidentifier = null,
@DONOTCALLREASONCODEID uniqueidentifier = null,
@PHONE_ISCONFIDENTIAL bit = 0,
@PRIMARYCONTACT_GENDERCODE tinyint = 0,
@SECONDMEMBER_GENDERCODE tinyint = 0,
@DONOTEMAILREASONCODEID uniqueidentifier = null,
@PRIMARYCONTACT_GENDERCODEID uniqueidentifier = null,
@SECONDMEMBER_GENDERCODEID uniqueidentifier = null
) as
set nocount on;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NOSITEROLE bit;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @ID is null
set @ID = newid();
if @DONOTMAIL = 0
set @DONOTMAILREASONCODEID = null
if @DONOTCALL = 0
set @DONOTCALLREASONCODEID = null
if @DONOTEMAIL = 0
set @DONOTEMAILREASONCODEID = null;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @NAMEFORMATFUNCTIONID uniqueidentifier;
begin try
-- if the user did not specify a custom name, then they must have specified a primary user.
-- we will recalculate the name of the household at the end if we are calculating it.
if @NAME is null or @NAME = ''
begin
-- We will regenerate the name later, but we need a placeholder.
-- We set the name to null to cause a DB exception when its inserted to let the user know they must pick a custom name if they make a household without members.
if @PRIMARYCONTACTID is not null or len(@PRIMARYCONTACT_KEYNAME) > 0
set @NAME = 'Household';
else
set @NAME = null;
select top(1) @NAMEFORMATFUNCTIONID = NAMEFORMATFUNCTIONID from dbo.HOUSEHOLDINFO order by DATEADDED;
end
else
set @NAMEFORMATFUNCTIONID = null;
-- create the constituent record for the group
insert into dbo.CONSTITUENT
(
ID,
ISGROUP,
KEYNAME,
GIVESANONYMOUSLY,
WEBADDRESS,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
1,
@NAME,
@GIVESANONYMOUSLY,
@WEBADDRESS,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
-- create the group record
insert into dbo.GROUPDATA
(
ID,
GROUPTYPECODE,
STARTDATE,
DESCRIPTION,
NAMEFORMATFUNCTIONID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
0,
null,
@DESCRIPTION,
@NAMEFORMATFUNCTIONID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
)
if
(
(@ADDRESS_STATEID is not null)
or (coalesce(@ADDRESS_ADDRESSBLOCK,'') <> '')
or (coalesce(@ADDRESS_CITY,'') <> '')
or (coalesce(@ADDRESS_POSTCODE,'') <> '')
or (@ADDRESS_ADDRESSTYPECODEID is not null)
or (@ADDRESS_COUNTRYID is not null)
or (@DONOTMAIL = 1)
or (@DONOTMAILREASONCODEID is not null)
)
begin
-- create the group address
declare @ADDRESSID uniqueidentifier;
set @ADDRESSID = newID();
insert into dbo.ADDRESS
(
ID,
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
CART,
DPC,
LOT,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,
DONOTMAIL,
DONOTMAILREASONCODEID,
ISCONFIDENTIAL
)
values
(
@ADDRESSID,
@ID,
@ADDRESS_ADDRESSTYPECODEID,
1,
@ADDRESS_COUNTRYID,
@ADDRESS_STATEID,
@ADDRESS_ADDRESSBLOCK,
@ADDRESS_CITY,
@ADDRESS_POSTCODE,
@CART,
@DPC,
@LOT,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,
@DONOTMAIL,
@DONOTMAILREASONCODEID,
@ADDRESS_ISCONFIDENTIAL
);
insert into dbo.ADDRESSVALIDATIONUPDATE
(
[ID],
[COUNTYCODEID],
[CONGRESSIONALDISTRICTCODEID],
[LASTVALIDATIONATTEMPTDATE],
[VALIDATIONMESSAGE],
[CERTIFICATIONDATA],
[OMITFROMVALIDATION],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@ADDRESSID,
@COUNTYCODEID,
@CONGRESSIONALDISTRICTCODEID,
@CURRENTDATE,
@VALIDATIONMESSAGE,
@CERTIFICATIONDATA,
@OMITFROMVALIDATION,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
declare @PHONE_COUNTRYID uniqueidentifier = @ADDRESS_COUNTRYID;
if @ADDRESS_COUNTRYID is null
exec @PHONE_COUNTRYID = dbo.UFN_COUNTRY_GETDEFAULT;
-- create the phone record for the group
if (@PHONE_PHONETYPECODEID is not null) or (coalesce(@PHONE_NUMBER, '') <> '')
begin
insert into dbo.PHONE
(
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
COUNTRYID,
ISPRIMARY,
DONOTCALL,
INFOSOURCECODEID,
DONOTCALLREASONCODEID,
ISCONFIDENTIAL,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
)
values
(
@ID,
@PHONE_PHONETYPECODEID,
@PHONE_NUMBER,
@PHONE_COUNTRYID,
1,
@DONOTCALL,
@INFOSOURCECODEID,
@DONOTCALLREASONCODEID,
@PHONE_ISCONFIDENTIAL,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE);
if @PRIMARYCONTACTID is not null
exec dbo.USP_GROUP_COPYPHONE @ID, @PRIMARYCONTACTID, @PHONE_NUMBER, @CHANGEAGENTID;
end
-- create email address record for the group
if (@EMAIL_EMAILADDRESSTYPECODEID is not null) or (coalesce(@EMAIL_EMAILADDRESS,'') <> '')
begin
insert into dbo.EMAILADDRESS
(
CONSTITUENTID,
EMAILADDRESSTYPECODEID,
EMAILADDRESS,
ISPRIMARY,
DONOTEMAIL,
INFOSOURCECODEID,
DONOTEMAILREASONCODEID,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
)
values
(
@ID,
@EMAIL_EMAILADDRESSTYPECODEID,
@EMAIL_EMAILADDRESS,
1,
@DONOTEMAIL,
@INFOSOURCECODEID,
@DONOTEMAILREASONCODEID,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
);
end
-- create the primary group contact
if (@PRIMARYCONTACTID is null) and ( coalesce(@PRIMARYCONTACT_KEYNAME,'') <> '')
begin
set @PRIMARYCONTACTID = newid();
-- create the primary contact constituent record
insert into dbo.CONSTITUENT
(
ID,
KEYNAME,
FIRSTNAME,
MIDDLENAME,
TITLECODEID,
TITLE2CODEID,
SUFFIXCODEID,
SUFFIX2CODEID,
GENDERCODE,
DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID,
GENDERCODEID
)
values
(
@PRIMARYCONTACTID,
@PRIMARYCONTACT_KEYNAME,
@PRIMARYCONTACT_FIRSTNAME,
@PRIMARYCONTACT_MIDDLENAME,
@PRIMARYCONTACT_TITLECODEID,
@PRIMARYCONTACT_TITLE2CODEID,
@PRIMARYCONTACT_SUFFIXCODEID,
@PRIMARYCONTACT_SUFFIX2CODEID,
@PRIMARYCONTACT_GENDERCODE,
@CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID,
@PRIMARYCONTACT_GENDERCODEID
);
/*Start security groups*/
if COALESCE(@SKIP_ADDING_SECURITYGROUPS,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@PRIMARYCONTACTID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end security groups*/
/*Start sites*/
if coalesce(@SKIP_ADDING_SITES,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@PRIMARYCONTACTID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end sites*/
/*Start name format defaults*/
INSERT INTO [dbo].[NAMEFORMAT]
([CONSTITUENTID]
,[NAMEFORMATTYPECODEID]
,[NAMEFORMATFUNCTIONID]
,[ADDEDBYID]
,[CHANGEDBYID]
,[DATEADDED]
,[DATECHANGED]
,[PRIMARYADDRESSEE]
,[PRIMARYSALUTATION]
,[SEQUENCE])
SELECT
@PRIMARYCONTACTID
,NFD.NAMEFORMATTYPECODEID
,NFD.NAMEFORMATFUNCTIONID
,@CHANGEAGENTID
,@CHANGEAGENTID
,@CURRENTDATE
,@CURRENTDATE
,NFD.PRIMARYADDRESSEE
,NFD.PRIMARYSALUTATION
,(select count(ID)
from dbo.NAMEFORMATDEFAULT as SUBNFD
where NFD.ID > SUBNFD.ID
and NFD.APPLYTOCODE = SUBNFD.APPLYTOCODE)
FROM dbo.NAMEFORMATDEFAULT as NFD
WHERE NFD.APPLYTOCODE = 0
/*End name format defaults*/
if (@PRIMARYCONTACT_COPYHOUSEHOLDCONTACT = 1)
begin
if
(
(@ADDRESS_STATEID is not null)
or (coalesce(@ADDRESS_ADDRESSBLOCK,'') <> '')
or (coalesce(@ADDRESS_CITY,'') <> '')
or (coalesce(@ADDRESS_POSTCODE,'') <> '')
or (@ADDRESS_ADDRESSTYPECODEID is not null)
or (@ADDRESS_COUNTRYID is not null)
or (@DONOTMAIL = 1)
or (@DONOTMAILREASONCODEID is not null)
)
begin
declare @PRIMARYCONTACTADDRESSID uniqueidentifier;
set @PRIMARYCONTACTADDRESSID = newid();
-- copy the address for the primary contact
insert into dbo.ADDRESS
(
ID,
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,
DONOTMAIL,
DONOTMAILREASONCODEID
)
values
(
@PRIMARYCONTACTADDRESSID,
@PRIMARYCONTACTID,
@ADDRESS_ADDRESSTYPECODEID,
1,
@ADDRESS_COUNTRYID,
@ADDRESS_STATEID,
@ADDRESS_ADDRESSBLOCK,
@ADDRESS_CITY,
@ADDRESS_POSTCODE,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,
@DONOTMAIL,
@DONOTMAILREASONCODEID
);
insert into dbo.ADDRESSVALIDATIONUPDATE
(
[ID],
[COUNTYCODEID],
[CONGRESSIONALDISTRICTCODEID],
[LASTVALIDATIONATTEMPTDATE],
[VALIDATIONMESSAGE],
[CERTIFICATIONDATA],
[OMITFROMVALIDATION],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@PRIMARYCONTACTADDRESSID,
@COUNTYCODEID,
@CONGRESSIONALDISTRICTCODEID,
@CURRENTDATE,
@VALIDATIONMESSAGE,
@CERTIFICATIONDATA,
@OMITFROMVALIDATION,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
-- copy the phone number for the primary contact
if (@PHONE_PHONETYPECODEID is not null) or (coalesce(@PHONE_NUMBER, '') <> '')
begin
insert into dbo.PHONE
(
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
COUNTRYID,
ISPRIMARY,
DONOTCALL,
INFOSOURCECODEID,
DONOTCALLREASONCODEID,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
)
values
(
@PRIMARYCONTACTID,
@PHONE_PHONETYPECODEID,
@PHONE_NUMBER,
@PHONE_COUNTRYID,
1,
@DONOTCALL,
@INFOSOURCECODEID,
@DONOTCALLREASONCODEID,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
);
end
-- copy the email address for the primary contact
if (@EMAIL_EMAILADDRESSTYPECODEID is not null) or (coalesce(@EMAIL_EMAILADDRESS,'') <> '')
begin
insert into dbo.EMAILADDRESS
(
CONSTITUENTID,
EMAILADDRESSTYPECODEID,
EMAILADDRESS,
ISPRIMARY,
DONOTEMAIL,
INFOSOURCECODEID,
DONOTEMAILREASONCODEID,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
)
values
(
@PRIMARYCONTACTID,
@EMAIL_EMAILADDRESSTYPECODEID,
@EMAIL_EMAILADDRESS,
1,
@DONOTEMAIL,
@INFOSOURCECODEID,
@DONOTEMAILREASONCODEID,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
);
end
end -- end copy of contact information for primary group contact
end -- end copy of create primary group contact
if @PRIMARYCONTACTID is not null
begin
if (@ISADMIN = 1 or
(
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, @PRIMARYCONTACTID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, @PRIMARYCONTACTID, @APPUSER_IN_NOSITEROLE) = 1)
)
)
begin
-- add the primary contact to the group
declare @PRIMARYCONTACTGROUPMEMBERID uniqueidentifier;
exec dbo.USP_GROUPMEMBERADD @PRIMARYCONTACTGROUPMEMBERID output, @CHANGEAGENTID, @ID, @PRIMARYCONTACTID;
-- set the primary contact bit
update
dbo.GROUPMEMBER
set
ISPRIMARY = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @PRIMARYCONTACTGROUPMEMBERID;
end
else
begin
raiserror ('ERR_PRIMARYCONTACT_NOACCESS',13,1);
return 0;
end
end
if (@SECONDMEMBERID is null) and ( coalesce(@SECONDMEMBER_KEYNAME,'') <> '')
begin
set @SECONDMEMBERID = newid();
insert into dbo.CONSTITUENT
(
ID,
KEYNAME,
FIRSTNAME,
MIDDLENAME,
TITLECODEID,
TITLE2CODEID,
SUFFIXCODEID,
SUFFIX2CODEID,
GENDERCODE,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,
GENDERCODEID
)
values
(
@SECONDMEMBERID,
@SECONDMEMBER_KEYNAME,
@SECONDMEMBER_FIRSTNAME,
@SECONDMEMBER_MIDDLENAME,
@SECONDMEMBER_TITLECODEID,
@SECONDMEMBER_TITLE2CODEID,
@SECONDMEMBER_SUFFIXCODEID,
@SECONDMEMBER_SUFFIX2CODEID,
@SECONDMEMBER_GENDERCODE,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,
@SECONDMEMBER_GENDERCODEID
);
/*Start security groups*/
if COALESCE(@SKIP_ADDING_SECURITYGROUPS,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@SECONDMEMBERID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end security groups*/
/*Start sites*/
if coalesce(@SKIP_ADDING_SITES,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@SECONDMEMBERID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end sites*/
/*Start name format defaults*/
INSERT INTO [dbo].[NAMEFORMAT]
([CONSTITUENTID]
,[NAMEFORMATTYPECODEID]
,[NAMEFORMATFUNCTIONID]
,[ADDEDBYID]
,[CHANGEDBYID]
,[DATEADDED]
,[DATECHANGED]
,[PRIMARYADDRESSEE]
,[PRIMARYSALUTATION]
,[SEQUENCE])
SELECT
@SECONDMEMBERID
,NFD.NAMEFORMATTYPECODEID
,NFD.NAMEFORMATFUNCTIONID
,@CHANGEAGENTID
,@CHANGEAGENTID
,@CURRENTDATE
,@CURRENTDATE
,NFD.PRIMARYADDRESSEE
,NFD.PRIMARYSALUTATION
,(select count(ID)
from dbo.NAMEFORMATDEFAULT as SUBNFD
where NFD.ID > SUBNFD.ID
and NFD.APPLYTOCODE = SUBNFD.APPLYTOCODE)
FROM dbo.NAMEFORMATDEFAULT as NFD
WHERE NFD.APPLYTOCODE = 0
/*End name format defaults*/
if (@SECONDMEMBER_COPYHOUSEHOLDCONTACT = 1)
begin
if
(
(@ADDRESS_STATEID is not null)
or (coalesce(@ADDRESS_ADDRESSBLOCK,'') <> '')
or (coalesce(@ADDRESS_CITY,'') <> '')
or (coalesce(@ADDRESS_POSTCODE,'') <> '')
or (@ADDRESS_ADDRESSTYPECODEID is not null)
or (@ADDRESS_COUNTRYID is not null)
or (@DONOTMAIL = 1)
or (@DONOTMAILREASONCODEID is not null)
)
begin
declare @SECONDMEMBERCONTACTADDRESSID uniqueidentifier;
set @SECONDMEMBERCONTACTADDRESSID = newid();
-- copy the address
insert into dbo.ADDRESS
(
ID,
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,
DONOTMAIL,
DONOTMAILREASONCODEID,
ISCONFIDENTIAL
)
values
(
@SECONDMEMBERCONTACTADDRESSID,
@SECONDMEMBERID,
@ADDRESS_ADDRESSTYPECODEID,
1,
@ADDRESS_COUNTRYID,
@ADDRESS_STATEID,
@ADDRESS_ADDRESSBLOCK,
@ADDRESS_CITY,
@ADDRESS_POSTCODE,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,
@DONOTMAIL,
@DONOTMAILREASONCODEID,
@ADDRESS_ISCONFIDENTIAL
);
insert into dbo.ADDRESSVALIDATIONUPDATE
(
[ID],
[COUNTYCODEID],
[CONGRESSIONALDISTRICTCODEID],
[LASTVALIDATIONATTEMPTDATE],
[VALIDATIONMESSAGE],
[CERTIFICATIONDATA],
[OMITFROMVALIDATION],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@SECONDMEMBERCONTACTADDRESSID,
@COUNTYCODEID,
@CONGRESSIONALDISTRICTCODEID,
@CURRENTDATE,
@VALIDATIONMESSAGE,
@CERTIFICATIONDATA,
@OMITFROMVALIDATION,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
-- copy the phone number
if (@PHONE_PHONETYPECODEID is not null) or (coalesce(@PHONE_NUMBER, '') <> '')
insert into dbo.PHONE
(
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
COUNTRYID,
ISPRIMARY,
DONOTCALL,
INFOSOURCECODEID,
DONOTCALLREASONCODEID,
ISCONFIDENTIAL,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
)
values
(
@SECONDMEMBERID,
@PHONE_PHONETYPECODEID,
@PHONE_NUMBER,
@PHONE_COUNTRYID,
1,
@DONOTCALL,
@INFOSOURCECODEID,
@DONOTCALLREASONCODEID,
@PHONE_ISCONFIDENTIAL,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
);
-- copy the email address for the primary contact
if (@EMAIL_EMAILADDRESSTYPECODEID is not null) or (coalesce(@EMAIL_EMAILADDRESS,'') <> '')
insert into dbo.EMAILADDRESS
(
CONSTITUENTID,
EMAILADDRESSTYPECODEID,
EMAILADDRESS,
ISPRIMARY,
DONOTEMAIL,
INFOSOURCECODEID,
DONOTEMAILREASONCODEID,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
)
values
(
@SECONDMEMBERID,
@EMAIL_EMAILADDRESSTYPECODEID,
@EMAIL_EMAILADDRESS,
1,
@DONOTEMAIL,
@INFOSOURCECODEID,
@DONOTEMAILREASONCODEID,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
);
end -- end copy contact information for second member
end -- end create second member information
if @SECONDMEMBERID is not null
begin
if (@ISADMIN = 1 or
(
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, @SECONDMEMBERID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, @SECONDMEMBERID, @APPUSER_IN_NOSITEROLE) = 1)
)
)
begin
declare @MEMBER_GROUPMEMBERID uniqueidentifier;
exec dbo.USP_GROUPMEMBERADD @MEMBER_GROUPMEMBERID output, @CHANGEAGENTID, @ID, @SECONDMEMBERID;
end
else
begin
raiserror ('ERR_SECONDMEMBER_NOACCESS',13,1);
return 0;
end
end
if ((@SECONDMEMBERID is not null) and (@PRIMARYCONTACTID is not null) and
(@SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID is not null) and
(@SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID is not null))
begin
-- Verify a relationship between the two constituents doesn't already exist
if not exists(select 1 from dbo.RELATIONSHIP where RELATIONSHIPCONSTITUENTID = @PRIMARYCONTACTID and RECIPROCALCONSTITUENTID = @SECONDMEMBERID)
insert into dbo.RELATIONSHIP
(
ID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISSPOUSE,
STARTDATE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
newid(),
@PRIMARYCONTACTID,
@SECONDMEMBERID,
@SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID,
@SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID,
@SECONDMEMBER_RELATIONSHIP_ISSPOUSE,
@SECONDMEMBER_RELATIONSHIP_STARTDATE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE @PRIMARYCONTACTID, @SECONDMEMBERID, @SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID, @SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID, @CHANGEAGENTID, @CURRENTDATE
declare @PRIMARYRECOGNITIONTYPECODEID uniqueidentifier
declare @RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier
declare @PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit
declare @PRIMARYSOFTCREDITMATCHFACTOR decimal(5,2)
declare @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit
declare @RECIPROCALSOFTCREDITMATCHFACTOR decimal(5,2)
set @PRIMARYSOFTCREDITRELATIONSHIPEXISTS = 0
set @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 0
select @PRIMARYSOFTCREDITRELATIONSHIPEXISTS = 1,
@PRIMARYRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@PRIMARYSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=0 and RRD.RELATIONSHIPTYPECODEID=@SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID
select @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 1,
@RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
@RECIPROCALSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD
where RRD.CONSTITUENTTYPECODE=0 and RRD.RELATIONSHIPTYPECODEID=@SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @PRIMARYCONTACTID, @SECONDMEMBERID,
@SECONDMEMBER_RELATIONSHIP_STARTDATE, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
@PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;
if @SECONDMEMBER_RELATIONSHIP_ISSPOUSE = 1
begin
exec dbo.USP_MARRIAGEOPTIONS_APPLYRULES
@PRIMARYCONTACTID,
@SECONDMEMBERID,
@CHANGEAGENTID,
@CURRENTDATE,
1;
end
end
/*Start security groups*/
if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@ID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end security groups*/
/*Start sites*/
if coalesce(@SKIP_ADDING_SITES,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@ID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end sites*/
-- Update the household name
if @NAMEFORMATFUNCTIONID is not null
begin
declare @HOUSEHOLDNAME nvarchar(100);
select
@HOUSEHOLDNAME = left(dbo.UFN_NAMEFORMAT_FROMID(GROUPDATA.NAMEFORMATFUNCTIONID, GROUPMEMBER.MEMBERID), 100)
from dbo.GROUPDATA
inner join dbo.GROUPMEMBER on GROUPDATA.ID = GROUPMEMBER.GROUPID
where GROUPDATA.ID = @ID and GROUPDATA.NAMEFORMATFUNCTIONID is not null and GROUPMEMBER.ISPRIMARY <> 0;
if @HOUSEHOLDNAME is null or @HOUSEHOLDNAME = ''
begin
declare @FALLBACKHOUSEHOLDNAMEFORMATID uniqueidentifier
select @FALLBACKHOUSEHOLDNAMEFORMATID = ID
from dbo.NAMEFORMATFUNCTION
where FORMATSQLFUNCTION = 'UFN_NAMEFORMAT_32';
select
@HOUSEHOLDNAME = left(dbo.UFN_NAMEFORMAT_FROMID(@FALLBACKHOUSEHOLDNAMEFORMATID, GROUPMEMBER.MEMBERID), 100)
from dbo.GROUPMEMBER
where GROUPMEMBER.GROUPID = @ID and GROUPMEMBER.ISPRIMARY <> 0;
end
update dbo.CONSTITUENT
set
KEYNAME = @HOUSEHOLDNAME,
CONSTITUENT.CHANGEDBYID = @CHANGEAGENTID,
CONSTITUENT.DATECHANGED = @CURRENTDATE
where CONSTITUENT.ID = @ID;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;