USP_FAFGROUP_CALCULATE_CATEGORIZEDCOUNTANDAMOUNT

Parameters

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

Definition

Copy


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

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

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

begin try

merge into dbo.FAFGROUPSUMMARYINFORMATION_CATEGORIZED as Target
    using
    (
        select 
            T.GROUPID, 
            T.EVENTID, 
            T.GIFTCOUNT_PARTICIPANTS,
            T.GIFTCOUNT_ONLINE,
            T.GIFTCOUNT_OFFLINE,
            T.GIFTCOUNT_FROMEMAIL,
            T.GIFTCOUNT_FROMSOCIALMEDIA,
            T.GIFTCOUNT_SELF,
            T.AMOUNT_PARTICIPANTS,
            T.AMOUNT_ONLINE,
            T.AMOUNT_OFFLINE,
            T.AMOUNT_FROMEMAIL,
            T.AMOUNT_FROMSOCIALMEDIA,
            T.AMOUNT_SELF,    
            T.AMOUNT_PENDING            
        from dbo.UFN_FAFGROUP_GETCATEGORIZEDCOUNTANDAMOUNT() T

    ) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID   
    when matched and (    
            target.GIFTCOUNT_PARTICIPANTS <> source.GIFTCOUNT_PARTICIPANTS or
            target.GIFTCOUNT_ONLINE <> source.GIFTCOUNT_ONLINE or
            target.GIFTCOUNT_OFFLINE <> source.GIFTCOUNT_OFFLINE or
            target.GIFTCOUNT_FROMEMAIL <> source.GIFTCOUNT_FROMEMAIL or
            target.GIFTCOUNT_FROMSOCIALMEDIA <> source.GIFTCOUNT_FROMSOCIALMEDIA or
            target.GIFTCOUNT_SELF <> source.GIFTCOUNT_SELF or
            target.AMOUNT_PARTICIPANTS <> source.AMOUNT_PARTICIPANTS or
            target.AMOUNT_ONLINE <> source.AMOUNT_ONLINE or
            target.AMOUNT_OFFLINE <> source.AMOUNT_OFFLINE or
            target.AMOUNT_FROMEMAIL <> source.AMOUNT_FROMEMAIL or
            target.AMOUNT_FROMSOCIALMEDIA <> source.AMOUNT_FROMSOCIALMEDIA or
            target.AMOUNT_SELF <> source.AMOUNT_SELF or    
            target.AMOUNT_PENDING <> source.AMOUNT_PENDING
    ) then
        update set    
            GIFTCOUNT_PARTICIPANTS = isnull(source.GIFTCOUNT_PARTICIPANTS, target.GIFTCOUNT_PARTICIPANTS),
            GIFTCOUNT_ONLINE = isnull(source.GIFTCOUNT_ONLINE, target.GIFTCOUNT_ONLINE),
            GIFTCOUNT_OFFLINE = isnull(source.GIFTCOUNT_OFFLINE, target.GIFTCOUNT_OFFLINE),
            GIFTCOUNT_FROMEMAIL = isnull(source.GIFTCOUNT_FROMEMAIL, target.GIFTCOUNT_FROMEMAIL),
            GIFTCOUNT_FROMSOCIALMEDIA = isnull(source.GIFTCOUNT_FROMSOCIALMEDIA, target.GIFTCOUNT_FROMSOCIALMEDIA),
            GIFTCOUNT_SELF = isnull(source.GIFTCOUNT_SELF, target.GIFTCOUNT_SELF),
            AMOUNT_PARTICIPANTS = isnull(source.AMOUNT_PARTICIPANTS, target.AMOUNT_PARTICIPANTS),
            AMOUNT_ONLINE = isnull(source.AMOUNT_ONLINE, target.AMOUNT_ONLINE),
            AMOUNT_OFFLINE = isnull(source.AMOUNT_OFFLINE, target.AMOUNT_OFFLINE),
            AMOUNT_FROMEMAIL = isnull(source.AMOUNT_FROMEMAIL, target.AMOUNT_FROMEMAIL),
            AMOUNT_FROMSOCIALMEDIA = isnull(source.AMOUNT_FROMSOCIALMEDIA, target.AMOUNT_FROMSOCIALMEDIA),
            AMOUNT_SELF = isnull(source.AMOUNT_SELF, target.AMOUNT_SELF),    
            AMOUNT_PENDING = isnull(source.AMOUNT_PENDING, target.AMOUNT_PENDING),            
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED   = @CURRENTDATE        
    when not matched then
        insert(
            ID, 
            EVENTID, 
            GIFTCOUNT_PARTICIPANTS,
            GIFTCOUNT_ONLINE,
            GIFTCOUNT_OFFLINE,
            GIFTCOUNT_FROMEMAIL,
            GIFTCOUNT_FROMSOCIALMEDIA,
            GIFTCOUNT_SELF,
            AMOUNT_PARTICIPANTS,
            AMOUNT_ONLINE,
            AMOUNT_OFFLINE,
            AMOUNT_FROMEMAIL,
            AMOUNT_FROMSOCIALMEDIA,
            AMOUNT_SELF,    
            AMOUNT_PENDING,
            ADDEDBYID, 
            CHANGEDBYID, 
            DATEADDED, 
            DATECHANGED
        )
        values(
            source.GROUPID, 
            source.EVENTID, 
            source.GIFTCOUNT_PARTICIPANTS,
            source.GIFTCOUNT_ONLINE,
            source.GIFTCOUNT_OFFLINE,
            source.GIFTCOUNT_FROMEMAIL,
            source.GIFTCOUNT_FROMSOCIALMEDIA,
            source.GIFTCOUNT_SELF,
            source.AMOUNT_PARTICIPANTS,
            source.AMOUNT_ONLINE,
            source.AMOUNT_OFFLINE,
            source.AMOUNT_FROMEMAIL,
            source.AMOUNT_FROMSOCIALMEDIA,
            source.AMOUNT_SELF,    
            source.AMOUNT_PENDING,
            @CHANGEAGENTID
            @CHANGEAGENTID
            @CURRENTDATE
            @CURRENTDATE
        );     
  select @NUMBERPROCESSED=COUNT(*) from dbo.FAFGROUPSUMMARYINFORMATION_CATEGORIZED (nolock)
    where DATECHANGED = @CURRENTDATE 

end try
begin catch
     exec dbo.USP_RAISE_ERROR;
end catch

end