USP_BBNC_COMMITPROFILEUPDATEADDRESS
Updates a constituent's preferred address information from a Blackbaud Internet Solutions profile transaction to the system from a given batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@COUNTRYID | uniqueidentifier | IN | |
@ADDRESSBLOCK | nvarchar(150) | IN | |
@CITY | nvarchar(50) | IN | |
@STATEID | uniqueidentifier | IN | |
@POSTCODE | nvarchar(12) | IN | |
@ADDNEWADDRESS | bit | IN | |
@MAKENEWPREFERRED | bit | IN | |
@ADDRESSTYPECODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@PREVADDRESSTYPECODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEADDRESS
(
@CONSTITUENTID uniqueidentifier = null,
@COUNTRYID uniqueidentifier = null,
@ADDRESSBLOCK nvarchar(150) = '',
@CITY nvarchar(50) = '',
@STATEID uniqueidentifier = null,
@POSTCODE nvarchar(12) = '',
@ADDNEWADDRESS bit = 0,
@MAKENEWPREFERRED bit = 0,
@ADDRESSTYPECODEID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@PREVADDRESSTYPECODEID uniqueidentifier = null
) as
set nocount on;
declare @SEQUENCE int;
if @CONSTITUENTID is null
begin
raiserror('The constituent ID is required',16,1);
return -2;
end
if @MAKENEWPREFERRED is null
set @MAKENEWPREFERRED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
--PRIMARYADDRESSTYPECODEID can be null
declare @PRIMARYADDRESSTYPECODEID uniqueidentifier;
declare @INFOSOURCECODEID uniqueidentifier;
select top (1)
@PRIMARYADDRESSTYPECODEID = [PRIMARYADDRESSTYPECODEID],
@INFOSOURCECODEID = [INFOSOURCECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
declare @CONSTITADDRESSID uniqueidentifier;
begin try
if @ADDNEWADDRESS = 0
begin
select @CONSTITADDRESSID = ID from dbo.ADDRESS where [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;
if @CONSTITADDRESSID is not null
update dbo.ADDRESS set
[COUNTRYID] = @COUNTRYID,
[ADDRESSBLOCK] = @ADDRESSBLOCK,
[CITY] = @CITY,
[STATEID] = @STATEID,
[POSTCODE] = @POSTCODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE,
[ADDRESSTYPECODEID]= coalesce(@ADDRESSTYPECODEID,[ADDRESSTYPECODEID])
where
ID = @CONSTITADDRESSID;
end
else
begin
select @SEQUENCE = max([SEQUENCE])
from dbo.ADDRESS
where [CONSTITUENTID] = @CONSTITUENTID;
if @SEQUENCE is null
set @SEQUENCE = 1;
if @MAKENEWPREFERRED = 1
begin
if @PREVADDRESSTYPECODEID is not null
update dbo.ADDRESS set
[HISTORICALENDDATE] = case when [ADDRESSTYPECODEID] = coalesce(@ADDRESSTYPECODEID, @PRIMARYADDRESSTYPECODEID) then convert(date,@CHANGEDATE)
else NULL
end,
[ISPRIMARY] = 0,
[ADDRESSTYPECODEID] = @PREVADDRESSTYPECODEID,
[DATECHANGED] = @CHANGEDATE,
[CHANGEDBYID] = @CHANGEAGENTID
where
[CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1
else
update dbo.ADDRESS set
[ISPRIMARY] = 0,
[DATECHANGED] = @CHANGEDATE,
[CHANGEDBYID] = @CHANGEAGENTID,
[HISTORICALENDDATE] = case when [ADDRESSTYPECODEID] = coalesce(@ADDRESSTYPECODEID, @PRIMARYADDRESSTYPECODEID) then convert(date,@CHANGEDATE)
else NULL
end
where
[CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;
end
-- TMV 09/26/2007 CR284107-092507 There should always be a primary address
if not exists(select 1 from dbo.ADDRESS where [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1)
set @MAKENEWPREFERRED = 1;
declare @CONSTITADDRESSISPRIMARY bit = 0;
select top 1
@CONSTITADDRESSID = ID,
@CONSTITADDRESSISPRIMARY = ISPRIMARY
from
dbo.ADDRESS
where
@CONSTITUENTID = [CONSTITUENTID]
and
(@ADDRESSTYPECODEID = [ADDRESSTYPECODEID] or (@ADDRESSTYPECODEID is null and [ADDRESSTYPECODEID] is null) or @PRIMARYADDRESSTYPECODEID = [ADDRESSTYPECODEID] or (@PRIMARYADDRESSTYPECODEID is null and [ADDRESSTYPECODEID] is null))
and
@COUNTRYID = [COUNTRYID]
and
(@STATEID = [STATEID] or (@STATEID is null and [STATEID] is null))
and
@ADDRESSBLOCK = [ADDRESSBLOCK]
and
@CITY = [CITY]
and
@POSTCODE = [POSTCODE]
and
'' = [CART]
and
'' = [DPC]
and
'' = [LOT]
-- Bug 413289 check for non former addresses only
AND (HISTORICALENDDATE is null OR HISTORICALENDDATE > convert(date, GETDATE()));
--Bug 108929 Only insert the address if an identical address does not already exist
if @CONSTITADDRESSID is null
begin
set @CONSTITADDRESSID = newid();
insert into dbo.ADDRESS
(
[ID],
[CONSTITUENTID],
[ADDRESSTYPECODEID],
[ISPRIMARY],
[DONOTMAIL],
[STARTDATE],
[ENDDATE],
[COUNTRYID],
[STATEID],
[ADDRESSBLOCK],
[CITY],
[POSTCODE],
[CART],
[DPC],
[LOT],
[SEQUENCE],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@CONSTITADDRESSID,
@CONSTITUENTID,
coalesce(@ADDRESSTYPECODEID, @PRIMARYADDRESSTYPECODEID), -- TMV 05/01/2007 CR268676-030107
@MAKENEWPREFERRED,
0,
'0000',
'0000',
@COUNTRYID,
@STATEID,
@ADDRESSBLOCK,
@CITY,
@POSTCODE,
'',
'',
'',
@SEQUENCE + 1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
end
else if @CONSTITADDRESSISPRIMARY = 0 and @MAKENEWPREFERRED = 1
update dbo.ADDRESS set
ISPRIMARY = 1
where
ID = @CONSTITADDRESSID;
end
if @CONSTITADDRESSID is not null
if not exists (select ID from dbo.ADDRESSVALIDATIONUPDATE where ID = @CONSTITADDRESSID)
insert into dbo.ADDRESSVALIDATIONUPDATE
(
[ID],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@CONSTITADDRESSID,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
)
else
update dbo.ADDRESSVALIDATIONUPDATE set
[INFOSOURCECODEID] = @INFOSOURCECODEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where ID = @CONSTITADDRESSID
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;