USP_CONSTITUENTDATAREVIEW_ADDRESS_LOADAUDITDATA

Loads an address's data from an audit record.

Parameters

Parameter Parameter Type Mode Description
@AUDITID uniqueidentifier IN
@DATALOADED bit INOUT
@ADDRESSID uniqueidentifier INOUT
@CONSTITUENTID uniqueidentifier INOUT
@ADDRESSTYPECODEID uniqueidentifier INOUT
@PRIMARY bit INOUT
@DONOTMAIL bit INOUT
@STARTDATE UDT_MONTHDAY INOUT
@ENDDATE UDT_MONTHDAY INOUT
@COUNTRYID uniqueidentifier INOUT
@STATEID uniqueidentifier INOUT
@ADDRESSBLOCK nvarchar(150) INOUT
@CITY nvarchar(50) INOUT
@POSTCODE nvarchar(12) INOUT
@CART nvarchar(10) INOUT
@DPC nvarchar(8) INOUT
@LOT nvarchar(5) INOUT
@SPOUSENAME nvarchar(154) INOUT
@SPOUSEHASMATCHINGADDRESSES bit INOUT
@UPDATEMATCHINGSPOUSEADDRESSES bit INOUT
@OMITFROMVALIDATION bit INOUT
@COUNTYCODEID uniqueidentifier INOUT
@CONGRESSIONALDISTRICTCODEID uniqueidentifier INOUT
@STATEHOUSEDISTRICTCODEID uniqueidentifier INOUT
@STATESENATEDISTRICTCODEID uniqueidentifier INOUT
@LOCALPRECINCTCODEID uniqueidentifier INOUT
@INFOSOURCECODEID uniqueidentifier INOUT
@REGIONCODEID uniqueidentifier INOUT
@LASTVALIDATIONATTEMPTDATE datetime INOUT
@VALIDATIONMESSAGE nvarchar(200) INOUT
@CERTIFICATIONDATA int INOUT
@NCOALASTSUBMITDATE datetime INOUT
@NCOARETURN nvarchar(150) INOUT
@NCOAFOOTNOTE nvarchar(150) INOUT
@NCOADPVFOOTNOTE nvarchar(150) INOUT
@NCOAMOVEDATE UDT_FUZZYDATE INOUT
@NCOADMASUPPRESSION bit INOUT
@NCOAMAILGRADE nvarchar(150) INOUT
@VALIDATIONCOUNTRIES xml INOUT
@ZIPLOOKUPCOUNTRIES xml INOUT
@UPDATECONTACTS bit INOUT
@HASCONTACTS bit INOUT
@DONOTMAILREASONCODEID uniqueidentifier INOUT
@HISTORICALSTARTDATE date INOUT
@HISTORICALENDDATE date INOUT
@DATEADDED date INOUT
@INFOSOURCECOMMENTS nvarchar(256) INOUT
@ISCONFIDENTIAL bit INOUT
@ORIGINCODE tinyint INOUT

Definition

Copy


