USP_FAFNFGCAMPAIGN_CALCULATE

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_FAFNFGCAMPAIGN_CALCULATE
(
   @NUMBERPROCESSED integer = 0 output,
   @CHANGEAGENTID uniqueidentifier = null
)
as
begin

    declare @CURRENTDATE datetime;

if @CHANGEAGENTID is null
  exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
set @CURRENTDATE = GETDATE();

--begin try


  merge into dbo.FAFNFGLEVELSUMMARY as target
  using 
  (
      select CL.ID as NFGLEVELID, VCAM.ID as NFGID, VCAM.CAMPAIGNID, VCAM.TOTALRAISED, VCAM.TOTALDONOR, VCAM.TOTALGIFT, VCAM.TOTALGROUP, VCAM.TOTALCOMMUNICATIONSENT, VCAM.TOTALPARTICIPANT,
                  VCAM.TOTALGROUPRETAINED, VCAM.GROUPRETENTIONRATE, VCAM.TOTALPARTICIPANTRETAINED, VCAM.PARTICIPANTRETENTIONRATE
      from dbo.UFN_FAFNFGCAMPAIGN_GETSUMMARY() VCAM
      join dbo.FAFNFGCAMPAIGNLEVEL CL (nolock) on VCAM.ID = CL.NFGCAMPAIGNID and HIERARCHYPATH.GetLevel() = 1

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

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

--end try

--begin catch

  --exec dbo.USP_RAISE_ERROR;

--end catch



end