USP_REVENUEBATCH_CONSTITUENT_ADD

Saves an individual record with spouse and business information.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@BATCHREVENUECONSTITUENTID uniqueidentifier IN
@BATCHREVENUECONSTITUENTACCOUNTID uniqueidentifier IN
@CONSTITUENTACCOUNTID uniqueidentifier INOUT
@BYPASSINDIVIDUALHOUSEHOLDADD bit IN
@BYPASSINDIVIDUALSPOUSEADD bit IN
@CURRENTRECOGNITIONS xml IN
@UPDATEDRECOGNITIONS xml INOUT
@UPDATEDAPPLICATIONRECOGNITIONS xml INOUT
@IDMAPPING xml INOUT

Definition

Copy


CREATE procedure dbo.USP_REVENUEBATCH_CONSTITUENT_ADD
(
    @ID                                    uniqueidentifier = null output,                        
    @CHANGEAGENTID                        uniqueidentifier = null,
    @BATCHREVENUECONSTITUENTID            uniqueidentifier,
    @BATCHREVENUECONSTITUENTACCOUNTID    uniqueidentifier = null,
    @CONSTITUENTACCOUNTID                uniqueidentifier = null output,
    @BYPASSINDIVIDUALHOUSEHOLDADD        bit                 = 0,
    @BYPASSINDIVIDUALSPOUSEADD            bit                 = 0,
    @CURRENTRECOGNITIONS                xml                 = null,
    @UPDATEDRECOGNITIONS                xml                 = null output,
    @UPDATEDAPPLICATIONRECOGNITIONS     xml              = null output,
    @IDMAPPING                            xml                 = null output
) as begin

    set nocount on;

    declare @CURRENTDATE                            datetime;
    declare @CURRENTAPPUSERID                        uniqueidentifier
    declare @ISORGANIZATION                            bit
    declare @KEYNAME                                nvarchar(100)
    declare @KEYNAMEPREFIX                            nvarchar(50)
    declare @FIRSTNAME                                nvarchar(50)
    declare @MIDDLENAME                                nvarchar(50)
    declare @MAIDENNAME                                nvarchar(100)
    declare @NICKNAME                                nvarchar(50)
    declare @TITLECODEID                            uniqueidentifier
    declare @SUFFIXCODEID                            uniqueidentifier
    declare @GENDERCODE                                tinyint
    declare @GENDERCODEID                                uniqueidentifier
    declare @BIRTHDATE                                dbo.UDT_FUZZYDATE
    declare @ADDRESS_ADDRESSTYPECODEID                uniqueidentifier
    declare @ADDRESS_DONOTMAIL                        bit
    declare @ADDRESS_DONOTMAILREASONCODEID uniqueidentifier
    declare @ADDRESS_COUNTRYID                        uniqueidentifier
    declare @ADDRESS_STATEID                        uniqueidentifier
    declare @ADDRESS_ADDRESSBLOCK                    nvarchar(150)
    declare @ADDRESS_CITY                            nvarchar(50)
    declare @ADDRESS_POSTCODE                        nvarchar(12)

    -- Address Validation

    declare @ADDRESS_OMITFROMVALIDATION                bit
    declare @ADDRESS_CART                            nvarchar(10)
    declare @ADDRESS_DPC                            nvarchar(8)
    declare @ADDRESS_LOT                            nvarchar(5)
    declare @ADDRESS_COUNTYCODEID                    uniqueidentifier
    declare @ADDRESS_CONGRESSIONALDISTRICTCODEID    uniqueidentifier
    declare @ADDRESS_LASTVALIDATIONATTEMPTDATE        datetime
    declare @ADDRESS_VALIDATIONMESSAGE                nvarchar(200)
    declare @ADDRESS_CERTIFICATIONDATA                integer

    declare @PHONE_PHONETYPECODEID                    uniqueidentifier
    declare @PHONE_NUMBER                            nvarchar(100)
    declare @EMAILADDRESS_EMAILADDRESSTYPECODEID    uniqueidentifier
    declare @EMAILADDRESS_EMAILADDRESS                dbo.UDT_EMAILADDRESS
    declare @MARITALSTATUSCODEID                    uniqueidentifier
    declare @SKIP_ADDING_SECURITYGROUPS                bit
    declare @WEBADDRESS                                dbo.UDT_WEBADDRESS
    declare @INDUSTRYCODEID                            uniqueidentifier
    declare @NUMEMPLOYEES                            int
    declare @NUMSUBSIDIARIES                        int
    declare @PARENTCORPID                            uniqueidentifier
    declare @ISGROUP                                bit
    declare @ISHOUSEHOLD                            bit
    declare @GIVESANONYMOUSLY                        bit
    declare @GROUPTYPECODE                            tinyint
    declare @GROUPTYPEID                            uniqueidentifier
    declare @GROUPDESCRIPTION                        nvarchar(300)
    declare @GROUPSTARTDATE                            datetime
    declare @NAMEFORMATFUNCTIONID                    uniqueidentifier

    --Spouse Variables

    declare @BATCHSPOUSEID                            uniqueidentifier
    declare @SPOUSEID                                uniqueidentifier
    declare @EXISTINGSPOUSE                            bit
    declare @SPOUSE_LASTNAME                        nvarchar(100)
    declare @SPOUSE_FIRSTNAME                        nvarchar(50)
    declare @SPOUSE_MIDDLENAME                        nvarchar(50)
    declare @SPOUSE_MAIDENNAME                        nvarchar(100)
    declare @SPOUSE_NICKNAME                        nvarchar(50)
    declare @SPOUSE_TITLECODEID                        uniqueidentifier
    declare @SPOUSE_SUFFIXCODEID                    uniqueidentifier
    declare @SPOUSE_GENDERCODE                        tinyint
    declare @SPOUSE_GENDERCODEID                    uniqueidentifier
    declare @SPOUSE_BIRTHDATE                        dbo.UDT_FUZZYDATE
    declare @SPOUSE_RECIPROCALTYPECODEID            uniqueidentifier
    declare @SPOUSE_RELATIONSHIPTYPECODEID            uniqueidentifier
    declare @COPYPRIMARYINFORMATION                    bit
    declare @SPOUSE_STARTDATE                        datetime
    declare @PRIMARYRELATIONSHIPEXISTS    bit
    declare @PRIMARYMATCHFACTOR            decimal(5,2)
    declare @RECIPROCALRELATIONSHIPEXISTS bit
    declare @RECIPROCALMATCHFACTOR        decimal(5,2)
    declare @PRIMARYRECOGNITIONTYPECODEID uniqueidentifier 
    declare @RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier

    --Organization variables

    declare @BATCHORGANIZATIONID                    uniqueidentifier
    declare @ORGANIZATIONID                            uniqueidentifier
    declare @EXISTINGORGANIZATION                    bit
    declare @ORGANIZATION_KEYNAME                    nvarchar(100)
    declare @ORGANIZATION_KEYNAMEPREFIX                nvarchar(50)
    declare @ORGANIZATION_ADDRESSTYPECODEID            uniqueidentifier
    declare @ORGANIZATION_COUNTRYID                    uniqueidentifier
    declare @ORGANIZATION_STATEID                    uniqueidentifier
    declare @ORGANIZATION_ADDRESSBLOCK                nvarchar(150)
    declare @ORGANIZATION_CITY                        nvarchar(50)
    declare @ORGANIZATION_POSTCODE                    nvarchar(12)
    declare @ORGANIZATION_DONOTMAIL                    bit
    declare @ORGANIZATION_DONOTMAILREASONCODEID uniqueidentifier

    -- Address Validation

    declare @ORGANIZATION_OMITFROMVALIDATION            bit
    declare @ORGANIZATION_CART                            nvarchar(10)
    declare @ORGANIZATION_DPC                            nvarchar(8)
    declare @ORGANIZATION_LOT                            nvarchar(5)
    declare @ORGANIZATION_COUNTYCODEID                    uniqueidentifier
    declare @ORGANIZATION_CONGRESSIONALDISTRICTCODEID    uniqueidentifier
    declare @ORGANIZATION_LASTVALIDATIONATTEMPTDATE        datetime
    declare @ORGANIZATION_VALIDATIONMESSAGE                nvarchar(200)
    declare @ORGANIZATION_CERTIFICATIONDATA                integer
    declare @ORGANIZATION_PHONETYPECODEID            uniqueidentifier
    declare @ORGANIZATION_NUMBER                    nvarchar(100)
    declare @ORGANIZATION_RECIPROCALTYPECODEID        uniqueidentifier
    declare @ORGANIZATION_RELATIONSHIPTYPECODEID    uniqueidentifier
    declare @ORGANIZATION_STARTDATE                    datetime                        
    declare @ISCONTACT                                bit
    declare @ISPRIMARYCONTACT                        bit
    declare @CONTACTTYPECODEID                        uniqueidentifier
    declare @POSITION                                nvarchar(100)
    declare @ISMATCHINGGIFTRELATIONSHIP                bit
    declare @BATCHHOUSEHOLDID                        uniqueidentifier
    declare @HOUSEHOLDID                            uniqueidentifier
    declare @HOUSEHOLD_NAME                            nvarchar(100)
    declare @ADDSPOUSETOHOUSEHOLD                    bit
    declare @HOUSEHOLDCOPYPRIMARYCONTACTINFO        bit
    declare @ISSPOUSERELATIONSHIP                    bit
    declare @SKIP_ADDING_SITES                        bit
    declare @JOBCATEGORYCODEID                        uniqueidentifier
    declare @CAREERLEVELCODEID                        uniqueidentifier
    declare @PHONE_DONOTCALL                        bit
    declare @EMAILADDRESS_DONOTEMAIL                bit

    declare @ORGANIZATION_PRIMARYRELATIONSHIPEXISTS    bit
    declare @ORGANIZATION_PRIMARYMATCHFACTOR            decimal(5,2)
    declare @ORGANIZATION_RECIPROCALRELATIONSHIPEXISTS bit
    declare @ORGANIZATION_RECIPROCALMATCHFACTOR        decimal(5,2)
    declare @ORGANIZATION_PRIMARYRECOGNITIONTYPECODEID uniqueidentifier 
    declare @ORGANIZATION_RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier
    declare @SKIP_ADDING_NAMEFORMATS bit = 0;

  declare @SITEID uniqueidentifier 
  declare @CONSTITUENTSECURITYGROUPID uniqueidentifier
  declare @CONSTITUENCYCODEID uniqueidentifier
  declare @INFOSOURCECODEID uniqueidentifier
  declare @SPOUSECLASSOF dbo.UDT_YEAR 
  declare @NAMEFORMATS xml
  declare @SETID uniqueidentifier
  -- Create table variable to hold mapping between BATCHREVENUECONSTITUENT.ID and CONSTITUENT.ID

    declare @IDMAPPINGTBL table
    (
        REVENUEBATCHCONSTITUENTID uniqueidentifier,
        CONSTITUENTID uniqueidentifier
    )

    --load

    exec dbo.USP_BATCHREVENUECONSTITUENT_LOAD @BATCHREVENUECONSTITUENTID, @CURRENTAPPUSERID OUTPUT, @ISORGANIZATION OUTPUT, @KEYNAME OUTPUT, @KEYNAMEPREFIX OUTPUT, @FIRSTNAME OUTPUT, @MIDDLENAME OUTPUT, @MAIDENNAME OUTPUT, @NICKNAME OUTPUT, @TITLECODEID OUTPUT, @SUFFIXCODEID OUTPUT, @GENDERCODE OUTPUT, @BIRTHDATE OUTPUT, @ADDRESS_ADDRESSTYPECODEID OUTPUT, @ADDRESS_DONOTMAIL OUTPUT, @ADDRESS_COUNTRYID OUTPUT, @ADDRESS_STATEID OUTPUT, @ADDRESS_ADDRESSBLOCK OUTPUT, @ADDRESS_CITY OUTPUT, @ADDRESS_POSTCODE OUTPUT
                    @ADDRESS_OMITFROMVALIDATION OUTPUT, @ADDRESS_CART OUTPUT, @ADDRESS_DPC OUTPUT, @ADDRESS_LOT OUTPUT, @ADDRESS_COUNTYCODEID OUTPUT, @ADDRESS_CONGRESSIONALDISTRICTCODEID OUTPUT, @ADDRESS_LASTVALIDATIONATTEMPTDATE OUTPUT, @ADDRESS_VALIDATIONMESSAGE OUTPUT, @ADDRESS_CERTIFICATIONDATA OUTPUT, @PHONE_PHONETYPECODEID OUTPUT, @PHONE_NUMBER OUTPUT, @EMAILADDRESS_EMAILADDRESSTYPECODEID OUTPUT,
                    @EMAILADDRESS_EMAILADDRESS OUTPUT, @MARITALSTATUSCODEID OUTPUT, @WEBADDRESS output,@INDUSTRYCODEID output,@NUMEMPLOYEES output,@NUMSUBSIDIARIES output,@PARENTCORPID output, @BATCHSPOUSEID output, null, @SPOUSEID OUTPUT, @EXISTINGSPOUSE OUTPUT, @SPOUSE_LASTNAME OUTPUT, @SPOUSE_FIRSTNAME OUTPUT, @SPOUSE_MIDDLENAME OUTPUT, @SPOUSE_MAIDENNAME OUTPUT, @SPOUSE_NICKNAME OUTPUT, @SPOUSE_TITLECODEID OUTPUT, @SPOUSE_SUFFIXCODEID OUTPUT, @SPOUSE_GENDERCODE OUTPUT, @SPOUSE_BIRTHDATE OUTPUT, @SPOUSE_RECIPROCALTYPECODEID OUTPUT, @SPOUSE_RELATIONSHIPTYPECODEID OUTPUT, @COPYPRIMARYINFORMATION OUTPUT, @SPOUSE_STARTDATE OUTPUT,
                    @PRIMARYRELATIONSHIPEXISTS OUTPUT, @PRIMARYMATCHFACTOR OUTPUT, @RECIPROCALRELATIONSHIPEXISTS OUTPUT, @RECIPROCALMATCHFACTOR OUTPUT, @BATCHORGANIZATIONID OUTPUT, null, @ORGANIZATIONID OUTPUT, @EXISTINGORGANIZATION OUTPUT, @ORGANIZATION_KEYNAME OUTPUT, @ORGANIZATION_KEYNAMEPREFIX OUTPUT, @ORGANIZATION_ADDRESSTYPECODEID OUTPUT, @ORGANIZATION_COUNTRYID OUTPUT, @ORGANIZATION_STATEID OUTPUT, @ORGANIZATION_ADDRESSBLOCK OUTPUT, @ORGANIZATION_CITY OUTPUT, @ORGANIZATION_POSTCODE OUTPUT,
                    @ORGANIZATION_DONOTMAIL OUTPUT, @ORGANIZATION_OMITFROMVALIDATION OUTPUT, @ORGANIZATION_CART OUTPUT, @ORGANIZATION_DPC OUTPUT, @ORGANIZATION_LOT OUTPUT, @ORGANIZATION_COUNTYCODEID OUTPUT, @ORGANIZATION_CONGRESSIONALDISTRICTCODEID OUTPUT, @ORGANIZATION_LASTVALIDATIONATTEMPTDATE OUTPUT, @ORGANIZATION_VALIDATIONMESSAGE OUTPUT, @ORGANIZATION_CERTIFICATIONDATA OUTPUT, @ORGANIZATION_PHONETYPECODEID OUTPUT, @ORGANIZATION_NUMBER OUTPUT, @ORGANIZATION_RECIPROCALTYPECODEID OUTPUT, @ORGANIZATION_RELATIONSHIPTYPECODEID OUTPUT, @ORGANIZATION_STARTDATE OUTPUT, @ISCONTACT OUTPUT, @ISPRIMARYCONTACT OUTPUT, @CONTACTTYPECODEID OUTPUT, @POSITION OUTPUT, @ISMATCHINGGIFTRELATIONSHIP OUTPUT, @ISGROUP OUTPUT, @ISHOUSEHOLD OUTPUT, @GIVESANONYMOUSLY OUTPUT, @GROUPTYPECODE OUTPUT, @GROUPTYPEID OUTPUT, @GROUPDESCRIPTION OUTPUT, @GROUPSTARTDATE OUTPUT, null, null, @NAMEFORMATFUNCTIONID OUTPUT, null, null, null, null, null, null
                    null, null, null, null, null, null, null, null, null, null, null, null, @BATCHHOUSEHOLDID output, @HOUSEHOLDID OUTPUT
                    @HOUSEHOLD_NAME OUTPUT, @ADDSPOUSETOHOUSEHOLD OUTPUT, @HOUSEHOLDCOPYPRIMARYCONTACTINFO OUTPUT, @ISSPOUSERELATIONSHIP OUTPUT, @ADDRESS_DONOTMAILREASONCODEID OUTPUT, @ORGANIZATION_DONOTMAILREASONCODEID OUTPUT, @JOBCATEGORYCODEID output, @CAREERLEVELCODEID output, @PHONE_DONOTCALL output, @EMAILADDRESS_DONOTEMAIL output, @PRIMARYRECOGNITIONTYPECODEID output, @RECIPROCALRECOGNITIONTYPECODEID output,
                    @ORGANIZATION_PRIMARYRELATIONSHIPEXISTS output, @ORGANIZATION_PRIMARYMATCHFACTOR output, @ORGANIZATION_RECIPROCALRELATIONSHIPEXISTS output, @ORGANIZATION_RECIPROCALMATCHFACTOR output, @ORGANIZATION_PRIMARYRECOGNITIONTYPECODEID output, @ORGANIZATION_RECIPROCALRECOGNITIONTYPECODEID output, @SITEID output, @CONSTITUENTSECURITYGROUPID output, @CONSTITUENCYCODEID output, @INFOSOURCECODEID output, @SPOUSECLASSOF output, @NAMEFORMATS output,null,null,@GENDERCODEID output, @SPOUSE_GENDERCODEID output;

    if @ID is null
        set @ID = newid();

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

    set @CURRENTDATE = getdate();

    if @ISORGANIZATION is null
        set @ISORGANIZATION = 0;

    begin try

    -------------- Insert Individual's Information --------------


        if not exists (select 1 from dbo.CONSTITUENT where ID = @BATCHREVENUECONSTITUENTID)
            begin
                insert into dbo.CONSTITUENT
                (
                    [ID],
                    [ISORGANIZATION],
                    [KEYNAME],
                    [KEYNAMEPREFIX],
                    [FIRSTNAME],
                    [MIDDLENAME],
                    [MAIDENNAME],
                    [NICKNAME],
                    [TITLECODEID],
                    [SUFFIXCODEID],
                    [GENDERCODE],
                    [GENDERCODEID],
                    [BIRTHDATE],
                    [MARITALSTATUSCODEID],
                    [WEBADDRESS],
                    [ISGROUP],
                    [GIVESANONYMOUSLY],
                    [ISCONSTITUENT],
                    [ADDEDBYID],
                    [CHANGEDBYID],
                    [DATEADDED],
                    [DATECHANGED]
                )
                values
                (
                    @ID,
                    @ISORGANIZATION,
                    @KEYNAME,
                    @KEYNAMEPREFIX,
                    @FIRSTNAME,
                    @MIDDLENAME,
                    @MAIDENNAME,
                    @NICKNAME,
                    @TITLECODEID,
                    @SUFFIXCODEID,
                    @GENDERCODE,
                    @GENDERCODEID,
                    @BIRTHDATE,
                    @MARITALSTATUSCODEID,
                    @WEBADDRESS,
                    @ISGROUP,
                    @GIVESANONYMOUSLY,
                    1, -- ISCONSTITUENT

                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                );        
            end;
        else
            begin
                set @SKIP_ADDING_SECURITYGROUPS = 1;
                set @SKIP_ADDING_SITES = 1;
                set @SKIP_ADDING_NAMEFORMATS = 1;

                update dbo.CONSTITUENT
                set [ISORGANIZATION] = @ISORGANIZATION,
                    [KEYNAME] = @KEYNAME,
                    [KEYNAMEPREFIX] = @KEYNAMEPREFIX,
                    [FIRSTNAME] = @FIRSTNAME,
                    [MIDDLENAME] = @MIDDLENAME,
                    [MAIDENNAME] = @MAIDENNAME,
                    [NICKNAME] = @NICKNAME,
                    [TITLECODEID] = @TITLECODEID,
                    [SUFFIXCODEID] = @SUFFIXCODEID,
                    [GENDERCODE] = @GENDERCODE,
                    [GENDERCODEID] = @GENDERCODEID,
                    [BIRTHDATE] = @BIRTHDATE,
                    [MARITALSTATUSCODEID] = @MARITALSTATUSCODEID,
                    [WEBADDRESS] = @WEBADDRESS,
                    [ISGROUP] = @ISGROUP,
                    [GIVESANONYMOUSLY] = @GIVESANONYMOUSLY,
                    [ISCONSTITUENT] = 1,
                    [ADDEDBYID] = @CHANGEAGENTID,
                    [CHANGEDBYID] = @CHANGEAGENTID,
                    [DATEADDED] = @CURRENTDATE,
                    [DATECHANGED] = @CURRENTDATE
                where [ID] = @BATCHREVENUECONSTITUENTID;
            end;

      set @UPDATEDRECOGNITIONS = @CURRENTRECOGNITIONS
            exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
              @BATCHREVENUECONSTITUENTID = @BATCHREVENUECONSTITUENTID
              @CONSTITUENTID = @ID
              @CHANGEAGENTID = @CHANGEAGENTID,
              @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
              @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
        @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output

        exec dbo.USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS
              @BATCHREVENUECONSTITUENTID = @BATCHREVENUECONSTITUENTID
              @CONSTITUENTID = @ID
              @CHANGEAGENTID = @CHANGEAGENTID,
              @BATCHREVENUECONSTITUENTACCOUNTID = @BATCHREVENUECONSTITUENTACCOUNTID,
              @CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID output;

        insert into @IDMAPPINGTBL (REVENUEBATCHCONSTITUENTID, CONSTITUENTID)
                values (@BATCHREVENUECONSTITUENTID,@ID )

        /* Start Individual Address */
        if
        (
            (@ADDRESS_STATEID is not null
            or (coalesce(@ADDRESS_ADDRESSBLOCK,'') <> ''
            or (coalesce(@ADDRESS_CITY,'') <> ''
            or (coalesce(@ADDRESS_POSTCODE,'') <> ''
            or (@ADDRESS_ADDRESSTYPECODEID is not null
            or (@ADDRESS_COUNTRYID is not null)
            or (@ADDRESS_DONOTMAIL = 1)
            or (@ADDRESS_DONOTMAILREASONCODEID is not null)
        )
        begin

            declare @ADDRESSID uniqueidentifier;

            select @ADDRESSID = ID 
            from dbo.ADDRESS
            where CONSTITUENTID = @BATCHREVENUECONSTITUENTID and ISPRIMARY = 1;

            if @ADDRESSID is null
                begin
                    set @ADDRESSID = newID();

                    insert into dbo.[ADDRESS]
                    (
                        [ID],
                        [CONSTITUENTID],
                        [ADDRESSTYPECODEID],
                        [ISPRIMARY],
                        [DONOTMAIL],
                        [DONOTMAILREASONCODEID],
                        [COUNTRYID],
                        [STATEID],
                        [ADDRESSBLOCK],
                        [CITY],
                        [POSTCODE],
                        [CART], 
                        [DPC], 
                        [LOT], 
                        [ADDEDBYID],
                        [CHANGEDBYID],
                        [DATEADDED],
                        [DATECHANGED]
                    )
                    values
                    (
                        @ADDRESSID,
                        @ID,
                        @ADDRESS_ADDRESSTYPECODEID,
                        1,
                        @ADDRESS_DONOTMAIL,
                        @ADDRESS_DONOTMAILREASONCODEID,   
                        @ADDRESS_COUNTRYID,
                        @ADDRESS_STATEID,
                        @ADDRESS_ADDRESSBLOCK,
                        @ADDRESS_CITY,
                        @ADDRESS_POSTCODE,
                        @ADDRESS_CART
                        @ADDRESS_DPC
                        @ADDRESS_LOT
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    );    

                    insert into dbo.ADDRESSVALIDATIONUPDATE
                    (
                        [ID],
                        [COUNTYCODEID], 
                        [CONGRESSIONALDISTRICTCODEID], 
                        [LASTVALIDATIONATTEMPTDATE], 
                        [VALIDATIONMESSAGE], 
                        [CERTIFICATIONDATA],
                        [OMITFROMVALIDATION], 
                        [ADDEDBYID],
                        [CHANGEDBYID],
                        [DATEADDED],
                        [DATECHANGED],
            [INFOSOURCECODEID]
                    )
                    values
                    (
                        @ADDRESSID,
                        @ADDRESS_COUNTYCODEID
                        @ADDRESS_CONGRESSIONALDISTRICTCODEID
                        @ADDRESS_LASTVALIDATIONATTEMPTDATE
                        @ADDRESS_VALIDATIONMESSAGE
                        @ADDRESS_CERTIFICATIONDATA,
                        @ADDRESS_OMITFROMVALIDATION,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE,
            @INFOSOURCECODEID
                    );

                end;
            else
                begin
                    update dbo.ADDRESS
                    set [CONSTITUENTID] = @ID,                        
                        [ADDRESSTYPECODEID] = @ADDRESS_ADDRESSTYPECODEID,
                        [ISPRIMARY] = 1,
                        [DONOTMAIL] = @ADDRESS_DONOTMAIL,
                        [DONOTMAILREASONCODEID] = @ADDRESS_DONOTMAILREASONCODEID,
                        [COUNTRYID] = @ADDRESS_COUNTRYID,
                        [STATEID] = @ADDRESS_STATEID,
                        [ADDRESSBLOCK] = @ADDRESS_ADDRESSBLOCK,
                        [CITY] = @ADDRESS_CITY,
                        [POSTCODE] = @ADDRESS_POSTCODE,
                        [CART] = @ADDRESS_CART,
                        [DPC] = @ADDRESS_DPC,
                        [LOT] = @ADDRESS_LOT,
                        [ADDEDBYID] = @CHANGEAGENTID,
                        [CHANGEDBYID] = @CHANGEAGENTID,
                        [DATEADDED] = @CURRENTDATE,
                        [DATECHANGED] = @CURRENTDATE
                    where [ID] = @ADDRESSID;

                    update dbo.ADDRESSVALIDATIONUPDATE
                    set    [COUNTYCODEID] = @ADDRESS_COUNTYCODEID,
                        [CONGRESSIONALDISTRICTCODEID] = @ADDRESS_CONGRESSIONALDISTRICTCODEID,
                        [LASTVALIDATIONATTEMPTDATE] = @ADDRESS_LASTVALIDATIONATTEMPTDATE,
                        [VALIDATIONMESSAGE] = @ADDRESS_VALIDATIONMESSAGE,
                        [CERTIFICATIONDATA] = @ADDRESS_CERTIFICATIONDATA,
                        [OMITFROMVALIDATION] = @ADDRESS_OMITFROMVALIDATION,
                        [ADDEDBYID] = @CHANGEAGENTID,
                        [CHANGEDBYID] = @CHANGEAGENTID,
                        [DATEADDED] = @CURRENTDATE,
                        [DATECHANGED] = @CURRENTDATE
                    where [ID] = @ADDRESSID;        
                end;
        end
        /* End Individual Address */

        /* Start Individual Primary Phone */
        if (@PHONE_PHONETYPECODEID is not null) or (coalesce(@PHONE_NUMBER,'') <> '')
            begin

            declare @PHONEID uniqueidentifier;
            select @PHONEID = ID 
            from dbo.PHONE
            where CONSTITUENTID = @BATCHREVENUECONSTITUENTID and ISPRIMARY = 1;

            declare @PHONE_COUNTRYID uniqueidentifier = @ADDRESS_COUNTRYID;
            if @ADDRESS_COUNTRYID is null
              exec @PHONE_COUNTRYID = dbo.UFN_COUNTRY_GETDEFAULT;

            if @PHONEID is null
                begin
                    insert into dbo.[PHONE]
                    (
                        [CONSTITUENTID],
                        [PHONETYPECODEID],
                        [NUMBER],
                        [ISPRIMARY],
                        [DONOTCALL],
                        [COUNTRYID],
                        [ADDEDBYID],
                        [CHANGEDBYID],
                        [DATEADDED],
                        [DATECHANGED],
            [INFOSOURCECODEID]
                    )
                    values
                    (
                        @ID,
                        @PHONE_PHONETYPECODEID,
                        @PHONE_NUMBER,
                        1,
                        coalesce(@PHONE_DONOTCALL, 0),
                        @PHONE_COUNTRYID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE,
            @INFOSOURCECODEID
                    );
                end;
            else
                begin
                    update dbo.[PHONE]
                    set [CONSTITUENTID] = @ID,
                        [PHONETYPECODEID] = @PHONE_PHONETYPECODEID,
                        [NUMBER] = @PHONE_NUMBER,
                        [ISPRIMARY] = 1,
                        [DONOTCALL] = coalesce(@PHONE_DONOTCALL, 0),
                        [ADDEDBYID] = @CHANGEAGENTID,
                        [CHANGEDBYID] = @CHANGEAGENTID,
                        [DATEADDED] = @CURRENTDATE,
                        [DATECHANGED] = @CURRENTDATE
                    where [ID] = @PHONEID;
                end;            
            end
        /* End Primary Phone */

        /* Start Individual Primary Email Address */
        if (@EMAILADDRESS_EMAILADDRESSTYPECODEID is not null) or (coalesce(@EMAILADDRESS_EMAILADDRESS,'') <> '')
            begin

                declare @EMAILADDRESSID uniqueidentifier;
                select @EMAILADDRESSID = ID 
                from dbo.EMAILADDRESS
                where CONSTITUENTID = @BATCHREVENUECONSTITUENTID and ISPRIMARY = 1;

                if @EMAILADDRESSID is null
                begin
                    insert into dbo.[EMAILADDRESS]
                    (
                        [CONSTITUENTID],
                        [EMAILADDRESSTYPECODEID],
                        [EMAILADDRESS],
                        [ISPRIMARY],
                        [DONOTEMAIL],
                        [ADDEDBYID],
                        [CHANGEDBYID],
                        [DATEADDED],
                        [DATECHANGED],
            [INFOSOURCECODEID]
                    )
                    values
                    (
                        @ID,
                        @EMAILADDRESS_EMAILADDRESSTYPECODEID,
                        @EMAILADDRESS_EMAILADDRESS,
                        1,
                        @EMAILADDRESS_DONOTEMAIL,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE,
            @INFOSOURCECODEID
                    );
                end;
                else
                begin
                    update dbo.[EMAILADDRESS]
                    set [CONSTITUENTID] = @ID,
                        [EMAILADDRESSTYPECODEID] = @EMAILADDRESS_EMAILADDRESSTYPECODEID,
                        [EMAILADDRESS] = @EMAILADDRESS_EMAILADDRESS,
                        [ISPRIMARY] = 1,
                        [DONOTEMAIL] = @EMAILADDRESS_DONOTEMAIL,
                        [ADDEDBYID] = @CHANGEAGENTID,
                        [CHANGEDBYID] = @CHANGEAGENTID,
                        [DATEADDED] = @CURRENTDATE,
                        [DATECHANGED] = @CURRENTDATE
                    where [ID] = @EMAILADDRESSID;
                end;
            end
        /* End Primary Email Address */

        if @CONSTITUENTSECURITYGROUPID is null
            begin
            /* Start security groups*/
            if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0
                begin                        
                    exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
                            @APPUSERID = @CURRENTAPPUSERID,
                            @DATAFORMTEMPLATEID = '9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                            @CONSTITUENTID  = @ID,
                            @DATEADDEDTOUSE = @CURRENTDATE,
                            @CHANGEAGENTID = @CHANGEAGENTID;                
                end
            /* End security groups*/
     end
     else
     begin
                if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0
                    insert into dbo.CONSTIT_SECURITY_ATTRIBUTE_ASSIGNMENT(DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID, CONSTITUENTID, CONSTIT_SECURITY_ATTRIBUTEID)
                    select 
                        @CURRENTDATE,
                        @CURRENTDATE,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @ID,
                        @CONSTITUENTSECURITYGROUPID
     end

    if @SITEID is null
    begin
        /* Start sites*/
        if coalesce(@SKIP_ADDING_SITES,0) = 0
            begin                        
                exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
                        @APPUSERID = @CURRENTAPPUSERID,
                        @DATAFORMTEMPLATEID = '9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                        @CONSTITUENTID  = @ID,
                        @DATEADDEDTOUSE = @CURRENTDATE,
                        @CHANGEAGENTID = @CHANGEAGENTID;                
            end
        /* End sites*/
    end
    else
    begin
    if coalesce(@SKIP_ADDING_SITES,0) = 0
        insert into dbo.CONSTITUENTSITE
                (
                    DATEADDED,
                    DATECHANGED,
                    ADDEDBYID,
                    CHANGEDBYID,
                    CONSTITUENTID,
                    SITEID
                )
                select 
                    @CURRENTDATE,
                    @CURRENTDATE,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @ID,
                    @SITEID
    end

  /*Adding constituencies*/
  if @CONSTITUENCYCODEID is not null
    begin
        declare @CONSTITUENCYTABLE as dbo.UDT_CONSTITUENTUPDATEBATCH_CONSTITUENCY

        insert into @CONSTITUENCYTABLE
        (
            ID, CONSTITUENCYCODEID, DATEFROM, DATETO, ORIGINALCONSTITUENCYID
        )
        values (newid(), @CONSTITUENCYCODEID, dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE), null, null)

      exec dbo.USP_CONSTITUENTUPDATEBATCH_ADDCONSTITUENCIES @CONSTITUENCYTABLE, @ID, null, @CHANGEAGENTID;    
    end

  /*Adding infosource code*/
  if @INFOSOURCECODEID is not null
    exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @ID, @CHANGEAGENTID, @INFOSOURCECODEID, null;


        if @SKIP_ADDING_NAMEFORMATS = 0 begin
            /*Add name formats with values*/
            if @ISORGANIZATION = 0 and @ISGROUP = 0 begin
                exec dbo.USP_CONSTITUENTUPDATEBATCH_ADDUPDATENAMEFORMATS @ID, @NAMEFORMATS, @CHANGEAGENTID, @CURRENTDATE;

                insert into [dbo].[NAMEFORMAT] (
                    [CONSTITUENTID],
                    [NAMEFORMATTYPECODEID],
                    [NAMEFORMATFUNCTIONID],
                    [ADDEDBYID],
                    [CHANGEDBYID],
                    [DATEADDED],
                    [DATECHANGED],
                    [PRIMARYADDRESSEE],
                    [PRIMARYSALUTATION]
                )
                select
                    @ID,
                    NFD.NAMEFORMATTYPECODEID,
                    NFD.NAMEFORMATFUNCTIONID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE,
                    NFD.PRIMARYADDRESSEE,
                    NFD.PRIMARYSALUTATION
                from
                    dbo.NAMEFORMATDEFAULT as NFD
                where
                    NFD.APPLYTOCODE = 0 and 
                    NFD.NAMEFORMATTYPECODEID not in (select NAMEFORMATTYPECODEID from dbo.UFN_BATCHCONSTITUENTUPDATE_GETNAMEFORMATS_FROMITEMLISTXML(@NAMEFORMATS));
            end;

            /*End name format defaults*/
        end;

        if @ISORGANIZATION != 0
            begin
                if @INDUSTRYCODEID is not null
                    or @PARENTCORPID is not null
                    or @PARENTCORPID is not null
                    or @NUMEMPLOYEES != 0
                    or @NUMSUBSIDIARIES != 0
                        insert into dbo.ORGANIZATIONDATA
                        (
                            ID,
                            INDUSTRYCODEID,
                            NUMEMPLOYEES,
                            NUMSUBSIDIARIES,
                            PARENTCORPID,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        values
                        (
                            @ID,
                            @INDUSTRYCODEID,
                            @NUMEMPLOYEES,
                            @NUMSUBSIDIARIES,
                            @PARENTCORPID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        );

            if @PARENTCORPID is not null
              exec dbo.USP_RELATIONSHIPS_CREATEPARENTORGRELATIONSHIP  @ID, @PARENTCORPID,@CURRENTDATE,@CHANGEAGENTID,@CURRENTDATE,1,null
            end;
        else
            begin

                if @ISGROUP != 0
                    begin
                        insert into dbo.GROUPDATA
                        (
                            ID,
                            GROUPTYPECODE,
                            GROUPTYPEID,
                            DESCRIPTION,
                            STARTDATE,
                            NAMEFORMATFUNCTIONID,
                            ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                        )
                        values
                        (
                            @ID,
                            @GROUPTYPECODE,
                            @GROUPTYPEID,
                            @GROUPDESCRIPTION,
                            @GROUPSTARTDATE,
                            @NAMEFORMATFUNCTIONID,
                            @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                        );

                        -- Handle group's members


                        declare @GROUPMEMBER_PRIMARYRELATIONSHIPEXISTS1    bit
                        declare @GROUPMEMBER_PRIMARYMATCHFACTOR1            decimal(5,2)
                        declare @GROUPMEMBER_RECIPROCALRELATIONSHIPEXISTS1 bit
                        declare @GROUPMEMBER_RECIPROCALMATCHFACTOR1        decimal(5,2)
                        declare @GROUPMEMBER_PRIMARYRECOGNITIONTYPECODEID1 uniqueidentifier 
                        declare @GROUPMEMBER_RECIPROCALRECOGNITIONTYPECODEID1 uniqueidentifier
                        declare @GROUPMEMBER_STARTDATE1                    datetime        
                        declare @GROUPMEMBER_RELATIONID1 uniqueidentifier
                        declare @GROUPMEMBER_CONSTITUENTID1 uniqueidentifier
                        declare @GROUPMEMBER_PRIMARYRELATIONSHIPEXISTS2    bit
                        declare @GROUPMEMBER_PRIMARYMATCHFACTOR2            decimal(5,2)
                        declare @GROUPMEMBER_RECIPROCALRELATIONSHIPEXISTS2 bit
                        declare @GROUPMEMBER_RECIPROCALMATCHFACTOR2        decimal(5,2)
                        declare @GROUPMEMBER_PRIMARYRECOGNITIONTYPECODEID2 uniqueidentifier 
                        declare @GROUPMEMBER_RECIPROCALRECOGNITIONTYPECODEID2 uniqueidentifier
                        declare @GROUPMEMBER_STARTDATE2                    datetime
                        declare @GROUPMEMBER_RELATIONID2 uniqueidentifier
                        declare @GROUPMEMBER_CONSTITUENTID2 uniqueidentifier

                        declare GROUPMEMBERCURSOR cursor local fast_forward for
                        select C.ID, C.EXISTINGCONSTITUENTID, GM.ISPRIMARY, GM.COPYGROUPCONTACTINFOTOMEMBER
                        from dbo.BATCHREVENUECONSTITUENT C
                        inner join dbo.BATCHREVENUECONSTITUENTGROUPMEMBER GM on C.ID = GM.MEMBERID
                        where GM.GROUPID = @BATCHREVENUECONSTITUENTID

                        open GROUPMEMBERCURSOR

                        declare @BATCHREVENUEMEMBERID uniqueidentifier, @EXISTINGMEMBERID uniqueidentifier, @ISPRIMARY bit, @COPYGROUPPRIMARYCONTACTINFO bit
                        fetch next from GROUPMEMBERCURSOR into @BATCHREVENUEMEMBERID, @EXISTINGMEMBERID, @ISPRIMARY, @COPYGROUPPRIMARYCONTACTINFO

                        while @@FETCH_STATUS = 0
                        begin
                            if @EXISTINGMEMBERID is null
                            begin
                                set @EXISTINGMEMBERID = newid()

                                exec dbo.USP_REVENUEBATCH_CONSTITUENT_ADD
                                    @ID = @EXISTINGMEMBERID output,
                                    @CHANGEAGENTID = @CHANGEAGENTID,
                                    @BATCHREVENUECONSTITUENTID = @BATCHREVENUEMEMBERID,
                                    @BYPASSINDIVIDUALHOUSEHOLDADD = @ISHOUSEHOLD,
                                    @BYPASSINDIVIDUALSPOUSEADD = @ISHOUSEHOLD,
                                    @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                                    @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output;
                            end

                            declare @GROUPMEMBERID uniqueidentifier
                            set @GROUPMEMBERID = newid()                                            
                            insert into dbo.GROUPMEMBER
                            (
                                ID,
                                GROUPID,
                                MEMBERID,
                                ISPRIMARY,
                                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                            )
                            values
                            (
                                @GROUPMEMBERID,
                                @ID,
                                @EXISTINGMEMBERID,
                                0,
                                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                            )

                            insert into dbo.GROUPMEMBERDATERANGE
                            (
                                ID,
                                GROUPMEMBERID,
                                DATEFROM,
                                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                            )
                            values
                            (
                                newid(),
                                @GROUPMEMBERID,
                                null,
                                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                            )

                            -- Update ISPRIMARY value rather than inserting since

                            -- the GROUPMEMBERDATERANGE record needs to exist before ISPRIMARY

                            -- can be true

                            if @ISPRIMARY = 1
                                begin
                                    update dbo.GROUPMEMBER
                                    set
                                        ISPRIMARY = 1,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = getdate()
                                    where
                                        ID = @GROUPMEMBERID;

                                    exec dbo.USP_GROUP_COPYPHONE @ID, @EXISTINGMEMBERID, @PHONE_NUMBER, @CHANGEAGENTID;
                                end

                            if @COPYGROUPPRIMARYCONTACTINFO = 1
                                exec dbo.USP_CONSTITUENT_COPYPRIMARYCONTACTINFO @CHANGEAGENTID, @ID, @EXISTINGMEMBERID

                            insert into @IDMAPPINGTBL (REVENUEBATCHCONSTITUENTID, CONSTITUENTID)
                            values (@BATCHREVENUEMEMBERID, @EXISTINGMEMBERID)

                            exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGUREFORREVENUEBATCH @EXISTINGMEMBERID, @CHANGEAGENTID

                      set @GROUPMEMBER_RELATIONID1 = null
                      set @GROUPMEMBER_CONSTITUENTID1 = null

                      select 
                                            @GROUPMEMBER_PRIMARYRELATIONSHIPEXISTS1=R.PRIMARYRELATIONSHIPEXISTS,
                                            @GROUPMEMBER_PRIMARYMATCHFACTOR1=R.PRIMARYMATCHFACTOR,
                                            @GROUPMEMBER_RECIPROCALRELATIONSHIPEXISTS1=R.RECIPROCALRELATIONSHIPEXISTS,
                                            @GROUPMEMBER_RECIPROCALMATCHFACTOR1=R.RECIPROCALMATCHFACTOR,
                                            @GROUPMEMBER_PRIMARYRECOGNITIONTYPECODEID1=R.PRIMARYRECOGNITIONTYPECODEID,
                                            @GROUPMEMBER_RECIPROCALRECOGNITIONTYPECODEID1=R.RECIPROCALRECOGNITIONTYPECODEID,
                                            @GROUPMEMBER_STARTDATE1=R.STARTDATE,
                      @GROUPMEMBER_RELATIONID1 =C.ID
                                            from dbo.BATCHREVENUECONSTITUENTRELATION R
                      inner join dbo.BATCHREVENUECONSTITUENT C on R.RELATIONID=C.ID
                                            where R.CONSTITUENTID = @BATCHREVENUEMEMBERID

                      if not @GROUPMEMBER_RELATIONID1 is null
                      begin
                        select @GROUPMEMBER_CONSTITUENTID1 = IDM.CONSTITUENTID from @IDMAPPINGTBL IDM where IDM.REVENUEBATCHCONSTITUENTID=@GROUPMEMBER_RELATIONID1

                        if not @GROUPMEMBER_CONSTITUENTID1 is null
                          exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @EXISTINGMEMBERID, @GROUPMEMBER_CONSTITUENTID1,
                                                        @GROUPMEMBER_STARTDATE1, NULL, @GROUPMEMBER_PRIMARYRELATIONSHIPEXISTS1, @GROUPMEMBER_PRIMARYMATCHFACTOR1,
                                                        @GROUPMEMBER_PRIMARYRECOGNITIONTYPECODEID1, @GROUPMEMBER_RECIPROCALRELATIONSHIPEXISTS1
                                                        @GROUPMEMBER_RECIPROCALMATCHFACTOR1, @GROUPMEMBER_RECIPROCALRECOGNITIONTYPECODEID1, @CHANGEAGENTID, 0;
                      end

                      set @GROUPMEMBER_RELATIONID2 = null
                      set @GROUPMEMBER_CONSTITUENTID2 = null

                          select 
                                            @GROUPMEMBER_PRIMARYRELATIONSHIPEXISTS2=R.PRIMARYRELATIONSHIPEXISTS,
                                            @GROUPMEMBER_PRIMARYMATCHFACTOR2=R.PRIMARYMATCHFACTOR,
                                            @GROUPMEMBER_RECIPROCALRELATIONSHIPEXISTS2=R.RECIPROCALRELATIONSHIPEXISTS,
                                            @GROUPMEMBER_RECIPROCALMATCHFACTOR2=R.RECIPROCALMATCHFACTOR,
                                            @GROUPMEMBER_PRIMARYRECOGNITIONTYPECODEID2=R.PRIMARYRECOGNITIONTYPECODEID,
                                            @GROUPMEMBER_RECIPROCALRECOGNITIONTYPECODEID2=R.RECIPROCALRECOGNITIONTYPECODEID,
                                            @GROUPMEMBER_STARTDATE2=R.STARTDATE,
                      @GROUPMEMBER_RELATIONID2 =C.ID
                                            from dbo.BATCHREVENUECONSTITUENTRELATION R
                      inner join dbo.BATCHREVENUECONSTITUENT C on R.CONSTITUENTID=C.ID
                                            where R.RELATIONID = @BATCHREVENUEMEMBERID

                      if not @GROUPMEMBER_RELATIONID2 is null
                      begin
                        select @GROUPMEMBER_CONSTITUENTID2 = IDM.CONSTITUENTID from @IDMAPPINGTBL IDM where IDM.REVENUEBATCHCONSTITUENTID = @GROUPMEMBER_RELATIONID2

                        if not @GROUPMEMBER_CONSTITUENTID2 is null
                          exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @GROUPMEMBER_CONSTITUENTID2, @EXISTINGMEMBERID
                                                        @GROUPMEMBER_STARTDATE2, NULL, @GROUPMEMBER_PRIMARYRELATIONSHIPEXISTS2, @GROUPMEMBER_PRIMARYMATCHFACTOR2,
                                                        @GROUPMEMBER_PRIMARYRECOGNITIONTYPECODEID2, @GROUPMEMBER_RECIPROCALRELATIONSHIPEXISTS2
                                                        @GROUPMEMBER_RECIPROCALMATCHFACTOR2, @GROUPMEMBER_RECIPROCALRECOGNITIONTYPECODEID2, @CHANGEAGENTID, 0;
                      end

                                            fetch next from GROUPMEMBERCURSOR into @BATCHREVENUEMEMBERID, @EXISTINGMEMBERID, @ISPRIMARY, @COPYGROUPPRIMARYCONTACTINFO
                                        end

                                        --When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long

                                        close GROUPMEMBERCURSOR;
                                        deallocate GROUPMEMBERCURSOR;

                                        -- Create relationships between group members                                        

                                        insert into dbo.RELATIONSHIP
                                        (
                                            ID,
                                            RELATIONSHIPCONSTITUENTID,
                                            RECIPROCALCONSTITUENTID,
                                            RELATIONSHIPTYPECODEID,
                                            RECIPROCALTYPECODEID,
                                            STARTDATE,
                                            ISSPOUSE,
                                            ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                                        )
                                        select
                                            newid(),
                                            RELATIONSHIPCONSTITUENT.CONSTITUENTID,
                                            RECIPROCALCONSTITUENT.CONSTITUENTID,
                                            R.RELATIONSHIPTYPECODEID,
                                            R.RECIPROCALTYPECODEID,
                                            R.STARTDATE,                      
                                            R.ISSPOUSE,
                                            @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                        from dbo.BATCHREVENUECONSTITUENTRELATION R
                                        -- Joining to @IDMAPPINGTBL ensures that only the added group members are inserted and 

                                        -- the BATCHREVENUEECONSTITUENT IDs can be mapped to CONSTITUENT IDs

                                        inner join @IDMAPPINGTBL RELATIONSHIPCONSTITUENT on R.CONSTITUENTID = RELATIONSHIPCONSTITUENT.REVENUEBATCHCONSTITUENTID
                                        inner join @IDMAPPINGTBL RECIPROCALCONSTITUENT on R.RELATIONID = RECIPROCALCONSTITUENT.REVENUEBATCHCONSTITUENTID


                                        -- Recalculate the household name if it is dynamically named

                                        if @NAMEFORMATFUNCTIONID is not null
                                            update dbo.CONSTITUENT
                                                set CONSTITUENT.KEYNAME = left(dbo.UFN_NAMEFORMAT_FROMID(GD.NAMEFORMATFUNCTIONID, PM.MEMBERID), 100),
                                                    CONSTITUENT.[CHANGEDBYID] = @CHANGEAGENTID,
                                                    CONSTITUENT.[DATECHANGED] = @CURRENTDATE
                                                from dbo.GROUPDATA GD
                                                    inner join dbo.GROUPMEMBER PM on GD.ID = PM.GROUPID and PM.ISPRIMARY <> 0
                                                where CONSTITUENT.ID = @ID and GD.ID = @ID and GD.NAMEFORMATFUNCTIONID is not null
                                    end
                                else
                                    begin
            -------------- Insert Spouse's Information --------------

            declare @ISSPOUSE        bit
            declare @RELATIONSHIPID    uniqueidentifier

            if (@SPOUSEID is not null)
                set @EXISTINGSPOUSE = 1

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

            -- Have matching factor makes sense only when relationship exists

            if @PRIMARYRELATIONSHIPEXISTS = 0
            begin
                set @PRIMARYMATCHFACTOR = 0;
                set @PRIMARYRECOGNITIONTYPECODEID = null;
            end

            if @RECIPROCALRELATIONSHIPEXISTS = 0
            begin
                set @RECIPROCALMATCHFACTOR = 0;
                set @RECIPROCALRECOGNITIONTYPECODEID = null;
            end

            --If there is a spouse create the relationship

            if @ISSPOUSE = 1 and @BYPASSINDIVIDUALSPOUSEADD = 0
                begin

                    if @RELATIONSHIPID is null
                            set @RELATIONSHIPID = newid();

                    --If you are creating a new spouse make new constituent entry

                    if @EXISTINGSPOUSE = 0
                        begin                                        
                            if @SPOUSEID is null
                                set @SPOUSEID = newid();

                            ---------Spouse Constituent Information---------

                            insert into dbo.CONSTITUENT
                            (
                                [ID],
                                [ISORGANIZATION],
                                [KEYNAME],
                                [FIRSTNAME],
                                [MIDDLENAME],
                                [MAIDENNAME],
                                [NICKNAME],
                                [TITLECODEID],
                                [SUFFIXCODEID],
                                [GENDERCODE],
                                [GENDERCODEID],
                                [BIRTHDATE],
                                [PICTURE],
                                [PICTURETHUMBNAIL],
                                [WEBADDRESS],
                                [MARITALSTATUSCODEID],
                                [ISCONSTITUENT],
                                [ADDEDBYID],
                                [CHANGEDBYID],
                                [DATEADDED],
                                [DATECHANGED]
                            )
                            values
                            (
                                @SPOUSEID,
                                0,
                                @SPOUSE_LASTNAME,
                                @SPOUSE_FIRSTNAME,
                                @SPOUSE_MIDDLENAME,
                                @SPOUSE_MAIDENNAME,
                                @SPOUSE_NICKNAME,
                                @SPOUSE_TITLECODEID,
                                @SPOUSE_SUFFIXCODEID,
                                @SPOUSE_GENDERCODE,
                                @SPOUSE_GENDERCODEID,
                                @SPOUSE_BIRTHDATE,
                                null,
                                null,
                                '',
                                @MARITALSTATUSCODEID,
                                1, -- ISCONSTITUENT

                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            );

                            exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
                                @BATCHREVENUECONSTITUENTID = @BATCHSPOUSEID
                                @CONSTITUENTID = @SPOUSEID
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                                @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
                                @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output;

                            insert into @IDMAPPINGTBL (REVENUEBATCHCONSTITUENTID, CONSTITUENTID)
                            values (@BATCHSPOUSEID,@SPOUSEID )

                            exec dbo.USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS
                                @BATCHREVENUECONSTITUENTID = @BATCHSPOUSEID
                                @CONSTITUENTID = @SPOUSEID
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @BATCHREVENUECONSTITUENTACCOUNTID = @BATCHREVENUECONSTITUENTACCOUNTID,
                                @CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID output;

                            /* Start security groups*/                                    
                            if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0
                                begin


                                    exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
                                            @APPUSERID =@CURRENTAPPUSERID,
                                            @DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                                            @CONSTITUENTID  =@SPOUSEID,
                                            @DATEADDEDTOUSE =@CURRENTDATE,
                                            @CHANGEAGENTID = @CHANGEAGENTID;                                                                                                                                                


                                end                                    
                            /* End security groups*/

                            /* Start sites*/
                            if coalesce(@SKIP_ADDING_SITES,0) = 0
                                begin                        
                                    exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
                                            @APPUSERID =@CURRENTAPPUSERID,
                                            @DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                                            @CONSTITUENTID  =@SPOUSEID,
                                            @DATEADDEDTOUSE =@CURRENTDATE,
                                            @CHANGEAGENTID = @CHANGEAGENTID;                                                                                                                                                


                                end
                            /* End sites*/

                            /*Start name format defaults*/
                            INSERT INTO [dbo].[NAMEFORMAT]
                                ([CONSTITUENTID]
                                ,[NAMEFORMATTYPECODEID]
                                ,[NAMEFORMATFUNCTIONID]
                                ,[ADDEDBYID]
                                ,[CHANGEDBYID]
                                ,[DATEADDED]
                                ,[DATECHANGED]
                                ,[PRIMARYADDRESSEE]
                                ,[PRIMARYSALUTATION])
                            SELECT
                                @SPOUSEID
                                ,NFD.NAMEFORMATTYPECODEID
                                ,NFD.NAMEFORMATFUNCTIONID
                                ,@CHANGEAGENTID
                                ,@CHANGEAGENTID
                                ,@CURRENTDATE
                                ,@CURRENTDATE
                                ,NFD.PRIMARYADDRESSEE
                                ,NFD.PRIMARYSALUTATION
                            FROM dbo.NAMEFORMATDEFAULT as NFD
                            WHERE (NFD.APPLYTOCODE = 0)
                            /*End name format defaults*/

              /*Adding infosource code*/
              if @INFOSOURCECODEID is not null
                exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @SPOUSEID, @CHANGEAGENTID, @INFOSOURCECODEID, null;
              /*End infosource code*/
                        end
                    else
                        begin
                            exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
                                @BATCHREVENUECONSTITUENTID = @BATCHSPOUSEID
                                @CONSTITUENTID = @SPOUSEID
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                                @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
                                @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output;
                        end

                    declare @EXISTINGID uniqueidentifier                                                                        
                    set @EXISTINGID = null

                    if @COPYPRIMARYINFORMATION = 1
                        begin

                            /* Start Spouse Address */
                            if 
                            (
                                (@ADDRESS_STATEID is not null
                                or (coalesce(@ADDRESS_ADDRESSBLOCK,'') <> ''
                                or (coalesce(@ADDRESS_CITY,'') <> ''
                                or (coalesce(@ADDRESS_POSTCODE,'') <> ''
                                or (@ADDRESS_ADDRESSTYPECODEID is not null
                                or (@ADDRESS_COUNTRYID is not null)
                                or (@ADDRESS_DONOTMAIL = 1)
                                or (@ADDRESS_DONOTMAILREASONCODEID is not null)
                            )
                                begin

                                if exists (select ID from dbo.ADDRESS where CONSTITUENTID = @SPOUSEID and ISPRIMARY = 1)
                                    update dbo.ADDRESS
                                    set
                                        ISPRIMARY = 0
                                    where
                                        CONSTITUENTID = @SPOUSEID and
                                        ISPRIMARY = 1

                                select
                                    @EXISTINGID = ID 
                                from
                                    dbo.ADDRESS
                                where
                                    CONSTITUENTID = @SPOUSEID and
                                    ADDRESSTYPECODEID = @ADDRESS_ADDRESSTYPECODEID and
                                    DONOTMAIL = @ADDRESS_DONOTMAIL and
                                    DONOTMAILREASONCODEID = @ADDRESS_DONOTMAILREASONCODEID and
                                    COUNTRYID = @ADDRESS_COUNTRYID and
                                    STATEID = @ADDRESS_STATEID and
                                    ADDRESSBLOCK = @ADDRESS_ADDRESSBLOCK and 
                                    CITY = @ADDRESS_CITY and
                                    POSTCODE = @ADDRESS_POSTCODE

                                if @EXISTINGID is null
                                begin
                                    declare @SPOUSE_ADDRESSID uniqueidentifier;
                                    set @SPOUSE_ADDRESSID = newID();

                                    insert into dbo.ADDRESS
                                    (ID, CONSTITUENTID,ADDRESSTYPECODEID,ISPRIMARY,DONOTMAIL,DONOTMAILREASONCODEID,COUNTRYID,STATEID,ADDRESSBLOCK,CITY,POSTCODE, CART, DPC, LOT, ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                                    values
                                    (@SPOUSE_ADDRESSID, @SPOUSEID,@ADDRESS_ADDRESSTYPECODEID,1,@ADDRESS_DONOTMAIL,@ADDRESS_DONOTMAILREASONCODEID,@ADDRESS_COUNTRYID,@ADDRESS_STATEID,@ADDRESS_ADDRESSBLOCK,@ADDRESS_CITY,@ADDRESS_POSTCODE, @ADDRESS_CART, @ADDRESS_DPC, @ADDRESS_LOT, @CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE)

                                    insert into dbo.ADDRESSVALIDATIONUPDATE
                                    (ID, OMITFROMVALIDATION, COUNTYCODEID, CONGRESSIONALDISTRICTCODEID, LASTVALIDATIONATTEMPTDATE, VALIDATIONMESSAGE, CERTIFICATIONDATA, ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED, INFOSOURCECODEID)            
                                    values
                                    (@SPOUSE_ADDRESSID, @ADDRESS_OMITFROMVALIDATION, @ADDRESS_COUNTYCODEID, @ADDRESS_CONGRESSIONALDISTRICTCODEID, @ADDRESS_LASTVALIDATIONATTEMPTDATE, @ADDRESS_VALIDATIONMESSAGE, @ADDRESS_CERTIFICATIONDATA, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @INFOSOURCECODEID)
                                end
                                else
                                    update dbo.ADDRESS
                                    set
                                        ISPRIMARY = 1
                                    where
                                        ID = @EXISTINGID

                                -- Remove blank address if one was created when adding an individual (no contact info entered creates blank address)

                                declare @BLANKADDRESSID uniqueidentifier

                                select
                                    @BLANKADDRESSID = ID
                                from
                                    dbo.ADDRESS
                                where
                                    CONSTITUENTID = @SPOUSEID and
                                    ADDRESSTYPECODEID is null and
                                    DONOTMAIL = 0 and
                                    STARTDATE = 0000 and
                                    ENDDATE = 0000 and
                                    STATEID is null and
                                    ADDRESSBLOCK = '' and 
                                    CITY = '' and
                                    POSTCODE = '' and
                                    CART = '' and 
                                    DPC = '' and
                                    LOT = '' and
                                    ISPRIMARY = 0

                                if @BLANKADDRESSID is not null
                                    delete from dbo.ADDRESS
                                    where ID = @BLANKADDRESSID
                            end    
                            /* End Spouse Address */

                            /* Start Spouse Primary Phone */
                            set @EXISTINGID = null

                            if (@PHONE_PHONETYPECODEID is not null) or (coalesce(@PHONE_NUMBER,'') <> '')
                                begin
                                    if exists (select ID from dbo.PHONE where CONSTITUENTID = @SPOUSEID and ISPRIMARY = 1)
                                        update dbo.PHONE
                                        set
                                            ISPRIMARY = 0
                                        where
                                            CONSTITUENTID = @SPOUSEID and
                                            ISPRIMARY = 1

                                    select
                                        @EXISTINGID = ID
                                    from
                                        dbo.PHONE
                                    where
                                        CONSTITUENTID = @SPOUSEID and
                                        PHONETYPECODEID = @PHONE_PHONETYPECODEID and
                                        NUMBER = @PHONE_NUMBER

                                    if @EXISTINGID is null
                                        insert into dbo.PHONE
                                        (CONSTITUENTID,PHONETYPECODEID,NUMBER,ISPRIMARY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,INFOSOURCECODEID)
                                        values
                                        (@SPOUSEID,@PHONE_PHONETYPECODEID,@PHONE_NUMBER,1,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@INFOSOURCECODEID)
                                    else
                                        update dbo.PHONE
                                        set
                                            ISPRIMARY = 1
                                        where
                                            ID = @EXISTINGID
                                end
                            /* End Spouse Primary Phone */

                            /* Start Spouse Primary Email Address */
                            set @EXISTINGID = null

                            if (@EMAILADDRESS_EMAILADDRESSTYPECODEID is not null) or (coalesce(@EMAILADDRESS_EMAILADDRESS,'') <> '')
                                begin
                                    if exists (select ID from dbo.EMAILADDRESS where CONSTITUENTID = @SPOUSEID and ISPRIMARY = 1)
                                        update dbo.EMAILADDRESS
                                        set
                                            ISPRIMARY = 0
                                        where
                                            CONSTITUENTID = @SPOUSEID and
                                            ISPRIMARY = 1

                                    select
                                        @EXISTINGID = ID
                                    from
                                        dbo.EMAILADDRESS
                                    where
                                        CONSTITUENTID = @SPOUSEID and
                                        EMAILADDRESSTYPECODEID = @EMAILADDRESS_EMAILADDRESSTYPECODEID and
                                        EMAILADDRESS = @EMAILADDRESS_EMAILADDRESS

                                    if @EXISTINGID is null
                                        insert into dbo.EMAILADDRESS
                                        (CONSTITUENTID,EMAILADDRESSTYPECODEID,EMAILADDRESS,ISPRIMARY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,INFOSOURCECODEID)
                                        values
                                        (@SPOUSEID,@EMAILADDRESS_EMAILADDRESSTYPECODEID,@EMAILADDRESS_EMAILADDRESS,1,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@INFOSOURCECODEID)        
                                    else
                                        update dbo.EMAILADDRESS
                                        set
                                            ISPRIMARY = 1
                                        where
                                            ID = @EXISTINGID
                                end
                            /* End Spouse Email Address */
                        end

                    ---------Spouse Relationship---------


                    -- Only create the relationship if the relationship types are set.

                    -- It's possible that the BATCHREVENUECONSTITUENTRELATIONSHIP entry

                    -- exists to indicate the spouse constituent but no relationship 

                    -- should actually be created.

                    if @SPOUSE_RELATIONSHIPTYPECODEID is not null and @SPOUSE_RECIPROCALTYPECODEID is not null
                    begin
                        set @SETID = newid();

                        insert into dbo.RELATIONSHIPSET
                        (
                            ID,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        values
                        (
                            @SETID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        );

                        insert into dbo.RELATIONSHIP
                        (
                            ID,
                            RELATIONSHIPCONSTITUENTID,
                            RECIPROCALCONSTITUENTID,
                            RELATIONSHIPTYPECODEID,
                            RECIPROCALTYPECODEID,
                            ISSPOUSE,
                            STARTDATE,
                            RELATIONSHIPSETID,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        values
                        (
                            @RELATIONSHIPID,
                            @ID,
                            @SPOUSEID,
                            @SPOUSE_RELATIONSHIPTYPECODEID,
                            @SPOUSE_RECIPROCALTYPECODEID,
                            @ISSPOUSERELATIONSHIP,
                            @SPOUSE_STARTDATE,
                            @SETID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        );

                        exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE @ID, @SPOUSEID, @SPOUSE_RELATIONSHIPTYPECODEID, @SPOUSE_RECIPROCALTYPECODEID, @CHANGEAGENTID, @CURRENTDATE

                        exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @ID, @SPOUSEID,
                            @SPOUSE_STARTDATE, NULL, @PRIMARYRELATIONSHIPEXISTS, @PRIMARYMATCHFACTOR,
                            @PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALRELATIONSHIPEXISTS
                            @RECIPROCALMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;

                        if @ISSPOUSERELATIONSHIP = 1
                            exec dbo.USP_MARRIAGEOPTIONS_APPLYRULES @ID, @SPOUSEID, @CHANGEAGENTID, @CURRENTDATE;

                    end

                    if @ISSPOUSERELATIONSHIP = 1 and not exists (select ID from dbo.DISABLEDWEALTHUPDATES where ID = @SPOUSEID)
                        insert into dbo.DISABLEDWEALTHUPDATES
                        (
                            ID,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        values
                        (
                            @SPOUSEID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        )


                end
              declare @EXISTINGHOUSEHOLDID uniqueidentifier
        -- check to see if the user's spouse already belongs to a household

        if @SPOUSEID is not null
        begin
          declare @p2 bit
          set @p2=1

          set @EXISTINGHOUSEHOLDID=NULL
          exec dbo.USP_DATAFORMTEMPLATE_VIEW_INDIVIDUALSPOUSEHOUSEHOLD @ID=@SPOUSEID,@DATALOADED=@p2 output,@HOUSEHOLDID=@EXISTINGHOUSEHOLDID output

          if @EXISTINGHOUSEHOLDID is not null
            set @HOUSEHOLDID = @EXISTINGHOUSEHOLDID
        end


                -- Insert individual's household if needed

                if @BYPASSINDIVIDUALHOUSEHOLDADD = 0 and (@HOUSEHOLDID is not null or coalesce(@HOUSEHOLD_NAME, '') <> '')
                begin
                    if @HOUSEHOLDID is null
                    begin
                        set @HOUSEHOLDID = newid()

                        insert into dbo.CONSTITUENT
                        (
                            [ID],
                            [ISGROUP],
                            [KEYNAME],
                            [ISCONSTITUENT],
                            [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED]
                        )
                        values
                        (
                            @HOUSEHOLDID,
                            1, -- ISGROUP

                            @HOUSEHOLD_NAME,
                            1, -- ISCONSTITUENT

                            @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                        );

                        exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
                            @BATCHREVENUECONSTITUENTID = @BATCHHOUSEHOLDID
                            @CONSTITUENTID = @HOUSEHOLDID
                            @CHANGEAGENTID = @CHANGEAGENTID,
                            @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                            @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
                            @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output;

                        exec dbo.USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS
                            @BATCHREVENUECONSTITUENTID = @BATCHHOUSEHOLDID
                            @CONSTITUENTID = @HOUSEHOLDID
                            @CHANGEAGENTID = @CHANGEAGENTID,
                            @BATCHREVENUECONSTITUENTACCOUNTID = @BATCHREVENUECONSTITUENTACCOUNTID,
                            @CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID output;

                        insert into dbo.GROUPDATA
                        (
                            [ID],
                            [GROUPTYPECODE],
                            [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED]
                        )
                        values
                        (
                            @HOUSEHOLDID,
                            0, -- Indicates group is a household

                            @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                        )

                        /* Start security groups*/                                    
                        if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0
                            begin
                                exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
                                        @APPUSERID =@CURRENTAPPUSERID,
                                        @DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                                        @CONSTITUENTID  =@HOUSEHOLDID,
                                        @DATEADDEDTOUSE =@CURRENTDATE,
                                        @CHANGEAGENTID = @CHANGEAGENTID;
                            end                                    
                        /* End security groups*/        

                        /* Start sites*/
                        if coalesce(@SKIP_ADDING_SITES,0) = 0
                            begin                        
                                exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
                                        @APPUSERID =@CURRENTAPPUSERID,
                                        @DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                                        @CONSTITUENTID  =@HOUSEHOLDID,
                                        @DATEADDEDTOUSE =@CURRENTDATE,
                                        @CHANGEAGENTID = @CHANGEAGENTID;                                                                                                                                                


                            end
                        /* End sites*/

            /*Adding infosource code*/
            if @INFOSOURCECODEID is not null
                exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @HOUSEHOLDID, @CHANGEAGENTID, @INFOSOURCECODEID, null;
            /*End infosource code*/
                    end
                else
                    begin
                        exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
                            @BATCHREVENUECONSTITUENTID = @BATCHHOUSEHOLDID
                            @CONSTITUENTID = @HOUSEHOLDID
                            @CHANGEAGENTID = @CHANGEAGENTID,
                            @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                            @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
                            @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output;                    
                    end

                    exec dbo.USP_GROUPMEMBERADD null, @CHANGEAGENTID, @HOUSEHOLDID, @ID

                    if @HOUSEHOLDCOPYPRIMARYCONTACTINFO = 1
                        exec dbo.USP_CONSTITUENT_COPYPRIMARYCONTACTINFO @CHANGEAGENTID, @ID, @HOUSEHOLDID

                    if @ADDSPOUSETOHOUSEHOLD = 1 and @EXISTINGHOUSEHOLDID is null
                          exec dbo.USP_GROUPMEMBERADD null, @CHANGEAGENTID, @HOUSEHOLDID, @SPOUSEID
                end
            end

            -------------- Insert Organization Information --------------

            declare @HASBUSINESS bit
            set @RELATIONSHIPID = null

            if (@ORGANIZATIONID is not null)
                set @EXISTINGORGANIZATION = 1

            if (@ORGANIZATIONID is not null) or (coalesce(@ORGANIZATION_KEYNAME,'') <> '')
                set @HASBUSINESS = 1
            else
                set @HASBUSINESS = 0

            if @ORGANIZATION_PRIMARYRELATIONSHIPEXISTS = 0
            begin
                set @ORGANIZATION_PRIMARYMATCHFACTOR = 0;
                set @ORGANIZATION_PRIMARYRECOGNITIONTYPECODEID = null;
            end

            if @ORGANIZATION_RECIPROCALRELATIONSHIPEXISTS = 0
            begin
                set @ORGANIZATION_RECIPROCALMATCHFACTOR = 0;
                set @ORGANIZATION_RECIPROCALRECOGNITIONTYPECODEID = null;
            end     

            --If their is an organization create the relationship

            if @HASBUSINESS = 1
                begin

                    if @RELATIONSHIPID is null
                        set @RELATIONSHIPID = newid();

                    --if you are creating a new organization make a new constituent entry

                    if @EXISTINGORGANIZATION = 0
                        begin

                            if @ORGANIZATIONID is null
                                set @ORGANIZATIONID = newid();

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

                            insert into dbo.CONSTITUENT
                            (
                                [ID],
                                [ISORGANIZATION],
                                [KEYNAME],                                                
                                [KEYNAMEPREFIX],
                                [ISCONSTITUENT],
                                [ADDEDBYID],
                                [CHANGEDBYID],
                                [DATEADDED],
                                [DATECHANGED]
                            )
                            values
                            (
                                @ORGANIZATIONID,
                                -1, -- ISORGANIZATION

                                @ORGANIZATION_KEYNAME,                                                
                                @ORGANIZATION_KEYNAMEPREFIX,
                                1, -- ISCONSTITUENT

                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            );

                            exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
                                @BATCHREVENUECONSTITUENTID = @BATCHORGANIZATIONID
                                @CONSTITUENTID = @ORGANIZATIONID
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                                @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
                                @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output;        

                            exec dbo.USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS
                                @BATCHREVENUECONSTITUENTID = @BATCHORGANIZATIONID
                                @CONSTITUENTID = @ORGANIZATIONID
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @BATCHREVENUECONSTITUENTACCOUNTID = @BATCHREVENUECONSTITUENTACCOUNTID,
                                @CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID output;                

                            /*Start Primary Address */
                            if 
                            (
                                (@ORGANIZATION_STATEID is not null
                                or (coalesce(@ORGANIZATION_ADDRESSBLOCK,'') <> ''
                                or (coalesce(@ORGANIZATION_CITY,'') <> ''
                                or (coalesce(@ORGANIZATION_POSTCODE,'') <> ''
                                or (@ORGANIZATION_ADDRESSTYPECODEID is not null
                                or (@ORGANIZATION_COUNTRYID is not null)
                                or (@ORGANIZATION_DONOTMAIL = 1)
                                or (@ORGANIZATION_DONOTMAILREASONCODEID is not null)
                            )
                            begin

                                declare @ORGANIZATION_ADDRESSID uniqueidentifier;
                                set @ORGANIZATION_ADDRESSID = newID();

                                insert into dbo.ADDRESS
                                (
                                    ID,
                                    CONSTITUENTID,
                                    ADDRESSTYPECODEID,
                                    ISPRIMARY,
                                    DONOTMAIL,
                                    DONOTMAILREASONCODEID,
                                    COUNTRYID,
                                    STATEID,
                                    ADDRESSBLOCK,
                                    CITY,
                                    POSTCODE,
                                    CART, 
                                    DPC,
                                    LOT, 
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values
                                (
                                    @ORGANIZATION_ADDRESSID,
                                    @ORGANIZATIONID,
                                    @ORGANIZATION_ADDRESSTYPECODEID,
                                    1,
                                    @ORGANIZATION_DONOTMAIL,
                                    @ORGANIZATION_DONOTMAILREASONCODEID,             
                                    @ORGANIZATION_COUNTRYID,
                                    @ORGANIZATION_STATEID,
                                    @ORGANIZATION_ADDRESSBLOCK,
                                    @ORGANIZATION_CITY,
                                    @ORGANIZATION_POSTCODE,
                                    @ORGANIZATION_CART
                                    @ORGANIZATION_DPC
                                    @ORGANIZATION_LOT
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );

                                insert into dbo.ADDRESSVALIDATIONUPDATE
                                (
                                    ID,
                                    COUNTYCODEID, 
                                    CONGRESSIONALDISTRICTCODEID, 
                                    LASTVALIDATIONATTEMPTDATE, 
                                    VALIDATIONMESSAGE, 
                                    CERTIFICATIONDATA,
                                    OMITFROMVALIDATION,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values
                                (
                                    @ORGANIZATION_ADDRESSID,
                                    @ORGANIZATION_COUNTYCODEID
                                    @ORGANIZATION_CONGRESSIONALDISTRICTCODEID
                                    @ORGANIZATION_LASTVALIDATIONATTEMPTDATE
                                    @ORGANIZATION_VALIDATIONMESSAGE
                                    @ORGANIZATION_CERTIFICATIONDATA,
                                    @ORGANIZATION_OMITFROMVALIDATION
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );
                            end
                            /* End Primary Address */

                            /*Start Primary Phone */

                            if (@ORGANIZATION_PHONETYPECODEID is not null) or (coalesce(@ORGANIZATION_NUMBER,'') <> '')
                                insert into dbo.PHONE
                                (
                                    CONSTITUENTID,
                                    PHONETYPECODEID,
                                    NUMBER,
                                    ISPRIMARY,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values
                                (
                                    @ORGANIZATIONID,
                                    @ORGANIZATION_PHONETYPECODEID,
                                    @ORGANIZATION_NUMBER,
                                    1,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );

                            /*End Primary Phone */


                            /*Start security groups*/
                            if COALESCE(@SKIP_ADDING_SECURITYGROUPS,0) = 0
                                begin


                                    exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
                                            @APPUSERID =@CURRENTAPPUSERID,
                                            @DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                                            @CONSTITUENTID  =@ORGANIZATIONID,
                                            @DATEADDEDTOUSE =@CURRENTDATE,
                                            @CHANGEAGENTID = @CHANGEAGENTID;                                                                                                                                                


                                end
                            /*end security groups*/

                            /* Start sites*/
                            if coalesce(@SKIP_ADDING_SITES,0) = 0
                                begin                        
                                    exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
                                            @APPUSERID =@CURRENTAPPUSERID,
                                            @DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
                                            @CONSTITUENTID  =@ORGANIZATIONID,
                                            @DATEADDEDTOUSE =@CURRENTDATE,
                                            @CHANGEAGENTID = @CHANGEAGENTID;                                                                                                                                                


                                end
                            /* End sites*/                                                

                        end
                    else
                        begin
                            exec dbo.USP_REVENUEBATCH_CONSTITUENT_UPDATEIDS 
                            @BATCHREVENUECONSTITUENTID = @BATCHORGANIZATIONID
                            @CONSTITUENTID = @ORGANIZATIONID
                            @CHANGEAGENTID = @CHANGEAGENTID,
                            @CURRENTRECOGNITIONS = @UPDATEDRECOGNITIONS,
                            @UPDATEDRECOGNITIONS = @UPDATEDRECOGNITIONS output,
                            @UPDATEDAPPLICATIONRECOGNITIONS = @UPDATEDAPPLICATIONRECOGNITIONS output;    
                        end


                    ---------Organization Relationship---------

                    if @ISMATCHINGGIFTRELATIONSHIP = 1
                        update
                            dbo.RELATIONSHIP
                        set
                            ISMATCHINGGIFTRELATIONSHIP = 0,
                            DATECHANGED = @CURRENTDATE,
                            CHANGEDBYID = @CHANGEAGENTID
                        where
                            RELATIONSHIPCONSTITUENTID = @ID and
                            RECIPROCALCONSTITUENTID = @ORGANIZATIONID and
                            ISMATCHINGGIFTRELATIONSHIP = 1;

                    set @SETID = newid();

                    insert into dbo.RELATIONSHIPSET
                    (
                        ID,
                        ADDEDBYID,
                        CHANGEDBYID,
                        DATEADDED,
                        DATECHANGED
                    )
                    values
                    (
                        @SETID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    );

                    insert into dbo.RELATIONSHIP
                    (
                        ID,
                        RELATIONSHIPCONSTITUENTID,
                        RECIPROCALCONSTITUENTID,
                        RELATIONSHIPTYPECODEID,
                        RECIPROCALTYPECODEID,
                        ISCONTACT,
                        ISPRIMARYCONTACT,
                        CONTACTTYPECODEID,
                        STARTDATE,                                            
                        POSITION,
                        ISPRIMARYBUSINESS,
                        ISMATCHINGGIFTRELATIONSHIP,
                        RELATIONSHIPSETID,
                        ADDEDBYID,
                        CHANGEDBYID,
                        DATEADDED,
                        DATECHANGED
                    )
                    values
                    (
                        @RELATIONSHIPID,
                        @ID,
                        @ORGANIZATIONID,
                        @ORGANIZATION_RELATIONSHIPTYPECODEID,
                        @ORGANIZATION_RECIPROCALTYPECODEID,
                        @ISCONTACT,
                        @ISPRIMARYCONTACT,
                        @CONTACTTYPECODEID,
                        @ORGANIZATION_STARTDATE,                                            
                        '',
                        1,
                        @ISMATCHINGGIFTRELATIONSHIP,
                        @SETID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    );

                    exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE @ID, @ORGANIZATIONID, @ORGANIZATION_RELATIONSHIPTYPECODEID, @ORGANIZATION_RECIPROCALTYPECODEID, @CHANGEAGENTID, @CURRENTDATE

                    exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @ID, @ORGANIZATIONID,
                       @ORGANIZATION_STARTDATE, NULL, @ORGANIZATION_PRIMARYRELATIONSHIPEXISTS, @ORGANIZATION_PRIMARYMATCHFACTOR,
                       @ORGANIZATION_PRIMARYRECOGNITIONTYPECODEID, @ORGANIZATION_RECIPROCALRELATIONSHIPEXISTS
                       @ORGANIZATION_RECIPROCALMATCHFACTOR, @ORGANIZATION_RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;

                    if (@JOBCATEGORYCODEID is not null) or 
                       (@CAREERLEVELCODEID is not null) or
                       (len(@POSITION) > 0)

                        insert into dbo.RELATIONSHIPJOBINFO
                        (
                            RELATIONSHIPSETID,
                            JOBTITLE,
                            JOBCATEGORYCODEID,
                            CAREERLEVELCODEID,
                            STARTDATE,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        values
                        (
                            @SETID,
                            @POSITION,
                            @JOBCATEGORYCODEID,
                            @CAREERLEVELCODEID,
                            @ORGANIZATION_STARTDATE,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        )
                end
            end;    

            set @IDMAPPING =
                (
                    select REVENUEBATCHCONSTITUENTID, CONSTITUENTID
                    from @IDMAPPINGTBL
                    for xml raw('ITEM'), type, elements, root('IDMAPPING'), BINARY BASE64
                )
    end try


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

    return 0;

end;