CREATE procedure dbo.USP_CONSTITUENTDATAREVIEW_ADDRESS_LOADAUDITDATA (
    @AUDITID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @ADDRESSID uniqueidentifier = null output,
    @CONSTITUENTID uniqueidentifier = null 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,
    @OMITFROMVALIDATION bit = null output,                    
    @COUNTYCODEID uniqueidentifier = null output,
    @CONGRESSIONALDISTRICTCODEID uniqueidentifier = null output,
    @STATEHOUSEDISTRICTCODEID uniqueidentifier = null output,
    @STATESENATEDISTRICTCODEID uniqueidentifier = null output,
    @LOCALPRECINCTCODEID uniqueidentifier = null output,
    @INFOSOURCECODEID uniqueidentifier = null output,
    @REGIONCODEID uniqueidentifier = null output,                    
    @LASTVALIDATIONATTEMPTDATE datetime = null output,
    @VALIDATIONMESSAGE nvarchar(200) = null output,
    @CERTIFICATIONDATA integer = null output,
    @NCOALASTSUBMITDATE datetime = null output,
    @NCOARETURN nvarchar(150) = null output,
    @NCOAFOOTNOTE nvarchar(150) = null output,
    @NCOADPVFOOTNOTE nvarchar(150) = null output,
    @NCOAMOVEDATE UDT_FUZZYDATE = null output,
    @NCOADMASUPPRESSION bit = null output,
    @NCOAMAILGRADE nvarchar(150) = null output,
    @VALIDATIONCOUNTRIES xml = null output,
    @ZIPLOOKUPCOUNTRIES xml = null output,
    @UPDATECONTACTS bit = null output,
    @HASCONTACTS bit = null output,
    @DONOTMAILREASONCODEID uniqueidentifier = null output,
    @HISTORICALSTARTDATE date = null output,
    @HISTORICALENDDATE date = null output,
    @DATEADDED date = null output,
    @INFOSOURCECOMMENTS nvarchar(256) = null output,
    @ISCONFIDENTIAL bit = null output,
    @ORIGINCODE tinyint = null output
)
as
begin
    set nocount on;

    declare @DATECHANGED datetime;
    declare @SPOUSEID uniqueidentifier;

    set @DATALOADED = 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,
                @ADDRESSID = ADDRESSAUDIT.AUDITRECORDID,
                @DATECHANGED = ADDRESSAUDIT.DATECHANGED,
                @CONSTITUENTID = ADDRESSAUDIT.CONSTITUENTID,
                @ADDRESSTYPECODEID = ADDRESSAUDIT.ADDRESSTYPECODEID,
                @PRIMARY = ADDRESSAUDIT.ISPRIMARY,
                @DONOTMAIL = ADDRESSAUDIT.DONOTMAIL,
                @STARTDATE = ADDRESSAUDIT.STARTDATE,
                @ENDDATE = ADDRESSAUDIT.ENDDATE,
                @COUNTRYID = ADDRESSAUDIT.COUNTRYID,
                @STATEID = ADDRESSAUDIT.STATEID,
                @ADDRESSBLOCK = ADDRESSAUDIT.ADDRESSBLOCK,
                @CITY = ADDRESSAUDIT.CITY,
                @POSTCODE = ADDRESSAUDIT.POSTCODE,
                @CART = ADDRESSAUDIT.CART,
                @DPC = ADDRESSAUDIT.DPC,
                @LOT = ADDRESSAUDIT.LOT,
                @SPOUSEID = SPOUSE.ID,
                @SPOUSENAME = SPOUSE.NAME,                                                                
                @DONOTMAILREASONCODEID = ADDRESSAUDIT.DONOTMAILREASONCODEID,
                @HISTORICALSTARTDATE = ADDRESSAUDIT.HISTORICALSTARTDATE,
                @HISTORICALENDDATE = ADDRESSAUDIT.HISTORICALENDDATE,
                @DATEADDED = ADDRESSAUDIT.DATEADDED,
                @ISCONFIDENTIAL = ADDRESSAUDIT.ISCONFIDENTIAL
            from
                dbo.ADDRESSAUDIT
            left join dbo.RELATIONSHIP on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = ADDRESSAUDIT.CONSTITUENTID and RELATIONSHIP.ISSPOUSE = 1
            left join dbo.CONSTITUENT as SPOUSE on SPOUSE.ID = RELATIONSHIP.RECIPROCALCONSTITUENTID
            where
                ADDRESSAUDIT.AUDITID = @AUDITID;

            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

            if exists(
                select r.ID
                from dbo.RELATIONSHIP r
                    inner join dbo.ADDRESSAUDIT a1 on a1.CONSTITUENTID=r.RELATIONSHIPCONSTITUENTID
                    inner join dbo.ADDRESS a2 on a2.RELATIONSHIPID=r.ID
                where 
                    a1.AUDITID=@AUDITID and
                    r.ISCONTACT=1 and
                    a1.COUNTRYID=a2.COUNTRYID and
                    (a1.STATEID=a2.STATEID or (a1.STATEID is null and a2.STATEID is null)) and
                    (a1.ADDRESSBLOCK=a2.ADDRESSBLOCK or (a1.ADDRESSBLOCK is null and a2.ADDRESSBLOCK is null)) and
                    (a1.CITY=a2.CITY or (a1.CITY is null and a2.CITY is null)) and
                    (a1.POSTCODE=a2.POSTCODE or (a1.POSTCODE is null and a2.POSTCODE is null)))
                begin
                    set @HASCONTACTS=1
                end
                else
                begin
                    set @HASCONTACTS=0
                end
        end
    else
        select
            @DATALOADED = 1,
            @ADDRESSID = ADDRESSAUDIT.AUDITRECORDID,
            @DATECHANGED = ADDRESSAUDIT.DATECHANGED,
            @HASCONTACTS = 0,
            @ADDRESSTYPECODEID = ADDRESSAUDIT.ADDRESSTYPECODEID,
            @PRIMARY = ADDRESSAUDIT.ISPRIMARY,
            @DONOTMAIL = ADDRESSAUDIT.DONOTMAIL,
            @STARTDATE = ADDRESSAUDIT.STARTDATE,
            @ENDDATE = ADDRESSAUDIT.ENDDATE,
            @COUNTRYID = ADDRESSAUDIT.COUNTRYID,
            @STATEID = ADDRESSAUDIT.STATEID,
            @ADDRESSBLOCK = ADDRESSAUDIT.ADDRESSBLOCK,
            @CITY = ADDRESSAUDIT.CITY,
            @POSTCODE = ADDRESSAUDIT.POSTCODE,
            @CART = ADDRESSAUDIT.CART,
            @DPC = ADDRESSAUDIT.DPC,
            @LOT = ADDRESSAUDIT.LOT,
            @DONOTMAILREASONCODEID = ADDRESSAUDIT.DONOTMAILREASONCODEID,
            @HISTORICALSTARTDATE = ADDRESSAUDIT.HISTORICALSTARTDATE,
            @HISTORICALENDDATE = ADDRESSAUDIT.HISTORICALENDDATE,
            @DATEADDED = ADDRESSAUDIT.DATEADDED,
            @ISCONFIDENTIAL = ADDRESSAUDIT.ISCONFIDENTIAL
        from
            dbo.ADDRESSAUDIT
        where
            ADDRESSAUDIT.AUDITID = @AUDITID;

    -- get addressvalidationupdate row version appropriate to the selected audit row    

    select top 1
        @OMITFROMVALIDATION = OMITFROMVALIDATION,                            
        @COUNTYCODEID = COUNTYCODEID,
        @CONGRESSIONALDISTRICTCODEID = CONGRESSIONALDISTRICTCODEID,
        @STATEHOUSEDISTRICTCODEID = STATEHOUSEDISTRICTCODEID,
        @STATESENATEDISTRICTCODEID = STATESENATEDISTRICTCODEID,
        @LOCALPRECINCTCODEID = LOCALPRECINCTCODEID,
        @INFOSOURCECODEID = INFOSOURCECODEID,
        @ORIGINCODE = ORIGINCODE,
        @INFOSOURCECOMMENTS = INFOSOURCECOMMENTS,
        @REGIONCODEID = REGIONCODEID,                                
        @LASTVALIDATIONATTEMPTDATE = LASTVALIDATIONATTEMPTDATE,
        @VALIDATIONMESSAGE = VALIDATIONMESSAGE,
        @CERTIFICATIONDATA = CERTIFICATIONDATA,
        @NCOALASTSUBMITDATE = NCOALASTSUBMITDATE,
        @NCOARETURN = case [NCOARETURNCODE]
                        when (0) then N''
                        when (1) then N'A - COA Match'
                        when (2) then N'00 - No match'
                        when (3) then N'01 - Match to undeliverable: Foreign move'
                        when (4) then N'02 - Match to undeliverable: Moved left no address (MLNA)'
                        when (5) then N'03 - Match to undeliverable: Box closed no order (BCNO)'
                        when (6) then N'05 - Found COA: New 11-digit DPBC is ambiguous'
                        when (7) then N'14 - Found COA: New address would not convert at run time'
                        when (8) then N'19 - Found COA: New address not ZIP + 4 coded'
                        when (9) then N'91 - COA match: Secondary number ignored on COA'
                        when (10) then N'92 - COA match: Secondary number ignored on input address'
                        when (11) then N'04 - Cannot match COA: Street address with secondary'
                        when (12) then N'06 - Cannot match COA: Multiple matches: Middle name related'
                        when (13) then N'07 - Cannot match COA: Multiple matches: Gender related'
                        when (14) then N'08 - Cannot match COA: Multiple matches: Address related'
                        when (15) then N'09 - Cannot match COA: Highrise default'
                        when (16) then N'10 - Cannot match COA: Rural default'
                        when (17) then N'11 - Cannot match COA: Individual match: Insufficient COA name for match'
                        when (18) then N'12 - Cannot match COA: Middle name test failed'
                        when (19) then N'13 - Cannot match COA: Gender test failed'
                        when (20) then N'15 - Cannot match COA: Individual name insufficient'
                        when (21) then N'16 - Cannot match COA: Secondary number discrepancy'
                        when (22) then N'17 - Cannot match COA: Other insufficient name'
                        when (23) then N'18 - Cannot match COA: General delivery'
                        when (24) then N'20 - Cannot match COA: Conflicting directions after re-chaining'
                        when (25) then N'66 - Daily delete'
                      end,
        @NCOAFOOTNOTE = case [NCOAFOOTNOTECODE]
                          when (0) then N''
                          when (1) then N'M - Forwardable move'
                          when (2) then N'K - Moved, no forwarding address'
                          when (3) then N'G - PO box closed'
                          when (4) then N'F - Move to foreign address'
                          when (5) then N'S - Forwardable move, but secondary address cannot be verified'
                          when (6) then N'P - Change of address form filed, but new address not in USPS records'
                          when (7) then N'L - Temporary address has lapsed'
                        end,
        @NCOADPVFOOTNOTE = case [NCOADPVFOOTNOTECODE]
                             when (0) then N''
                             when (1) then N'AA - Input address matched to the ZIP + 4 file'
                             when (2) then N'A1 - Input address not matched to the ZIP + 4 file'
                             when (3) then N'BB - Input address matched to DPV (all components)'
                             when (4) then N'CC - Input address primary number matched to DPV but secondary number present but not valid'
                             when (5) then N'F1 - Military'
                             when (6) then N'G1 - General Delivery'
                             when (7) then N'N1 - Input address primary number matched to DPV but high-rise address missing secondary number'
                             when (8) then N'M1 - Input address primary number missing'
                             when (9) then N'M3 - Input address primary number invalid'
                             when (10) then N'NL - NCOALink move address cannot be DPV confirmed (occurs because the NCOAlink directories are updated more frequently than the DPV directories)'
                             when (11) then N'P1 - Input address missing PO, RR or HC box number'
                             when (12) then N'P3 - Input address is invalid PO, RR, or HC number'
                             when (13) then N'RR - Input address matched to CMRA'
                             when (14) then N'R1 - Input address matched to CMRA but secondary number not present'
                             when (15) then N'U1 - Unique'
                           end,
        @NCOAMOVEDATE = NCOAMOVEDATE,
        @NCOADMASUPPRESSION = NCOADMASUPPRESSION,
        @NCOAMAILGRADE = case [NCOAMAILGRADECODE]
                           when (0) then N''
                           when (1) then N'A - This is an accurate, mail-able address'
                           when (2) then N'B - Record is probably deliverable'
                           when (3) then N'C - The record may or may not be deliverable'
                           when (4) then N'F - The record is undeliverable. Do not mail'
                         end
    from dbo.ADDRESSVALIDATIONUPDATEAUDIT
    where AUDITRECORDID = @ADDRESSID
    and DATECHANGED <= @DATECHANGED
    order by AUDITDATE desc;

    -- if no valid audit rows found, use current version as long as it existed at the time of the selected audit

    if @@ROWCOUNT = 0
        select
            @OMITFROMVALIDATION = OMITFROMVALIDATION,                            
            @COUNTYCODEID = COUNTYCODEID,
            @CONGRESSIONALDISTRICTCODEID = CONGRESSIONALDISTRICTCODEID,
            @STATEHOUSEDISTRICTCODEID = STATEHOUSEDISTRICTCODEID,
            @STATESENATEDISTRICTCODEID = STATESENATEDISTRICTCODEID,
            @LOCALPRECINCTCODEID = LOCALPRECINCTCODEID,
            @INFOSOURCECODEID = INFOSOURCECODEID,
            @ORIGINCODE = ORIGINCODE,
            @INFOSOURCECOMMENTS = INFOSOURCECOMMENTS,
            @REGIONCODEID = REGIONCODEID,                                
            @LASTVALIDATIONATTEMPTDATE = LASTVALIDATIONATTEMPTDATE,
            @VALIDATIONMESSAGE = VALIDATIONMESSAGE,
            @CERTIFICATIONDATA = CERTIFICATIONDATA,
            @NCOALASTSUBMITDATE = NCOALASTSUBMITDATE,
            @NCOARETURN = NCOARETURN,
            @NCOAFOOTNOTE = NCOAFOOTNOTE,
            @NCOADPVFOOTNOTE = NCOADPVFOOTNOTE,
            @NCOAMOVEDATE = NCOAMOVEDATE,
            @NCOADMASUPPRESSION = NCOADMASUPPRESSION,
            @NCOAMAILGRADE = NCOAMAILGRADE
        from dbo.ADDRESSVALIDATIONUPDATE
        where ID = @ADDRESSID
        and DATEADDED <= @DATECHANGED;

    if @ORIGINCODE is null
        set @ORIGINCODE = 0

    select @VALIDATIONCOUNTRIES = dbo.UFN_COUNTRY_GETVALIDATIONCOUNTRIES_TOITEMLISTXML();
    select @ZIPLOOKUPCOUNTRIES = dbo.UFN_ZIPCITYSTATE_GETCOUNTRIES_TOITEMLISTXML();

    return 0;
end