UFN_SMARTQUERY_GLOBALPLEDGEWRITEOFF

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@STARTDATE datetime IN
@ENDDATE datetime IN
@MAXPLEDGEAMOUNT money IN
@WRITEOFFMETHOD tinyint IN
@CURRENCYID uniqueidentifier IN
@CURRENCYCODE tinyint IN
@CURRENTAPPUSERID uniqueidentifier IN
@MAXROWS int IN

Definition

Copy

create function dbo.UFN_SMARTQUERY_GLOBALPLEDGEWRITEOFF (
  @STARTDATE datetime
  ,@ENDDATE datetime
  ,@MAXPLEDGEAMOUNT money
  ,@WRITEOFFMETHOD tinyint
  ,@CURRENCYID uniqueidentifier
  ,@CURRENCYCODE tinyint
  ,@CURRENTAPPUSERID uniqueidentifier = null
  ,@MAXROWS int
  )
returns @T table (
  ID uniqueidentifier
  ,[NAME] nvarchar(154)
  ,[DATE] datetime
  ,BALANCE money
  ,CURRENCYID uniqueidentifier
  ,KEYNAME nvarchar(100)
  ,FIRSTNAME nvarchar(50)
  ,MIDDLENAME nvarchar(50)
  ,CONSTITUENTID uniqueidentifier
  )
as
begin
  declare @ISADMIN bit;

  set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
  set @STARTDATE = coalesce(dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE), '1753-01-01');
  set @ENDDATE = coalesce(dbo.UFN_DATE_GETLATESTTIME(@ENDDATE), '9999-01-01');
  set @CURRENCYID = case @CURRENCYCODE
      when 0
        then dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID)
      else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
      end

  declare @ASOF datetime = getdate();
  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

  if @CURRENCYID = null
    set @CURRENCYID = @ORGANIZATIONCURRENCYID;

  declare @ORIGINCODE tinyint;

  select @ORIGINCODE = coalesce(ORGANIZATIONAMOUNTORIGINCODE, 0)
  from dbo.MULTICURRENCYCONFIGURATION;

  declare @DECIMALDIGITS tinyint;
  declare @ROUNDINGTYPECODE tinyint;

  select @DECIMALDIGITS = CURRENCY.DECIMALDIGITS
    ,@ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
  from dbo.CURRENCY
  where CURRENCY.ID = @CURRENCYID;

  insert into @T
  select top (@MAXROWS) REVENUE.ID
    ,CONSTITUENT.[NAME]
    ,REVENUE.[DATE]
    ,REVENUE.BALANCEINCURRENCY as [BALANCE]
    ,@CURRENCYID
    ,CONSTITUENT.KEYNAME
    ,CONSTITUENT.FIRSTNAME
    ,CONSTITUENT.MIDDLENAME
    ,CONSTITUENT.ID as [CONSTITUENTID]
  from dbo.UFN_PLEDGE_GETREVALUEDBALANCEINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ASOF, @ORIGINCODE, null) as REVENUE
  inner join dbo.CONSTITUENT on REVENUE.CONSTITUENTID = CONSTITUENT.ID
  where REVENUE.BALANCEINCURRENCY > 0
    and (
      @WRITEOFFMETHOD = 0
      /*Caller specified start date and end date*/
      or (
        @WRITEOFFMETHOD = 1
        and REVENUE.[DATE] between @STARTDATE and @ENDDATE
        )
      /*Caller specified a maximum pledge amount*/
      or (
        @WRITEOFFMETHOD = 2
        and REVENUE.BALANCEINCURRENCY <= @MAXPLEDGEAMOUNT
        )
      )
    and (REVENUE.TRANSACTIONTYPECODE = 1)
    and (
      @ISADMIN = 1
      or (
        (dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERY_FORCONSTIT(@CURRENTAPPUSERID, '32296A81-0AFE-45cb-A186-DC0EF17297F8', CONSTITUENT.ID) = 1)
        and (dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERY_FORREVENUE(@CURRENTAPPUSERID, '32296A81-0AFE-45cb-A186-DC0EF17297F8', REVENUE.ID) = 1)
        )
      )
  order by CONSTITUENT.KEYNAME
    ,CONSTITUENT.FIRSTNAME
    ,CONSTITUENT.MIDDLENAME
    ,CONSTITUENT.ID
    ,REVENUE.[DATE]
    ,REVENUE.ID;

  return;
end;