USP_FAFNFGCAMPAIGNLEVEL_CALCULATE

Parameters

Parameter Parameter Type Mode Description
@NUMBERPROCESSED int INOUT
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_FAFNFGCAMPAIGNLEVEL_CALCULATE
(
        @NUMBERPROCESSED integer = 0 output,
        @CHANGEAGENTID uniqueidentifier = null
)
as
begin
set nocount on;

declare @CURRENTDATE datetime;

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

set @CURRENTDATE = GETDATE();

-- get total number of participant returned to a group and its retention rate, 


--begin try

    merge into dbo.FAFNFGLEVELSUMMARY as Target
    using
    (    
        select AL.ID, AL.CAMPAIGNID, AL.NFGID,
            Sum(isnull(FGSI.TOTALFUNDRAISE,0)) TOTALRAISED, 
            Sum(isnull(FGSI.TOTALGROUPS, -1) + 1) TOTALGROUP,
            Sum(isnull(FGSI.TOTALPARTICIPANTS,0))TOTALPARTICIPANT, 
            Sum(isnull(FGSI.TOTALCOMMUNICATIONSENT,0))TOTALCOMMUNICATIONSENT, 
            Sum(isnull(FGSI.TOTALDONORCOUNT,0))TOTALDONOR,   
            Sum(isnull(FGSI.TOTALGIFTCOUNT,0))TOTALGIFT
        from dbo.UFN_FAFNFGCAMPAIGN_GETALLLEVELS() AL
      left join dbo.TEAMEXTENSION TX (nolock) on AL.CHILDID = TX.NFGCAMPAIGNLEVELID
      left join dbo.FAFGROUPSUMMARYINFORMATION FGSI (nolock) on FGSI.ID = TX.TEAMFUNDRAISINGTEAMID
        group by AL.CAMPAIGNID, AL.NFGID, AL.ID

    ) as source on Target.ID = source.ID 
    when matched and (source.TOTALRAISED <> Target.TOTALRAISED or source.TOTALGROUP <> Target.TOTALGROUP or source.TOTALPARTICIPANT <> Target.TOTALPARTICIPANT
                    or source.TOTALDONOR <> Target.TOTALDONOR or source.TOTALCOMMUNICATIONSENT <> Target.TOTALCOMMUNICATIONSENT or source.TOTALGIFT <> Target.TOTALGIFT ) then
        update set
            TOTALRAISED = source.TOTALRAISED,
            TOTALGROUP = source.TOTALGROUP,
            TOTALPARTICIPANT = source.TOTALPARTICIPANT,            
            TOTALDONOR = source.TOTALDONOR,
            TOTALCOMMUNICATIONSENT = source.TOTALCOMMUNICATIONSENT,
            TOTALGIFT = source.TOTALGIFT,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED   = @CURRENTDATE        
    when not matched then
        insert(ID, NFGID, CAMPAIGNID, TOTALRAISED, TOTALGROUP, TOTALPARTICIPANT, TOTALDONOR, TOTALCOMMUNICATIONSENT, TOTALGIFT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
        values(source.ID, source.NFGID, source.CAMPAIGNID, source.TOTALRAISED, source.TOTALGROUP, source.TOTALPARTICIPANT, source.TOTALDONOR, source.TOTALCOMMUNICATIONSENT,source.TOTALGIFT,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);


  select @NUMBERPROCESSED=COUNT(*) from dbo.FAFNFGLEVELSUMMARY (nolock)
    where ISROOT = 0 and DATECHANGED = @CURRENTDATE

--end try

--begin catch  

    --exec dbo.USP_RAISE_ERROR;

--end catch


end