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