UFN_CORPORATION_GETGIVINGTOTAL_INCURRENCY

Returns the giving total for the given corporation and time period in the given currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@CURRENCYID uniqueidentifier IN
@ORIGINCODE tinyint IN
@CURRENCYCODE tinyint IN

Definition

Copy


CREATE function [dbo].[UFN_CORPORATION_GETGIVINGTOTAL_INCURRENCY]
(
  @CONSTITUENTID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier = null,
  @STARTDATE datetime = null,
  @ENDDATE datetime = null,
  @CURRENCYID uniqueidentifier = null,
  @ORIGINCODE tinyint = null,
  @CURRENCYCODE tinyint = null
)
returns money
as
  begin
  declare @d money;    

  set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
  set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
  declare @DECIMALDIGITS tinyint;
  declare @ROUNDINGTYPECODE tinyint;

  select
    @DECIMALDIGITS = DECIMALDIGITS,
    @ROUNDINGTYPECODE = ROUNDINGTYPECODE
  from
    dbo.UFN_CURRENCY_GETPROPERTIES(@CURRENCYID);

  select 
    @d = sum(coalesce(REVENUESPLIT.AMOUNTINCURRENCY,0)) - sum(coalesce(IWO.AMOUNT, 0))
  from 
    dbo.FINANCIALTRANSACTION REVENUE 
  inner join 
    dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
  left join (
    select 
      INSTALLMENTSPLIT.PLEDGEID, 
      INSTALLMENTSPLIT.DESIGNATIONID, 
      sum(IWO.AMOUNTINCURRENCY) as AMOUNT
    from 
      dbo.INSTALLMENTSPLIT
    inner join 
      dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ORIGINCODE, @CURRENCYCODE) IWO on IWO.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
    group by 
      INSTALLMENTSPLIT.PLEDGEID, INSTALLMENTSPLIT.DESIGNATIONID
  ) IWO on IWO.PLEDGEID = REVENUESPLIT.REVENUEID and IWO.DESIGNATIONID = REVENUESPLIT.DESIGNATIONID
  left join 
    dbo.INSTALLMENTSPLITPAYMENT on REVENUESPLIT.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
  cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID) REVENUESITE
  where
    REVENUE.DELETEDON is null and
    REVENUE.CONSTITUENTID = @CONSTITUENTID 
  and
    (@STARTDATE is null or cast(REVENUE.DATE as datetime) >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)) 
  and
    (@ENDDATE is null or cast(REVENUE.DATE as datetime) <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE)) 
  and (
    REVENUE.TYPECODE in (1,3) --Pledge or MG claim

    or (
      REVENUE.TYPECODE = 0 
      and (
        REVENUESPLIT.APPLICATIONCODE in (0,1,3,4,5,6,18,19
        or (REVENUESPLIT.APPLICATIONCODE = 7 and INSTALLMENTSPLITPAYMENT.ID is null) -- unapplied MG claim payments

      )
    )
  ) --Payments                        

  and 
    dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, REVENUESITE.SITEID) = 1

  return @d;
end