USP_DATAFORMTEMPLATE_EDIT_FAFGROUPMERGE

Update group information when another group merge into this group.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@GROUPTOMERGEID uniqueidentifier IN
@GROUPTOKEEPID uniqueidentifier IN Group to keep

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_FAFGROUPMERGE (
    @ID uniqueidentifier,
     @CHANGEAGENTID uniqueidentifier = null,
  @GROUPTOMERGEID uniqueidentifier,
  @GROUPTOKEEPID uniqueidentifier
)
as

    set nocount on;

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

    declare @CURRENTDATE datetime,
        @GroupToKeepEventID uniqueidentifier,
        @GroupToMergeEventID uniqueidentifier,
        @GROUPTOKEEPCONSTITUENTID uniqueidentifier,
        @GROUPTOMERGECONSTITUENTID uniqueidentifier,
        @REGISTRANTCONSTITUENTID uniqueidentifier,
        @RoleCode tinyint,
        @GroupID uniqueidentifier

    set @CURRENTDATE = getdate()

  DECLARE @TYPECODE_from int, @TYPECODE_TO int, @STATUSCODE int

  select 
    @TYPECODE_from= TYPECODE, 
    @GroupToMergeEventID=EVENTID,  
    @GROUPTOMERGECONSTITUENTID=TEAMCONSTITUENTID
  from dbo.TEAMEXTENSION     
  where TEAMFUNDRAISINGTEAMID= @ID

  select 
    @TYPECODE_TO= TYPECODE, 
    @GroupToKeepEventID=EVENTID ,
    @GROUPTOKEEPCONSTITUENTID=TEAMCONSTITUENTID, 
    @STATUSCODE= STATUSCODE 
  from dbo.TEAMEXTENSION
  where TEAMFUNDRAISINGTEAMID= @GROUPTOKEEPID

    begin try

  if @GroupToMergeEventID <> @GroupToKeepEventID
    raiserror('GROUPNOTUNDERSAMEEVENT',13,1)

  IF @STATUSCODE <> 0 
     RAISERROR('ACTIVEGROUPSONLY', 13,1)

  IF (@TYPECODE_TO IN (1,3) AND @TYPECODE_from= 2) OR (@TYPECODE_TO =3 AND @TYPECODE_from= 1)
     RAISERROR('REVERSEHIERARCHY', 13,1)

  if ((@TYPECODE_from IN (1, 3) AND @TYPECODE_TO= 2) OR (@TYPECODE_from =3 AND @TYPECODE_TO= 1))
    begin
      select TFTC.CONSTITUENTID, TFTC.TEAMFUNDRAISINGTEAMID, MR.RoleCode into #tmpTeamCaptain
      from dbo.TEAMFUNDRAISINGTEAMCAPTAIN TFTC
      join dbo.UFN_REGISTRANT_GETFAFROLE(@GroupToMergeEventID, @GROUPTOMERGEID) MR on TFTC.CONSTITUENTID = MR.CONSTITUENTID
      where TFTC.TEAMFUNDRAISINGTEAMID = @GROUPTOMERGEID  

      insert into #tmpTeamCaptain
      select TFTC.CONSTITUENTID, TFTC.TEAMFUNDRAISINGTEAMID, MR.RoleCode 
      from dbo.TEAMFUNDRAISINGTEAMCAPTAIN TFTC
      join dbo.UFN_REGISTRANT_GETFAFROLE(@GroupToKeepEventID, @GROUPTOKEEPID) MR on TFTC.CONSTITUENTID = MR.CONSTITUENTID
      where TFTC.TEAMFUNDRAISINGTEAMID = @GROUPTOKEEPID 
    end
  else
    begin
      select TF.CONSTITUENTID, @GROUPTOKEEPID as TEAMFUNDRAISINGTEAMID, MR.RoleCode into #tmpTeamMembers
      from dbo.TEAMFUNDRAISINGTEAMMEMBER TFTM
      join dbo.TEAMFUNDRAISER TF on TFTM.TEAMFUNDRAISERID = TF.ID  
      join dbo.UFN_REGISTRANT_GETFAFROLE(@GroupToKeepEventID, @GROUPTOMERGEID) MR on TF.CONSTITUENTID = MR.CONSTITUENTID
      where TFTM.TEAMFUNDRAISINGTEAMID = @GROUPTOMERGEID

      insert into #tmpTeamMembers
      select TF.CONSTITUENTID, TFTM.TEAMFUNDRAISINGTEAMID, MR.RoleCode
      from dbo.TEAMFUNDRAISINGTEAMMEMBER TFTM
      join dbo.TEAMFUNDRAISER TF on TFTM.TEAMFUNDRAISERID = TF.ID  
      join dbo.UFN_REGISTRANT_GETFAFROLE(@GroupToKeepEventID, @GROUPTOKEEPID) MR on TF.CONSTITUENTID = MR.CONSTITUENTID
      where TFTM.TEAMFUNDRAISINGTEAMID = @GROUPTOKEEPID
    end

  --handle updating the data

  if @STATUSCODE= 0 AND ((@TYPECODE_from IN (1, 3) AND @TYPECODE_TO= 2) OR (@TYPECODE_from =3 AND @TYPECODE_TO= 1))
  begin
     update dbo.TEAMFUNDRAISINGTEAM 
     set PARENTTEAMID= @GROUPTOKEEPID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
     from TEAMFUNDRAISINGTEAM 
     where ID= @ID

       -- update address book

      while exists(select top 1 CONSTITUENTID from #tmpTeamCaptain)
      begin
          select top 1 @REGISTRANTCONSTITUENTID=CONSTITUENTID, @GroupID=TEAMFUNDRAISINGTEAMID, @RoleCode=RoleCode from #tmpTeamCaptain

          exec dbo.USP_ADDRESSBOOKFAF_BULKADD_CONTACTBYGROUP 
                     @GROUPID=@GroupID
                     @CHANGEAGENTID=@CHANGEAGENTID,
                     @ROLECODE=@RoleCode,
                     @REGISTRANTCONSTITUENTID=@REGISTRANTCONSTITUENTID

          delete from #tmpTeamCaptain where CONSTITUENTID = @REGISTRANTCONSTITUENTID

          continue
      end

      drop table #tmpTeamCaptain      

  end
  else
    if @STATUSCODE= 0 AND ((@TYPECODE_from= 2 AND @TYPECODE_TO= 2) OR (@TYPECODE_from= 1 AND @TYPECODE_TO= 1) OR (@TYPECODE_from= 3 AND @TYPECODE_TO= 3))
    begin
          update TEAMFUNDRAISINGTEAMMEMBER   
        set TEAMFUNDRAISINGTEAMID= @GROUPTOKEEPID,
            CHANGEDBYID=@CHANGEAGENTID,
            DATECHANGED=@CURRENTDATE
        from TEAMFUNDRAISINGTEAMMEMBER    
        where TEAMFUNDRAISINGTEAMID= @ID    

            update TEAMFUNDRAISINGTEAMCAPTAIN  
        set TEAMFUNDRAISINGTEAMID= @GROUPTOKEEPID,
            CHANGEDBYID=@CHANGEAGENTID,
            DATECHANGED=@CURRENTDATE
        from TEAMFUNDRAISINGTEAMCAPTAIN    
        where TEAMFUNDRAISINGTEAMID= @ID    

       update dbo.TEAMFUNDRAISINGTEAM 
       set PARENTTEAMID = @GROUPTOKEEPID ,
           CHANGEDBYID=@CHANGEAGENTID,
           DATECHANGED=@CURRENTDATE
       from TEAMFUNDRAISINGTEAM 
       where PARENTTEAMID = @GROUPTOMERGEID 

       update dbo.REGISTRANTBATCH
       set TEAMFUNDRAISINGTEAMID = @GROUPTOKEEPID,
           CHANGEDBYID=@CHANGEAGENTID,
           DATECHANGED=@CURRENTDATE
       where TEAMFUNDRAISINGTEAMID = @GROUPTOMERGEID 


       delete from TEAMFUNDRAISINGTEAM      where ID= @ID    
       --- only need to delete from main Team Fundraising Team table, cascade delete action will take care of the rest.

       ------delete from TEAMEXTENSION                  where TEAMFUNDRAISINGTEAMID= @ID    


       -- move general recognition of team to the keep team

       update dbo.REVENUERECOGNITION
       set CONSTITUENTID = @GROUPTOKEEPCONSTITUENTID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
       where CONSTITUENTID = @GROUPTOMERGECONSTITUENTID and REVENUESPLITID in 
       (select RS.ID from dbo.REVENUESPLIT RS
                  join dbo.REVENUE R on RS.REVENUEID = R.ID 
                  join dbo.EVENT E on E.APPEALID = R.APPEALID
                  where E.ID = @GroupToMergeEventID)

       -- update address book

      while exists(select top 1 CONSTITUENTID from #tmpTeamMembers)
      begin
          select top 1 @REGISTRANTCONSTITUENTID = CONSTITUENTID, @RoleCode=RoleCode from #tmpTeamMembers

          exec dbo.USP_ADDRESSBOOKFAF_BULKADD_CONTACTBYGROUP 
                     @GROUPID=@GROUPTOKEEPID
                     @CHANGEAGENTID=@CHANGEAGENTID,
                     @ROLECODE=@RoleCode,
                     @REGISTRANTCONSTITUENTID=@REGISTRANTCONSTITUENTID

          delete from #tmpTeamMembers where CONSTITUENTID = @REGISTRANTCONSTITUENTID

          continue
      end

      drop table #tmpTeamMembers             
    end    


  end try

    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;