USP_FAFGROUPMEMBERUPDATE_DELETE

Deletes a group and move its member to parent group to individual participant.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@EVENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@NEWROLE tinyint IN
@REGISTRATIONOPTIONID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_FAFGROUPMEMBERUPDATE_DELETE
(
          @ID uniqueidentifier, -- group to delete

          @EVENTID uniqueidentifier,
             @CHANGEAGENTID uniqueidentifier = null,
          @NEWROLE tinyint,
          @REGISTRATIONOPTIONID uniqueidentifier
        )
        as
        begin try
          declare @PARENTGROUPID uniqueidentifier = null,
                  @AMOUNT money,
                  @RECEIPTAMOUNT money,
                  @ORGANIZATIONAMOUNT money,
                  @CURRENTDATE date,
                  @MAXQUANTITY int,
                  @EVENTPRICEID uniqueidentifier = null,
                  @EVENTPRICECOUNT int

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

          set @CURRENTDATE = getdate()

          if exists(select ID from dbo.EVENTPRICE where ID = @REGISTRATIONOPTIONID and EVENTID = @EVENTID)
          begin
            select @EVENTPRICECOUNT = COUNT(*) from dbo.REGISTRANTREGISTRATION where EVENTPRICEID = @REGISTRATIONOPTIONID 
                  select @MAXQUANTITY = MAXQUANTITY from dbo.FAFREGISTRATIONTYPE where EVENTPRICEID = @REGISTRATIONOPTIONID 
                  if (@MAXQUANTITY = 0 or @EVENTPRICECOUNT < @MAXQUANTITY
                    begin
              select @AMOUNT=AMOUNT, @RECEIPTAMOUNT=RECEIPTAMOUNT, @ORGANIZATIONAMOUNT=ORGANIZATIONAMOUNT from dbo.EVENTPRICE where ID = @REGISTRATIONOPTIONID

              -- get parent group of this group if exists else parent group id is null

              select @PARENTGROUPID=PARENTTEAMID from dbo.TEAMFUNDRAISINGTEAM where ID = @ID  

              -- updating child teams to reference to parent team of the current team whether current team has parent or not

              update dbo.TEAMFUNDRAISINGTEAM
              set   PARENTTEAMID = @PARENTGROUPID
              where PARENTTEAMID = @ID

              select TF.CONSTITUENTID, TFTM.TEAMFUNDRAISINGTEAMID, R.ID as REGISTRANTID, TF.ID as TEAMFUNDRAISERID into #tmpTeamMembers
              from dbo.TEAMFUNDRAISINGTEAMMEMBER TFTM
              join dbo.TEAMFUNDRAISER TF on TFTM.TEAMFUNDRAISERID = TF.ID
              join dbo.REGISTRANT R on R.CONSTITUENTID = TF.CONSTITUENTID and R.EVENTID = @EVENTID
              where TFTM.TEAMFUNDRAISINGTEAMID = @ID

              update dbo.REGISTRANTREGISTRATION
                set EVENTPRICEID = @REGISTRATIONOPTIONID,
                    AMOUNT = @AMOUNT,
                    RECEIPTAMOUNT=@RECEIPTAMOUNT,
                    ORGANIZATIONAMOUNT=@ORGANIZATIONAMOUNT,
                    DATECHANGED = @CURRENTDATE,
                    CHANGEDBYID = @CHANGEAGENTID
                where REGISTRANTID in (select REGISTRANTID from #tmpTeamMembers)

              delete from dbo.TEAMFUNDRAISINGTEAMCAPTAIN where TEAMFUNDRAISINGTEAMID = @ID

              -- update group member if group has parent group

              if @PARENTGROUPID is not null
              begin                          
                update dbo.TEAMFUNDRAISINGTEAMMEMBER 
                set TEAMFUNDRAISINGTEAMID = @PARENTGROUPID
                where TEAMFUNDRAISINGTEAMID = @ID   

                declare @REGISTRANTCONSTITUENTID uniqueidentifier
                while exists(select top 1 CONSTITUENTID from #tmpTeamMembers)
                begin
                    select top 1 @REGISTRANTCONSTITUENTID = CONSTITUENTID from #tmpTeamMembers

                    exec dbo.USP_FAFADDRESSBOOK_REGISTRANT_ADD 
                               @TEAMFUNDRAISINGTEAMID=@PARENTGROUPID
                               @REGISTRANTCONSTITUENTID=@REGISTRANTCONSTITUENTID,
                               @CHANGEAGENTID=@CHANGEAGENTID

                    delete from #tmpTeamMembers where CONSTITUENTID = @REGISTRANTCONSTITUENTID

                    continue
                end

              end
              else
              begin
                -- remove member record since we want these registrant to become individual

                delete dbo.TEAMFUNDRAISINGTEAMMEMBER where TEAMFUNDRAISINGTEAMID = @ID
                delete dbo.TEAMFUNDRAISER where ID in (select TEAMFUNDRAISERID from #tmpTeamMembers)
              end

              if @PARENTGROUPID is null 
                  update dbo.REGISTRANTBATCH
                  set TEAMFUNDRAISINGTEAMID = @PARENTGROUPID,
                      REGISTRANTROLECODE = 8,
                      FUNDRAISINGGROUPNAME = '',
                      CHANGEDBYID=@CHANGEAGENTID,
                      DATECHANGED=@CURRENTDATE
                  where TEAMFUNDRAISINGTEAMID = @ID
              else
              begin
                  declare @PTYPECODE tinyint,
                              @REGROLECODE tinyint

                  select @PTYPECODE=TYPECODE from dbo.TEAMEXTENSION (nolock) where TEAMFUNDRAISINGTEAMID = @PARENTGROUPID 

                  /* 
                    if this registrant batch record has not been committed (not committed batch), get role code so we can update the role code to match group type                  
                    reason - update role code and group to maintain data accuracy when the batch do get committed to the system.
                  */
                  select @REGROLECODE=case when @PTYPECODE=2 and REGISTRANTROLECODE=3 then 7 when @PTYPECODE=1 and REGISTRANTROLECODE = 9 then 3 else REGISTRANTROLECODE end
                  from dbo.REGISTRANTBATCH RB (nolock)
                  join dbo.BATCH B (nolock) on B.ID = RB.BATCHID and B.STATUSCODE = 0
                  where RB.TEAMFUNDRAISINGTEAMID = @ID

                  update dbo.REGISTRANTBATCH
                  set TEAMFUNDRAISINGTEAMID = @PARENTGROUPID,
                      REGISTRANTROLECODE = isnull(@REGROLECODE, REGISTRANTROLECODE),
                      CHANGEDBYID=@CHANGEAGENTID,
                      DATECHANGED=@CURRENTDATE
                  where TEAMFUNDRAISINGTEAMID = @ID
              end

              exec dbo.USP_TEAMFUNDRAISINGTEAM_DELETE @ID=@ID, @CHANGEAGENTID=@CHANGEAGENTID

              drop table #tmpTeamMembers

            end
            else
              raiserror('REGISTRATIONOPTIONREACHLIMIT', 13,1);
              return 1;
                end

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

        return 0;