Do not let any software impress you!

Only let it convince your intellect.
Slider img 1
Do not look for a business paradise!

It is a waste of time.
Slider img 2
Only yourself can push you uphill.

There is no easy road to prizes.
Slider img 3
Productivity is the name of the game.

And you have to conquer it.
Slider img 4
As long as you understand it,

you will start to build your know-how.
Slider img 5
We can help with that.

We have the tools and the method.
Slider img 6
Procedure : AU_TOPO_DASH_EXPERT

AutoScript

start_agent_info
   AgentName = "AU_TOPO_DASH_EXPERT"
   AgentDescr = "Topology Dashboard Expert"
   AgentLanguage = ""
end_agent_info

start_action
                                                
    function = __params[1]            
    scode    = __params[2]

    scode    = strcat(scode,"%")        
                                        
    {........................................SUMMARY..................................}
    if (function = "SUMMARY") then

       window_caption = "Topology Dashboard"

       id = 0

       {--------------------------------- Topo ----------------------------}
       id = id + 1
       lab_caption[id] = "Topo"
       start_sql "*" "KOSMOS"                            
         SELECT AU_TOPO.TITLE
         FROM AU_TOPO
         WHERE (AU_TOPO.TCODE = :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",__params[2])
       call TExecute(q)
       val_caption[id] = TGetFld(q,"TITLE")
       val_unit[id] = ""       
       call FreeEmbSQL(q)

       {--------------------------------- Count of Equipment Pieces ----------------------------}
       id = id + 1                            
       lab_caption[id] = "Count of Equipment Pieces"
       start_sql "*" "KOSMOS"                            
         SELECT AU_STEP.UNAME
         FROM AU_STEP
         WHERE (((AU_STEP.FINISHED)=1) AND ((AU_STEP.UNAME) Is Not Null Or (AU_STEP.UNAME)=''))
         AND ((AU_STEP.SCODE) LIKE :C)                        
         GROUP BY AU_STEP.UNAME                        
       end_sql                            
       q = QueryByName()
       call TSetParam(q,"C",scode)                     
       call TExecute(q)
       val_caption[id] = 50 {TRecordCount(q)        }
       val_unit[id] = "Piece"
       call FreeEmbSQL(q)
       
       expand_collapse[id] = True
       expanded[id]        = False              
       expand_height[id] = 600
       agent_function[id] = "GET_ASSOSIATES_PARTICIPATION"
       expand_to_window[id]= True

       {--------------------------------- Count of Working Equipments ----------------------------}
       id = id + 1
       lab_caption[id] = "Count of Working Equipments"
       start_sql "*" "KOSMOS"
         SELECT AU_STEP.RNAME        
         FROM AU_STEP
         WHERE (((AU_STEP.FINISHED)=1) AND ((AU_STEP.RNAME) Is Not Null Or (AU_STEP.RNAME)=''))
         AND ((AU_STEP.SCODE) LIKE :C)
         GROUP BY AU_STEP.RNAME
       end_sql                     
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TRecordCount(q)
       val_caption[id] = 40
       val_unit[id] = "Piece"
       call FreeEmbSQL(q)
       
       expand_collapse[id] = True
       expanded[id]        = False
       expand_height[id] = 600
       agent_function[id] = "GET_ROLES_PARTICIPATION"
       expand_to_window[id]= True

       {--------------------------------- Count of Out of Order Equipments ----------------------------}
       id = id + 1
       lab_caption[id] = "Count of Out of Order Equipments"
       start_sql "*" "KOSMOS"
         SELECT AU_STEP.RNAME
         FROM AU_STEP
         WHERE (((AU_STEP.FINISHED)=1) AND ((AU_STEP.RNAME) Is Not Null Or (AU_STEP.RNAME)=''))
         AND ((AU_STEP.SCODE) LIKE :C)
         GROUP BY AU_STEP.RNAME
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       cnt = TRecordCount(q)
       call FreeEmbSQL(q)
       
       start_sql "*" "KOSMOS"
         SELECT AU_USER.NUNAME
         FROM AU_USER
         WHERE (((AU_USER.NUNAME) Is Not Null And (AU_USER.NUNAME)<>''))
         GROUP BY AU_USER.NUNAME
       end_sql
       q = QueryByName()
       call TExecute(q)
       val_caption[id] = TRecordCount(q)
       val_caption[id] = cnt / val_caption[id] * 100
       val_caption[id] = format("%8.0f",val_caption[id])
       val_caption[id] = 10
       val_unit[id] = "Piece"
       call FreeEmbSQL(q)

       {--------------------------------- Percent of Out of Order Equipments -----------------------}
       id = id + 1
       lab_caption[id] = "Percent of Out of Order Equipments"
       start_sql "*" "KOSMOS"
         SELECT COUNT(AU_STEP.AU_STEP) AS CNT
         FROM AU_STEP
         WHERE
         (AU_STEP.ISTEP = 0) AND (AU_STEP.AU_PROCESS > 0)
         AND ((AU_STEP.SCODE) LIKE :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"CNT")
       val_caption[id] = 20
       val_unit[id] = "%"
       call FreeEmbSQL(q)

       {--------------------------------- Open Maintenance Activities ----------------------------}
       id = id + 1
       lab_caption[id] = "Open Maintenance Activities"
       start_sql "*" "KOSMOS"
         SELECT COUNT(AU_STEP.AU_STEP) AS CNT
         FROM AU_STEP
         WHERE
         (AU_STEP.ISTEP = 0) AND (AU_STEP.AU_PROCESS > 0) AND (AU_STEP.FINISHED = 1)
         AND ((AU_STEP.SCODE) LIKE :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"CNT")
       val_caption[id] = 20
       val_unit[id] = "Activities"
       call FreeEmbSQL(q)

       {--------------------------------- Closed Maintenance Activities ----------------------------}
       id = id + 1
       lab_caption[id] = "Closed Maintenance Activities"
       start_sql "*" "KOSMOS"
         SELECT COUNT(AU_STEP.AU_STEP) AS CNT
         FROM AU_STEP
         WHERE
         (AU_STEP.ISTEP = 0) AND (AU_STEP.AU_PROCESS > 0) AND (AU_STEP.FINISHED = 0)
         AND ((AU_STEP.SCODE) LIKE :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"CNT")
       val_caption[id] = 20
       val_unit[id] = "Activities"
       call FreeEmbSQL(q)

       {-------------------------- Closed Work Orders Activities -------------------------}
       id = id + 1
       lab_caption[id] = "Closed Work Orders Activities"
       start_sql "*" "KOSMOS"
         SELECT Avg(AU_STEP.FTIME) AS AVER
         FROM AU_STEP
         WHERE (AU_STEP.FINISHED = 1) AND (FTIME > 0)
         AND ((AU_STEP.SCODE) LIKE :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"AVER")
       val_caption[id] = val_caption[id] * 24
       val_caption[id] = format("%8.2f",val_caption[id])
       val_caption[id] = 10
       val_unit[id] = "Activities"
       call FreeEmbSQL(q)

       expand_collapse[id] = True
       expanded[id]        = False                     
       expand_height[id] = 600
       agent_function[id] = "GET_ASSIGNED_ACTIVITIES"
       expand_to_window[id]= False              

       {--------------------------------- % Preventive / Reactive Maintenance ----------------------------}
       id = id + 1
       lab_caption[id] = "% Preventive / Reactive Maintenance"
       start_sql "*" "KOSMOS"
         SELECT Sum(AU_STEP_SCHED.RTIME) AS HRS
         FROM AU_STEP INNER JOIN AU_STEP_SCHED ON AU_STEP.AU_STEP = AU_STEP_SCHED.AU_STEP
         HAVING (AU_STEP.SCODE Like :C)
       end_sql
       q = QueryByName()              
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"HRS")
       val_caption[id] = val_caption[id]*24       
       val_caption[id] = format("%8.2f",val_caption[id])
       val_caption[id] = 95
       val_unit[id] = "%"
       call FreeEmbSQL(q)

       {--------------------------------- % of Work Orders Completed on time ----------------------------}
       id = id + 1
       lab_caption[id] = "% of Work Orders Completed on time"
       start_sql "*" "KOSMOS"
         SELECT Sum(AU_STEP_SCHED.RTIME) AS HRS, Sum(AU_STEP_SCHED.QUANT1) AS Q1
         FROM AU_STEP INNER JOIN AU_STEP_SCHED ON AU_STEP.AU_STEP = AU_STEP_SCHED.AU_STEP
         HAVING (AU_STEP.SCODE Like :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"HRS")
       val_caption[id] = val_caption[id]*24
       q1 = TGetFld(q,"Q1")
       val_caption[id] = q1/val_caption[id]*24
       val_caption[id] = format("%8.1f",val_caption[id])
       val_caption[id] = 70
       val_unit[id] = "%"
       call FreeEmbSQL(q)

       {--------------------------------- Cost of Spare Parts Consumend ----------------------------}
       id = id + 1
       lab_caption[id] = "Cost of Spare Parts Consumend"
       start_sql "*" "KOSMOS"
         SELECT Sum(AU_STEP_SCHED.RTIME) AS HRS, Sum(AU_STEP_SCHED.QUANT1) AS Q1
         FROM AU_STEP INNER JOIN AU_STEP_SCHED ON AU_STEP.AU_STEP = AU_STEP_SCHED.AU_STEP
         HAVING (AU_STEP.SCODE Like :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"HRS")
       val_caption[id] = val_caption[id]*24
       q1 = TGetFld(q,"Q1")
       val_caption[id] = q1/val_caption[id]*24
       val_caption[id] = format("%8.1f",val_caption[id])
       val_caption[id] = 20000
       val_unit[id] = "Euro"
       call FreeEmbSQL(q)

       {--------------------------------- Mean Time To Repair (MTTR) ----------------------------}
       id = id + 1
       lab_caption[id] = "Mean Time To Repair (MTTR)"
       start_sql "*" "KOSMOS"
         SELECT Sum(AU_STEP_SCHED.RTIME) AS HRS, Sum(AU_STEP_SCHED.QUANT1) AS Q1
         FROM AU_STEP INNER JOIN AU_STEP_SCHED ON AU_STEP.AU_STEP = AU_STEP_SCHED.AU_STEP
         HAVING (AU_STEP.SCODE Like :C)
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       val_caption[id] = TGetFld(q,"HRS")       
       val_caption[id] = val_caption[id]*24
       q1 = TGetFld(q,"Q1")
       val_caption[id] = q1/val_caption[id]*24
       val_caption[id] = format("%8.1f",val_caption[id])
       val_caption[id] = 28
       val_unit[id] = "Hours"
       call FreeEmbSQL(q)

       lab_count = id
       return
    endif

    {.......................................GET_ASSOSIATES_PARTICIPATION..........................}    
    if (function = "GET_ASSOSIATES_PARTICIPATION") then     {keep}

       hbar_series = True
       title = "Count of Closed Activities per Assosiate"
       draw_type = "CHART"
       y_count = 1
       show_legend = False

       start_sql "*" "KOSMOS"
         SELECT AU_STEP.UNAME AS UN, Count(AU_STEP.UNAME) AS CNT
         FROM AU_STEP
         WHERE (((AU_STEP.FINISHED)=1) AND ((AU_STEP.UNAME) Is Not Null Or (AU_STEP.UNAME)=''))
         AND ((AU_STEP.SCODE) LIKE :C)
         GROUP BY AU_STEP.UNAME
         ORDER BY AU_STEP.UNAME
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       msg = error_message(q)
       count = TRecordCount(q)
       call TFirst(q)
       for i = 1 to count
         x[i] = TGetFld(q,"UN")
         y1[i] = TGetFld(q,"CNT")
         call TNext(q)
       next
       call FreeEmbSQL(q)              

       return
    endif
    
    {.......................................GET_ROLES_PARTICIPATION..........................}    
    if (function = "GET_ROLES_PARTICIPATION") then         {keep}

       hbar_series = True
       title = "Count of Closed Activities per Role"
       draw_type = "CHART"
       y_count = 1
       show_legend = False              

       start_sql "*" "KOSMOS"
         SELECT AU_STEP.RNAME AS RN, Count(AU_STEP.UNAME) AS CNT
         FROM AU_STEP
         WHERE (((AU_STEP.FINISHED)=1) AND ((AU_STEP.RNAME) Is Not Null Or (AU_STEP.RNAME)=''))
         AND ((AU_STEP.SCODE) LIKE :C)
         GROUP BY AU_STEP.RNAME                                                
         ORDER BY AU_STEP.RNAME
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       msg = error_message(q)
       count = TRecordCount(q)
       if (count = 0) then
         call FreeEmbSQL(q)
         return
       endif       
       call TFirst(q)
       for i = 1 to count
         x[i] = TGetFld(q,"RN")
         y1[i] = TGetFld(q,"CNT")
         call TNext(q)
       next
       call FreeEmbSQL(q)

       return
    endif    
    
    {.......................................GET_ASSIGNED_ACTIVITIES..........................}
    if (function = "GET_ASSIGNED_ACTIVITIES") then
    
       line_series = True
       title = "Assigned Activities / Closed Activities and Activities Acumulated"
       draw_type = "CHART"
       y_count = 3
       line1 = "Assinged"
       line2 = "Closed"
       line3 = "Acumulated"
       show_legend = True
       left_axis_title = "Count of Activities"
       bottom_axis_title = "Days since the begining"

       start_sql "*" "KOSMOS"
         SELECT AU_STEP.ASSIGNED_AT_DATE, Count(AU_STEP.AU_STEP) AS CNT
         FROM AU_STEP
         WHERE ((AU_STEP.SCODE Like :C) AND (AU_STEP.AU_PROCESS > 0))
         GROUP BY AU_STEP.ASSIGNED_AT_DATE
         ORDER BY AU_STEP.ASSIGNED_AT_DATE
       end_sql
       q = QueryByName()
       call TSetParam(q,"C",scode)
       call TExecute(q)
       count = TRecordCount(q)              
       if (count = 0) then
         call FreeEmbSQL(q)
         return
       endif
       call TFirst(q)                                          
       date1 = TGetFld(q,"ASSIGNED_AT_DATE")
       date2 = crDate                                                 
       date1_num = DateToNum(date1)
       date2_num = DateToNum(date2)
       array_dim = date2_num - date1_num
       
       if (array_dim > 0) then
       
         for i = 1 to array_dim+1
         x[i] = i
         y1[i] = 0
         y2[i] = 0
         y3[i] = 0
         next
       
         for i = 1 to count
         d1 = TGetFld(q,"ASSIGNED_AT_DATE")
         d = DateToNum(d1)
         d = d - date1_num
                                        
         y1[d+1] = TGetFld(q,"CNT")
