USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTADDRESSUPDATEBATCHCOMMIT
The save procedure used by the edit dataform template "Constituent Address Update Batch Row Commit Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@ADDRESSTYPECODEID | uniqueidentifier | IN | Address type |
@COUNTRYID | uniqueidentifier | IN | Country |
@ADDRESSBLOCK | nvarchar(150) | IN | Address |
@CITY | nvarchar(50) | IN | City |
@STATEID | uniqueidentifier | IN | State |
@POSTCODE | nvarchar(12) | IN | ZIP |
@ISPRIMARY | bit | IN | Set as primary address |
@DONOTMAIL | bit | IN | Do not send mail to this address |
@UPDATEMATCHINGSPOUSEADDRESSES | bit | IN | Update spouse address |
@VALIDATEONLY | bit | IN | Validate only |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTADDRESSUPDATEBATCHCOMMIT
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@ADDRESSTYPECODEID uniqueidentifier,
@COUNTRYID uniqueidentifier,
@ADDRESSBLOCK nvarchar(150),
@CITY nvarchar(50),
@STATEID uniqueidentifier,
@POSTCODE nvarchar(12),
@ISPRIMARY bit,
@DONOTMAIL bit,
@UPDATEMATCHINGSPOUSEADDRESSES bit,
@VALIDATEONLY bit
) as
set nocount on;
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @SEQUENCE int;
begin try
if @VALIDATEONLY = 0
begin
declare @CONSTITUENTID uniqueidentifier;
declare @OLDCOUNTRYID uniqueidentifier;
declare @OLDADDRESSBLOCK nvarchar(150);
declare @OLDCITY nvarchar(50);
declare @OLDSTATEID uniqueidentifier;
declare @OLDPOSTCODE nvarchar(12);
select
@CONSTITUENTID = ADDRESS.[CONSTITUENTID],
@OLDCOUNTRYID = ADDRESS.[COUNTRYID],
@OLDADDRESSBLOCK = ADDRESS.[ADDRESSBLOCK],
@OLDCITY = ADDRESS.[CITY],
@OLDSTATEID = ADDRESS.[STATEID],
@OLDPOSTCODE = ADDRESS.[POSTCODE]
from
dbo.[ADDRESS]
where
[ID] = @ID;
if @ISPRIMARY = 1
update
dbo.ADDRESS
set
[ISPRIMARY] = 0,
[DATECHANGED] = @CURRENTDATE,
[CHANGEDBYID] = @CHANGEAGENTID
where
[CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;
update
dbo.ADDRESS
set
[ADDRESSTYPECODEID] = @ADDRESSTYPECODEID,
[ISPRIMARY] = @ISPRIMARY,
[DONOTMAIL] = @DONOTMAIL,
[COUNTRYID] = @COUNTRYID,
[STATEID] = @STATEID,
[ADDRESSBLOCK] = @ADDRESSBLOCK,
[CITY] = @CITY,
[POSTCODE] = @POSTCODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where
[ID] = @ID;
if @UPDATEMATCHINGSPOUSEADDRESSES = 1 and exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP')
update
dbo.ADDRESS
set
COUNTRYID = @COUNTRYID,
STATEID = @STATEID,
ADDRESSBLOCK = @ADDRESSBLOCK,
CITY = @CITY,
POSTCODE = @POSTCODE,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ADDRESS.ID in (
select
SPOUSEADDRESS.ID
from
dbo.RELATIONSHIP
left join dbo.ADDRESS as SPOUSEADDRESS on SPOUSEADDRESS.CONSTITUENTID = RELATIONSHIP.RECIPROCALCONSTITUENTID
where
RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
RELATIONSHIP.ISSPOUSE = 1 and
SPOUSEADDRESS.COUNTRYID = @OLDCOUNTRYID and
SPOUSEADDRESS.ADDRESSBLOCK = @OLDADDRESSBLOCK and
SPOUSEADDRESS.CITY = @OLDCITY and
(SPOUSEADDRESS.STATEID = @OLDSTATEID or (SPOUSEADDRESS.STATEID is null and @OLDSTATEID is null)) and
SPOUSEADDRESS.POSTCODE = @OLDPOSTCODE
);
end;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;