USP_FAFGROUP_CALCULATE_DONORGIFTCNTANDTOTALRAISED

Parameters

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

Definition

Copy


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

--declare @CURRENTDATE datetime;


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

if @CURRENTDATE is null
  set @CURRENTDATE = GETDATE();

-- get child groups and member counts


begin try

    merge into dbo.FAFGROUPSUMMARYINFORMATION as Target
    using
    (
        select M.GROUPID, M.EventID, M.DONORCOUNT, M.GIFTCOUNT, M.RAISEDTOTAL, TX.TEAMCONSTITUENTID, TX.TYPECODE 
        from dbo.UFN_FAFGROUP_GETDONORGIFTCOUNTANDAMOUNTRAISED() M
        join dbo.TEAMEXTENSION TX (nolock) on TX.TEAMFUNDRAISINGTEAMID = M.GROUPID

    ) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID   
    when matched and (source.RAISEDTOTAL <> Target.TOTALFUNDRAISE or source.DONORCOUNT <> Target.TOTALDONORCOUNT or source.GIFTCOUNT <> Target.TOTALGIFTCOUNT) then
        update set
            TOTALFUNDRAISE = source.RAISEDTOTAL,
            TOTALDONORCOUNT = source.DONORCOUNT,
            TOTALGIFTCOUNT = source.GIFTCOUNT,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED   = @CURRENTDATE        
    when not matched then
        insert(ID, GROUPTYPECODE, EVENTID, GROUPCONSTITUENTID, TOTALFUNDRAISE, TOTALGIFTCOUNT, TOTALDONORCOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
        values(source.GROUPID, source.TYPECODE, source.EventID, source.TEAMCONSTITUENTID, source.RAISEDTOTAL, source.GIFTCOUNT, source.DONORCOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

  select @NUMBERPROCESSED=COUNT(*) from dbo.FAFGROUPSUMMARYINFORMATION (nolock)
    where DATECHANGED = @CURRENTDATE 

end try
begin catch
     exec dbo.USP_RAISE_ERROR;
end catch

end