call trace("ass d1=",d1,", cnt=",y1[d+1])
         call TNext(q)
         next
         call FreeEmbSQL(q)
        
         start_sql "*" "KOSMOS"
         SELECT AU_STEP.FINISHED_AT_DATE, Count(AU_STEP.AU_STEP) AS CNT
         FROM AU_STEP
         WHERE ((AU_STEP.SCODE Like :C) AND (AU_STEP.AU_PROCESS > 0) AND (AU_STEP.FINISHED=1))
         GROUP BY AU_STEP.FINISHED_AT_DATE
         ORDER BY AU_STEP.FINISHED_AT_DATE
         end_sql
         q1 = QueryByName()
         call TSetParam(q1,"C",scode)
         call TExecute(q1)
         count = TRecordCount(q1)
         call TFirst(q1)                                        

         for i = 1 to count
         d1 = TGetFld(q1,"FINISHED_AT_DATE")
         d = DateToNum(d1)
         d = d - date1_num
        
         y2[d+1] = TGetFld(q1,"CNT")
call trace("fin d1=",d1,", cnt=",y1[d+1])
        
         call TNext(q1)
         next
         call FreeEmbSQL(q1)
        
         for i = 1 to array_dim+1
         if (i = 1) then
                 y3[i] = y1[i] - y2[i]
         elseif (i > 1) then
                 y3[i] = y3[i-1] + y1[i] - y2[i]
         endif
call trace("d=",i,", y1=",y1[i],", y2=",y2[i],", y3=",y3[i])
         next
        
         count = array_dim+1
       endif
        
       return
    endif
    
end_action