USP_DATAFORMTEMPLATE_EDIT_ORDERPATRONCONTACTINFO_2

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@ADDRESS_ID uniqueidentifier IN
@ADDRESS_ADDRESSTYPECODEID uniqueidentifier IN
@ADDRESS_COUNTRYID uniqueidentifier IN
@ADDRESS_STATEID uniqueidentifier IN
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN
@ADDRESS_CITY nvarchar(50) IN
@ADDRESS_POSTCODE nvarchar(12) IN
@PHONE_ID uniqueidentifier IN
@PHONE_PHONETYPECODEID uniqueidentifier IN
@PHONE_NUMBER nvarchar(100) IN
@EMAILADDRESS_ID uniqueidentifier IN
@EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier IN
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN
@CONSTITUENTID uniqueidentifier IN
@ISHOUSEHOLDMEMBER bit IN
@UPDATEMATCHINGHOUSEHOLDADDRESSES bit IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ORDERPATRONCONTACTINFO_2
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier,

    @ADDRESS_ID uniqueidentifier,
    @ADDRESS_ADDRESSTYPECODEID uniqueidentifier,
    @ADDRESS_COUNTRYID uniqueidentifier,
    @ADDRESS_STATEID uniqueidentifier,
    @ADDRESS_ADDRESSBLOCK nvarchar(150),
    @ADDRESS_CITY nvarchar(50),
    @ADDRESS_POSTCODE nvarchar(12),

    @PHONE_ID uniqueidentifier,
    @PHONE_PHONETYPECODEID uniqueidentifier,
    @PHONE_NUMBER nvarchar(100),

    @EMAILADDRESS_ID uniqueidentifier,
    @EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier,
    @EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS,

    @CONSTITUENTID uniqueidentifier,
    @ISHOUSEHOLDMEMBER bit,
    @UPDATEMATCHINGHOUSEHOLDADDRESSES bit
)
as
    set nocount on;

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    -- Determine if the records still exist

    if not exists (select 1 from dbo.ADDRESS where ID = @ADDRESS_ID)
        set @ADDRESS_ID = null;

    if not exists (select 1 from dbo.PHONE where ID = @PHONE_ID)
        set @PHONE_ID = null;

    if not exists (select 1 from dbo.EMAILADDRESS where ID = @EMAILADDRESS_ID)
        set @EMAILADDRESS_ID = null;

    declare @CURRENTPRIMARYADDRESSID uniqueidentifier;
    declare @CURRENTPRIMARYPHONEID uniqueidentifier;
    declare @CURRENTPRIMARYEMAILADDRESSID uniqueidentifier;

    select @CURRENTPRIMARYADDRESSID = ID from dbo.ADDRESS where ISPRIMARY = 1 and CONSTITUENTID = @CONSTITUENTID;
    select @CURRENTPRIMARYPHONEID = ID from dbo.PHONE where ISPRIMARY = 1 and CONSTITUENTID = @CONSTITUENTID;
    select @CURRENTPRIMARYEMAILADDRESSID = ID from dbo.EMAILADDRESS where ISPRIMARY = 1 and CONSTITUENTID = @CONSTITUENTID;

    declare @CURRENTDATE datetime;
    set @CURRENTDATE = getdate();

    begin try
        if @ADDRESS_ID is not null begin
            if @UPDATEMATCHINGHOUSEHOLDADDRESSES = 1 begin
                exec dbo.USP_ADDRESS_UPDATEMATCHINGADDRESSES 
                    @ADDRESSID = @ADDRESS_ID,
                    @CHANGEAGENTID = @CHANGEAGENTID,
                    @ADDRESSTYPECODEID =  @ADDRESS_ADDRESSTYPECODEID,
                    @PRIMARY = 1,
                    @DONOTMAIL = 0,
                    @STARTDATE = '0000',
                    @ENDDATE = '0000',
                    @COUNTRYID = @ADDRESS_COUNTRYID,
                    @STATEID = @ADDRESS_STATEID,
                    @ADDRESSBLOCK = @ADDRESS_ADDRESSBLOCK,
                    @CITY = @ADDRESS_CITY,
                    @POSTCODE =  @ADDRESS_POSTCODE,
                    @CART = '',
                    @DPC = '',
                    @LOT = '',
                    @OMITFROMVALIDATION = 0,
                    @COUNTYCODEID = null,
                    @CONGRESSIONALDISTRICTCODEID = null,
                    @STATEHOUSEDISTRICTCODEID = null,
                    @STATESENATEDISTRICTCODEID = null,
                    @LOCALPRECINCTCODEID = null,
                    @INFOSOURCECODEID = null,
                    @REGIONCODEID = null,
                    @LASTVALIDATIONATTEMPTDATE = null,
                    @VALIDATIONMESSAGE = '',
                    @CERTIFICATIONDATA = 0,
                    @DONOTMAILREASONCODEID = null,
                    @HISTORICALSTARTDATE = null,
                    @HISTORICALENDDATE = null,
                    @INFOSOURCECOMMENTS = '',
                    @ISCONFIDENTIAL = 0
            end

            if @ADDRESS_ID <> @CURRENTPRIMARYADDRESSID begin
                update dbo.ADDRESS set
                    ISPRIMARY = 0,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where
                    ISPRIMARY = 1
                    and CONSTITUENTID = @CONSTITUENTID;
            end

            update dbo.ADDRESS set
                ADDRESSTYPECODEID = @ADDRESS_ADDRESSTYPECODEID,
                COUNTRYID = @ADDRESS_COUNTRYID,
                STATEID = @ADDRESS_STATEID,
                ADDRESSBLOCK = @ADDRESS_ADDRESSBLOCK,
                CITY = @ADDRESS_CITY,
                POSTCODE = @ADDRESS_POSTCODE,
                ISPRIMARY = 1,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            where
                ID = @ADDRESS_ID;
        end

        else begin
            exec dbo.USP_ADDRESS_ADD 
                @ADDRESS_ID output
                @CHANGEAGENTID = @CHANGEAGENTID
                @CONSTITUENTID = @CONSTITUENTID
                @ADDRESSTYPECODEID = @ADDRESS_ADDRESSTYPECODEID
                @PRIMARY  = 1
                @DONOTMAIL = 0
                @STARTDATE = '0000'
                @ENDDATE = '0000',
                @COUNTRYID = @ADDRESS_COUNTRYID
                @STATEID = @ADDRESS_STATEID
                @ADDRESSBLOCK = @ADDRESS_ADDRESSBLOCK
                @CITY = @ADDRESS_CITY
                @POSTCODE = @ADDRESS_POSTCODE
                @UPDATEMATCHINGHOUSEHOLDADDRESSES = @UPDATEMATCHINGHOUSEHOLDADDRESSES;
        end

        if @PHONE_ID is not null begin
            if @PHONE_ID <> @CURRENTPRIMARYPHONEID begin
                update dbo.PHONE set
                    ISPRIMARY = 0,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where
                    ISPRIMARY = 1
                    and CONSTITUENTID = @CONSTITUENTID;
            end

            update dbo.PHONE set
                PHONETYPECODEID = @PHONE_PHONETYPECODEID,
                NUMBER = @PHONE_NUMBER,
                ISPRIMARY = 1,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            where
                ID = @PHONE_ID;
        end

        else if (@PHONE_PHONETYPECODEID is not null) or (isnull(@PHONE_NUMBER, '') <> '') begin
            exec dbo.USP_DATAFORMTEMPLATE_ADD_PHONE @PHONE_ID output, @CHANGEAGENTID, @CONSTITUENTID, @PHONE_PHONETYPECODEID,
            @PHONE_NUMBER, 1, 0;
        end

        if @EMAILADDRESS_ID is not null begin
            if @EMAILADDRESS_ID <> @CURRENTPRIMARYEMAILADDRESSID begin
                update dbo.EMAILADDRESS set
                    ISPRIMARY = 0,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where
                    ISPRIMARY = 1
                    and CONSTITUENTID = @CONSTITUENTID;
            end

            update dbo.EMAILADDRESS set
                EMAILADDRESSTYPECODEID = @EMAILADDRESS_EMAILADDRESSTYPECODEID,
                EMAILADDRESS = @EMAILADDRESS_EMAILADDRESS,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            where
                ID = @EMAILADDRESS_ID;
        end

        else if (@EMAILADDRESS_EMAILADDRESSTYPECODEID is not null) or (isnull(@EMAILADDRESS_EMAILADDRESS, '') <> '') begin
            exec dbo.USP_DATAFORMTEMPLATE_ADD_EMAILADDRESS @EMAILADDRESS_ID output, @CHANGEAGENTID, @CONSTITUENTID,
            @EMAILADDRESS_EMAILADDRESSTYPECODEID, @EMAILADDRESS_EMAILADDRESS, 1, 0, 0, 0;
        end

        declare @RECIPIENTID uniqueidentifier = null;
        select @RECIPIENTID = [RECIPIENTID] from dbo.[SALESORDER] where [ID] = @ID;

        --Apply this contact information to blank delivery fields on the order if the recipient is the constituent

        if @CONSTITUENTID = @RECIPIENTID begin
            update dbo.[SALESORDER] set
                [ADDRESSID] = case when [ADDRESSID] is null then @ADDRESS_ID else [ADDRESSID] end,
                [PHONEID] = case when [PHONEID] is null then @PHONE_ID else [PHONEID] end,
                [EMAILADDRESSID] = case when [EMAILADDRESSID] is null then @EMAILADDRESS_ID else [EMAILADDRESSID] end,
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
            where
                [ID] = @ID;
        end

        -- recalculate discounts and taxes in accordance with the address updates

        exec dbo.USP_SALESORDER_RECALCULATETAXESFEESDISCOUNTS @ID, @CHANGEAGENTID
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;