UFN_MKTSEGMENTATION_GETUKGIFTINFO

Returns UK gift information (regular and cash givers)

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@MKTSEGMENTATIONID uniqueidentifier IN

Definition

Copy


CREATE function dbo.[UFN_MKTSEGMENTATION_GETUKGIFTINFO]
(
  @MKTSEGMENTATIONID as uniqueidentifier
)
returns @UKGIFTINFO table
(
  REGULARGIFTPAYMENTS int,
  REGULARGIFTREVENUE money,
  REGULARGIFTAVERAGE money,
  CASHGIFTPAYMENTS int,
  CASHGIFTREVENUE money,
  CASHGIFTAVERAGE money,
  GROSSAMOUNT money,
  ORGANIZATIONREGULARGIFTREVENUE money,
  ORGANIZATIONREGULARGIFTAVERAGE money,
  ORGANIZATIONCASHGIFTREVENUE money,
  ORGANIZATIONCASHGIFTAVERAGE money,
  ORGANIZATIONGROSSAMOUNT money
)
as
begin

  declare @IDSETREGISTERID uniqueidentifier;

  select
    @IDSETREGISTERID = [NORMALGIFTIDSETREGISTERID]
  from dbo.[MKTSEGMENTATIONACTIVATE]
  where [SEGMENTATIONID] = @MKTSEGMENTATIONID;

  /* Calculate the cash and regular gift amounts: */
  with [UKGIFTS_CTE] ([REGULARGIFTID], [CASHGIFTID], [REGULARGIFTAMOUNT], [CASHGIFTAMOUNT], [TAXCLAIMAMOUNT], [ORGANIZATIONREGULARGIFTAMOUNT], [ORGANIZATIONCASHGIFTAMOUNT], [ORGANIZATIONTAXCLAIMAMOUNT]) as
  (
    select
      [REGULARGIFTREVENUESPLIT].[ID],
      [CASHGIFTREVENUESPLIT].[ID],
      [REGULARGIFTREVENUESPLIT].[AMOUNT],
      [CASHGIFTREVENUESPLIT].[AMOUNT],
      [REVENUESPLITGIFTAID].[TAXCLAIMAMOUNT],
      [REGULARGIFTREVENUESPLIT].[ORGANIZATIONAMOUNT],
      [CASHGIFTREVENUESPLIT].[ORGANIZATIONAMOUNT],
      [ORGANIZATIONREVENUESPLITGIFTAID].[TAXCLAIMAMOUNT]
    from dbo.[UFN_IDSETREADER_GETRESULTS](@IDSETREGISTERID) as [NORMALGIFT]
    left outer join dbo.[REVENUE] as [REGULARGIFTREVENUE] on [REGULARGIFTREVENUE].[ID] = [NORMALGIFT].[ID] and [REGULARGIFTREVENUE].[TRANSACTIONTYPECODE] = 0
    left outer join dbo.[REVENUESPLIT] as [REGULARGIFTREVENUESPLIT] on [REGULARGIFTREVENUESPLIT].[REVENUEID] = [REGULARGIFTREVENUE].[ID] and REGULARGIFTREVENUESPLIT.[APPLICATIONCODE] = 3
    left outer join dbo.[REVENUE] as [CASHGIFTREVENUE] on [CASHGIFTREVENUE].[ID] = [NORMALGIFT].[ID] and ([CASHGIFTREVENUE].[TRANSACTIONTYPECODE] = 0 or [CASHGIFTREVENUE].[TRANSACTIONTYPECODE] = 1)
    left outer join dbo.[REVENUESPLIT] as [CASHGIFTREVENUESPLIT] on [CASHGIFTREVENUESPLIT].[REVENUEID] = [CASHGIFTREVENUE].[ID] and [CASHGIFTREVENUESPLIT].[APPLICATIONCODE] = 0
    left outer join dbo.[UFN_REVENUESPLITGIFTAID_GETELIGIBLE](1) as [REVENUESPLITGIFTAID] on [REVENUESPLITGIFTAID].[ID] = [REGULARGIFTREVENUESPLIT].[ID] or [REVENUESPLITGIFTAID].[ID] = [CASHGIFTREVENUESPLIT].[ID]
    left outer join dbo.[UFN_REVENUESPLITGIFTAID_GETELIGIBLE_2](1, 2) as [ORGANIZATIONREVENUESPLITGIFTAID] on [REVENUESPLITGIFTAID].[ID] = [REGULARGIFTREVENUESPLIT].[ID] or [REVENUESPLITGIFTAID].[ID] = [CASHGIFTREVENUESPLIT].[ID]
  )
  insert into @UKGIFTINFO
  (
    [REGULARGIFTPAYMENTS],
    [REGULARGIFTREVENUE],
    [REGULARGIFTAVERAGE],
    [CASHGIFTPAYMENTS],
    [CASHGIFTREVENUE],
    [CASHGIFTAVERAGE],
    [GROSSAMOUNT],
    [ORGANIZATIONREGULARGIFTREVENUE],
    [ORGANIZATIONREGULARGIFTAVERAGE],
    [ORGANIZATIONCASHGIFTREVENUE],
    [ORGANIZATIONCASHGIFTAVERAGE],
    [ORGANIZATIONGROSSAMOUNT]
  )
  select 
    count([REGULARGIFTID]) as [NUMREGULARGIFTS],
    isnull(sum([REGULARGIFTAMOUNT]), 0) as [REGULARGIFTTOTAL], 
    isnull(avg([REGULARGIFTAMOUNT]), 0) as [REGULARGIFTAVERAGE],
    count([CASHGIFTID]) as [NUMCASHGIFTS],
    isnull(sum([CASHGIFTAMOUNT]), 0) as [CASHGIFTTOTAL],
    isnull(avg([CASHGIFTAMOUNT]), 0) as [CASHGIFTAVERAGE],
    isnull(sum([CASHGIFTAMOUNT]), 0) + isnull(sum([REGULARGIFTAMOUNT]), 0) + isnull(sum([TAXCLAIMAMOUNT]), 0) as [GROSSAMOUNT],
    isnull(sum([ORGANIZATIONREGULARGIFTAMOUNT]), 0) as [ORGANIZATIONREGULARGIFTTOTAL], 
    isnull(avg([ORGANIZATIONREGULARGIFTAMOUNT]), 0) as [ORGANIZATIONREGULARGIFTAVERAGE],
    isnull(sum([ORGANIZATIONCASHGIFTAMOUNT]), 0) as [ORGANIZATIONCASHGIFTTOTAL],
    isnull(avg([ORGANIZATIONCASHGIFTAMOUNT]), 0) as [ORGANIZATIONCASHGIFTAVERAGE],
    isnull(sum([ORGANIZATIONCASHGIFTAMOUNT]), 0) + isnull(sum([ORGANIZATIONREGULARGIFTAMOUNT]), 0) + isnull(sum([ORGANIZATIONTAXCLAIMAMOUNT]), 0) as [ORGANIZATIONGROSSAMOUNT]
  from [UKGIFTS_CTE];

  return;
end