USP_DATAFORMTEMPLATE_EDIT_REVENUEBATCHCONSTITUENTINBATCH_5

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(110) IN
@CHANGEAGENTID uniqueidentifier IN
@LASTNAME nvarchar(100) IN
@ORGANIZATIONNAME nvarchar(100) IN
@FIRSTNAME nvarchar(50) IN
@MIDDLENAME nvarchar(50) IN
@MAIDENNAME nvarchar(100) IN
@NICKNAME nvarchar(50) IN
@TITLECODEID uniqueidentifier IN
@SUFFIXCODEID uniqueidentifier IN
@GENDERCODE tinyint IN
@BIRTHDATE UDT_FUZZYDATE IN
@ADDRESS_ADDRESSTYPECODEID uniqueidentifier IN
@ADDRESS_DONOTMAIL bit IN
@ADDRESS_DONOTMAILREASONCODEID 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
@ADDRESS_UPDATEMATCHINGHOUSEHOLDADDRESSES bit IN
@ADDRESS_OMITFROMVALIDATION bit IN
@ADDRESS_CART nvarchar(10) IN
@ADDRESS_DPC nvarchar(8) IN
@ADDRESS_LOT nvarchar(5) IN
@ADDRESS_COUNTYCODEID uniqueidentifier IN
@ADDRESS_CONGRESSIONALDISTRICTCODEID uniqueidentifier IN
@ADDRESS_LASTVALIDATIONATTEMPTDATE datetime IN
@ADDRESS_VALIDATIONMESSAGE nvarchar(200) IN
@ADDRESS_CERTIFICATIONDATA int IN
@PHONE_PHONETYPECODEID uniqueidentifier IN
@PHONE_NUMBER nvarchar(100) IN
@EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier IN
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN
@MARITALSTATUSCODEID uniqueidentifier IN
@ORGANIZATION_ADDRESSTYPECODEID uniqueidentifier IN
@ORGANIZATION_DONOTMAIL bit IN
@ORGANIZATION_DONOTMAILREASONCODEID uniqueidentifier IN
@ORGANIZATION_COUNTRYID uniqueidentifier IN
@ORGANIZATION_STATEID uniqueidentifier IN
@ORGANIZATION_ADDRESSBLOCK nvarchar(150) IN
@ORGANIZATION_CITY nvarchar(50) IN
@ORGANIZATION_POSTCODE nvarchar(12) IN
@ORGANIZATION_OMITFROMVALIDATION bit IN
@ORGANIZATION_CART nvarchar(10) IN
@ORGANIZATION_DPC nvarchar(8) IN
@ORGANIZATION_LOT nvarchar(5) IN
@ORGANIZATION_COUNTYCODEID uniqueidentifier IN
@ORGANIZATION_CONGRESSIONALDISTRICTCODEID uniqueidentifier IN
@ORGANIZATION_LASTVALIDATIONATTEMPTDATE datetime IN
@ORGANIZATION_VALIDATIONMESSAGE nvarchar(200) IN
@ORGANIZATION_CERTIFICATIONDATA int IN
@ORGANIZATION_PHONETYPECODEID uniqueidentifier IN
@ORGANIZATION_NUMBER nvarchar(100) IN
@ORGANIZATION_EMAILADDRESSTYPECODEID uniqueidentifier IN
@ORGANIZATION_EMAILADDRESS UDT_EMAILADDRESS IN
@WEBADDRESS UDT_WEBADDRESS IN
@INDUSTRYCODEID uniqueidentifier IN
@NUMEMPLOYEES int IN
@NUMSUBSIDIARIES int IN
@PARENTCORPID uniqueidentifier IN
@BATCHSPOUSEID uniqueidentifier IN
@BATCHSPOUSERELATIONID uniqueidentifier IN
@SPOUSEID uniqueidentifier IN
@EXISTINGSPOUSE bit IN
@SPOUSE_LASTNAME nvarchar(100) IN
@SPOUSE_FIRSTNAME nvarchar(50) IN
@SPOUSE_MIDDLENAME nvarchar(50) IN
@SPOUSE_MAIDENNAME nvarchar(100) IN
@SPOUSE_NICKNAME nvarchar(50) IN
@SPOUSE_TITLECODEID uniqueidentifier IN
@SPOUSE_SUFFIXCODEID uniqueidentifier IN
@SPOUSE_GENDERCODE tinyint IN
@SPOUSE_BIRTHDATE UDT_FUZZYDATE IN
@SPOUSE_RECIPROCALTYPECODEID uniqueidentifier IN
@SPOUSE_RELATIONSHIPTYPECODEID uniqueidentifier IN
@COPYPRIMARYINFORMATION bit IN
@SPOUSE_STARTDATE datetime IN
@ISSPOUSERELATIONSHIP bit IN
@BATCHBUSINESSID uniqueidentifier IN
@BATCHBUSINESSRELATIONID uniqueidentifier IN
@BUSINESSID uniqueidentifier IN
@EXISTINGBUSINESS bit IN
@BUSINESS_NAME nvarchar(100) IN
@BUSINESS_ADDRESSTYPECODEID uniqueidentifier IN
@BUSINESS_COUNTRYID uniqueidentifier IN
@BUSINESS_STATEID uniqueidentifier IN
@BUSINESS_ADDRESSBLOCK nvarchar(150) IN
@BUSINESS_CITY nvarchar(50) IN
@BUSINESS_POSTCODE nvarchar(12) IN
@BUSINESS_DONOTMAIL bit IN
@BUSINESS_DONOTMAILREASONCODEID uniqueidentifier IN
@BUSINESS_OMITFROMVALIDATION bit IN
@BUSINESS_CART nvarchar(10) IN
@BUSINESS_DPC nvarchar(8) IN
@BUSINESS_LOT nvarchar(5) IN
@BUSINESS_COUNTYCODEID uniqueidentifier IN
@BUSINESS_CONGRESSIONALDISTRICTCODEID uniqueidentifier IN
@BUSINESS_LASTVALIDATIONATTEMPTDATE datetime IN
@BUSINESS_VALIDATIONMESSAGE nvarchar(200) IN
@BUSINESS_CERTIFICATIONDATA int IN
@BUSINESS_PHONETYPECODEID uniqueidentifier IN
@BUSINESS_NUMBER nvarchar(100) IN
@BUSINESS_RECIPROCALTYPECODEID uniqueidentifier IN
@BUSINESS_RELATIONSHIPTYPECODEID uniqueidentifier IN
@BUSINESS_STARTDATE datetime IN
@ISCONTACT bit IN
@ISPRIMARYCONTACT bit IN
@CONTACTTYPECODEID uniqueidentifier IN
@POSITION nvarchar(100) IN
@ISMATCHINGGIFTRELATIONSHIP bit IN
@CURRENTAPPUSERID uniqueidentifier IN
@GROUP_NAME nvarchar(100) IN
@GROUP_DESCRIPTION nvarchar(300) IN
@GROUP_GIVESANONYMOUSLY bit IN
@GROUP_ADDRESSTYPECODEID uniqueidentifier IN
@GROUP_COUNTRYID uniqueidentifier IN
@GROUP_ADDRESSBLOCK nvarchar(150) IN
@GROUP_CITY nvarchar(50) IN
@GROUP_STATEID uniqueidentifier IN
@GROUP_OMITFROMVALIDATION bit IN
@GROUP_CART nvarchar(10) IN
@GROUP_DPC nvarchar(8) IN
@GROUP_LOT nvarchar(5) IN
@GROUP_COUNTYCODEID uniqueidentifier IN
@GROUP_CONGRESSIONALDISTRICTCODEID uniqueidentifier IN
@GROUP_LASTVALIDATIONATTEMPTDATE datetime IN
@GROUP_VALIDATIONMESSAGE nvarchar(200) IN
@GROUP_CERTIFICATIONDATA int IN
@GROUP_POSTCODE nvarchar(12) IN
@GROUP_PHONETYPECODEID uniqueidentifier IN
@GROUP_NUMBER nvarchar(100) IN
@GROUP_EMAILADDRESSTYPECODEID uniqueidentifier IN
@GROUP_EMAILADDRESS UDT_EMAILADDRESS IN
@GROUP_WEBADDRESS UDT_WEBADDRESS IN
@GROUP_DONOTMAIL bit IN
@GROUP_DONOTMAILREASONCODEID uniqueidentifier IN
@GROUP_UPDATEMATCHINGHOUSEHOLDADDRESSES bit IN
@GROUP_GROUPTYPEID uniqueidentifier IN
@GROUP_PRIMARYCONTACTID uniqueidentifier IN
@GROUP_MEMBERS xml IN
@GROUP_NEWMEMBERSEARCHID uniqueidentifier IN
@GROUP_STARTDATE datetime IN
@HOUSEHOLD_PRIMARYCONTACTID uniqueidentifier IN
@HOUSEHOLD_PRIMARYCONTACT_KEYNAME nvarchar(100) IN
@HOUSEHOLD_PRIMARYCONTACT_FIRSTNAME nvarchar(50) IN
@HOUSEHOLD_PRIMARYCONTACT_MIDDLENAME nvarchar(50) IN
@HOUSEHOLD_PRIMARYCONTACT_TITLECODEID uniqueidentifier IN
@HOUSEHOLD_PRIMARYCONTACT_SUFFIXCODEID uniqueidentifier IN
@HOUSEHOLD_PRIMARYCONTACT_COPYHOUSEHOLDCONTACT bit IN
@HOUSEHOLD_SECONDMEMBERID uniqueidentifier IN
@HOUSEHOLD_SECONDMEMBER_KEYNAME nvarchar(100) IN
@HOUSEHOLD_SECONDMEMBER_FIRSTNAME nvarchar(50) IN
@HOUSEHOLD_SECONDMEMBER_MIDDLENAME nvarchar(50) IN
@HOUSEHOLD_SECONDMEMBER_TITLECODEID uniqueidentifier IN
@HOUSEHOLD_SECONDMEMBER_SUFFIXCODEID uniqueidentifier IN
@HOUSEHOLD_SECONDMEMBER_COPYHOUSEHOLDCONTACT bit IN
@HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID uniqueidentifier IN
@HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID uniqueidentifier IN
@HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_STARTDATE datetime IN
@HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_ISSPOUSE bit IN
@HOUSEHOLDCOPYPRIMARYCONTACTINFO bit IN
@JOBCATEGORYCODEID uniqueidentifier IN
@CAREERLEVELCODEID uniqueidentifier IN
@GROUP_DONOTCALL bit IN
@GROUP_DONOTEMAIL bit IN
@ADDRESSID uniqueidentifier IN
@PHONEID uniqueidentifier IN
@EMAILADDRESSID uniqueidentifier IN
@SITEID uniqueidentifier IN
@CONSTITUENTSECURITYGROUPID uniqueidentifier IN
@CONSTITUENCYCODEID uniqueidentifier IN
@INFOSOURCECODEID uniqueidentifier IN
@NAMEFORMATS xml IN
@PHONE_COUNTRYID uniqueidentifier IN
@SPOUSE_LOOKUPID nvarchar(100) IN
@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit IN
@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR decimal(5, 2) IN
@SPOUSE_PRIMARYRECOGNITIONTYPECODEID uniqueidentifier IN
@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit IN
@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR decimal(5, 2) IN
@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier IN
@BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit IN
@BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR decimal(5, 2) IN
@BUSINESS_PRIMARYRECOGNITIONTYPECODEID uniqueidentifier IN
@BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit IN
@BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR decimal(5, 2) IN
@BUSINESS_RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier IN
@ORIGINAL_KEYNAME nvarchar(100) IN
@ORIGINAL_FIRSTNAME nvarchar(50) IN
@GENDERCODEID uniqueidentifier IN
@SPOUSE_GENDERCODEID uniqueidentifier IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUEBATCHCONSTITUENTINBATCH_5
                    (
                        @ID                                            nvarchar(110),
                        @CHANGEAGENTID                                uniqueidentifier,
                        @LASTNAME                                    nvarchar(100),
                        @ORGANIZATIONNAME                            nvarchar(100),
                        @FIRSTNAME                                    nvarchar(50),
                        @MIDDLENAME                                    nvarchar(50),
                        @MAIDENNAME                                    nvarchar(100),
                        @NICKNAME                                    nvarchar(50),
                        @TITLECODEID                                uniqueidentifier,
                        @SUFFIXCODEID                                uniqueidentifier,
                        @GENDERCODE                                    tinyint,
                        @BIRTHDATE                                    dbo.UDT_FUZZYDATE,
                        @ADDRESS_ADDRESSTYPECODEID                    uniqueidentifier,
                        @ADDRESS_DONOTMAIL                            bit,
                        @ADDRESS_DONOTMAILREASONCODEID                uniqueidentifier,
                        @ADDRESS_COUNTRYID                            uniqueidentifier,
                        @ADDRESS_STATEID                            uniqueidentifier,
                        @ADDRESS_ADDRESSBLOCK                        nvarchar(150),
                        @ADDRESS_CITY                                nvarchar(50),
                        @ADDRESS_POSTCODE                            nvarchar(12),
                        @ADDRESS_UPDATEMATCHINGHOUSEHOLDADDRESSES    bit,


                        -- Address Validation

                        @ADDRESS_OMITFROMVALIDATION                bit,
                        @ADDRESS_CART                            nvarchar(10),
                        @ADDRESS_DPC                            nvarchar(8),
                        @ADDRESS_LOT                            nvarchar(5),
                        @ADDRESS_COUNTYCODEID                    uniqueidentifier,
                        @ADDRESS_CONGRESSIONALDISTRICTCODEID    uniqueidentifier,
                        @ADDRESS_LASTVALIDATIONATTEMPTDATE        datetime,
                        @ADDRESS_VALIDATIONMESSAGE                nvarchar(200),
                        @ADDRESS_CERTIFICATIONDATA                integer,
                        @PHONE_PHONETYPECODEID                    uniqueidentifier,
                        @PHONE_NUMBER                            nvarchar(100),
                        @EMAILADDRESS_EMAILADDRESSTYPECODEID    uniqueidentifier,
                        @EMAILADDRESS_EMAILADDRESS                dbo.UDT_EMAILADDRESS,
                        @MARITALSTATUSCODEID                    uniqueidentifier,
                        @ORGANIZATION_ADDRESSTYPECODEID            uniqueidentifier,
                        @ORGANIZATION_DONOTMAIL                    bit,
                        @ORGANIZATION_DONOTMAILREASONCODEID        uniqueidentifier,
                        @ORGANIZATION_COUNTRYID                    uniqueidentifier,                        
                        @ORGANIZATION_STATEID                    uniqueidentifier,
                        @ORGANIZATION_ADDRESSBLOCK                nvarchar(150),
                        @ORGANIZATION_CITY                        nvarchar(50),
                        @ORGANIZATION_POSTCODE                    nvarchar(12),

                        -- Address Validation

                        @ORGANIZATION_OMITFROMVALIDATION            bit,
                        @ORGANIZATION_CART                            nvarchar(10),
                        @ORGANIZATION_DPC                            nvarchar(8),
                        @ORGANIZATION_LOT                            nvarchar(5),
                        @ORGANIZATION_COUNTYCODEID                    uniqueidentifier,
                        @ORGANIZATION_CONGRESSIONALDISTRICTCODEID    uniqueidentifier,
                        @ORGANIZATION_LASTVALIDATIONATTEMPTDATE        datetime,
                        @ORGANIZATION_VALIDATIONMESSAGE                nvarchar(200),
                        @ORGANIZATION_CERTIFICATIONDATA                integer,
                        @ORGANIZATION_PHONETYPECODEID                uniqueidentifier,
                        @ORGANIZATION_NUMBER                        nvarchar(100),
                        @ORGANIZATION_EMAILADDRESSTYPECODEID        uniqueidentifier,
                        @ORGANIZATION_EMAILADDRESS                    dbo.UDT_EMAILADDRESS,
                        @WEBADDRESS                                    dbo.UDT_WEBADDRESS,
                        @INDUSTRYCODEID                                uniqueidentifier,
                        @NUMEMPLOYEES                                int,
                        @NUMSUBSIDIARIES                            int,
                        @PARENTCORPID                                uniqueidentifier,

                        --Individual's relationship Variables

                        @BATCHSPOUSEID                        uniqueidentifier,
                        @BATCHSPOUSERELATIONID                uniqueidentifier,
                        @SPOUSEID                            uniqueidentifier,
                        @EXISTINGSPOUSE                        bit,
                        @SPOUSE_LASTNAME                    nvarchar(100),
                        @SPOUSE_FIRSTNAME                    nvarchar(50),
                        @SPOUSE_MIDDLENAME                    nvarchar(50),
                        @SPOUSE_MAIDENNAME                    nvarchar(100),
                        @SPOUSE_NICKNAME                    nvarchar(50),
                        @SPOUSE_TITLECODEID                    uniqueidentifier,
                        @SPOUSE_SUFFIXCODEID                uniqueidentifier,
                        @SPOUSE_GENDERCODE                    tinyint,
                        @SPOUSE_BIRTHDATE                    dbo.UDT_FUZZYDATE,
                        @SPOUSE_RECIPROCALTYPECODEID        uniqueidentifier,
                        @SPOUSE_RELATIONSHIPTYPECODEID        uniqueidentifier,
                        @COPYPRIMARYINFORMATION                bit,
                        @SPOUSE_STARTDATE                    datetime,
                        @ISSPOUSERELATIONSHIP                bit,

                        --Organization variables

                        @BATCHBUSINESSID                uniqueidentifier,
                        @BATCHBUSINESSRELATIONID        uniqueidentifier,
                        @BUSINESSID                        uniqueidentifier,
                        @EXISTINGBUSINESS                bit,
                        @BUSINESS_NAME                    nvarchar(100),
                        @BUSINESS_ADDRESSTYPECODEID        uniqueidentifier,
                        @BUSINESS_COUNTRYID                uniqueidentifier,
                        @BUSINESS_STATEID                uniqueidentifier,
                        @BUSINESS_ADDRESSBLOCK            nvarchar(150),
                        @BUSINESS_CITY                    nvarchar(50),
                        @BUSINESS_POSTCODE                nvarchar(12),
                        @BUSINESS_DONOTMAIL                bit,
                        @BUSINESS_DONOTMAILREASONCODEID uniqueidentifier,

                        -- Address Validation

                        @BUSINESS_OMITFROMVALIDATION                bit,
                        @BUSINESS_CART                            nvarchar(10),
                        @BUSINESS_DPC                            nvarchar(8),
                        @BUSINESS_LOT                            nvarchar(5),
                        @BUSINESS_COUNTYCODEID                    uniqueidentifier,
                        @BUSINESS_CONGRESSIONALDISTRICTCODEID    uniqueidentifier,
                        @BUSINESS_LASTVALIDATIONATTEMPTDATE        datetime,
                        @BUSINESS_VALIDATIONMESSAGE                nvarchar(200),
                        @BUSINESS_CERTIFICATIONDATA                integer,
                        @BUSINESS_PHONETYPECODEID            uniqueidentifier,
                        @BUSINESS_NUMBER                    nvarchar(100),
                        @BUSINESS_RECIPROCALTYPECODEID        uniqueidentifier,
                        @BUSINESS_RELATIONSHIPTYPECODEID    uniqueidentifier,
                        @BUSINESS_STARTDATE                    datetime,                        
                        @ISCONTACT                                bit,
                        @ISPRIMARYCONTACT                        bit,
                        @CONTACTTYPECODEID                        uniqueidentifier,
                        @POSITION                                nvarchar(100),
                        @ISMATCHINGGIFTRELATIONSHIP                bit,

                        @CURRENTAPPUSERID uniqueidentifier,

                        -- Group/Household variables

                        @GROUP_NAME nvarchar(100),
                        @GROUP_DESCRIPTION nvarchar(300),
                        @GROUP_GIVESANONYMOUSLY bit,
                        @GROUP_ADDRESSTYPECODEID uniqueidentifier,
                        @GROUP_COUNTRYID uniqueidentifier,
                        @GROUP_ADDRESSBLOCK nvarchar(150),
                        @GROUP_CITY nvarchar(50),
                        @GROUP_STATEID uniqueidentifier,
                        @GROUP_OMITFROMVALIDATION                bit,
                        @GROUP_CART                            nvarchar(10),
                        @GROUP_DPC                            nvarchar(8),
                        @GROUP_LOT                            nvarchar(5),
                        @GROUP_COUNTYCODEID                    uniqueidentifier,
                        @GROUP_CONGRESSIONALDISTRICTCODEID    uniqueidentifier,
                        @GROUP_LASTVALIDATIONATTEMPTDATE        datetime,
                        @GROUP_VALIDATIONMESSAGE                nvarchar(200),
                        @GROUP_CERTIFICATIONDATA                integer,
                        @GROUP_POSTCODE nvarchar(12),
                        @GROUP_PHONETYPECODEID uniqueidentifier,
                        @GROUP_NUMBER nvarchar(100),
                        @GROUP_EMAILADDRESSTYPECODEID uniqueidentifier,
                        @GROUP_EMAILADDRESS dbo.UDT_EMAILADDRESS,
                        @GROUP_WEBADDRESS    dbo.UDT_WEBADDRESS,
                        @GROUP_DONOTMAIL bit,
                        @GROUP_DONOTMAILREASONCODEID uniqueidentifier,
                        @GROUP_UPDATEMATCHINGHOUSEHOLDADDRESSES bit,

                        -- Group variables

                        @GROUP_GROUPTYPEID uniqueidentifier,
                        @GROUP_PRIMARYCONTACTID uniqueidentifier,
                        @GROUP_MEMBERS xml,
                        @GROUP_NEWMEMBERSEARCHID uniqueidentifier, -- Not used in save operation, only exists to setup new member lookup control.

                        @GROUP_STARTDATE datetime,

                        -- Household Primary Member variables

                        @HOUSEHOLD_PRIMARYCONTACTID uniqueidentifier,
                        @HOUSEHOLD_PRIMARYCONTACT_KEYNAME nvarchar(100),
                        @HOUSEHOLD_PRIMARYCONTACT_FIRSTNAME nvarchar(50),
                        @HOUSEHOLD_PRIMARYCONTACT_MIDDLENAME nvarchar(50),
                        @HOUSEHOLD_PRIMARYCONTACT_TITLECODEID uniqueidentifier,
                        @HOUSEHOLD_PRIMARYCONTACT_SUFFIXCODEID uniqueidentifier,
                        @HOUSEHOLD_PRIMARYCONTACT_COPYHOUSEHOLDCONTACT bit,

                        -- Household Second Member variables

                        @HOUSEHOLD_SECONDMEMBERID uniqueidentifier,
                        @HOUSEHOLD_SECONDMEMBER_KEYNAME nvarchar(100),
                        @HOUSEHOLD_SECONDMEMBER_FIRSTNAME nvarchar(50),
                        @HOUSEHOLD_SECONDMEMBER_MIDDLENAME nvarchar(50),
                        @HOUSEHOLD_SECONDMEMBER_TITLECODEID uniqueidentifier,
                        @HOUSEHOLD_SECONDMEMBER_SUFFIXCODEID uniqueidentifier,
                        @HOUSEHOLD_SECONDMEMBER_COPYHOUSEHOLDCONTACT bit,

                        -- Household Second Member Relationship variables

                        @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID uniqueidentifier,
                        @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID uniqueidentifier,
                        @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_STARTDATE datetime,
                        @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_ISSPOUSE bit,

                        -- Individual's household fields

                        @HOUSEHOLDCOPYPRIMARYCONTACTINFO bit,

                        @JOBCATEGORYCODEID uniqueidentifier,
                        @CAREERLEVELCODEID uniqueidentifier,
                        @GROUP_DONOTCALL bit,
                        @GROUP_DONOTEMAIL bit,

                        -- The records that were shown on the form.

                        @ADDRESSID uniqueidentifier,
                        @PHONEID uniqueidentifier,
                        @EMAILADDRESSID uniqueidentifier,
                        -- Fields specific to BBIS created ERB

                        @SITEID uniqueidentifier,
                        @CONSTITUENTSECURITYGROUPID uniqueidentifier,
                        @CONSTITUENCYCODEID uniqueidentifier,
                        @INFOSOURCECODEID uniqueidentifier,
                        @NAMEFORMATS xml,
                        @PHONE_COUNTRYID uniqueidentifier,
                        @SPOUSE_LOOKUPID nvarchar(100),
                        @SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS   bit,
                        @SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR    decimal(5,2),
                        @SPOUSE_PRIMARYRECOGNITIONTYPECODEID    uniqueidentifier,
                        @SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS    bit,
                        @SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR   decimal(5,2), 
                        @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID   uniqueidentifier,
                        @BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS   bit,
                        @BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR    decimal(5,2),
                        @BUSINESS_PRIMARYRECOGNITIONTYPECODEID    uniqueidentifier,
                        @BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS    bit,
                        @BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR   decimal(5,2), 
                        @BUSINESS_RECIPROCALRECOGNITIONTYPECODEID   uniqueidentifier,
                        @ORIGINAL_KEYNAME nvarchar(100),
                        @ORIGINAL_FIRSTNAME nvarchar(50),
                        @GENDERCODEID uniqueidentifier,
                        @SPOUSE_GENDERCODEID uniqueidentifier

                    ) as begin

                        set nocount on;

                        declare @CONSTITUENTID uniqueidentifier = cast(substring(@ID,1,36) as uniqueidentifier);
                        declare @BATCHID uniqueidentifier = cast(substring(@ID,38,36) as uniqueidentifier);
                        declare @BATCHROWID uniqueidentifier = cast(substring(@ID,75,36) as uniqueidentifier);

                        declare @CURRENTDATE                datetime;
                        declare @KEYNAME                    nvarchar(100);
                        declare @KEYNAMEPREFIX                nvarchar(50);

            if @ADDRESS_DONOTMAIL = 0 
              set @ADDRESS_DONOTMAILREASONCODEID = null

            if @ORGANIZATION_DONOTMAIL = 0 
              set @ORGANIZATION_DONOTMAILREASONCODEID = null

            if @BUSINESS_DONOTMAIL = 0 
              set @BUSINESS_DONOTMAILREASONCODEID = null

            if @GROUP_DONOTMAIL = 0
              set @GROUP_DONOTMAILREASONCODEID = null

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

                        set @CURRENTDATE = getdate();

                        begin try
                            declare @contextCache varbinary(128);

                            --cache current context information

                            set @contextCache = CONTEXT_INFO();

                            --set CONTEXT_INFO to @CHANGEAGENTID

                            set CONTEXT_INFO @CHANGEAGENTID;

                            declare @ISEXISTINGCONSTITUENT bit;
                            declare @ISORGANIZATION bit;
                            declare @ISGROUP bit;
                            declare @ISHOUSEHOLD bit;

                            set @ISEXISTINGCONSTITUENT = 0;
                            set @ISORGANIZATION = 0;
                            set @ISGROUP = 0;
                            set @ISHOUSEHOLD = 0;

                            select
                                  @ISEXISTINGCONSTITUENT = 1,
                                  @ISORGANIZATION = C.ISORGANIZATION,
                                  @ISGROUP = C.ISGROUP,
                                  @ISHOUSEHOLD = case when GD.GROUPTYPECODE = 0 then 1 else 0 end
                              from dbo.CONSTITUENT C
                              left join dbo.GROUPDATA GD on C.ID = GD.ID
                              where C.ID = @CONSTITUENTID;

                            if @ISEXISTINGCONSTITUENT= 1
                            begin
                                -- Check constituent security.  The check is done manually since it only applies to existing constituents. If @CURRENTAPPUSERID is null then we're dealing with auto-match during commit.

                                if (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 0) and
                                      (dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_FORCONSTIT(@CURRENTAPPUSERID, '08F0259C-46C1-4162-B93B-178CB455A7BE', @CONSTITUENTID) = 0) and (@CURRENTAPPUSERID is not null)
                                    raiserror('BBERR_DB_RECORDSECURITY_PERMISSION_DENIED', 13, 1);


                -- Use constituent update batch for existing constituent edits.

                declare @CONSTITUENTTYPECODE tinyint = case when @ISORGANIZATION = 1 then 1
                                                            when @ISHOUSEHOLD = 1 then 2
                                                            when @ISGROUP = 1 then 3
                                                            else 0 end
                    if @ISORGANIZATION = 1
                      begin
                  set @LASTNAME = @ORGANIZATIONNAME
                  set @ADDRESS_ADDRESSTYPECODEID = @ORGANIZATION_ADDRESSTYPECODEID
                  set @ADDRESS_DONOTMAIL = @ORGANIZATION_DONOTMAIL
                  set @ADDRESS_DONOTMAILREASONCODEID = @ORGANIZATION_DONOTMAILREASONCODEID
                  set @ADDRESS_COUNTRYID = @ORGANIZATION_COUNTRYID       
                  set @ADDRESS_STATEID = @ORGANIZATION_STATEID
                  set @ADDRESS_ADDRESSBLOCK = @ORGANIZATION_ADDRESSBLOCK
                  set @ADDRESS_CITY = @ORGANIZATION_CITY
                  set @ADDRESS_POSTCODE = @ORGANIZATION_POSTCODE
                  set @ADDRESS_OMITFROMVALIDATION = @ORGANIZATION_OMITFROMVALIDATION
                  set @ADDRESS_CART = @ORGANIZATION_CART
                  set @ADDRESS_DPC = @ORGANIZATION_DPC
                  set @ADDRESS_LOT = @ORGANIZATION_LOT
                  set @ADDRESS_COUNTYCODEID = @ORGANIZATION_COUNTYCODEID
                  set @ADDRESS_CONGRESSIONALDISTRICTCODEID = @ORGANIZATION_CONGRESSIONALDISTRICTCODEID
                  set @ADDRESS_LASTVALIDATIONATTEMPTDATE = @ORGANIZATION_LASTVALIDATIONATTEMPTDATE
                  set @ADDRESS_VALIDATIONMESSAGE = @ORGANIZATION_VALIDATIONMESSAGE
                  set @ADDRESS_CERTIFICATIONDATA = @ORGANIZATION_CERTIFICATIONDATA
                  set @PHONE_PHONETYPECODEID = @ORGANIZATION_PHONETYPECODEID
                  set @PHONE_NUMBER = @ORGANIZATION_NUMBER
                  set @EMAILADDRESS_EMAILADDRESSTYPECODEID = @ORGANIZATION_EMAILADDRESSTYPECODEID
                  set @EMAILADDRESS_EMAILADDRESS = @ORGANIZATION_EMAILADDRESS
                      end;

                    else if @ISGROUP = 1
                      begin
                  set @LASTNAME = @GROUP_NAME
                  set @ADDRESS_ADDRESSTYPECODEID = @GROUP_ADDRESSTYPECODEID
                  set @ADDRESS_COUNTRYID = @GROUP_COUNTRYID        
                  set @ADDRESS_STATEID = @GROUP_STATEID
                  set @ADDRESS_ADDRESSBLOCK = @GROUP_ADDRESSBLOCK
                  set @ADDRESS_CITY = @GROUP_CITY
                  set @ADDRESS_POSTCODE = @GROUP_POSTCODE
                  set @ADDRESS_OMITFROMVALIDATION = @GROUP_OMITFROMVALIDATION
                  set @ADDRESS_CART = @GROUP_CART
                  set @ADDRESS_DPC = @GROUP_DPC
                  set @ADDRESS_LOT = @GROUP_LOT
                  set @ADDRESS_COUNTYCODEID = @GROUP_COUNTYCODEID
                  set @ADDRESS_CONGRESSIONALDISTRICTCODEID = @GROUP_CONGRESSIONALDISTRICTCODEID
                  set @ADDRESS_LASTVALIDATIONATTEMPTDATE = @GROUP_LASTVALIDATIONATTEMPTDATE
                  set @ADDRESS_VALIDATIONMESSAGE = @GROUP_VALIDATIONMESSAGE
                  set @ADDRESS_CERTIFICATIONDATA = @GROUP_CERTIFICATIONDATA
                  set @PHONE_PHONETYPECODEID = @GROUP_PHONETYPECODEID
                  set @PHONE_NUMBER = @GROUP_NUMBER
                  set @EMAILADDRESS_EMAILADDRESSTYPECODEID = @GROUP_EMAILADDRESSTYPECODEID
                  set @EMAILADDRESS_EMAILADDRESS = @GROUP_EMAILADDRESS
                  set @WEBADDRESS = @GROUP_WEBADDRESS
                  set @ADDRESS_DONOTMAIL = @GROUP_DONOTMAIL
                  set @ADDRESS_DONOTMAILREASONCODEID = @GROUP_DONOTMAILREASONCODEID
                  set @GROUP_DONOTCALL = @GROUP_DONOTCALL
                  set @GROUP_DONOTEMAIL = @GROUP_DONOTEMAIL
                      end

                declare @ADDRESSES xml, @PHONES xml, @EMAILADDRESSES xml;

                -- Rather than having to keep pulling in CUB fields that are not handled by this form, we're just populating those fields with nulls or null-equivalents.

                -- The proper values for those fields will be pulled from the existing constituent prior to calling CUB commit edit save.


                -- CUB add will properly convert nulls to null-equivalents for all fields.

                -- CUB edit will properly convert nulls to null-equivalents for non-collection fields only.

                -- The generated collection USPs do not handle nulls, so we must set the right values here.  We do this by pulling those field values from the CUB tables.


                -- CUBFLAG:

                -- 0 = Add

                -- 1 = Edit

                -- 2 = Change of constituent, delete CUB for previous constituent, then Add

                declare @CUBFLAG tinyint = 0;
                select @CUBFLAG = case when PRIMARYRECORDID = @CONSTITUENTID then 1 else 2 end from dbo.BATCHCONSTITUENTUPDATE where ID = @BATCHROWID;

                -- Delete CUB row for a different constituent if it exists.

                if @CUBFLAG = 2
                begin
                  delete from dbo.BATCHCONSTITUENTUPDATE
                  where ID = @BATCHROWID;

                  -- From here forward, treat as an add.

                  set @CUBFLAG = 0;
                end

                set @ADDRESSES = (
                  select b.ID,
                         @ADDRESSID ADDRESSID,
                         @ADDRESS_ADDRESSBLOCK ADDRESSBLOCK,
                         @ADDRESS_ADDRESSTYPECODEID ADDRESSTYPECODEID,
                         @ADDRESS_CART CART,
                         @ADDRESS_CERTIFICATIONDATA CERTIFICATIONDATA,
                         @ADDRESS_CITY CITY, 
                         @ADDRESS_CONGRESSIONALDISTRICTCODEID CONGRESSIONALDISTRICTCODEID,
                         @ADDRESS_COUNTRYID COUNTRYID,
                         @ADDRESS_COUNTYCODEID COUNTYCODEID,
                         @ADDRESS_DONOTMAIL DONOTMAIL,
                         @ADDRESS_DONOTMAILREASONCODEID DONOTMAILREASONCODEID,
                         @ADDRESS_DPC DPC,
                         coalesce(b.ENDDATE,a.ENDDATE,'0000') ENDDATE,
                         coalesce(b.HISTORICALENDDATE,a.HISTORICALENDDATE) HISTORICALENDDATE,
                         coalesce(b.HISTORICALSTARTDATE,a.HISTORICALSTARTDATE) HISTORICALSTARTDATE,
                         coalesce(b.INFOSOURCECODEID,v.INFOSOURCECODEID,@INFOSOURCECODEID) INFOSOURCECODEID,
                         coalesce(b.INFOSOURCECOMMENTS,v.INFOSOURCECOMMENTS,'') INFOSOURCECOMMENTS,
                         coalesce(b.ISPRIMARY,a.ISPRIMARY,1) ISPRIMARY,
                         @ADDRESS_LASTVALIDATIONATTEMPTDATE LASTVALIDATIONATTEMPTDATE,
                         coalesce(b.LOCALPRECINCTCODEID,v.LOCALPRECINCTCODEID) LOCALPRECINCTCODEID,
                         @ADDRESS_LOT LOT,
                         @ADDRESS_OMITFROMVALIDATION OMITFROMVALIDATION,
                         @ADDRESS_POSTCODE POSTCODE,
                         coalesce(b.REGIONCODEID,v.REGIONCODEID) REGIONCODEID,
                         coalesce(b.SEQUENCE,a.SEQUENCE,0) SEQUENCE,
                         coalesce(b.STARTDATE,a.STARTDATE,'0000') STARTDATE,
                         coalesce(b.STATEHOUSEDISTRICTCODEID,v.STATEHOUSEDISTRICTCODEID) STATEHOUSEDISTRICTCODEID,
                         @ADDRESS_STATEID STATEID,
                         coalesce(b.STATESENATEDISTRICTCODEID,v.STATESENATEDISTRICTCODEID) STATESENATEDISTRICTCODEID,
                         coalesce(b.UPDATEHOUSEHOLD,0) UPDATEHOUSEHOLD,
                         @ADDRESS_VALIDATIONMESSAGE VALIDATIONMESSAGE
                  from (select 1 dummy) x
                  left outer join dbo.BATCHCONSTITUENTUPDATEADDRESSES b on b.BATCHCONSTITUENTUPDATEID = @BATCHROWID
                  left outer join dbo.ADDRESS a on a.ID = @ADDRESSID
                  left outer join dbo.ADDRESSVALIDATIONUPDATE v on v.ID = a.ID
                  where @ADDRESS_COUNTRYID is not null
                  for xml raw('ITEM'),type,elements,root('ADDRESSES'),BINARY BASE64  
                )

                set @PHONES = (
                  select b.ID,
                         @PHONEID PHONEID,
                         @PHONE_COUNTRYID COUNTRYID,
                         @GROUP_DONOTCALL DONOTCALL,
                         b.ENDDATE,
                         coalesce(b.ENDTIME,p.ENDTIME,'0000') ENDTIME,
                         coalesce(b.INFOSOURCECODEID,@INFOSOURCECODEID) INFOSOURCECODEID, 
                         isnull(b.ISPRIMARY,1) ISPRIMARY,
                         @PHONE_NUMBER NUMBER,
                         @PHONE_PHONETYPECODEID PHONETYPECODEID,
                         coalesce(b.SEASONALENDDATE,p.SEASONALENDDATE,'0000') SEASONALENDDATE,
                         coalesce(b.SEASONALSTARTDATE,p.SEASONALSTARTDATE,'0000') SEASONALSTARTDATE,
                         coalesce(b.SEQUENCE,p.SEQUENCE,0) SEQUENCE,
                         b.STARTDATE,
                         coalesce(b.STARTTIME,p.STARTTIME,'0000') STARTTIME,
                         coalesce(b.UPDATEHOUSEHOLD,0) UPDATEHOUSEHOLD
                  from (select 1 dummy) x
                  left outer join dbo.BATCHCONSTITUENTUPDATEPHONES b on b.BATCHCONSTITUENTUPDATEID = @BATCHROWID
                  left outer join dbo.PHONE p on p.ID = @PHONEID
                  where @PHONE_NUMBER <> ''
                  for xml raw('ITEM'),type,elements,root('PHONES'),BINARY BASE64
                )

                set @EMAILADDRESSES = (
                  select b.ID,
                         @EMAILADDRESSID EMAILADDRESSID, 
                         @GROUP_DONOTEMAIL DONOTEMAIL,
                         @EMAILADDRESS_EMAILADDRESS EMAILADDRESS,
                         @EMAILADDRESS_EMAILADDRESSTYPECODEID EMAILADDRESSTYPECODEID,
                         coalesce(b.INFOSOURCECODEID,@INFOSOURCECODEID) INFOSOURCECODEID,
                         isnull(b.ISPRIMARY,1) ISPRIMARY,
                         coalesce(b.SEQUENCE,0) SEQUENCE,
                         b.STARTDATE,
                         coalesce(b.UPDATEHOUSEHOLD,0) UPDATEHOUSEHOLD
                  from (select 1 dummy) x
                  left outer join dbo.BATCHCONSTITUENTUPDATEEMAILADDRESSES b on b.BATCHCONSTITUENTUPDATEID = @BATCHROWID
                  where @EMAILADDRESS_EMAILADDRESS <> ''
                  for xml raw('ITEM'),type,elements,root('EMAILADDRESSES'),BINARY BASE64
                )

                -- BBIS fields for saving constituency, site and security group                

                declare @CONSTITUENCIES xml, @CONSTITUENT_SITES xml, @SECURITYATTRIBUTES xml;

                set @CONSTITUENCIES = (
                  select b.ID,
                         case when @CUBFLAG = 0 then @CONSTITUENCYCODEID 
                              else b.CONSTITUENCYCODEID end as CONSTITUENCYCODEID,
                         isnull(b.DATEFROM, dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE)) DATEFROM,
                         b.DATETO DATETO,
                         b.ORIGINALCONSTITUENCYID ORIGINALCONSTITUENCYID
                  from (select 1 dummy) x
                  left outer join dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES b on b.BATCHCONSTITUENTUPDATEID = @BATCHROWID   
                  where @CONSTITUENCYCODEID is not null
                  for xml raw('ITEM'),type,elements,root('CONSTITUENCIES'),BINARY BASE64
                )

                set @CONSTITUENT_SITES = (
                  select b.ID,
                         @SITEID SITEID                       
                  from (select 1 dummy) x
                  left outer join dbo.BATCHCONSTITUENTUPDATESITES b on b.BATCHCONSTITUENTUPDATEID = @BATCHROWID                  
                  where @SITEID is not null
                  for xml raw('ITEM'),type,elements,root('CONSTITUENT_SITES'),BINARY BASE64
                )

                set @SECURITYATTRIBUTES = (
                  select b.ID,
                         @CONSTITUENTSECURITYGROUPID CONSTIT_SECURITY_ATTRIBUTEID                        
                  from (select 1 dummy) x
                  left outer join dbo.BATCHCONSTITUENTUPDATESECURITYATTRIBUTES b on b.BATCHCONSTITUENTUPDATEID = @BATCHROWID  
                  where @CONSTITUENTSECURITYGROUPID is not null
                  for xml raw('ITEM'),type,elements,root('SECURITYATTRIBUTES'),BINARY BASE64
                )

                if @CUBFLAG = 0
                begin
                  -- Constituent is not yet in CUB for this batch.  Use Add USP.

                  declare @CUB_SEQUENCE int

                  select @CUB_SEQUENCE = isnull(max(SEQUENCE),0)+1
                  from dbo.BATCHCONSTITUENTUPDATE
                  where BATCHID = @BATCHID;

                  exec dbo.USP_ADD_BATCHCONSTITUENTUPDATEBATCHROW
                    @ID = @BATCHROWID,
                    @BATCHID = @BATCHID,
                    @CHANGEAGENTID = @CHANGEAGENTID,
                    @SEQUENCE = @CUB_SEQUENCE,
                    @PRIMARYRECORDID = @CONSTITUENTID,
                    @CONSTITUENTTYPECODE = @CONSTITUENTTYPECODE,
                    @BIRTHDATE = @BIRTHDATE,
                    @FIRSTNAME = @FIRSTNAME,
                    @GENDERCODE = @GENDERCODE,
                    @GIVESANONYMOUSLY = @GROUP_GIVESANONYMOUSLY,
                    @KEYNAME = @LASTNAME,
                    --@LOOKUP_ID = @LOOKUP_ID,

                    @MAIDENNAME = @MAIDENNAME,
                    @MIDDLENAME = @MIDDLENAME,
                    @NICKNAME = @NICKNAME,
                    @SUFFIXCODEID = @SUFFIXCODEID,
                    @TITLECODEID = @TITLECODEID,
                    @WEBADDRESS = @WEBADDRESS,
                    /*
                    @ALTERNATELOOKUPIDS = @ALTERNATELOOKUPIDS,
                    */                    
                    @SECURITYATTRIBUTES = @SECURITYATTRIBUTES,
                    /*
                    @DECEASED = @DECEASED,
                    @DECEASEDDATE = @DECEASEDDATE,
                    @CONSTITUENT_SITEID = @CONSTITUENT_SITEID,
                    @INTERESTS = @INTERESTS,
                    @PROSPECTMANAGERFUNDRAISERID = @PROSPECTMANAGERFUNDRAISERID,
                    */
                    @ADDRESSES = @ADDRESSES,
                    @PHONES = @PHONES,
                    @EMAILADDRESSES = @EMAILADDRESSES,
                    @CONSTITUENCIES = @CONSTITUENCIES,
                    @GROUPTYPEID = @GROUP_GROUPTYPEID,
                    @GROUPDESCRIPTION = @GROUP_DESCRIPTION,
                    @GROUPSTARTDATE = @GROUP_STARTDATE,
                    @ORG_INDUSTRYCODEID = @INDUSTRYCODEID,
                    @ORG_NUMEMPLOYEES = @NUMEMPLOYEES,
                    @ORG_NUMSUBSIDIARIES = @NUMSUBSIDIARIES,
                    @ORG_PARENTCORPID = @PARENTCORPID,
                    @MARITALSTATUSCODEID = @MARITALSTATUSCODEID,
                    @SPOUSE_ID = @SPOUSEID,

                    @SPOUSE_TITLECODEID = @SPOUSE_TITLECODEID,
                    @SPOUSE_FIRSTNAME = @SPOUSE_FIRSTNAME,
                    @SPOUSE_NICKNAME = @SPOUSE_NICKNAME,
                    @SPOUSE_MIDDLENAME = @SPOUSE_MIDDLENAME,
                    @SPOUSE_MAIDENNAME = @SPOUSE_MAIDENNAME,
                    @SPOUSE_LASTNAME = @SPOUSE_LASTNAME,
                    @SPOUSE_SUFFIXCODEID = @SPOUSE_SUFFIXCODEID,
                    @SPOUSE_BIRTHDATE = @SPOUSE_BIRTHDATE,
                    @SPOUSE_GENDERCODE = @SPOUSE_GENDERCODE,
                    @SPOUSE_LOOKUPID = @SPOUSE_LOOKUPID,
                    @SPOUSE_RELATIONSHIPTYPECODEID = @SPOUSE_RELATIONSHIPTYPECODEID,
                    @SPOUSE_RECIPROCALTYPECODEID = @SPOUSE_RECIPROCALTYPECODEID,
                    @BUSINESS_ID = @BUSINESSID,
                    @BUSINESS_ADDRESSBLOCK = @BUSINESS_ADDRESSBLOCK,
                    @BUSINESS_ADDRESSTYPECODEID = @BUSINESS_ADDRESSTYPECODEID,
                    @BUSINESS_CART = @BUSINESS_CART,
                    @BUSINESS_CITY = @BUSINESS_CITY,
                    @BUSINESS_COUNTRYID = @BUSINESS_COUNTRYID,
                    @BUSINESS_DONOTMAIL = @BUSINESS_DONOTMAIL,
                    @BUSINESS_DONOTMAILREASONCODEID = @BUSINESS_DONOTMAILREASONCODEID,
                    @BUSINESS_DPC = @BUSINESS_DPC,
                    --@BUSINESS_EMAILADDRESS = @BUSINESS_EMAILADDRESS,

                    --@BUSINESS_EMAILADDRESSTYPECODEID = @BUSINESS_EMAILADDRESSTYPECODEID,

                    --@BUSINESS_INDUSTRYCODEID = @BUSINESS_INDUSTRYCODEID,

                    --@BUSINESS_LOOKUPID = @BUSINESS_LOOKUPID,

                    @BUSINESS_LOT = @BUSINESS_LOT,
                    @BUSINESS_NAME = @BUSINESS_NAME,
                    --@BUSINESS_NUMEMPLOYEES = @BUSINESS_NUMEMPLOYEES,

                    --@BUSINESS_NUMSUBSIDIARIES = @BUSINESS_NUMSUBSIDIARIES,

                    --@BUSINESS_PARENTCORPID = @BUSINESS_PARENTCORPID,

                    @BUSINESS_PHONENUMBER = @BUSINESS_NUMBER,
                    --@BUSINESS_PHONE_COUNTRYID = @BUSINESS_PHONE_COUNTRYID,

                    @BUSINESS_PHONETYPECODEID = @BUSINESS_PHONETYPECODEID,
                    @BUSINESS_RELATIONSHIPTYPECODEID = @BUSINESS_RELATIONSHIPTYPECODEID,
                    @BUSINESS_RECIPROCALTYPECODEID = @BUSINESS_RECIPROCALTYPECODEID,
                    @BUSINESS_STATEID = @BUSINESS_STATEID,
                    --@BUSINESS_WEBADDRESS = @BUSINESS_WEBADDRESS,

                    @BUSINESS_POSTCODE = @BUSINESS_POSTCODE,
                    /*
                    @SPOUSE_RELATIONSHIPTYPECODEIDSIMPLELIST = @SPOUSE_RELATIONSHIPTYPECODEIDSIMPLELIST,
                    @SPOUSE_RECIPROCALTYPECODEIDSIMPLELIST = @SPOUSE_RECIPROCALTYPECODEIDSIMPLELIST,
                    @BUSINESS_RELATIONSHIPTYPECODEIDSIMPLELIST = @BUSINESS_RELATIONSHIPTYPECODEIDSIMPLELIST,
                    @BUSINESS_RECIPROCALTYPECODEIDSIMPLELIST = @BUSINESS_RECIPROCALTYPECODEIDSIMPLELIST,
                    */
                    @BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS = @BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
                    @BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR = @BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR,
                    @BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = @BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
                    @BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR = @BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR,
                    @BUSINESS_PRIMARYRECOGNITIONTYPECODEID = @BUSINESS_PRIMARYRECOGNITIONTYPECODEID,
                    @BUSINESS_RECIPROCALRECOGNITIONTYPECODEID = @BUSINESS_RECIPROCALRECOGNITIONTYPECODEID,
                    /*
                    @BUSINESS_EMAILADDRESSSTARTDATE = @BUSINESS_EMAILADDRESSSTARTDATE,
                    */
                    @SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS = @SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
                    @SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR = @SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR,
                    @SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = @SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
                    @SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR = @SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR,
                    @SPOUSE_PRIMARYRECOGNITIONTYPECODEID = @SPOUSE_PRIMARYRECOGNITIONTYPECODEID,
                    @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID = @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID,            
                    @CONSTITUENT_SITES = @CONSTITUENT_SITES,
                    /*
                    @SPOUSE_ALTERNATELOOKUPIDS = @SPOUSE_ALTERNATELOOKUPIDS,
                    @SPOUSE_IMPORTLOOKUPID = @SPOUSE_IMPORTLOOKUPID,
                    @ROWFROMBATCHUI = @ROWFROMBATCHUI,
                    @BBNCTRANID = @BBNCTRANID,
                    @PAGEID = @PAGEID,
                    @PAGENAME = @PAGENAME,
                    @BBNCUSERID = @BBNCUSERID,
                    @REMOVESPOUSE = @REMOVESPOUSE,
                    @DUPLICATERECORDID = @DUPLICATERECORDID
                    @SOCIALMEDIAACCOUNTS = @SOCIALMEDIAACCOUNTS,
                    @NETCOMMUNITYTRANSACTIONPROCESSORID = @NETCOMMUNITYTRANSACTIONPROCESSORID,
                    @BBNCID = @BBNCID,
                    */
                    @NAMEFORMATS = @NAMEFORMATS,
                    @ORIGINAL_KEYNAME = @ORIGINAL_KEYNAME,
                    @ORIGINAL_FIRSTNAME = @ORIGINAL_FIRSTNAME,
                    @GENDERCODEID = @GENDERCODEID,
                    @SPOUSE_GENDERCODEID = @SPOUSE_GENDERCODEID


                end
                else
                  -- Constituent is already in CUB for this batch.  Use Edit USP.

                  exec dbo.USP_EDITSAVE_BATCHCONSTITUENTUPDATEBATCHROW_4
                    @ID = @BATCHROWID,
                    @CHANGEAGENTID = @CHANGEAGENTID,
                    @SEQUENCE = null,
                    @PRIMARYRECORDID = @CONSTITUENTID,
                    @CONSTITUENTTYPECODE = @CONSTITUENTTYPECODE,
                    @BIRTHDATE = @BIRTHDATE,
                    @FIRSTNAME = @FIRSTNAME,
                    @GENDERCODE = @GENDERCODE,
                    @GIVESANONYMOUSLY = @GROUP_GIVESANONYMOUSLY,
                    @KEYNAME = @LASTNAME,
                    @LOOKUP_ID = null,
                    @MAIDENNAME = @MAIDENNAME,
                    @MIDDLENAME = @MIDDLENAME,
                    @NICKNAME = @NICKNAME,
                    @SUFFIXCODEID = @SUFFIXCODEID,
                    @TITLECODEID = @TITLECODEID,
                    @WEBADDRESS = @WEBADDRESS,
                    @ALTERNATELOOKUPIDS = null,
                    @SECURITYATTRIBUTES = @SECURITYATTRIBUTES,
                    @DECEASED = null,
                    @DECEASEDDATE = null,
                    @CONSTITUENT_SITEID = null,
                    @INTERESTS = null,
                    @PROSPECTMANAGERFUNDRAISERID = null,
                    @ADDRESSES = @ADDRESSES,
                    @PHONES = @PHONES,
                    @EMAILADDRESSES = @EMAILADDRESSES,
                    @CONSTITUENCIES = @CONSTITUENCIES,
                    @GROUPTYPEID = @GROUP_GROUPTYPEID,
                    @GROUPDESCRIPTION = @GROUP_DESCRIPTION,
                    @GROUPSTARTDATE = @GROUP_STARTDATE,
                    @ORG_INDUSTRYCODEID = @INDUSTRYCODEID,
                    @ORG_NUMEMPLOYEES = @NUMEMPLOYEES,
                    @ORG_NUMSUBSIDIARIES = @NUMSUBSIDIARIES,
                    @ORG_PARENTCORPID = @PARENTCORPID,
                    @MARITALSTATUSCODEID = @MARITALSTATUSCODEID,
                    @SPOUSE_ID = @SPOUSEID,
                    @SPOUSE_TITLECODEID = @SPOUSE_TITLECODEID,
                    @SPOUSE_FIRSTNAME = @SPOUSE_FIRSTNAME,
                    @SPOUSE_NICKNAME = @SPOUSE_NICKNAME,
                    @SPOUSE_MIDDLENAME = @SPOUSE_MIDDLENAME,
                    @SPOUSE_MAIDENNAME = @SPOUSE_MAIDENNAME,
                    @SPOUSE_LASTNAME = @SPOUSE_LASTNAME,
                    @SPOUSE_SUFFIXCODEID = @SPOUSE_SUFFIXCODEID,
                    @SPOUSE_BIRTHDATE = @SPOUSE_BIRTHDATE,
                    @SPOUSE_GENDERCODE = @SPOUSE_GENDERCODE,
                    @SPOUSE_LOOKUPID = @SPOUSE_LOOKUPID,
                    @SPOUSE_RELATIONSHIPTYPECODEID = @SPOUSE_RELATIONSHIPTYPECODEID,
                    @SPOUSE_RECIPROCALTYPECODEID = @SPOUSE_RECIPROCALTYPECODEID,
                    @BUSINESS_ID = @BUSINESSID,
                    @BUSINESS_ADDRESSBLOCK = @BUSINESS_ADDRESSBLOCK,
                    @BUSINESS_ADDRESSTYPECODEID = @BUSINESS_ADDRESSTYPECODEID,
                    @BUSINESS_CART = @BUSINESS_CART,
                    @BUSINESS_CITY = @BUSINESS_CITY,
                    @BUSINESS_COUNTRYID = @BUSINESS_COUNTRYID,
                    @BUSINESS_DONOTMAIL = @BUSINESS_DONOTMAIL,
                    @BUSINESS_DONOTMAILREASONCODEID = @BUSINESS_DONOTMAILREASONCODEID,
                    @BUSINESS_DPC = @BUSINESS_DPC,
                    @BUSINESS_EMAILADDRESS = null,
                    @BUSINESS_EMAILADDRESSTYPECODEID = null,
                    @BUSINESS_INDUSTRYCODEID = null,
                    @BUSINESS_LOOKUPID = null,
                    @BUSINESS_LOT = @BUSINESS_LOT,
                    @BUSINESS_NAME = @BUSINESS_NAME,
                    @BUSINESS_NUMEMPLOYEES = null,
                    @BUSINESS_NUMSUBSIDIARIES = null,
                    @BUSINESS_PARENTCORPID = null,
                    @BUSINESS_PHONENUMBER = @BUSINESS_NUMBER,
                    @BUSINESS_PHONE_COUNTRYID = null,
                    @BUSINESS_PHONETYPECODEID = @BUSINESS_PHONETYPECODEID,
                    @BUSINESS_RELATIONSHIPTYPECODEID = @BUSINESS_RELATIONSHIPTYPECODEID,
                    @BUSINESS_RECIPROCALTYPECODEID = @BUSINESS_RECIPROCALTYPECODEID,
                    @BUSINESS_STATEID = @BUSINESS_STATEID,
                    @BUSINESS_WEBADDRESS = null,
                    @BUSINESS_POSTCODE = @BUSINESS_POSTCODE,
                    @SPOUSE_RELATIONSHIPTYPECODEIDSIMPLELIST = @SPOUSE_RELATIONSHIPTYPECODEID,
                    @SPOUSE_RECIPROCALTYPECODEIDSIMPLELIST = @SPOUSE_RECIPROCALTYPECODEID,
                    @BUSINESS_RELATIONSHIPTYPECODEIDSIMPLELIST = @BUSINESS_RELATIONSHIPTYPECODEID,
                    @BUSINESS_RECIPROCALTYPECODEIDSIMPLELIST = @BUSINESS_RECIPROCALTYPECODEID,
                    @BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS = @BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
                    @BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR = @BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR,
                    @BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = @BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
                    @BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR = @BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR,
                    @BUSINESS_PRIMARYRECOGNITIONTYPECODEID = @BUSINESS_PRIMARYRECOGNITIONTYPECODEID,
                    @BUSINESS_RECIPROCALRECOGNITIONTYPECODEID = @BUSINESS_RECIPROCALRECOGNITIONTYPECODEID,
                    @BUSINESS_EMAILADDRESSSTARTDATE = null,
                    @SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS = @SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
                    @SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR = @SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR,
                    @SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = @SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
                    @SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR = @SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR,
                    @SPOUSE_PRIMARYRECOGNITIONTYPECODEID = @SPOUSE_PRIMARYRECOGNITIONTYPECODEID,
                    @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID = @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID,
                    @CONSTITUENT_SITES = @CONSTITUENT_SITES,
              @SPOUSE_ALTERNATELOOKUPIDS = null,
                    @SPOUSE_IMPORTLOOKUPID = null,
                    @ROWFROMBATCHUI = null,
                    @BBNCTRANID = null,
                    @PAGEID = null,
                    @PAGENAME = null,
                    @BBNCUSERID = null,
                    @REMOVESPOUSE = null,
                    @DUPLICATERECORDID = null,
                    @SOCIALMEDIAACCOUNTS = null,
                    @RELATIONSHIPS = null,
                    @NETCOMMUNITYTRANSACTIONPROCESSORID = null,
                    @BBNCID = null,
                    @NAMEFORMATS = @NAMEFORMATS,
                    @ORIGINAL_KEYNAME = @ORIGINAL_KEYNAME,
                    @ORIGINAL_FIRSTNAME = @ORIGINAL_FIRSTNAME,
                    @SOLICITCODES = null,
                    @GENDERCODEID = @GENDERCODEID,
                    @SPOUSE_GENDERCODEID = @SPOUSE_GENDERCODEID 
                            end
                            else
                            begin
                -- new constituent, batchrevenueconstituent

                                select
                                    @ISORGANIZATION = ISORGANIZATION,
                                    @ISGROUP = ISGROUP,
                                    @ISHOUSEHOLD = case when GROUPTYPECODE = 0 then 1 else 0 end
                                from dbo.BATCHREVENUECONSTITUENT
                                where ID = @CONSTITUENTID

                                if @ISORGANIZATION != 0
                                    begin
                                        exec dbo.USP_PARSE_ORGANIZATION_NAME @ORGANIZATIONNAME, @KEYNAME output, @KEYNAMEPREFIX output;

                                        update dbo.BATCHREVENUECONSTITUENT
                                            set [KEYNAME]=@KEYNAME,
                                                [KEYNAMEPREFIX]=@KEYNAMEPREFIX,                                                    
                                                [ADDRESSTYPECODEID]=@ORGANIZATION_ADDRESSTYPECODEID,
                                                [DONOTMAIL]=@ORGANIZATION_DONOTMAIL,
                                                [DONOTMAILREASONCODEID]=@ORGANIZATION_DONOTMAILREASONCODEID,
                                                [COUNTRYID]=@ORGANIZATION_COUNTRYID,
                                                [STATEID]=@ORGANIZATION_STATEID,
                                                [ADDRESSBLOCK]=@ORGANIZATION_ADDRESSBLOCK,
                                                [CITY]=@ORGANIZATION_CITY,
                                                [POSTCODE]=@ORGANIZATION_POSTCODE,
                                                [OMITFROMVALIDATION]=@ORGANIZATION_OMITFROMVALIDATION,
                                                [CART]=@ORGANIZATION_CART,
                                                [DPC]=@ORGANIZATION_DPC,
                                                [LOT]=@ORGANIZATION_LOT,
                                                [COUNTYCODEID]=@ORGANIZATION_COUNTYCODEID,
                                                [CONGRESSIONALDISTRICTCODEID]=@ORGANIZATION_CONGRESSIONALDISTRICTCODEID,
                                                [LASTVALIDATIONATTEMPTDATE]=@ORGANIZATION_LASTVALIDATIONATTEMPTDATE,
                                                [VALIDATIONMESSAGE]=@ORGANIZATION_VALIDATIONMESSAGE,
                                                [CERTIFICATIONDATA]=@ORGANIZATION_CERTIFICATIONDATA,
                                                [PHONETYPECODEID]=@ORGANIZATION_PHONETYPECODEID,
                                                [NUMBER]=@ORGANIZATION_NUMBER,
                                                [EMAILADDRESSTYPECODEID]=@ORGANIZATION_EMAILADDRESSTYPECODEID,
                                                [EMAILADDRESS]=@ORGANIZATION_EMAILADDRESS,
                                                [INDUSTRYCODEID]=@INDUSTRYCODEID,
                                                [NUMEMPLOYEES]=@NUMEMPLOYEES,
                                                [NUMSUBSIDIARIES]=@NUMSUBSIDIARIES,
                                                [PARENTCORPID]=@PARENTCORPID,
                                                [CHANGEDBYID]=@CHANGEAGENTID,
                                                [DATECHANGED]=@CURRENTDATE,
                                                [WEBADDRESS]=@WEBADDRESS,
                        [SITEID] = @SITEID,
                        [CONSTITUENTSECURITYGROUPID] = @CONSTITUENTSECURITYGROUPID

                                            where ID = @CONSTITUENTID;
                                    end;
                                else
                                    if @ISGROUP != 0
                                        begin
                                            if @ISHOUSEHOLD = 1
                                            begin
                                                -- Validate that the primary and secondary members aren't the same

                                                if @HOUSEHOLD_PRIMARYCONTACTID = @HOUSEHOLD_SECONDMEMBERID
                                                    raiserror('ERRPRIMARYANDSECONDMEMBERSAME', 13, 1)                                            
                                            end

                                            update dbo.BATCHREVENUECONSTITUENT
                                            set    KEYNAME = @GROUP_NAME,
                                                GROUPDESCRIPTION = @GROUP_DESCRIPTION,
                                                GROUPTYPEID = @GROUP_GROUPTYPEID,
                                                GIVESANONYMOUSLY = @GROUP_GIVESANONYMOUSLY,
                                                ADDRESSTYPECODEID = @GROUP_ADDRESSTYPECODEID,
                                                COUNTRYID = @GROUP_COUNTRYID,
                                                ADDRESSBLOCK = @GROUP_ADDRESSBLOCK,
                                                CITY = @GROUP_CITY,
                                                STATEID = @GROUP_STATEID,
                                                POSTCODE = @GROUP_POSTCODE,
                                                [OMITFROMVALIDATION]=@GROUP_OMITFROMVALIDATION,
                                                [CART]=@GROUP_CART,
                                                [DPC]=@GROUP_DPC,
                                                [LOT]=@GROUP_LOT,
                                                [COUNTYCODEID]=@GROUP_COUNTYCODEID,
                                                [CONGRESSIONALDISTRICTCODEID]=@GROUP_CONGRESSIONALDISTRICTCODEID,
                                                [LASTVALIDATIONATTEMPTDATE]=@GROUP_LASTVALIDATIONATTEMPTDATE,
                                                [VALIDATIONMESSAGE]=@GROUP_VALIDATIONMESSAGE,
                                                [CERTIFICATIONDATA]=@GROUP_CERTIFICATIONDATA,
                                                PHONETYPECODEID = @GROUP_PHONETYPECODEID,
                                                NUMBER = @GROUP_NUMBER,
                                                EMAILADDRESSTYPECODEID = @GROUP_EMAILADDRESSTYPECODEID,
                                                EMAILADDRESS = @GROUP_EMAILADDRESS,
                                                GROUPSTARTDATE = @GROUP_STARTDATE,
                                                WEBADDRESS = @GROUP_WEBADDRESS,
                                                CHANGEDBYID = @CHANGEAGENTID,
                                                DATECHANGED = @CURRENTDATE,
                                                DONOTMAIL=@GROUP_DONOTMAIL,
                                                DONOTMAILREASONCODEID=@GROUP_DONOTMAILREASONCODEID,
                                                DONOTCALL=@GROUP_DONOTCALL,
                                                DONOTEMAIL=@GROUP_DONOTEMAIL,
                        [SITEID] = @SITEID,
                        [CONSTITUENTSECURITYGROUPID] = @CONSTITUENTSECURITYGROUPID    
                                            where ID = @CONSTITUENTID;

                                            -- Handle group members

                                            if @ISHOUSEHOLD = 0
                                                begin
                                                    declare @MEMBERSTABLE table 
                                                    (
                                                        ISPRIMARY bit,
                                                        BATCHREVENUECONSTITUENTID uniqueidentifier,
                                                        MEMBERID uniqueidentifier
                                                    )

                                                    -- Deserialize the XML by hand since the root element

                                                    -- is different than the function's.

                                                    insert into @MEMBERSTABLE
                                                    (
                                                        ISPRIMARY,
                                                        BATCHREVENUECONSTITUENTID,
                                                        MEMBERID
                                                    )
                                                    select
                                                        T.c.value('(ISPRIMARY)[1]','bit'),
                                                        newid(),
                                                        T.c.value('(MEMBERID)[1]','uniqueidentifier')
                                                    from @GROUP_MEMBERS.nodes('/GROUP_MEMBERS/ITEM') T(c)

                                                    -- Create BATCHREVENUECONSTITUENT entries for the constituents that already exist 

                                                    -- in the CONSTITUENT table and don't have records in BATCHREVENUECONSTITUENT that are

                                                    -- already members of the group.

                                                    insert into dbo.BATCHREVENUECONSTITUENT
                                                    (
                                                        ID,
                                                        EXISTINGCONSTITUENTID,
                                                        ISORGANIZATION,
                                                        ISGROUP,
                                                        GROUPTYPECODE,
                                                        ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                                                    )
                                                    select
                                                        M.BATCHREVENUECONSTITUENTID,
                                                        M.MEMBERID,
                                                        C.ISORGANIZATION,
                                                        C.ISGROUP,
                                                        coalesce(GD.GROUPTYPECODE, 0),
                                                        @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                                    from @MEMBERSTABLE M
                                                    inner join dbo.CONSTITUENT C on M.MEMBERID = C.ID
                                                    left join dbo.GROUPDATA GD on C.ID = GD.ID
                                                    -- The exist section of the join is to make sure the BATCHREVENUECONSTITUENT record

                                                    -- joined to already belonged to the group.

                                                    left join dbo.BATCHREVENUECONSTITUENT BRC on C.ID = BRC.EXISTINGCONSTITUENTID and exists (select 1 from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER where MEMBERID = BRC.ID and GROUPID = @CONSTITUENTID)
                                                    where
                                                        BRC.ID is null

                                                    -- For members that already exist in BATCHREVENUECONSTITUENT, 

                                                    -- update @MEMBERSTABLE's BATCHREVENUECONSTITUENTID.  @MEMBERSTABLE MEMBERID could contain either

                                                    -- a CONSTITUENT record ID or a BATCHREVENUECONSTITUENT record ID.  Because of that, the below query

                                                    -- left joins to CONSTITUENT and BATCHREVENUECONSTITUENT.  CONSTITUENT.ID and BATCHREVENUECONSTITUENT.ID

                                                    -- should only be null if @MEMBERSTABLE.MEMBERID contains a BATCHREVENUECONSTITUENT.ID.

                                                    update @MEMBERSTABLE set BATCHREVENUECONSTITUENTID = case when BRC.ID is not null then BRC.ID else MEMBERID end
                                                    from @MEMBERSTABLE M
                                                    left join dbo.CONSTITUENT C on M.MEMBERID = C.ID
                                                    -- Check for existences in BATCHREVENUECONSTITUENTGROUPMEMBER since the BATCHREVENUECONSTITUENT record should

                                                    -- only be used if they were already a member.  If they weren't already a member, this constituent was created

                                                    -- for a different reason and could be changed when a different batch row is edited.

                                                    left join dbo.BATCHREVENUECONSTITUENT BRC on BRC.EXISTINGCONSTITUENTID = M.MEMBERID and exists (select 1 from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER where MEMBERID = BRC.ID and GROUPID = @CONSTITUENTID)
                                                    where C.ID is null or BRC.ID is not null

                                                    -- Clear the ISPRIMARY flag for this group's members

                                                    update dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
                                                    set ISPRIMARY = 0
                                                    where GROUPID = @CONSTITUENTID;

                                                    -- Handle updating BATCHREVENUECONSTITUENTGROUPMEMBER


                                                    -- Remove old members

                                                    declare @CONSTITUENTSTOREMOVE table
                                                    (
                                                        BATCHREVENUECONSTITUENTID uniqueidentifier
                                                    )

                                                    insert into @CONSTITUENTSTOREMOVE (BATCHREVENUECONSTITUENTID)
                                                    select MEMBERID
                                                    from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER 
                                                    where
                                                        MEMBERID not in (select BATCHREVENUECONSTITUENTID from @MEMBERSTABLE) and
                                                        GROUPID = @CONSTITUENTID

                                                    delete from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER 
                                                    where
                                                        MEMBERID in (select BATCHREVENUECONSTITUENTID from @CONSTITUENTSTOREMOVE) and
                                                        GROUPID = @CONSTITUENTID

                                                    delete from dbo.BATCHREVENUECONSTITUENT
                                                    where ID in (select BATCHREVENUECONSTITUENTID from @CONSTITUENTSTOREMOVE)

                                                    -- Update the ISPRIMARY flag for existing members

                                                    update dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
                                                    set ISPRIMARY = M.ISPRIMARY
                                                    from BATCHREVENUECONSTITUENTGROUPMEMBER GM
                                                    inner join @MEMBERSTABLE M on GM.MEMBERID = M.BATCHREVENUECONSTITUENTID and GM.GROUPID = @CONSTITUENTID
                                                    where GM.ISPRIMARY <> M.ISPRIMARY

                                                    -- Add new members

                                                    insert into dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
                                                    (
                                                        ID,
                                                        GROUPID,
                                                        MEMBERID,
                                                        ISPRIMARY,
                                                        ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                                                    )
                                                    select
                                                        newid(),
                                                        @CONSTITUENTID,
                                                        BATCHREVENUECONSTITUENTID,
                                                        ISPRIMARY,
                                                        @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                                    from @MEMBERSTABLE as M
                                                    where not exists    (    
                                                                            select MEMBERID 
                                                                            from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER GM 
                                                                            where GM.MEMBERID = M.BATCHREVENUECONSTITUENTID and GM.GROUPID = @CONSTITUENTID
                                                                        )
                                                end
                                            else
                                                begin
                                                    -- Handle household members


                                                    -- Update primary member if needed

                                                    declare @PRIMARYMEMBERBATCHREVENUECONSTITUENTID uniqueidentifier
                                                    exec dbo.USP_BATCHREVENUE_UPDATEHOUSEHOLDMEMBER @PRIMARYMEMBERBATCHREVENUECONSTITUENTID output,
                                                        @CONSTITUENTID, 1, @HOUSEHOLD_PRIMARYCONTACTID,
                                                        @HOUSEHOLD_PRIMARYCONTACT_KEYNAME, @HOUSEHOLD_PRIMARYCONTACT_FIRSTNAME
                                                        @HOUSEHOLD_PRIMARYCONTACT_MIDDLENAME, @HOUSEHOLD_PRIMARYCONTACT_TITLECODEID,
                                                        @HOUSEHOLD_PRIMARYCONTACT_SUFFIXCODEID, @HOUSEHOLD_PRIMARYCONTACT_COPYHOUSEHOLDCONTACT, @CHANGEAGENTID

                                                    -- Update secondary member if needed

                                                    declare @SECONDMEMBERBATCHREVENUECONSTITUENTID uniqueidentifier
                                                    exec dbo.USP_BATCHREVENUE_UPDATEHOUSEHOLDMEMBER @SECONDMEMBERBATCHREVENUECONSTITUENTID output,
                                                        @CONSTITUENTID, 0, @HOUSEHOLD_SECONDMEMBERID,
                                                        @HOUSEHOLD_SECONDMEMBER_KEYNAME, @HOUSEHOLD_SECONDMEMBER_FIRSTNAME
                                                        @HOUSEHOLD_SECONDMEMBER_MIDDLENAME, @HOUSEHOLD_SECONDMEMBER_TITLECODEID,
                                                        @HOUSEHOLD_SECONDMEMBER_SUFFIXCODEID, @HOUSEHOLD_SECONDMEMBER_COPYHOUSEHOLDCONTACT, @CHANGEAGENTID

                                                    -- Update the members' relationship


                                                    -- Verify any old relationship doesn't exist

                                                    delete from dbo.BATCHREVENUECONSTITUENTRELATION
                                                    where CONSTITUENTID in (select MEMBERID from BATCHREVENUECONSTITUENTGROUPMEMBER where GROUPID = @CONSTITUENTID)

                                                    if @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID is not null or 
                                                        @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID is not null
                                                    begin
                                                        -- Verify that if the members already exist, they aren't already related

                                                        if @HOUSEHOLD_PRIMARYCONTACTID is null or @HOUSEHOLD_SECONDMEMBERID is null or
                                                            not exists(select 1 from dbo.RELATIONSHIP where RELATIONSHIPCONSTITUENTID = @HOUSEHOLD_PRIMARYCONTACTID and RECIPROCALCONSTITUENTID = @HOUSEHOLD_SECONDMEMBERID)

                                                        begin
                                                            declare @HOUSEHOLD_SECONDMEMBER_PRIMARYRECOGNITIONTYPECODEID uniqueidentifier 
                                                            declare @HOUSEHOLD_SECONDMEMBER_RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier
                                                            declare @HOUSEHOLD_SECONDMEMBER_PRIMARYRELATIONSHIPEXISTS bit
                                                            declare @HOUSEHOLD_SECONDMEMBER_RECIPROCALRELATIONSHIPEXISTS bit
                                                            declare @HOUSEHOLD_SECONDMEMBER_PRIMARYMATCHFACTOR decimal(5,2)
                                                            declare @HOUSEHOLD_SECONDMEMBER_RECIPROCALMATCHFACTOR decimal(5,2)

                                                            select @HOUSEHOLD_SECONDMEMBER_PRIMARYRELATIONSHIPEXISTS = 1,
                                                                @HOUSEHOLD_SECONDMEMBER_PRIMARYRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
                                                                @HOUSEHOLD_SECONDMEMBER_PRIMARYMATCHFACTOR= RRD.MATCHFACTOR
                                                            from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD      
                                                            where RRD.CONSTITUENTTYPECODE=0 and RRD.RELATIONSHIPTYPECODEID=@HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID

                                                            select @HOUSEHOLD_SECONDMEMBER_RECIPROCALRELATIONSHIPEXISTS = 1,
                                                                @HOUSEHOLD_SECONDMEMBER_RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
                                                                @HOUSEHOLD_SECONDMEMBER_RECIPROCALMATCHFACTOR= RRD.MATCHFACTOR
                                                            from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD      
                                                            where RRD.CONSTITUENTTYPECODE=0 and RRD.RELATIONSHIPTYPECODEID=@HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID

                                                            insert into dbo.BATCHREVENUECONSTITUENTRELATION
                                                            (
                                                                CONSTITUENTID,
                                                                RELATIONID,
                                                                RELATIONSHIPTYPECODEID,
                                                                RECIPROCALTYPECODEID,
                                                                STARTDATE,
                                                                PRIMARYRELATIONSHIPEXISTS,
                                                                PRIMARYMATCHFACTOR,
                                                                PRIMARYRECOGNITIONTYPECODEID,
                                                                RECIPROCALRELATIONSHIPEXISTS,
                                                                RECIPROCALMATCHFACTOR,
                                                                RECIPROCALRECOGNITIONTYPECODEID,        
                                                                ISSPOUSE,
                                                                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                                                            )
                                                            values
                                                            (
                                                                @PRIMARYMEMBERBATCHREVENUECONSTITUENTID,
                                                                @SECONDMEMBERBATCHREVENUECONSTITUENTID,
                                                                @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RELATIONSHIPTYPECODEID,
                                                                @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_RECIPROCALTYPECODEID,
                                                                @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_STARTDATE,
                                                                ISNULL(@HOUSEHOLD_SECONDMEMBER_PRIMARYRELATIONSHIPEXISTS,0), 
                                                                ISNULL(@HOUSEHOLD_SECONDMEMBER_PRIMARYMATCHFACTOR,0), 
                                                                @HOUSEHOLD_SECONDMEMBER_PRIMARYRECOGNITIONTYPECODEID
                                                                ISNULL(@HOUSEHOLD_SECONDMEMBER_RECIPROCALRELATIONSHIPEXISTS,0),
                                                                ISNULL(@HOUSEHOLD_SECONDMEMBER_RECIPROCALMATCHFACTOR,0), 
                                                                @HOUSEHOLD_SECONDMEMBER_RECIPROCALRECOGNITIONTYPECODEID,
                                                                @HOUSEHOLD_SECONDMEMBER_RELATIONSHIP_ISSPOUSE,
                                                                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                                            )
                                                        end
                                                    end
                                                end
                                        end
                                    else
                                        begin
                                            set @KEYNAME = @LASTNAME;
                                            set @KEYNAMEPREFIX = '';

                                        update dbo.BATCHREVENUECONSTITUENT
                                            set [KEYNAME]=@KEYNAME,
                                                [KEYNAMEPREFIX]=@KEYNAMEPREFIX,
                                                [FIRSTNAME]=@FIRSTNAME,
                                                [MIDDLENAME]=@MIDDLENAME,
                                                [MAIDENNAME]=@MAIDENNAME,
                                                [NICKNAME]=@NICKNAME,
                                                [TITLECODEID]=@TITLECODEID,
                                                [SUFFIXCODEID]=@SUFFIXCODEID,
                                                [GENDERCODE]=@GENDERCODE,
                                                [GENDERCODEID]=@GENDERCODEID,
                                                [BIRTHDATE]=@BIRTHDATE,
                                                [MARITALSTATUSCODEID]=@MARITALSTATUSCODEID,
                                                [ADDRESSTYPECODEID]=@ADDRESS_ADDRESSTYPECODEID,
                                                [DONOTMAIL]=@ADDRESS_DONOTMAIL,
                                                [DONOTMAILREASONCODEID]=@ADDRESS_DONOTMAILREASONCODEID,
                                                [COUNTRYID]=@ADDRESS_COUNTRYID,
                                                [STATEID]=@ADDRESS_STATEID,
                                                [ADDRESSBLOCK]=@ADDRESS_ADDRESSBLOCK,
                                                [CITY]=@ADDRESS_CITY,
                                                [POSTCODE]=@ADDRESS_POSTCODE,
                                                [OMITFROMVALIDATION]=@ADDRESS_OMITFROMVALIDATION,
                                                [CART]=@ADDRESS_CART,
                                                [DPC]=@ADDRESS_DPC,
                                                [LOT]=@ADDRESS_LOT,
                                                [COUNTYCODEID]=@ADDRESS_COUNTYCODEID,
                                                [CONGRESSIONALDISTRICTCODEID]=@ADDRESS_CONGRESSIONALDISTRICTCODEID,
                                                [LASTVALIDATIONATTEMPTDATE]=@ADDRESS_LASTVALIDATIONATTEMPTDATE,
                                                [VALIDATIONMESSAGE]=@ADDRESS_VALIDATIONMESSAGE,
                                                [CERTIFICATIONDATA]=@ADDRESS_CERTIFICATIONDATA,
                                                [PHONETYPECODEID]=@PHONE_PHONETYPECODEID,
                                                [NUMBER]=@PHONE_NUMBER,
                                                [EMAILADDRESSTYPECODEID]=@EMAILADDRESS_EMAILADDRESSTYPECODEID,
                                                [EMAILADDRESS]=@EMAILADDRESS_EMAILADDRESS,
                                                [CHANGEDBYID]=@CHANGEAGENTID,
                                                [DATECHANGED]=@CURRENTDATE,
                        [SITEID] = @SITEID,
                        [CONSTITUENTSECURITYGROUPID] = @CONSTITUENTSECURITYGROUPID,
                        [NAMEFORMATS] = @NAMEFORMATS
                                            where ID = @CONSTITUENTID;

                                        -------------- Update Spouse's Information --------------

                                        declare @ISSPOUSE        bit
                                        if (@SPOUSEID is not null) or (coalesce(@SPOUSE_LASTNAME,'') <> '')
                                            set @ISSPOUSE = 1
                                        else
                                            set @ISSPOUSE = 0

                                        declare @BATCHHOUSEHOLDID uniqueidentifier
                                        select @BATCHHOUSEHOLDID = BRC.ID
                                        from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER BRCGM 
                                        inner join dbo.BATCHREVENUECONSTITUENT BRC on BRCGM.GROUPID = BRC.ID
                                        where BRC.GROUPTYPECODE = 0 and BRCGM.MEMBERID = @CONSTITUENTID

                                        --If their is a spouse create the relationship

                                        if @ISSPOUSE = 1
                                            begin
                                                if @SPOUSE_GENDERCODE is null
                                                    set @SPOUSE_GENDERCODE = 0;

                                                if @BATCHSPOUSEID is null 
                                                    begin 
                                                        set @BATCHSPOUSEID = newID();
                                                        insert into dbo.BATCHREVENUECONSTITUENT
                                                        (
                                                            [ID],
                                                            [ISORGANIZATION],
                                                            [ISGROUP],
                                                            [EXISTINGCONSTITUENTID],                                                            
                                                            [KEYNAME],
                                                            [FIRSTNAME],
                                                            [MIDDLENAME],
                                                            [MAIDENNAME],
                                                            [NICKNAME],
                                                            [TITLECODEID],
                                                            [SUFFIXCODEID],
                                                            [GENDERCODE],
                                                            [GENDERCODEID],
                                                            [BIRTHDATE],
                                                            [MARITALSTATUSCODEID],
                                                            [CURRENTAPPUSERID],
                                                            [ADDEDBYID],
                                                            [CHANGEDBYID],
                                                            [DATEADDED],
                                                            [DATECHANGED],
                              [SITEID],
                              [CONSTITUENTSECURITYGROUPID]
                                                        )
                                                        values
                                                        (
                                                            @BATCHSPOUSEID,
                                                            0,
                                                            0,
                                                            @SPOUSEID,                                                            
                                                            @SPOUSE_LASTNAME,
                                                            @SPOUSE_FIRSTNAME,
                                                            @SPOUSE_MIDDLENAME,
                                                            @SPOUSE_MAIDENNAME,
                                                            @SPOUSE_NICKNAME,
                                                            @SPOUSE_TITLECODEID,
                                                            @SPOUSE_SUFFIXCODEID,
                                                            @SPOUSE_GENDERCODE,
                                                            @SPOUSE_GENDERCODEID,
                                                            @SPOUSE_BIRTHDATE,
                                                            @MARITALSTATUSCODEID,
                                                            @CURRENTAPPUSERID,
                                                            @CHANGEAGENTID,
                                                            @CHANGEAGENTID,
                                                            @CURRENTDATE,
                                                            @CURRENTDATE,
                              @SITEID,
                              @CONSTITUENTSECURITYGROUPID
                                                        );

                                                        insert into dbo.BATCHREVENUECONSTITUENTRELATION
                                                        (
                                                            [CONSTITUENTID],
                                                            [RELATIONID],
                                                            [COPYPRIMARYINFORMATION],
                                                            [RELATIONSHIPTYPECODEID],
                                                            [RECIPROCALTYPECODEID],
                                                            [STARTDATE],
                                                            [PRIMARYRELATIONSHIPEXISTS],
                                                            [PRIMARYMATCHFACTOR],
                                                            [PRIMARYRECOGNITIONTYPECODEID],
                                                            [RECIPROCALRELATIONSHIPEXISTS],
                                                            [RECIPROCALMATCHFACTOR],
                                                            [RECIPROCALRECOGNITIONTYPECODEID],                                                            
                                                            [ISSPOUSE],
                                                            [ADDEDBYID],
                                                            [CHANGEDBYID],
                                                            [DATEADDED],
                                                            [DATECHANGED]
                                                        )
                                                        values
                                                        (
                                                            @CONSTITUENTID,
                                                            @BATCHSPOUSEID,
                                                            @COPYPRIMARYINFORMATION,
                                                            @SPOUSE_RELATIONSHIPTYPECODEID,
                                                            @SPOUSE_RECIPROCALTYPECODEID,
                                                            @SPOUSE_STARTDATE,
                                                            ISNULL(@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,0), 
                                                            ISNULL(@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR,0), 
                                                            @SPOUSE_PRIMARYRECOGNITIONTYPECODEID
                                                            ISNULL(@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,0),
                                                            ISNULL(@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR,0), 
                                                            @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID,
                                                            @ISSPOUSERELATIONSHIP,                                                    
                                                            @CHANGEAGENTID,
                                                            @CHANGEAGENTID,
                                                            @CURRENTDATE,
                                                            @CURRENTDATE
                                                        );

                                                        -- Create the household

                                                        exec dbo.USP_BATCHREVENUE_ADDINDIVIDUALHOUSEHOLD @CONSTITUENTID, @BATCHSPOUSEID, @HOUSEHOLDCOPYPRIMARYCONTACTINFO, @CURRENTAPPUSERID, @CHANGEAGENTID;
                                                    end
                                                else
                                                    begin
                                                        update dbo.BATCHREVENUECONSTITUENT
                                                            set [EXISTINGCONSTITUENTID]=@SPOUSEID,
                                                                [KEYNAME]=@SPOUSE_LASTNAME,
                                                                [FIRSTNAME]=@SPOUSE_FIRSTNAME,
                                                                [MIDDLENAME]=@SPOUSE_MIDDLENAME,
                                                                [MAIDENNAME]=@SPOUSE_MAIDENNAME,
                                                                [NICKNAME]=@SPOUSE_NICKNAME,
                                                                [TITLECODEID]=@SPOUSE_TITLECODEID,
                                                                [SUFFIXCODEID]=@SPOUSE_SUFFIXCODEID,
                                                                [GENDERCODE]=@SPOUSE_GENDERCODE,
                                                                [GENDERCODEID]=@SPOUSE_GENDERCODEID,
                                                                [BIRTHDATE]=@SPOUSE_BIRTHDATE,
                                                                [MARITALSTATUSCODEID]=@MARITALSTATUSCODEID,
                                                                [CHANGEDBYID]=@CHANGEAGENTID,
                                                                [DATECHANGED]=@CURRENTDATE,
                                [SITEID] = @SITEID,
                                [CONSTITUENTSECURITYGROUPID] = @CONSTITUENTSECURITYGROUPID
                                                        where ID = @BATCHSPOUSEID;

                                                        update dbo.BATCHREVENUECONSTITUENTRELATION
                                                            set [COPYPRIMARYINFORMATION]=@COPYPRIMARYINFORMATION,
                                                                [RELATIONSHIPTYPECODEID]=@SPOUSE_RELATIONSHIPTYPECODEID,
                                                                [RECIPROCALTYPECODEID]=@SPOUSE_RECIPROCALTYPECODEID,
                                                                [STARTDATE]=@SPOUSE_STARTDATE,
                                                                [PRIMARYRELATIONSHIPEXISTS]=ISNULL(@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,0), 
                                                                [PRIMARYMATCHFACTOR]=ISNULL(@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR,0), 
                                                                [PRIMARYRECOGNITIONTYPECODEID]=@SPOUSE_PRIMARYRECOGNITIONTYPECODEID
                                                                [RECIPROCALRELATIONSHIPEXISTS]=ISNULL(@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,0),
                                                                [RECIPROCALMATCHFACTOR]=ISNULL(@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR,0), 
                                                                [RECIPROCALRECOGNITIONTYPECODEID]=@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID,
                                                                [ISSPOUSE]=@ISSPOUSERELATIONSHIP,
                                                                [CHANGEDBYID]=@CHANGEAGENTID,
                                                                [DATECHANGED]=@CURRENTDATE
                                                        where ID = @BATCHSPOUSERELATIONID;

                                                        -- Update the household related to this relationship if needed


                                                        -- If there isn't a current household, create a new one

                                                        if @BATCHHOUSEHOLDID is null
                                                            exec dbo.USP_BATCHREVENUE_ADDINDIVIDUALHOUSEHOLD @CONSTITUENTID, @BATCHSPOUSEID, @HOUSEHOLDCOPYPRIMARYCONTACTINFO, @CURRENTAPPUSERID, @CHANGEAGENTID;
                                                        else
                                                            begin
                                                                -- Otherwise, update the existing household

                                                                declare @HOUSEHOLDID uniqueidentifier, @HOUSEHOLDNAME nvarchar(100), @USEHOUSEHOLDID bit
                                                                exec dbo.USP_BATCHREVENUE_GETHOUSEHOLDNAMEORID @CONSTITUENTID, @BATCHSPOUSEID, @HOUSEHOLDID output, @HOUSEHOLDNAME output, @USEHOUSEHOLDID output

                                                                declare @EXISTINGHOUSEHOLDID uniqueidentifier, @EXISTINGHOUSEHOLDNAME nvarchar(100)
                                                                select
                                                                    @EXISTINGHOUSEHOLDID = EXISTINGCONSTITUENTID,
                                                                    @EXISTINGHOUSEHOLDNAME = KEYNAME
                                                                from dbo.BATCHREVENUECONSTITUENT
                                                                where ID = @BATCHHOUSEHOLDID

                                                                if @USEHOUSEHOLDID = 1 and (@EXISTINGHOUSEHOLDID is null or @EXISTINGHOUSEHOLDID <> @HOUSEHOLDID)
                                                                    begin
                                                                        update dbo.BATCHREVENUECONSTITUENT set
                                                                            EXISTINGCONSTITUENTID = @HOUSEHOLDID,
                                                                            KEYNAME = '',
                                                                            CHANGEDBYID = @CHANGEAGENTID,
                                                                            DATECHANGED = @CURRENTDATE
                                                                        where ID = @BATCHHOUSEHOLDID
                                                                    end

                                                                if @USEHOUSEHOLDID = 0 and coalesce(@HOUSEHOLDNAME, '') <> coalesce(@EXISTINGHOUSEHOLDNAME, '')
                                                                    begin
                                                                        update dbo.BATCHREVENUECONSTITUENT set
                                                                            EXISTINGCONSTITUENTID = null,
                                                                            KEYNAME = @HOUSEHOLDNAME,
                                                                            CHANGEDBYID = @CHANGEAGENTID,
                                                                            DATECHANGED = @CURRENTDATE
                                                                        where ID = @BATCHHOUSEHOLDID
                                                                    end

                                                                -- Clear or update the primary contact info

                                                                declare @CURRENTHOUSEHOLDCOPYPRIMARYCONTACTINFO bit
                                                                select @CURRENTHOUSEHOLDCOPYPRIMARYCONTACTINFO = COPYMEMBERCONTACTINFOTOGROUP
                                                                from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
                                                                where GROUPID = @BATCHHOUSEHOLDID and MEMBERID = @CONSTITUENTID

                                                                if @CURRENTHOUSEHOLDCOPYPRIMARYCONTACTINFO <> @HOUSEHOLDCOPYPRIMARYCONTACTINFO
                                                                    update dbo.BATCHREVENUECONSTITUENTGROUPMEMBER set
                                                                        COPYMEMBERCONTACTINFOTOGROUP = @HOUSEHOLDCOPYPRIMARYCONTACTINFO,
                                                                        CHANGEDBYID = @CHANGEAGENTID,
                                                                        DATECHANGED = @CURRENTDATE
                                                                    where GROUPID = @BATCHHOUSEHOLDID and MEMBERID = @CONSTITUENTID
                                                            end
                                                    end        
                                            end
                                        else
                                            begin
                                                if @BATCHSPOUSERELATIONID is not null
                                                    exec dbo.USP_BATCHREVENUECONSTITUENTRELATION_DELETEBYID_WITHCHANGEAGENTID @BATCHSPOUSERELATIONID, @CHANGEAGENTID;

                                                if @BATCHSPOUSEID is not null
                                                    begin
                                                        -- Remove the added spouse and corresponding household

                                                        delete from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER where GROUPID = @BATCHHOUSEHOLDID

                                                        exec dbo.USP_BATCHREVENUECONSTITUENT_DELETEBYID_WITHCHANGEAGENTID @BATCHHOUSEHOLDID, @CHANGEAGENTID;
                                                        exec dbo.USP_BATCHREVENUECONSTITUENT_DELETEBYID_WITHCHANGEAGENTID @BATCHSPOUSEID, @CHANGEAGENTID;
                                                    end
                                            end

                                        -------------- update Organization Information --------------

                                        declare @HASORGANIZATION bit

                                        if (@BUSINESSID is not null) or (coalesce(@BUSINESS_NAME,'') <> '')
                                            set @HASORGANIZATION = 1
                                        else
                                            set @HASORGANIZATION = 0

                                        --If their is an organization create the relationship

                                        if @HASORGANIZATION = 1
                                            begin

                                                ---------Organization Constituent Information---------

                                                declare @ORGKEYNAME nvarchar(100);
                                                declare @ORGKEYNAMEPREFIX nvarchar(50);

                                                exec dbo.USP_PARSE_ORGANIZATION_NAME @BUSINESS_NAME, @ORGKEYNAME output, @ORGKEYNAMEPREFIX output;

                                                if @BATCHBUSINESSID is null
                                                    begin
                                                        set @BATCHBUSINESSID = newID();
                                                        insert into dbo.BATCHREVENUECONSTITUENT
                                                        (                                                
                                                            [ID],                                                        
                                                            [ISORGANIZATION],
                                                            [EXISTINGCONSTITUENTID],                                                
                                                            [KEYNAME],
                                                            [KEYNAMEPREFIX],
                                                            [ADDRESSTYPECODEID],
                                                            [DONOTMAIL],
                              [DONOTMAILREASONCODEID],
                                                            [COUNTRYID],
                                                            [STATEID],
                                                            [ADDRESSBLOCK],
                                                            [CITY],
                                                            [POSTCODE],                                                                   
                                                            [OMITFROMVALIDATION],
                                                            [CART],
                                                            [DPC],
                                                            [LOT],
                                                            [COUNTYCODEID],
                                                            [CONGRESSIONALDISTRICTCODEID],
                                                            [LASTVALIDATIONATTEMPTDATE],
                                                            [VALIDATIONMESSAGE],
                                                            [CERTIFICATIONDATA],
                                                            [PHONETYPECODEID],
                                                            [NUMBER],
                                                            [CURRENTAPPUSERID],
                                                            [ADDEDBYID],
                                                            [CHANGEDBYID],
                                                            [DATEADDED],
                                                            [DATECHANGED],
                              [SITEID],
                              [CONSTITUENTSECURITYGROUPID]  
                                                        )
                                                        values
                                                        (
                                                            @BATCHBUSINESSID,                                                        
                                                            1,
                                                            @BUSINESSID,
                                                            @ORGKEYNAME,
                                                            @ORGKEYNAMEPREFIX,
                                                            @BUSINESS_ADDRESSTYPECODEID,
                                                            @BUSINESS_DONOTMAIL,
                              @BUSINESS_DONOTMAILREASONCODEID,
                                                            @BUSINESS_COUNTRYID,
                                                            @BUSINESS_STATEID,
                                                            @BUSINESS_ADDRESSBLOCK,
                                                            @BUSINESS_CITY,
                                                            @BUSINESS_POSTCODE,                                                                           
                                                            @BUSINESS_OMITFROMVALIDATION,
                                                            @BUSINESS_CART,
                                                            @BUSINESS_DPC,
                                                            @BUSINESS_LOT,
                                                            @BUSINESS_COUNTYCODEID,
                                                            @BUSINESS_CONGRESSIONALDISTRICTCODEID,
                                                            @BUSINESS_LASTVALIDATIONATTEMPTDATE,
                                                            @BUSINESS_VALIDATIONMESSAGE,
                                                            @BUSINESS_CERTIFICATIONDATA,
                                                            @BUSINESS_PHONETYPECODEID,
                                                            @BUSINESS_NUMBER,
                                                            @CURRENTAPPUSERID,
                                                            @CHANGEAGENTID,
                                                            @CHANGEAGENTID,
                                                            @CURRENTDATE,
                                                            @CURRENTDATE,
                              @SITEID,
                              @CONSTITUENTSECURITYGROUPID   
                                                        );

                                                        insert into dbo.BATCHREVENUECONSTITUENTRELATION(
                                                            [CONSTITUENTID],
                                                            [RELATIONID],
                                                            [ISPRIMARYBUSINESS],
                                                            [RELATIONSHIPTYPECODEID],
                                                            [RECIPROCALTYPECODEID],
                                                            [ISCONTACT],
                                                            [ISPRIMARYCONTACT],
                                                            [CONTACTTYPECODEID],
                                                            [STARTDATE],
                                                            [PRIMARYRELATIONSHIPEXISTS],
                                                            [PRIMARYMATCHFACTOR],
                                                            [PRIMARYRECOGNITIONTYPECODEID],
                                                            [RECIPROCALRELATIONSHIPEXISTS],
                                                            [RECIPROCALMATCHFACTOR],
                                                            [RECIPROCALRECOGNITIONTYPECODEID],
                                                            [POSITION],
                                                            [ISMATCHINGGIFTRELATIONSHIP],
                                                            [JOBCATEGORYCODEID],
                                                            [CAREERLEVELCODEID],
                                                            [ADDEDBYID],
                                                            [CHANGEDBYID],
                                                            [DATEADDED],
                                                            [DATECHANGED]
                                                        )
                                                        values
                                                        (
                                                            @CONSTITUENTID,
                                                            @BATCHBUSINESSID,
                                                            1,
                                                            @BUSINESS_RELATIONSHIPTYPECODEID,
                                                            @BUSINESS_RECIPROCALTYPECODEID,
                                                            @ISCONTACT,
                                                            @ISPRIMARYCONTACT,
                                                            @CONTACTTYPECODEID,
                                                            @BUSINESS_STARTDATE,
                                                            ISNULL(@BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,0), 
                                                            ISNULL(@BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR,0), 
                                                            @BUSINESS_PRIMARYRECOGNITIONTYPECODEID
                                                            ISNULL(@BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,0),
                                                            ISNULL(@BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR,0), 
                                                            @BUSINESS_RECIPROCALRECOGNITIONTYPECODEID,
                                                            @POSITION,
                                                            @ISMATCHINGGIFTRELATIONSHIP,
                                                            @JOBCATEGORYCODEID,
                                                            @CAREERLEVELCODEID,
                                                            @CHANGEAGENTID,
                                                            @CHANGEAGENTID,
                                                            @CURRENTDATE,
                                                            @CURRENTDATE
                                                        );
                                                    end
                                                else
                                                    begin    
                                                        update dbo.BATCHREVENUECONSTITUENT
                                                                set [EXISTINGCONSTITUENTID]=@BUSINESSID,
                                                                [KEYNAME]=@ORGKEYNAME,
                                                                [KEYNAMEPREFIX]=@ORGKEYNAMEPREFIX,
                                                                [ADDRESSTYPECODEID]=@BUSINESS_ADDRESSTYPECODEID,
                                                                [DONOTMAIL]=@BUSINESS_DONOTMAIL,
                                [DONOTMAILREASONCODEID]=@BUSINESS_DONOTMAILREASONCODEID,
                                                                [COUNTRYID]=@BUSINESS_COUNTRYID,
                                                                [STATEID]=@BUSINESS_STATEID,
                                                                [ADDRESSBLOCK]=@BUSINESS_ADDRESSBLOCK,
                                                                [CITY]=@BUSINESS_CITY,
                                                                [POSTCODE]=@BUSINESS_POSTCODE,                                                                                          
                                                                [OMITFROMVALIDATION]=@BUSINESS_OMITFROMVALIDATION,
                                                                [CART]=@BUSINESS_CART,
                                                                [DPC]=@BUSINESS_DPC,
                                                                [LOT]=@BUSINESS_LOT,
                                                                [COUNTYCODEID]=@BUSINESS_COUNTYCODEID,
                                                                [CONGRESSIONALDISTRICTCODEID]=@BUSINESS_CONGRESSIONALDISTRICTCODEID,
                                                                [LASTVALIDATIONATTEMPTDATE]=@BUSINESS_LASTVALIDATIONATTEMPTDATE,
                                                                [VALIDATIONMESSAGE]=@BUSINESS_VALIDATIONMESSAGE,
                                                                [CERTIFICATIONDATA]=@BUSINESS_CERTIFICATIONDATA,                                                                                          
                                                                [PHONETYPECODEID]=@BUSINESS_PHONETYPECODEID,
                                                                [NUMBER]=@BUSINESS_NUMBER,
                                                                [ISORGANIZATION]=1,
                                                                [CHANGEDBYID]=@CHANGEAGENTID,
                                                                [DATECHANGED]=@CURRENTDATE,
                                [SITEID] = @SITEID,
                                [CONSTITUENTSECURITYGROUPID] = @CONSTITUENTSECURITYGROUPID
                                                        where ID = @BATCHBUSINESSID;

                                                    update dbo.BATCHREVENUECONSTITUENTRELATION
                                                            set [RELATIONSHIPTYPECODEID]=@BUSINESS_RELATIONSHIPTYPECODEID,
                                                                [RECIPROCALTYPECODEID]=@BUSINESS_RECIPROCALTYPECODEID,
                                                                [ISCONTACT]=@ISCONTACT,
                                                                [ISPRIMARYCONTACT]=@ISPRIMARYCONTACT,
                                                                [CONTACTTYPECODEID]=@CONTACTTYPECODEID,
                                                                [STARTDATE]=@BUSINESS_STARTDATE,                                                                                                            
                                                                [PRIMARYRELATIONSHIPEXISTS]=ISNULL(@BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,0), 
                                                                [PRIMARYMATCHFACTOR]=ISNULL(@BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR,0), 
                                                                [PRIMARYRECOGNITIONTYPECODEID]=@BUSINESS_PRIMARYRECOGNITIONTYPECODEID
                                                                [RECIPROCALRELATIONSHIPEXISTS]=ISNULL(@BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,0),
                                                                [RECIPROCALMATCHFACTOR]=ISNULL(@BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR,0), 
                                                                [RECIPROCALRECOGNITIONTYPECODEID]=@BUSINESS_RECIPROCALRECOGNITIONTYPECODEID,
                                                                [POSITION]=@POSITION,
                                                                [ISMATCHINGGIFTRELATIONSHIP]=@ISMATCHINGGIFTRELATIONSHIP,
                                                                [JOBCATEGORYCODEID]=@JOBCATEGORYCODEID,
                                                                [CAREERLEVELCODEID]=@CAREERLEVELCODEID,
                                                                [CHANGEDBYID]=@CHANGEAGENTID,
                                                                [DATECHANGED]=@CURRENTDATE
                                                            where ID = @BATCHBUSINESSRELATIONID;
                                                    end;
                                                end;
                                            else
                                                begin
                                                    if @BATCHBUSINESSRELATIONID is not null
                                                        exec dbo.USP_BATCHREVENUECONSTITUENTRELATION_DELETEBYID_WITHCHANGEAGENTID @BATCHBUSINESSRELATIONID, @CHANGEAGENTID;

                                                    if @BATCHBUSINESSID is not null
                                                        exec dbo.USP_BATCHREVENUECONSTITUENT_DELETEBYID_WITHCHANGEAGENTID @BATCHBUSINESSID, @CHANGEAGENTID;
                                                end;
                                        end;
                                    end;

                            --reset CONTEXT_INFO to previous value

                            if not @contextCache is null
                                set CONTEXT_INFO @contextCache;                                    
                        end try                        

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

                        return 0;
                    end;