USP_DATALIST_NAMINGOPPORTUNITYRECOGNITION

Returns a list for all recognitions for a naming opportunity

Parameters

Parameter Parameter Type Mode Description
@NAMINGOPPORTUNITYID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@SHOWFILTER tinyint IN Show

Definition

Copy


CREATE procedure dbo.USP_DATALIST_NAMINGOPPORTUNITYRECOGNITION
(
  @NAMINGOPPORTUNITYID uniqueidentifier = null,
  @SHOWFILTER tinyint = 0
)
as
  set nocount on;

  declare @CURRENTDATE datetime
  set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());

  with [CTE] as
  (
    select
      NAMINGOPPORTUNITYRECOGNITION.ID,
      NF.NAME as CONSTITUENT, 
      NAMINGOPPORTUNITYRECOGNITION.CONSTITUENTNAME,
      NAMINGOPPORTUNITYRECOGNITION.STARTDATE,
      NAMINGOPPORTUNITYRECOGNITION.ENDDATE,
      NAMINGOPPORTUNITYRECOGNITION.AMOUNT,
      NAMINGOPPORTUNITYRECOGNITION.QUANTITY,
      NAMINGOPPORTUNITYRECOGNITION.INSCRIPTION,

      --JamesWill 2008-09-26 WI 14576 UFN_DATE_FROMFUZZYDATE does not behave in a manner useful for this filter when the fuzzy date does not have a day component; so compensate in these cases

      case 
        when not dbo.UFN_DATE_FROMFUZZYDATE(NAMINGOPPORTUNITYRECOGNITION.STARTDATE) is null then
          --The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...

          cast(cast(dbo.UFN_DATE_FROMFUZZYDATE(NAMINGOPPORTUNITYRECOGNITION.STARTDATE) as date) as datetime)
        when substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 1, 4) <> '0000' and substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 5, 2) = '00' and substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 7, 2) = '00' then
          convert(datetime, substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 1, 4) + '-01-01T00:00:00')
        when substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 1, 4) <> '0000' and substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 5, 2) <> '00' and substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 7, 2) = '00' then
          convert(datetime, substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 1, 4) + '-' + substring(NAMINGOPPORTUNITYRECOGNITION.STARTDATE, 5, 2) + '-01T00:00:00')
        else
          --The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...

          cast(cast(NAMINGOPPORTUNITYRECOGNITION.DATEADDED as date) as datetime)
      end as [FILTERDATE],

      case when not NAMINGOPPORTUNITYRECOGNITIONREVENUESPLIT.ID is null then 1 else 0 end as [ISREVENUERECOGNITION],
      NAMINGOPPORTUNITYRECOGNITION.BASECURRENCYID
    from dbo.NAMINGOPPORTUNITYRECOGNITION
    left join dbo.NAMINGOPPORTUNITYRECOGNITIONREVENUESPLIT on NAMINGOPPORTUNITYRECOGNITIONREVENUESPLIT.NAMINGOPPORTUNITYRECOGNITIONID = NAMINGOPPORTUNITYRECOGNITION.ID
                outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(NAMINGOPPORTUNITYRECOGNITION.CONSTITUENTID) NF
    where NAMINGOPPORTUNITYRECOGNITION.NAMINGOPPORTUNITYID = @NAMINGOPPORTUNITYID
  )
  select distinct --WI 14074

    [CTE].ID,
    [CTE].CONSTITUENT,
    [CTE].CONSTITUENTNAME,
    [CTE].STARTDATE,
    [CTE].ENDDATE,
    [CTE].AMOUNT,
    [CTE].QUANTITY,
    [CTE].INSCRIPTION,
    [CTE].FILTERDATE,
    case when [CTE].ISREVENUERECOGNITION = 1 then 1 else 0 end as [ISREVENUERECOGNITION],
    case when [CTE].ISREVENUERECOGNITION = 0 then 1 else 0 end as [ISOPPORTUNITYRECOGNITION],
    [CTE].BASECURRENCYID
  from [CTE]
  where 
    (@SHOWFILTER = 0 or @SHOWFILTER is null)
    or (@SHOWFILTER = 1 and [CTE].FILTERDATE >= dateadd(day, -7, @CURRENTDATE))
    or (@SHOWFILTER = 2 and [CTE].FILTERDATE >= dateadd(day, -30, @CURRENTDATE))
    or (@SHOWFILTER = 3 and [CTE].FILTERDATE >= dateadd(day, -90, @CURRENTDATE))    
  order by [CTE].FILTERDATE, [CTE].CONSTITUENTNAME, [CTE].AMOUNT;

  return 0;