USP_GLOBALCHANGE_ADDORCHANGEEVENTREGISTRATIONOPTION

Parameters

Parameter Parameter Type Mode Description
@SOURCEEVENT uniqueidentifier IN
@SOURCEREGISTRATIONOPTION uniqueidentifier IN
@SELECTEDEVENTSFORUPDATE xml IN
@SELECTEDREGISTRATIONOPTIONSFORUPDATE xml IN
@SELECTIONOPTIONFORUPDATE smallint IN
@CHANGEAGENTID uniqueidentifier IN
@ASOF datetime IN
@NUMBERADDED int INOUT
@NUMBEREDITED int INOUT
@NUMBERDELETED int INOUT
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_GLOBALCHANGE_ADDORCHANGEEVENTREGISTRATIONOPTION
(
    @SOURCEEVENT uniqueidentifier,
    @SOURCEREGISTRATIONOPTION uniqueidentifier,
    @SELECTEDEVENTSFORUPDATE xml = null,
    @SELECTEDREGISTRATIONOPTIONSFORUPDATE xml = null,
    @SELECTIONOPTIONFORUPDATE smallint,
    @CHANGEAGENTID uniqueidentifier = null,
    @ASOF as datetime = null
    @NUMBERADDED int = 0 output,
    @NUMBEREDITED int = 0 output,
    @NUMBERDELETED int = 0 output,
    @CURRENTAPPUSERID uniqueidentifier = null
)
as            
    set nocount off;

    declare @CURRENTDATE datetime,
          @ISERROR int,
          @ERRORTEXT nvarchar(max),
          @Count int
          @Index int,
          @EventID uniqueidentifier,
                @EventPriceID uniqueidentifier

  declare @EventsThatAlreadyHaveOptionsWithThisName table(ID int identity(1,1), EventID uniqueidentifier, EventName nvarchar(max))
  declare @EventsThatHaveAnEarlierStartDate table(ID int identity(1,1), EventID uniqueidentifier, EventName nvarchar(max))
  declare @EventsThatHaveALowerGroupMemberLimit table(ID int identity(1,1), EventID uniqueidentifier, EventName nvarchar(max))
  declare @EventInfo table(ID int identity(1,1), EventID uniqueidentifier, EventName nvarchar(max))

  declare @EVENTREGISTRATIONTYPEID uniqueidentifier,
          @REGISTRATIONCOUNT int,  
          @NAME nvarchar(100),  
          @DESCRIPTION nvarchar(1000),  
          @ISNOTAVAILABLEONLINEREG bit,    
          @ISREGTYPEAVAILABLEINDIVIDUAL bit,    
          @ISREGTYPEAVAILABLEFAMILYMEMBER bit,    
          @ISREGTYPEAVAILABLEHEADHOUSEHOLD bit,  
          @ISREGTYPEAVAILABLETEAMMEMBER bit,  
          @ISREGTYPEAVAILABLETEAMLEADER bit,  
          @ISREGTYPEAVAILABLECOMPANYLEADER bit,  
          @AMOUNT money,  
          @RECEIPTAMOUNT money,  
          @EARLYREGISTRATIONDATE datetime,  
          @LATEFEEDATE datetime,  
          @EARLYREGISTRATIONDISCOUNT money,  
          @LATEFEE money,  
          @MINFUNDRAISING money,  
          @ISNOTLOWERFUNDRAISING bit,  
          @PARTICIPANTMUSTPAYBALANCE bit,  
          @PARTICIPANTPAYSBALANCEMESSAGE nvarchar(1000),  
          @RECRUITEMENT int,  
          @ISNOTLOWERRECRUITEMENT bit,  
          @VOLUNTEERRECRUITEMENT int,  
          @ISNOTLOWERVOLUNTEERRECRUITEMENT bit,  
          @DONORRETENTION decimal(6,3),  
          @ISNOTLOWERDONORRETENTION bit,  
          @UNIT int,  
          @ISNOTLOWERUNIT bit,  
          @COMMUNICATIONS int,  
          @ISNOTLOWERCOMMUNICATION bit,  
          @LABELFORUNIT nvarchar(50),  
          @TARGETFUNDRAISING money,  
          @ISNOTLOWERTARGETFUNDRAISING bit,  
          @TEAMMINFUNDRAISING money,  
          @TEAMISNOTLOWERFUNDRAISING bit,  
          @TEAMRECRUITEMENT int,  
          @TEAMISNOTLOWERRECRUITEMENT bit,  
          @TEAMMEMBERS int,  
          @ISNOTLOWERTEAMMEMBERS bit,  
          @TEAMVOLUNTEERRECRUITEMENT int,  
          @ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL bit,  
          @TEAMMEMBERRETENTION decimal(6,3),  
          @ISNOTLOWERTEAMMEMBERRETENTION bit,  
          @TEAMUNIT int,  
          @TEAMISNOTLOWERUNIT bit,  
          @TEAMCOMMUNICATIONS int,  
          @TEAMSNOTLOWERCOMMUNICATION bit,  
          @TEAMLABELFORUNIT nvarchar(50),  
          @COMPANYMINFUNDRAISING money,  
          @COMPANYISNOTLOWERFUNDRAISING bit,  
          @COMPANYRECRUITEMENT int,  
          @COMPANYISNOTLOWERRECRUITEMENT bit,  
          @TEAMS int,  
          @ISNOTLOWERTEAMS bit,  
          @COMPANYCOMMUNICATIONS int,  
          @COMPANYISNOTLOWERCOMMUNICATION bit,     
          @TEAMRETENTION decimal(6,3),  
          @ISNOTLOWERTEAMRETENTION bit,  
          @COMPANYVOLUNTEERRECRUITEMENT int,  
          @COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT bit,  
          @COMPANYTEAMMEMBERS int,  
          @COMPANYISNOTLOWERTEAMMEMBERS bit,  
          @COMPANYUNIT int,  
          @COMPANYISNOTLOWERUNIT bit,     
          @COMPANYTEAMMEMBERRETENTION decimal(6,3),  
          @COMPANYISNOTLOWERTEAMMEMBERRETENTION bit,  
          @COMPANYLABELFORUNIT nvarchar(50),  
          @HOUSEHOLDMINFUNDRAISING money,  
          @HOUSEHOLDISNOTLOWERFUNDRAISING bit,  
          @HOUSEHOLDPARTICIPANTMUSTPAYBALANCE bit,  
          @HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE nvarchar(1000),  
          @HOUSEHOLDRECRUITEMENT int,  
          @HOUSEHOLDISNOTLOWERRECRUITEMENT bit,  
          @HOUSEHOLDVOLUNTEERRECRUITEMENT int,  
          @HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT int,  
          @HOUSEHOLDDONORRETENTION decimal(6,3),  
          @HOUSEHOLDISNOTLOWERDONORRETENTION bit,  
          @HOUSEHOLDUNIT int,  
          @HOUSEHOLDISNOTLOWERUNIT bit,  
          @HOUSEHOLDCOMMUNICATIONS int,  
          @HOUSEHOLDISNOTLOWERCOMMUNICATION bit,  
          @HOUSEHOLDLABELFORUNIT nvarchar(50),  
          @HOUSEHOLDTARGETFUNDRAISING money,  
          @HOUSEHOLDISNOTLOWERTARGETFUNDRAISING bit,  
          @MAXQUANTITY int,  
          @TURNONWAITLIST bit,  
          @DISPLAYSPOTSAVAILABLE bit,  
          @SENDEVENTCONTACTALERTMAXREACHED bit,  
          @WAITLISTMESSAGE nvarchar(1000),      
          @MINIMUMAGE varchar(5),  
          @MAXIMUMAGE varchar(5),  
          @INDIVIDUALSFUNDRAISE bit,  
          @HOUSEHOLDSFUNDRAISE bit,  
          @TEAMSFUNDRAISE bit,  
          @COMPANIESFUNDRAISE bit,  
          @BENEFITS xml,   
          @ALLOWPARTICIPANTSWAIVEBENEFITS bit,  
          @CURRENTREGISTRATIONCOUNT int,  
          @PRIORYEAREVENTID uniqueidentifier,  
          @HOUSEHOLDMEMBERS int,  
          @HOUSEHOLDISNOTLOWERTEAMMEMBERS bit,  
          @HOUSEHOLDMEMBERRETENTION decimal(6,3),  
          @HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION bit

    set @CURRENTDATE = getdate();
    set @ISERROR = 0;
  set @NUMBERADDED = 0;
    set @NUMBEREDITED = 0;
    set @NUMBERDELETED = 0

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

      if @SOURCEREGISTRATIONOPTION is not null
          begin
              exec USP_DATAFORMTEMPLATE_EDITLOAD_FAFREGISTRATIONTYPE @ID = @SOURCEREGISTRATIONOPTION,
                                @EVENTREGISTRATIONTYPEID = @EVENTREGISTRATIONTYPEID output,
                                @REGISTRATIONCOUNT = @REGISTRATIONCOUNT output,  
                                @NAME = @NAME output,
                                @DESCRIPTION = @DESCRIPTION output,
                                @ISNOTAVAILABLEONLINEREG = @ISNOTAVAILABLEONLINEREG output,    
                                @ISREGTYPEAVAILABLEINDIVIDUAL = @ISREGTYPEAVAILABLEINDIVIDUAL output,
                                @ISREGTYPEAVAILABLEFAMILYMEMBER = @ISREGTYPEAVAILABLEFAMILYMEMBER output,
                                @ISREGTYPEAVAILABLEHEADHOUSEHOLD = @ISREGTYPEAVAILABLEHEADHOUSEHOLD output,                                
                                @ISREGTYPEAVAILABLETEAMMEMBER = @ISREGTYPEAVAILABLETEAMMEMBER output,
                                @ISREGTYPEAVAILABLETEAMLEADER = @ISREGTYPEAVAILABLETEAMLEADER output,
                                @ISREGTYPEAVAILABLECOMPANYLEADER = @ISREGTYPEAVAILABLECOMPANYLEADER output,
                                @AMOUNT= @AMOUNT output,
                                @RECEIPTAMOUNT = @RECEIPTAMOUNT output,
                                @EARLYREGISTRATIONDATE = @EARLYREGISTRATIONDATE output,
                                @LATEFEEDATE = @LATEFEEDATE output,
                                @EARLYREGISTRATIONDISCOUNT = @EARLYREGISTRATIONDISCOUNT output,  
                                @LATEFEE = @LATEFEE output,  
                                @MINFUNDRAISING = @MINFUNDRAISING output,  
                                @ISNOTLOWERFUNDRAISING = @ISNOTLOWERFUNDRAISING output,  
                                @PARTICIPANTMUSTPAYBALANCE = @PARTICIPANTMUSTPAYBALANCE output,  
                                @PARTICIPANTPAYSBALANCEMESSAGE = @PARTICIPANTPAYSBALANCEMESSAGE output,  
                                @RECRUITEMENT = @RECRUITEMENT output,  
                               @ISNOTLOWERRECRUITEMENT = @ISNOTLOWERRECRUITEMENT output,
                                @VOLUNTEERRECRUITEMENT = @VOLUNTEERRECRUITEMENT output,  
                                @ISNOTLOWERVOLUNTEERRECRUITEMENT = @ISNOTLOWERVOLUNTEERRECRUITEMENT output,  
                                @DONORRETENTION = @DONORRETENTION output,  
                                @ISNOTLOWERDONORRETENTION = @ISNOTLOWERDONORRETENTION output,  
                                @UNIT = @UNIT output,  
                                @ISNOTLOWERUNIT = @ISNOTLOWERUNIT output,  
                                @COMMUNICATIONS = @COMMUNICATIONS output,  
                                @ISNOTLOWERCOMMUNICATION = @ISNOTLOWERCOMMUNICATION output,  
                                @LABELFORUNIT = @LABELFORUNIT output,  
                                @TARGETFUNDRAISING = @TARGETFUNDRAISING output,  
                                @ISNOTLOWERTARGETFUNDRAISING = @ISNOTLOWERTARGETFUNDRAISING output,  
                                @TEAMMINFUNDRAISING = @TEAMMINFUNDRAISING output,  
                                @TEAMISNOTLOWERFUNDRAISING = @TEAMISNOTLOWERFUNDRAISING output,  
                                @TEAMRECRUITEMENT = @TEAMRECRUITEMENT output,  
                                @TEAMISNOTLOWERRECRUITEMENT = @TEAMISNOTLOWERRECRUITEMENT output,  
                                @TEAMMEMBERS = @TEAMMEMBERS output,  
                                @ISNOTLOWERTEAMMEMBERS = @ISNOTLOWERTEAMMEMBERS output,
                                @TEAMVOLUNTEERRECRUITEMENT = @TEAMVOLUNTEERRECRUITEMENT output,  
                                @ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL = @ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL output,  
                                @TEAMMEMBERRETENTION = @TEAMMEMBERRETENTION output,  
                                @ISNOTLOWERTEAMMEMBERRETENTION = @ISNOTLOWERTEAMMEMBERRETENTION output,  
                                @TEAMUNIT = @TEAMUNIT output,  
                                @TEAMISNOTLOWERUNIT = @TEAMISNOTLOWERUNIT output,  
                                @TEAMCOMMUNICATIONS = @TEAMCOMMUNICATIONS output,  
                                @TEAMSNOTLOWERCOMMUNICATION = @TEAMSNOTLOWERCOMMUNICATION output,  
                                @TEAMLABELFORUNIT = @TEAMLABELFORUNIT output,  
                                @COMPANYMINFUNDRAISING = @COMPANYMINFUNDRAISING output,  
                                @COMPANYISNOTLOWERFUNDRAISING = @COMPANYISNOTLOWERFUNDRAISING output,  
                                @COMPANYRECRUITEMENT = @COMPANYRECRUITEMENT output,  
                                @COMPANYISNOTLOWERRECRUITEMENT = @COMPANYISNOTLOWERRECRUITEMENT output,  
                                @TEAMS = @TEAMS output,
                                @ISNOTLOWERTEAMS = @ISNOTLOWERTEAMS output,  
                                @COMPANYCOMMUNICATIONS = @COMPANYCOMMUNICATIONS output,  
                                @COMPANYISNOTLOWERCOMMUNICATION = @COMPANYISNOTLOWERCOMMUNICATION output,     
                                @TEAMRETENTION = @TEAMRETENTION output,  
                                @ISNOTLOWERTEAMRETENTION = @ISNOTLOWERTEAMRETENTION output,  
                                @COMPANYVOLUNTEERRECRUITEMENT = @COMPANYVOLUNTEERRECRUITEMENT output,  
                                @COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT = @COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT output,  
                                @COMPANYTEAMMEMBERS = @COMPANYTEAMMEMBERS output,  
                                @COMPANYISNOTLOWERTEAMMEMBERS = @COMPANYISNOTLOWERTEAMMEMBERS output,  
                                @COMPANYUNIT = @COMPANYUNIT output,  
                                @COMPANYISNOTLOWERUNIT = @COMPANYISNOTLOWERUNIT output,     
                                @COMPANYTEAMMEMBERRETENTION = @COMPANYTEAMMEMBERRETENTION output,  
                                @COMPANYISNOTLOWERTEAMMEMBERRETENTION = @COMPANYISNOTLOWERTEAMMEMBERRETENTION output,  
                                @COMPANYLABELFORUNIT = @COMPANYLABELFORUNIT output,  
                                @HOUSEHOLDMINFUNDRAISING = @HOUSEHOLDMINFUNDRAISING output,  
                                @HOUSEHOLDISNOTLOWERFUNDRAISING = @HOUSEHOLDISNOTLOWERFUNDRAISING output,  
                                @HOUSEHOLDPARTICIPANTMUSTPAYBALANCE = @HOUSEHOLDPARTICIPANTMUSTPAYBALANCE output,  
                                @HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE = @HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE output,  
                                @HOUSEHOLDRECRUITEMENT = @HOUSEHOLDRECRUITEMENT output,  
                                @HOUSEHOLDISNOTLOWERRECRUITEMENT = @HOUSEHOLDISNOTLOWERRECRUITEMENT output,  
                                @HOUSEHOLDVOLUNTEERRECRUITEMENT = @HOUSEHOLDVOLUNTEERRECRUITEMENT output,  
                                @HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT = @HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT output,
                                @HOUSEHOLDDONORRETENTION = @HOUSEHOLDDONORRETENTION output,  
                                @HOUSEHOLDISNOTLOWERDONORRETENTION = @HOUSEHOLDISNOTLOWERDONORRETENTION output,  
                                @HOUSEHOLDUNIT = @HOUSEHOLDUNIT output,  
                                @HOUSEHOLDISNOTLOWERUNIT = @HOUSEHOLDISNOTLOWERUNIT output,  
                                @HOUSEHOLDCOMMUNICATIONS = @HOUSEHOLDCOMMUNICATIONS output,  
                                @HOUSEHOLDISNOTLOWERCOMMUNICATION = @HOUSEHOLDISNOTLOWERCOMMUNICATION output,  
                                @HOUSEHOLDLABELFORUNIT = @HOUSEHOLDLABELFORUNIT output,  
                                @HOUSEHOLDTARGETFUNDRAISING = @HOUSEHOLDTARGETFUNDRAISING output,  
                                @HOUSEHOLDISNOTLOWERTARGETFUNDRAISING = @HOUSEHOLDISNOTLOWERTARGETFUNDRAISING output,  
                                @MAXQUANTITY = @MAXQUANTITY output,  
                                @TURNONWAITLIST = @TURNONWAITLIST output,  
                                @DISPLAYSPOTSAVAILABLE = @DISPLAYSPOTSAVAILABLE output,  
                                @SENDEVENTCONTACTALERTMAXREACHED = @SENDEVENTCONTACTALERTMAXREACHED output,  
                                @WAITLISTMESSAGE = @WAITLISTMESSAGE output,      
                                @MINIMUMAGE = @MINIMUMAGE output,  
                                @MAXIMUMAGE = @MAXIMUMAGE output,  
                                @INDIVIDUALSFUNDRAISE = @INDIVIDUALSFUNDRAISE output,  
                                @HOUSEHOLDSFUNDRAISE = @HOUSEHOLDSFUNDRAISE output,  
                                @TEAMSFUNDRAISE = @TEAMSFUNDRAISE output,  
                                @COMPANIESFUNDRAISE = @COMPANIESFUNDRAISE output,  
                                @BENEFITS = @BENEFITS output,   
                                @ALLOWPARTICIPANTSWAIVEBENEFITS = @ALLOWPARTICIPANTSWAIVEBENEFITS output,  
                                @CURRENTREGISTRATIONCOUNT = @CURRENTREGISTRATIONCOUNT output,  
                                @PRIORYEAREVENTID = @PRIORYEAREVENTID output,  
                                @HOUSEHOLDMEMBERS = @HOUSEHOLDMEMBERS output,  
                                @HOUSEHOLDISNOTLOWERTEAMMEMBERS = @HOUSEHOLDISNOTLOWERTEAMMEMBERS output,  
                                @HOUSEHOLDMEMBERRETENTION = @HOUSEHOLDMEMBERRETENTION output,  
                                @HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION = @HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION output

                                SET @CURRENTREGISTRATIONCOUNT = 0;
                                SET @MINIMUMAGE = ISNULL(@MINIMUMAGE, 0)
                                SET @MAXIMUMAGE = ISNULL(@MAXIMUMAGE, 0)

                                --reget @benefits    
                                set @BENEFITS= (select [BENEFITID], [NAME], [DETAILS], '00000000-0000-0000-0000-000000000000', [QUANTITY], [TOTALVALUE], [UNITVALUE], DEDUCTIBLEUNITVALUE, DEDUCTIBLEVALUE                            
                                                 FROM dbo.UFN_REGISTRATION_GETBENEFITS(@SOURCEREGISTRATIONOPTION)
                                                 for xml raw('ITEM'),type,elements,root('BENEFITS'),BINARY BASE64)
    end

    begin tran                
        begin try
            if @SELECTIONOPTIONFORUPDATE =1 --add to selected events
                begin
                      insert into @EventInfo(EventID)
                      SELECT EVENTID FROM (SELECT T.c.value('(EVENTID)[1]','uniqueidentifier') AS 'EVENTID'
            FROM @SELECTEDEVENTSFORUPDATE.nodes('/SELECTEDEVENTSFORUPDATE/ITEM') T(c)) XMLTABLE
            WHERE exists(
                select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(XMLTABLE.EVENTID) EVENTSITE
                where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 
                  or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'800093A6-B727-490B-8CC4-C0C0CF2148F0',20
                  where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)) )
                )                 

                      select @Count = COUNT(*),@Index = 1 from @EventInfo 

            insert into @EventsThatAlreadyHaveOptionsWithThisName(EventID, EventName)
            Select EP.EventID, E.Name
            from dbo.EVENTPRICE EP
            JOIN Event E on E.ID = EP.EventID
            Where EP.Name=@NAME and EP.EVENTID in (Select EventID from @EventInfo)

            select @ISERROR = Count(*) from @EventsThatAlreadyHaveOptionsWithThisName

            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventsThatAlreadyHaveOptionsWithThisName
              RAISERROR ('Your updates could not be processed because registration option names must be unique for each event. A registration option named ?%s? already exists for the following events: %s. To continue, please remove or rename the existing registration option in these events. Or you can remove these events from your update to continue.', 11, 1, @NAME, @ERRORTEXT);
            end

            insert into @EventsThatHaveAnEarlierStartDate(EventID, EventName)
            Select E.ID, E.Name
            from dbo.EVENT E
            Where E.STARTDATE < @EARLYREGISTRATIONDATE and E.ID in (Select EventID from @EventInfo)

            select @ISERROR = Count(*) from @EventsThatHaveAnEarlierStartDate

            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventsThatHaveAnEarlierStartDate
              RAISERROR ('Your updates could not be processed because the source registration option has an early discount date later than the event start date for the following events: %s. To continue, please edit the early discount date for this registration option. Or you can remove these events from your update to continue.', 11, 1, @ERRORTEXT);
            end

            insert into @EventsThatHaveALowerGroupMemberLimit(EventID, EventName)
            Select E.ID, E.Name
            from dbo.EVENT E
            INNER JOIN dbo.EVENTTEAMFAFCONFIG EC ON E.ID = EC.EVENTID
            Where (EC.COMPANYTEAMSLIMIT < @TEAMS OR
              EC.COMPANYTEAMMEMBERSLIMIT < @COMPANYTEAMMEMBERS OR
              EC.TEAMMEMBERSLIMIT < @TEAMMEMBERS OR 
              EC.HOUSEHOLDMEMBERSLIMIT < @HOUSEHOLDMEMBERS)
            and E.ID in (Select EventID from @EventInfo)

            select @ISERROR = Count(*) from @EventsThatHaveALowerGroupMemberLimit

            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventsThatHaveALowerGroupMemberLimit
              RAISERROR ('Your updates could not be processed because the source registration option has a member recruitment goal that exceeds the member limit for the following events: %s. To continue, please edit the member recruitment goal for this registration option. Or you can remove these events from your update to continue.', 11, 1, @ERRORTEXT);
            end

                      while @Index< = @Count
                      begin
                              select @EventID =EventID from @EventInfo where ID=@Index 

                              exec USP_DATAFORMTEMPLATE_FAF_REGISTRATION_TYPE_ADD @CHANGEAGENTID=@CHANGEAGENTID, @EVENTID=@EVENTID, @EVENTREGISTRATIONTYPEID=@EVENTREGISTRATIONTYPEID, @REGISTRATIONCOUNT=@REGISTRATIONCOUNT,
                @NAME=@NAME, @DESCRIPTION=@DESCRIPTION, @ISNOTAVAILABLEONLINEREG=@ISNOTAVAILABLEONLINEREG, @ISREGTYPEAVAILABLEINDIVIDUAL=@ISREGTYPEAVAILABLEINDIVIDUAL, @ISREGTYPEAVAILABLEFAMILYMEMBER=@ISREGTYPEAVAILABLEFAMILYMEMBER,
                @ISREGTYPEAVAILABLEHEADHOUSEHOLD=@ISREGTYPEAVAILABLEHEADHOUSEHOLD, @ISREGTYPEAVAILABLETEAMMEMBER=@ISREGTYPEAVAILABLETEAMMEMBER, @ISREGTYPEAVAILABLETEAMLEADER=@ISREGTYPEAVAILABLETEAMLEADER,
                @ISREGTYPEAVAILABLECOMPANYLEADER=@ISREGTYPEAVAILABLECOMPANYLEADER, @AMOUNT=@AMOUNT, @RECEIPTAMOUNT=@RECEIPTAMOUNT, @EARLYREGISTRATIONDATE=@EARLYREGISTRATIONDATE, @LATEFEEDATE=@LATEFEEDATE,
                @EARLYREGISTRATIONDISCOUNT=@EARLYREGISTRATIONDISCOUNT, @LATEFEE=@LATEFEE, @MINFUNDRAISING=@MINFUNDRAISING, @ISNOTLOWERFUNDRAISING=@ISNOTLOWERFUNDRAISING, @PARTICIPANTMUSTPAYBALANCE=@PARTICIPANTMUSTPAYBALANCE,
                @PARTICIPANTPAYSBALANCEMESSAGE=@PARTICIPANTPAYSBALANCEMESSAGE, @RECRUITEMENT=@RECRUITEMENT, @ISNOTLOWERRECRUITEMENT=@ISNOTLOWERRECRUITEMENT, @VOLUNTEERRECRUITEMENT=@VOLUNTEERRECRUITEMENT,
                @ISNOTLOWERVOLUNTEERRECRUITEMENT=@ISNOTLOWERVOLUNTEERRECRUITEMENT, @DONORRETENTION=@DONORRETENTION, @ISNOTLOWERDONORRETENTION=@ISNOTLOWERDONORRETENTION, @UNIT=@UNIT, @ISNOTLOWERUNIT=@ISNOTLOWERUNIT
                @COMMUNICATIONS=@COMMUNICATIONS, @ISNOTLOWERCOMMUNICATION=@ISNOTLOWERCOMMUNICATION, @LABELFORUNIT=@LABELFORUNIT, @TARGETFUNDRAISING=@TARGETFUNDRAISING, @ISNOTLOWERTARGETFUNDRAISING=@ISNOTLOWERTARGETFUNDRAISING,
                @TEAMMINFUNDRAISING=@TEAMMINFUNDRAISING, @TEAMISNOTLOWERFUNDRAISING=@TEAMISNOTLOWERFUNDRAISING, @TEAMRECRUITEMENT=@TEAMRECRUITEMENT, @TEAMISNOTLOWERRECRUITEMENT=@TEAMISNOTLOWERRECRUITEMENT
                @TEAMMEMBERS=@TEAMMEMBERS, @ISNOTLOWERTEAMMEMBERS=@ISNOTLOWERTEAMMEMBERS, @TEAMVOLUNTEERRECRUITEMENT=@TEAMVOLUNTEERRECRUITEMENT, @ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL=@ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL,
                @TEAMMEMBERRETENTION=@TEAMMEMBERRETENTION, @ISNOTLOWERTEAMMEMBERRETENTION=@ISNOTLOWERTEAMMEMBERRETENTION, @TEAMUNIT=@TEAMUNIT, @TEAMISNOTLOWERUNIT=@TEAMISNOTLOWERUNIT, @TEAMCOMMUNICATIONS=@TEAMCOMMUNICATIONS,
                @TEAMSNOTLOWERCOMMUNICATION=@TEAMSNOTLOWERCOMMUNICATION, @TEAMLABELFORUNIT=@TEAMLABELFORUNIT, @COMPANYMINFUNDRAISING=@COMPANYMINFUNDRAISING, @COMPANYISNOTLOWERFUNDRAISING=@COMPANYISNOTLOWERFUNDRAISING,
                @COMPANYRECRUITEMENT=@COMPANYRECRUITEMENT, @COMPANYISNOTLOWERRECRUITEMENT=@COMPANYISNOTLOWERRECRUITEMENT, @TEAMS=@TEAMS, @ISNOTLOWERTEAMS=@ISNOTLOWERTEAMS, @COMPANYCOMMUNICATIONS=@COMPANYCOMMUNICATIONS,
                @COMPANYISNOTLOWERCOMMUNICATION=@COMPANYISNOTLOWERCOMMUNICATION, @TEAMRETENTION=@TEAMRETENTION, @ISNOTLOWERTEAMRETENTION=@ISNOTLOWERTEAMRETENTION, @COMPANYVOLUNTEERRECRUITEMENT=@COMPANYVOLUNTEERRECRUITEMENT,
                @COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT=@COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT, @COMPANYTEAMMEMBERS=@COMPANYTEAMMEMBERS, @COMPANYISNOTLOWERTEAMMEMBERS=@COMPANYISNOTLOWERTEAMMEMBERS
                @COMPANYUNIT=@COMPANYUNIT, @COMPANYISNOTLOWERUNIT=@COMPANYISNOTLOWERUNIT, @COMPANYTEAMMEMBERRETENTION=@COMPANYTEAMMEMBERRETENTION, @COMPANYISNOTLOWERTEAMMEMBERRETENTION=@COMPANYISNOTLOWERTEAMMEMBERRETENTION,
                @COMPANYLABELFORUNIT=@COMPANYLABELFORUNIT, @MAXQUANTITY=@MAXQUANTITY, @TURNONWAITLIST=@TURNONWAITLIST, @DISPLAYSPOTSAVAILABLE=@DISPLAYSPOTSAVAILABLE, @SENDEVENTCONTACTALERTMAXREACHED=@SENDEVENTCONTACTALERTMAXREACHED
                @WAITLISTMESSAGE=@WAITLISTMESSAGE, @MINIMUMAGE=@MINIMUMAGE, @MAXIMUMAGE=@MAXIMUMAGE, @BENEFITS=@BENEFITS, @ALLOWPARTICIPANTSWAIVEBENEFITS=@ALLOWPARTICIPANTSWAIVEBENEFITS, @HOUSEHOLDMINFUNDRAISING=@HOUSEHOLDMINFUNDRAISING,
                @HOUSEHOLDISNOTLOWERFUNDRAISING=@HOUSEHOLDISNOTLOWERFUNDRAISING, @HOUSEHOLDPARTICIPANTMUSTPAYBALANCE=@HOUSEHOLDPARTICIPANTMUSTPAYBALANCE, @HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE=@HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE,
                @HOUSEHOLDRECRUITEMENT=@HOUSEHOLDRECRUITEMENT, @HOUSEHOLDISNOTLOWERRECRUITEMENT=@HOUSEHOLDISNOTLOWERRECRUITEMENT, @HOUSEHOLDVOLUNTEERRECRUITEMENT=@HOUSEHOLDVOLUNTEERRECRUITEMENT
                @HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT=@HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT, @HOUSEHOLDDONORRETENTION=@HOUSEHOLDDONORRETENTION, @HOUSEHOLDISNOTLOWERDONORRETENTION=@HOUSEHOLDISNOTLOWERDONORRETENTION,
                @HOUSEHOLDUNIT=@HOUSEHOLDUNIT, @HOUSEHOLDISNOTLOWERUNIT=@HOUSEHOLDISNOTLOWERUNIT, @HOUSEHOLDCOMMUNICATIONS=@HOUSEHOLDCOMMUNICATIONS, @HOUSEHOLDISNOTLOWERCOMMUNICATION=@HOUSEHOLDISNOTLOWERCOMMUNICATION,
                @HOUSEHOLDLABELFORUNIT=@HOUSEHOLDLABELFORUNIT, @HOUSEHOLDTARGETFUNDRAISING=@HOUSEHOLDTARGETFUNDRAISING, @HOUSEHOLDISNOTLOWERTARGETFUNDRAISING=@HOUSEHOLDISNOTLOWERTARGETFUNDRAISING
                @HOUSEHOLDMEMBERS=@HOUSEHOLDMEMBERS, @HOUSEHOLDISNOTLOWERTEAMMEMBERS=@HOUSEHOLDISNOTLOWERTEAMMEMBERS, @HOUSEHOLDMEMBERRETENTION=@HOUSEHOLDMEMBERRETENTION, @HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION=@HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION

                             set @Index = @Index +1

                             set @NUMBERADDED = @NUMBERADDED + 1
                      end 
                end

            if @SELECTIONOPTIONFORUPDATE =2 -- replace selected registration options
                begin

                     DECLARE @UpdatedTable table (ID int identity(1,1), EventPriceID uniqueidentifier)

                     insert into @UpdatedTable(EventPriceID)
                      SELECT EVENTPRICEID FROM (SELECT T.c.value('(RECORDID)[1]','uniqueidentifier') AS 'EVENTPRICEID'
                        FROM @SELECTEDREGISTRATIONOPTIONSFORUPDATE.nodes('/SELECTEDREGISTRATIONOPTIONSFORUPDATE/ITEM') T(c)) XMLTABLE
            INNER JOIN EVENTPRICE EP ON XMLTABLE.EVENTPRICEID = EP.ID
            WHERE exists(
                select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(EP.EVENTID) EVENTSITE
                where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 
                  or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'800093A6-B727-490B-8CC4-C0C0CF2148F0',20
                  where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)) )
                )      

            insert into @EventInfo(EventID,EventName)
            Select EP.EventID, E.Name from dbo.EventPrice EP
            JOIN Event E on EP.EventID = E.ID
            where EP.ID in (select EventPriceID from @UpdatedTable)

            select @ISERROR = COUNT(EventID) from @EventInfo Group By EventID HAVING (Count(EventID) > 1 )
            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventInfo Group By EventName HAVING (Count(EventName) > 1 )
              RAISERROR ('Your updates could not be processed because registration option names must be unique for each event. You selected to update more than one registration option for the following events: %s. To continue, please change your selections to ensure that only one registration per event is selected.', 11, 1, @ERRORTEXT);
            end

            insert into @EventsThatAlreadyHaveOptionsWithThisName(EventID, EventName)
            Select EP.EventID, E.Name
            from dbo.EVENTPRICE EP
            JOIN Event E on E.ID = EP.EventID
            Where EP.Name=@NAME and EP.EVENTID in (Select EventID from @EventInfo) And EP.ID not in (Select EventPriceID from @UpdatedTable)

            select @ISERROR = Count(*) from @EventsThatAlreadyHaveOptionsWithThisName

            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventsThatAlreadyHaveOptionsWithThisName
              RAISERROR ('Your updates could not be processed because registration option names must be unique for each event. A registration option named ?%s? already exists for the following events: %s. To continue, please remove or rename the existing registration option in these events. Or you can remove these events from your update to continue.', 11, 1, @NAME, @ERRORTEXT);
            end

            insert into @EventsThatHaveAnEarlierStartDate(EventID, EventName)
            Select E.ID, E.Name
            from dbo.EVENT E
            Where E.STARTDATE < @EARLYREGISTRATIONDATE and E.ID in (Select EventID from @EventInfo)

            select @ISERROR = Count(*) from @EventsThatHaveAnEarlierStartDate

            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventsThatHaveAnEarlierStartDate
              RAISERROR ('Your updates could not be processed because the source registration option has an early discount date later than the event start date for the following events: %s. To continue, please edit the early discount date for this registration option. Or you can remove these events from your update to continue.', 11, 1, @ERRORTEXT);
            end

            insert into @EventsThatHaveALowerGroupMemberLimit(EventID, EventName)
            Select E.ID, E.Name
            from dbo.EVENT E
            INNER JOIN dbo.EVENTTEAMFAFCONFIG EC ON E.ID = EC.EVENTID
            Where (EC.COMPANYTEAMSLIMIT < @TEAMS OR
              EC.COMPANYTEAMMEMBERSLIMIT < @COMPANYTEAMMEMBERS OR
              EC.TEAMMEMBERSLIMIT < @TEAMMEMBERS OR 
              EC.HOUSEHOLDMEMBERSLIMIT < @HOUSEHOLDMEMBERS)
            and E.ID in (Select EventID from @EventInfo)

            select @ISERROR = Count(*) from @EventsThatHaveALowerGroupMemberLimit

            if @ISERROR > 0
            begin
              SELECT @ERRORTEXT = COALESCE(@ERRORTEXT+', ' ,'') + EventName from @EventsThatHaveALowerGroupMemberLimit
              RAISERROR ('Your updates could not be processed because the source registration option has a member recruitment goal that exceeds the member limit for the following events: %s. To continue, please edit the member recruitment goal for this registration option. Or you can remove these events from your update to continue.', 11, 1, @ERRORTEXT);
            end

                    select @Count = COUNT(*),@Index = 1 from @UpdatedTable     

                    while @Index< = @Count
                        begin
                            select @EventPriceID = EventPriceID
                            from @UpdatedTable  
                            where ID = @Index     

                            exec USP_DATAFORMTEMPLATE_EDIT_FAF_REGISTRATION_TYPE2 @ID = @EventPriceID,
                                        @CHANGEAGENTID=@CHANGEAGENTID, @EVENTREGISTRATIONTYPEID=@EVENTREGISTRATIONTYPEID, @REGISTRATIONCOUNT=@REGISTRATIONCOUNT, @NAME=@NAME, @DESCRIPTION=@DESCRIPTION
                                        @ISNOTAVAILABLEONLINEREG=@ISNOTAVAILABLEONLINEREG, @ISREGTYPEAVAILABLEINDIVIDUAL=@ISREGTYPEAVAILABLEINDIVIDUAL, @ISREGTYPEAVAILABLEFAMILYMEMBER=@ISREGTYPEAVAILABLEFAMILYMEMBER,
                                        @ISREGTYPEAVAILABLEHEADHOUSEHOLD=@ISREGTYPEAVAILABLEHEADHOUSEHOLD, @ISREGTYPEAVAILABLETEAMMEMBER=@ISREGTYPEAVAILABLETEAMMEMBER, @ISREGTYPEAVAILABLETEAMLEADER=@ISREGTYPEAVAILABLETEAMLEADER,
                                        @ISREGTYPEAVAILABLECOMPANYLEADER=@ISREGTYPEAVAILABLECOMPANYLEADER, @AMOUNT=@AMOUNT, @RECEIPTAMOUNT=@RECEIPTAMOUNT, @EARLYREGISTRATIONDATE=@EARLYREGISTRATIONDATE, @LATEFEEDATE=@LATEFEEDATE,
                                        @EARLYREGISTRATIONDISCOUNT=@EARLYREGISTRATIONDISCOUNT, @LATEFEE=@LATEFEE, @MINFUNDRAISING=@MINFUNDRAISING, @ISNOTLOWERFUNDRAISING=@ISNOTLOWERFUNDRAISING, @PARTICIPANTMUSTPAYBALANCE=@PARTICIPANTMUSTPAYBALANCE,
                                        @PARTICIPANTPAYSBALANCEMESSAGE=@PARTICIPANTPAYSBALANCEMESSAGE, @RECRUITEMENT=@RECRUITEMENT, @ISNOTLOWERRECRUITEMENT=@ISNOTLOWERRECRUITEMENT, @VOLUNTEERRECRUITEMENT=@VOLUNTEERRECRUITEMENT,
                                        @ISNOTLOWERVOLUNTEERRECRUITEMENT=@ISNOTLOWERVOLUNTEERRECRUITEMENT, @DONORRETENTION=@DONORRETENTION, @ISNOTLOWERDONORRETENTION=@ISNOTLOWERDONORRETENTION, @UNIT=@UNIT, @ISNOTLOWERUNIT=@ISNOTLOWERUNIT
                                        @COMMUNICATIONS=@COMMUNICATIONS, @ISNOTLOWERCOMMUNICATION=@ISNOTLOWERCOMMUNICATION, @LABELFORUNIT=@LABELFORUNIT, @TARGETFUNDRAISING=@TARGETFUNDRAISING, @ISNOTLOWERTARGETFUNDRAISING=@ISNOTLOWERTARGETFUNDRAISING,
                                        @TEAMMINFUNDRAISING=@TEAMMINFUNDRAISING, @TEAMISNOTLOWERFUNDRAISING=@TEAMISNOTLOWERFUNDRAISING, @TEAMRECRUITEMENT=@TEAMRECRUITEMENT, @TEAMISNOTLOWERRECRUITEMENT=@TEAMISNOTLOWERRECRUITEMENT
                                        @TEAMMEMBERS=@TEAMMEMBERS, @ISNOTLOWERTEAMMEMBERS=@ISNOTLOWERTEAMMEMBERS, @TEAMVOLUNTEERRECRUITEMENT=@TEAMVOLUNTEERRECRUITEMENT, @ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL=@ISNOTLOWERVOLUNTEERRECRUITEMENTTEAMGOAL,
                                        @TEAMMEMBERRETENTION=@TEAMMEMBERRETENTION, @ISNOTLOWERTEAMMEMBERRETENTION=@ISNOTLOWERTEAMMEMBERRETENTION, @TEAMUNIT=@TEAMUNIT, @TEAMISNOTLOWERUNIT=@TEAMISNOTLOWERUNIT, @TEAMCOMMUNICATIONS=@TEAMCOMMUNICATIONS,
                                        @TEAMSNOTLOWERCOMMUNICATION=@TEAMSNOTLOWERCOMMUNICATION, @TEAMLABELFORUNIT=@TEAMLABELFORUNIT, @COMPANYMINFUNDRAISING=@COMPANYMINFUNDRAISING, @COMPANYISNOTLOWERFUNDRAISING=@COMPANYISNOTLOWERFUNDRAISING,
                                        @COMPANYRECRUITEMENT=@COMPANYRECRUITEMENT, @COMPANYISNOTLOWERRECRUITEMENT=@COMPANYISNOTLOWERRECRUITEMENT, @TEAMS=@TEAMS, @ISNOTLOWERTEAMS=@ISNOTLOWERTEAMS, @COMPANYCOMMUNICATIONS=@COMPANYCOMMUNICATIONS,
                                        @COMPANYISNOTLOWERCOMMUNICATION=@COMPANYISNOTLOWERCOMMUNICATION, @TEAMRETENTION=@TEAMRETENTION, @ISNOTLOWERTEAMRETENTION=@ISNOTLOWERTEAMRETENTION, @COMPANYVOLUNTEERRECRUITEMENT=@COMPANYVOLUNTEERRECRUITEMENT,
                                        @COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT=@COMPANYISNOTLOWERVOLUNTEERRECRUITEMENT, @COMPANYTEAMMEMBERS=@COMPANYTEAMMEMBERS, @COMPANYISNOTLOWERTEAMMEMBERS=@COMPANYISNOTLOWERTEAMMEMBERS
                                        @COMPANYUNIT=@COMPANYUNIT, @COMPANYISNOTLOWERUNIT=@COMPANYISNOTLOWERUNIT, @COMPANYTEAMMEMBERRETENTION=@COMPANYTEAMMEMBERRETENTION, @COMPANYISNOTLOWERTEAMMEMBERRETENTION=@COMPANYISNOTLOWERTEAMMEMBERRETENTION,
                                        @COMPANYLABELFORUNIT=@COMPANYLABELFORUNIT,@HOUSEHOLDMINFUNDRAISING=@HOUSEHOLDMINFUNDRAISING,@HOUSEHOLDISNOTLOWERFUNDRAISING=@HOUSEHOLDISNOTLOWERFUNDRAISING, @HOUSEHOLDPARTICIPANTMUSTPAYBALANCE=@HOUSEHOLDPARTICIPANTMUSTPAYBALANCE
                                        @HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE=@HOUSEHOLDPARTICIPANTPAYSBALANCEMESSAGE, @HOUSEHOLDRECRUITEMENT=@HOUSEHOLDRECRUITEMENT, @HOUSEHOLDISNOTLOWERRECRUITEMENT=@HOUSEHOLDISNOTLOWERRECRUITEMENT
                                        @HOUSEHOLDVOLUNTEERRECRUITEMENT=@HOUSEHOLDVOLUNTEERRECRUITEMENT, @HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT=@HOUSEHOLDISNOTLOWERVOLUNTEERRECRUITEMENT, @HOUSEHOLDDONORRETENTION=@HOUSEHOLDDONORRETENTION
                                        @HOUSEHOLDISNOTLOWERDONORRETENTION=@HOUSEHOLDISNOTLOWERDONORRETENTION, @HOUSEHOLDUNIT=@HOUSEHOLDUNIT, @HOUSEHOLDISNOTLOWERUNIT=@HOUSEHOLDISNOTLOWERUNIT, @HOUSEHOLDCOMMUNICATIONS=@HOUSEHOLDCOMMUNICATIONS
                                        @HOUSEHOLDISNOTLOWERCOMMUNICATION=@HOUSEHOLDISNOTLOWERCOMMUNICATION, @HOUSEHOLDLABELFORUNIT=@HOUSEHOLDLABELFORUNIT, @HOUSEHOLDTARGETFUNDRAISING=@HOUSEHOLDTARGETFUNDRAISING
                                        @HOUSEHOLDISNOTLOWERTARGETFUNDRAISING=@HOUSEHOLDISNOTLOWERTARGETFUNDRAISING, @MAXQUANTITY=@MAXQUANTITY, @TURNONWAITLIST=@TURNONWAITLIST, @DISPLAYSPOTSAVAILABLE=@DISPLAYSPOTSAVAILABLE
                                        @SENDEVENTCONTACTALERTMAXREACHED=@SENDEVENTCONTACTALERTMAXREACHED, @WAITLISTMESSAGE=@WAITLISTMESSAGE, @MINIMUMAGE=@MINIMUMAGE, @MAXIMUMAGE=@MAXIMUMAGE, @BENEFITS=@BENEFITS, @ALLOWPARTICIPANTSWAIVEBENEFITS=@ALLOWPARTICIPANTSWAIVEBENEFITS
                                        @CURRENTREGISTRATIONCOUNT=@CURRENTREGISTRATIONCOUNT, @HOUSEHOLDMEMBERS=@HOUSEHOLDMEMBERS, @HOUSEHOLDISNOTLOWERTEAMMEMBERS=@HOUSEHOLDISNOTLOWERTEAMMEMBERS, @HOUSEHOLDMEMBERRETENTION=@HOUSEHOLDMEMBERRETENTION
                                        @HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION=@HOUSEHOLDISNOTLOWERTEAMMEMBERRETENTION
                            set @Index = @Index +1

                            set @NUMBEREDITED = @NUMBEREDITED + 1
                        end
                end

        end try

        begin catch
            exec dbo.USP_RAISE_ERROR;
            rollback tran
            return 1;
        end catch
    commit tran