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;