USP_DATAFORMTEMPLATE_EDITLOAD_ADDRESS
The load procedure used by the edit dataform template "Address Edit Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@ADDRESSTYPECODEID | uniqueidentifier | INOUT | Type |
@PRIMARY | bit | INOUT | Set as primary address |
@DONOTMAIL | bit | INOUT | Do not send mail to this address |
@STARTDATE | UDT_MONTHDAY | INOUT | Start date |
@ENDDATE | UDT_MONTHDAY | INOUT | End date |
@COUNTRYID | uniqueidentifier | INOUT | Country |
@STATEID | uniqueidentifier | INOUT | State |
@ADDRESSBLOCK | nvarchar(150) | INOUT | Address |
@CITY | nvarchar(50) | INOUT | City |
@POSTCODE | nvarchar(12) | INOUT | ZIP |
@CART | nvarchar(10) | INOUT | CART |
@DPC | nvarchar(8) | INOUT | DPC |
@LOT | nvarchar(5) | INOUT | LOT |
@SPOUSENAME | nvarchar(154) | INOUT | |
@SPOUSEHASMATCHINGADDRESSES | bit | INOUT | |
@UPDATEMATCHINGSPOUSEADDRESSES | bit | INOUT | Update matching address information for spouse |
@TSLONG | bigint | INOUT | Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record. |
@ZIPLOOKUPCOUNTRIES | xml | INOUT | |
@ISHOUSEHOLD | bit | INOUT | |
@ISHOUSEHOLDMEMBER | bit | INOUT | |
@UPDATEMATCHINGHOUSEHOLDADDRESSES | bit | INOUT | Update matching addresses in household |
@MATCHINGHOUSEHOLDMEMBERS | xml | INOUT | Household members |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_ADDRESS (
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@ADDRESSTYPECODEID uniqueidentifier = null output,
@PRIMARY bit = null output,
@DONOTMAIL bit = null output,
@STARTDATE dbo.UDT_MONTHDAY = null output,
@ENDDATE dbo.UDT_MONTHDAY = null output,
@COUNTRYID uniqueidentifier = null output,
@STATEID uniqueidentifier = null output,
@ADDRESSBLOCK nvarchar(150) = null output,
@CITY nvarchar(50) = null output,
@POSTCODE nvarchar(12) = null output,
@CART nvarchar(10) = null output,
@DPC nvarchar(8) = null output,
@LOT nvarchar(5) = null output,
@SPOUSENAME nvarchar(154) = null output,
@SPOUSEHASMATCHINGADDRESSES bit = null output,
@UPDATEMATCHINGSPOUSEADDRESSES bit = null output,
@TSLONG bigint = 0 output,
@ZIPLOOKUPCOUNTRIES xml = null output,
@ISHOUSEHOLD bit = null output,
@ISHOUSEHOLDMEMBER bit = null output,
@UPDATEMATCHINGHOUSEHOLDADDRESSES bit = null output,
@MATCHINGHOUSEHOLDMEMBERS xml = null output
)
as
set nocount on;
declare @SPOUSEID uniqueidentifier;
set @DATALOADED = 0;
set @TSLONG = 0;
set @SPOUSEHASMATCHINGADDRESSES = 0;
set @UPDATEMATCHINGSPOUSEADDRESSES = 0;
if exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP')
begin
select
@DATALOADED = 1,
@ADDRESSTYPECODEID = ADDRESS.ADDRESSTYPECODEID,
@PRIMARY = ADDRESS.ISPRIMARY,
@DONOTMAIL = ADDRESS.DONOTMAIL,
@STARTDATE = ADDRESS.STARTDATE,
@ENDDATE = ADDRESS.ENDDATE,
@COUNTRYID = ADDRESS.COUNTRYID,
@STATEID = ADDRESS.STATEID,
@ADDRESSBLOCK = ADDRESS.ADDRESSBLOCK,
@CITY = ADDRESS.CITY,
@POSTCODE = ADDRESS.POSTCODE,
@CART = ADDRESS.CART,
@DPC = ADDRESS.DPC,
@LOT = ADDRESS.LOT,
@SPOUSEID = SPOUSE.ID,
@SPOUSENAME = SPOUSE.NAME,
@TSLONG = ADDRESS.TSLONG
from
dbo.ADDRESS
left join dbo.RELATIONSHIP on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = ADDRESS.CONSTITUENTID and RELATIONSHIP.ISSPOUSE = 1
left join dbo.CONSTITUENT as SPOUSE on SPOUSE.ID = RELATIONSHIP.RECIPROCALCONSTITUENTID
where
ADDRESS.ID = @ID;
if exists (
select ADDRESS.ID
from dbo.ADDRESS
where
ADDRESS.CONSTITUENTID = @SPOUSEID and
ADDRESS.COUNTRYID = @COUNTRYID and
ADDRESS.ADDRESSBLOCK = @ADDRESSBLOCK and
ADDRESS.CITY = @CITY and
(ADDRESS.STATEID = @STATEID or (ADDRESS.STATEID is null and @STATEID is null)) and
ADDRESS.POSTCODE = @POSTCODE
) begin
set @SPOUSEHASMATCHINGADDRESSES = 1;
set @UPDATEMATCHINGSPOUSEADDRESSES = 1;
end
end
else
select
@DATALOADED = 1,
@ADDRESSTYPECODEID = ADDRESS.ADDRESSTYPECODEID,
@PRIMARY = ADDRESS.ISPRIMARY,
@DONOTMAIL = ADDRESS.DONOTMAIL,
@STARTDATE = ADDRESS.STARTDATE,
@ENDDATE = ADDRESS.ENDDATE,
@COUNTRYID = ADDRESS.COUNTRYID,
@STATEID = ADDRESS.STATEID,
@ADDRESSBLOCK = ADDRESS.ADDRESSBLOCK,
@CITY = ADDRESS.CITY,
@POSTCODE = ADDRESS.POSTCODE,
@CART = ADDRESS.CART,
@DPC = ADDRESS.DPC,
@LOT = ADDRESS.LOT,
@TSLONG = ADDRESS.TSLONG
from
dbo.ADDRESS
where
ADDRESS.ID = @ID;
select @ZIPLOOKUPCOUNTRIES = dbo.UFN_ZIPCITYSTATE_GETCOUNTRIES_TOITEMLISTXML();
declare @CURRENTDATE date;
set @CURRENTDATE = getdate();
declare @CONSTITUENTID uniqueidentifier;
select @CONSTITUENTID = CONSTITUENTID from dbo.ADDRESS where ID = @ID;
set @ISHOUSEHOLD = dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID);
set @ISHOUSEHOLDMEMBER = case when exists (
select 1
from dbo.GROUPMEMBER GM
left outer join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
left outer join dbo.GROUPDATA GD on GD.ID = GM.GROUPID
where GM.MEMBERID = @CONSTITUENTID
and GD.GROUPTYPECODE = 0
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE))
or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))
) then 1 else 0 end;
set @MATCHINGHOUSEHOLDMEMBERS = (
select
CONSTITUENTID,
NAME,
RELATIONSHIPTOPRIMARY
from
dbo.UFN_ADDRESS_MATCHINGHOUSEHOLDRECORDS(@CONSTITUENTID, @COUNTRYID, @STATEID, @ADDRESSBLOCK, @CITY, @POSTCODE, @ADDRESSTYPECODEID)
for xml raw('ITEM'), type, elements, root('MATCHINGHOUSEHOLDMEMBERS'), binary base64
);
return 0;