USP_KPIINSTANCESTATUSHISTORY_EVALUATE

Evaluates whether or not the KPI status changed and if so stores an entry in the KPI Instance Status History table.

Parameters

Parameter Parameter Type Mode Description
@KPIINSTANCEHISTORYID uniqueidentifier IN
@KPIINSTANCEID uniqueidentifier IN
@VALUE decimal(20, 5) IN
@ASOFDATE datetimeoffset IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_KPIINSTANCESTATUSHISTORY_EVALUATE(
  @KPIINSTANCEHISTORYID uniqueidentifier,
  @KPIINSTANCEID uniqueidentifier, 
  @VALUE decimal(20,5),   
  @ASOFDATE datetimeoffset,
  @CHANGEAGENTID uniqueidentifier)
as
begin

  declare @PREVIOUSVALUE decimal(20,5)
  declare @GOALAIMTYPECODE tinyint
  declare @GOALUPWARDLOWVALUE decimal(20,5)
  declare @GOALUPWARDMIDVALUE decimal(20,5)
  declare @GOALDOWNWARDMIDVALUE decimal(20,5)
  declare @GOALDOWNWARDHIGHVALUE decimal(20,5)

  --get the last value calculated for this KPI

  select 
      @GOALAIMTYPECODE=GOALAIMTYPECODE, 
    @GOALUPWARDLOWVALUE=GOALUPWARDLOWVALUE,
    @GOALUPWARDMIDVALUE=GOALUPWARDMIDVALUE,
    @GOALDOWNWARDMIDVALUE=GOALDOWNWARDMIDVALUE,
    @GOALDOWNWARDHIGHVALUE=GOALDOWNWARDHIGHVALUE,
    @PREVIOUSVALUE=isnull((select top 1 KPIINSTANCEHISTORY.VALUE from dbo.KPIINSTANCEHISTORY where KPIINSTANCE.ID = KPIINSTANCEHISTORY.KPIINSTANCEID and KPIINSTANCEHISTORY.ID <> @KPIINSTANCEHISTORYID and KPIINSTANCEHISTORY.ASOFDATE < @ASOFDATE order by ASOFDATE desc),0)
  from 
      dbo.KPIINSTANCE 
  where 
    KPIINSTANCE.ID = @KPIINSTANCEID 

    if @PREVIOUSVALUE is null 
      set @PREVIOUSVALUE = 0      

    declare @PREVIOUSSTATUS tinyint
    declare @CURRENTSTATUS tinyint

    select @PREVIOUSSTATUS = dbo.UFN_KPIINSTANCEVALUE_GETSTATUSCODE(@PREVIOUSVALUE, @GOALAIMTYPECODE, @GOALUPWARDLOWVALUE, @GOALUPWARDMIDVALUE, @GOALDOWNWARDMIDVALUE, @GOALDOWNWARDHIGHVALUE)
    select @CURRENTSTATUS = dbo.UFN_KPIINSTANCEVALUE_GETSTATUSCODE(@VALUE, @GOALAIMTYPECODE, @GOALUPWARDLOWVALUE, @GOALUPWARDMIDVALUE, @GOALDOWNWARDMIDVALUE, @GOALDOWNWARDHIGHVALUE)

    if @PREVIOUSSTATUS <> @CURRENTSTATUS
      begin
          if @CHANGEAGENTID is null
            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

          declare @DATE datetime
          set @DATE = GetDate();

          insert into dbo.KPIINSTANCESTATUSHISTORY (KPIINSTANCEID, ASOFDATE, CURRENTVALUE, PREVIOUSVALUE, CURRENTSTATUSCODE, PREVIOUSSTATUSCODE, GOALAIMTYPECODE, GOALUPWARDLOWVALUE, GOALUPWARDMIDVALUE, GOALDOWNWARDMIDVALUE, GOALDOWNWARDHIGHVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            values (@KPIINSTANCEID, @ASOFDATE, @VALUE, @PREVIOUSVALUE, @CURRENTSTATUS, @PREVIOUSSTATUS, @GOALAIMTYPECODE, @GOALUPWARDLOWVALUE, @GOALUPWARDMIDVALUE, @GOALDOWNWARDMIDVALUE, @GOALDOWNWARDHIGHVALUE, @CHANGEAGENTID, @CHANGEAGENTID, @DATE, @DATE)
      end

end