USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTWINDOW_2

The save procedure used by the edit dataform template "Revenue Batch Constituent Window Edit Form 2".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@LASTNAME nvarchar(100) IN Last name
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@FIRSTNAME nvarchar(50) IN First name
@MIDDLENAME nvarchar(50) IN Middle name
@MAIDENNAME nvarchar(100) IN Maiden name
@NICKNAME nvarchar(50) IN Nickname
@TITLECODEID uniqueidentifier IN Title
@SUFFIXCODEID uniqueidentifier IN Suffix
@GENDERCODE tinyint IN Gender
@BIRTHDATE UDT_FUZZYDATE IN Birth date
@GIVESANONYMOUSLY bit IN Gives anonymously
@ADDRESS_STATEID uniqueidentifier IN State
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN Address
@ADDRESS_CITY nvarchar(50) IN City
@ADDRESS_POSTCODE nvarchar(12) IN ZIP
@PHONE_PHONETYPECODEID uniqueidentifier IN Phone type
@PHONE_NUMBER nvarchar(100) IN Phone number
@UPDATEMATCHINGSPOUSECONTACT bit IN Update matching contact information for spouse
@ADDRESS_COUNTRYID uniqueidentifier IN Country

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTWINDOW_2(
                    @ID uniqueidentifier,                    
                    @LASTNAME nvarchar(100),
                    @CHANGEAGENTID uniqueidentifier = null,
                    @FIRSTNAME nvarchar(50),
                    @MIDDLENAME nvarchar(50),
                    @MAIDENNAME nvarchar(100),
                    @NICKNAME nvarchar(50),
                    @TITLECODEID uniqueidentifier,
                    @SUFFIXCODEID uniqueidentifier,
                    @GENDERCODE tinyint,
                    @BIRTHDATE dbo.UDT_FUZZYDATE,
                    @GIVESANONYMOUSLY bit,                
                    @ADDRESS_STATEID uniqueidentifier,
                    @ADDRESS_ADDRESSBLOCK nvarchar(150),
                    @ADDRESS_CITY nvarchar(50),
                    @ADDRESS_POSTCODE nvarchar(12),
                    @PHONE_PHONETYPECODEID uniqueidentifier,
                    @PHONE_NUMBER nvarchar(100),
                    @UPDATEMATCHINGSPOUSECONTACT bit,
                    @ADDRESS_COUNTRYID uniqueidentifier
                    )
                    as

                        set nocount on;

                        declare @CURRENTDATE datetime;

                        set @CURRENTDATE = getdate();

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

                        begin try
                            update 
                                dbo.[CONSTITUENT] 
                            set
                                [KEYNAME] = @LASTNAME,
                                [FIRSTNAME] = @FIRSTNAME,
                                [MIDDLENAME] = @MIDDLENAME,
                                [MAIDENNAME] = @MAIDENNAME,
                                [NICKNAME] = @NICKNAME,
                                [TITLECODEID] = @TITLECODEID,
                                [SUFFIXCODEID] = @SUFFIXCODEID,                                
                                [GENDERCODE] = @GENDERCODE,
                                [BIRTHDATE] = @BIRTHDATE,
                                [GIVESANONYMOUSLY] = @GIVESANONYMOUSLY,
                                [DATECHANGED] = @CURRENTDATE,
                                [CHANGEDBYID] = @CHANGEAGENTID
                            where 
                                [CONSTITUENT].ID = @ID;

                            if len(@ADDRESS_ADDRESSBLOCK) > 0 or len(@ADDRESS_CITY) > 0 or @ADDRESS_STATEID is not null or len(@ADDRESS_POSTCODE) > 0 or @ADDRESS_COUNTRYID is not null
                                begin
                                    declare @ADDRESS_OLDCOUNTRYID uniqueidentifier;
                                    declare @ADDRESS_OLDSTATEID uniqueidentifier;
                                    declare @ADDRESS_OLDADDRESSBLOCK nvarchar(150);
                                    declare @ADDRESS_OLDCITY nvarchar(50);
                                    declare @ADDRESS_OLDPOSTCODE nvarchar(12);

                                    select
                                        @ADDRESS_OLDCOUNTRYID = ADDRESS.COUNTRYID,
                                        @ADDRESS_OLDSTATEID = ADDRESS.STATEID,
                                        @ADDRESS_OLDADDRESSBLOCK = ADDRESS.ADDRESSBLOCK,
                                        @ADDRESS_OLDCITY = ADDRESS.CITY,
                                        @ADDRESS_OLDPOSTCODE = ADDRESS.POSTCODE
                                    from dbo.[ADDRESS]
                                    where ADDRESS.CONSTITUENTID = @ID and ADDRESS.ISPRIMARY = 1;

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

                                    if @@ROWCOUNT = 0
                                        insert into dbo.ADDRESS    (CONSTITUENTID, ADDRESSBLOCK, CITY, COUNTRYID, STATEID, POSTCODE, ISPRIMARY, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
                                            values (@ID, @ADDRESS_ADDRESSBLOCK, @ADDRESS_CITY, @ADDRESS_COUNTRYID, @ADDRESS_STATEID, @ADDRESS_POSTCODE, 1, @CURRENTDATE, @CURRENTDATE,@CHANGEAGENTID, @CHANGEAGENTID);

                                    if @UPDATEMATCHINGSPOUSECONTACT = 1 and exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP')
                                        update
                                            dbo.ADDRESS
                                        set
                                            COUNTRYID = @ADDRESS_COUNTRYID,
                                            STATEID = @ADDRESS_STATEID,
                                            ADDRESSBLOCK = @ADDRESS_ADDRESSBLOCK,
                                            CITY = @ADDRESS_CITY,
                                            POSTCODE = @ADDRESS_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 = @ID and
                                                        RELATIONSHIP.ISSPOUSE = 1 and
                                                        SPOUSEADDRESS.COUNTRYID = @ADDRESS_OLDCOUNTRYID and
                                                        SPOUSEADDRESS.ADDRESSBLOCK = @ADDRESS_OLDADDRESSBLOCK and
                                                        SPOUSEADDRESS.CITY = @ADDRESS_OLDCITY and
                                                        (SPOUSEADDRESS.STATEID = @ADDRESS_OLDSTATEID or (SPOUSEADDRESS.STATEID is null and @ADDRESS_OLDSTATEID is null)) and
                                                        SPOUSEADDRESS.POSTCODE = @ADDRESS_OLDPOSTCODE
                                                );
                                end;

                            if (@PHONE_PHONETYPECODEID is not null) or (coalesce(@PHONE_NUMBER,'') <> '')
                                begin
                                    declare @PHONE_OLDNUMBER nvarchar(100);

                                    select
                                        @PHONE_OLDNUMBER = PHONE.NUMBER
                                    from dbo.[PHONE]
                                    where PHONE.CONSTITUENTID = @ID and PHONE.ISPRIMARY = 1;

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

                                    if @@ROWCOUNT = 0
                                        insert into dbo.PHONE (CONSTITUENTID, PHONETYPECODEID, NUMBER, ISPRIMARY, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
                                            values (@ID, @PHONE_PHONETYPECODEID, @PHONE_NUMBER, 1, @CURRENTDATE, @CURRENTDATE,@CHANGEAGENTID, @CHANGEAGENTID);

                                    if @UPDATEMATCHINGSPOUSECONTACT = 1 and exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP')
                                        update
                                            dbo.PHONE
                                        set
                                            NUMBER = @PHONE_NUMBER,
                                            DATECHANGED = @CURRENTDATE,
                                            CHANGEDBYID = @CHANGEAGENTID
                                        where
                                            PHONE.ID in (
                                                    select
                                                        SPOUSEPHONE.ID
                                                    from
                                                        dbo.RELATIONSHIP
                                                        left join dbo.PHONE as SPOUSEPHONE on SPOUSEPHONE.CONSTITUENTID = RELATIONSHIP.RECIPROCALCONSTITUENTID
                                                    where
                                                        RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @ID and
                                                        RELATIONSHIP.ISSPOUSE = 1 and
                                                        SPOUSEPHONE.NUMBER = @PHONE_OLDNUMBER
                                                );
                                end;
                            else
                                if exists(select ID from dbo.PHONE where CONSTITUENTID = @ID and ISPRIMARY = 1
                                begin
                                    delete from dbo.PHONE where CONSTITUENTID = @ID and ISPRIMARY = 1;
                                end;


                        end try

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

                        return 0;