https://rt-wiki.bestpractical.com/index.php?title=TimeWorked&feed=atom&action=history
TimeWorked - Revision history
2024-03-29T13:35:42Z
Revision history for this page on the wiki
MediaWiki 1.37.2
https://rt-wiki.bestpractical.com/index.php?title=TimeWorked&diff=3871&oldid=prev
Admin: 2 revisions imported
2016-04-06T20:39:28Z
<p>2 revisions imported</p>
<p><b>New page</b></p><div>[[TimeWorked]] report is a custom report used mainly by managers to find out how much time users spent solving tickets. It has been write for RT 3.6.1 . The code has been written by Şubredu Manuel (diablo - packages.ro) Code updated for RT-3.8.2 by Disaster<br />
<br />
INSTALL<br />
<br />
Add to /path/to/rt/share/html/Tools/Reports/Elements/Tabs the following content:<br />
<br />
d =&gt; {<br />
title =&gt; loc('Time worked'),<br />
path =&gt; 'Tools/Reports/TimeWorked.html',<br />
},<br />
<br />
<br />
Add to /path/to/rt/share/html/Tools/Reports/index.html the following content:<br />
<br />
D =&gt; {<br />
title =&gt; loc('Time worked'),<br />
path =&gt; '/Tools/Reports/TimeWorked.html',<br />
description =&gt; loc('Show how much time has been worked on resolved tickets for a given interval'),<br />
},<br />
<br />
<br />
Now, create /path/to/rt/share/html/Tools/Reports/[[TimeWorked]].html with the following content:<br />
<br />
<nowiki>&lt;%args&gt;<br />
$StartDate =&gt; undef<br />
$EndDate =&gt; undef<br />
&lt;/%args&gt;<br />
<br />
&lt;&amp; /Elements/Header, Title =&gt; $title &amp;&gt;<br />
&lt;&amp; /Tools/Reports/Elements/Tabs, current_tab =&gt; 'Tools/Reports/TimeWorked.html', Title =&gt; $title &amp;&gt;<br />
&lt;hr&gt;<br />
&lt;%init&gt;<br />
my ($start_date, $end_date, $title);<br />
<br />
$title = loc('Time worked in all queues');<br />
<br />
$start_date = RT::Date-&gt;new($session{'CurrentUser'});<br />
$end_date = RT::Date-&gt;new($session{'CurrentUser'});<br />
<br />
if ($StartDate) {<br />
$start_date-&gt;Set(Format =&gt; 'unknown', Value =&gt; $StartDate);<br />
$StartDate = $start_date-&gt;AsString;<br />
}<br />
<br />
if ($EndDate) {<br />
$end_date-&gt;Set(Format =&gt; 'unknown', Value =&gt; $EndDate);<br />
$EndDate = $end_date-&gt;AsString;<br />
}<br />
<br />
&lt;/%init&gt;<br />
<br />
&lt;form method="post" action="TimeWorked.html"&gt;<br />
&lt;br /&gt;<br />
&lt;&amp;|/l&amp;&gt;Start date&lt;/&amp;&gt;:<br />
&lt;&amp; /Elements/SelectDate, Name =&gt; 'StartDate', Default =&gt; ($StartDate) ? $start_date-&gt;ISO : ''&amp;&gt;<br />
&lt;br /&gt;<br />
&lt;&amp;|/l&amp;&gt;End date&lt;/&amp;&gt;:<br />
&lt;&amp; /Elements/SelectDate, Name =&gt; 'EndDate', Default =&gt; ($EndDate) ? $end_date-&gt;ISO : ''&amp;&gt;<br />
<br />
&lt;&amp; /Elements/Submit&amp;&gt;<br />
<br />
&lt;/form&gt;<br />
&lt;%perl&gt;<br />
my ($uhash, $ulist, $q_list, $queue_time);<br />
<br />
# First let's prepare to take the users list<br />
$ulist = new RT::Users($session{'CurrentUser'});<br />
<br />
# We consider only the priviledged users<br />
$ulist-&gt;LimitToPrivileged;<br />
<br />
# initialize the users hash information. This hash is going to be used<br />
# to hold all the time worked information<br />
<br />
while (my $user = $ulist-&gt;Next) {<br />
my %ustat;<br />
<br />
$ustat{'real_name'} = $user-&gt;RealName;<br />
$ustat{'total'} = 0;<br />
$ustat{'queues'} = ();<br />
<br />
$uhash-&gt;{$user-&gt;Id} = \%ustat;<br />
}<br />
<br />
# prepare to take the queues list<br />
$q_list = RT::Queues-&gt;new($session{'CurrentUser'});<br />
$q_list-&gt;UnLimit;<br />
<br />
# for each queue<br />
while(my $queue = $q_list-&gt;Next) {<br />
next if ($queue-&gt;Disabled);<br />
<br />
my ($sql_query, $tickets);<br />
<br />
$sql_query = q{};<br />
$tickets = RT::Tickets-&gt;new($session{'CurrentUser'});<br />
$queue_time-&gt;{$queue-&gt;Name} = 0;<br />
<br />
# select only the RESOLVED tickets from the current queue<br />
$sql_query = sprintf("Status = 'resolved' AND Queue = '%s'", $queue-&gt;Name);<br />
if ($StartDate) {<br />
$sql_query .= sprintf(" AND Resolved &gt;= '%s'", $start_date-&gt;ISO);<br />
}<br />
if ($EndDate) {<br />
$sql_query .= sprintf(" AND Resolved &lt;= '%s'", $end_date-&gt;ISO);<br />
}<br />
<br />
$tickets-&gt;FromSQL($sql_query);<br />
<br />
# cycle trough the tickets from the current queue<br />
while(my $ticket = $tickets-&gt;Next()) {<br />
my $user_id;<br />
<br />
$user_id = $ticket-&gt;Owner;<br />
<br />
# adjust the total time worked by all users on the current queue<br />
$queue_time-&gt;{$queue-&gt;Name} += $ticket-&gt;TimeWorked;<br />
<br />
# adjust the total time worked (for all queues)<br />
$uhash-&gt;{$user_id}-&gt;{total} += $ticket-&gt;TimeWorked;<br />
<br />
# adjust the time spent on the current queue<br />
if ($uhash-&gt;{$user_id}-&gt;{queues}-&gt;{$queue-&gt;Name}) {<br />
$uhash-&gt;{$user_id}-&gt;{queues}-&gt;{$queue-&gt;Name} += $ticket-&gt;TimeWorked;<br />
}<br />
else {<br />
$uhash-&gt;{$user_id}-&gt;{queues}-&gt;{$queue-&gt;Name} = $ticket-&gt;TimeWorked;<br />
}<br />
}<br />
}<br />
foreach(keys(%{ $uhash })) {<br />
my $user_id = $_;<br />
<br />
next if ($uhash-&gt;{$user_id}-&gt;{total} == 0);<br />
print '&lt;h2&gt;',$uhash-&gt;{$user_id}-&gt;{real_name},'&lt;/h2&gt;';<br />
print '&lt;table&gt;&lt;tdata&gt;',$/;<br />
<br />
foreach(keys(%{ $uhash-&gt;{$user_id}-&gt;{queues} })) {<br />
<br />
next if ($uhash-&gt;{$user_id}-&gt;{queues}-&gt;{$_} == 0);<br />
<br />
print '&lt;tr&gt;',<br />
'&lt;td&gt;',$_,'&lt;/td&gt;',<br />
'&lt;td&gt;',$uhash-&gt;{$user_id}-&gt;{queues}-&gt;{$_},'&lt;/td&gt;',<br />
'&lt;/tr&gt;',$/;<br />
}<br />
print '&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td&gt;',$uhash-&gt;{$user_id}-&gt;{total},'&lt;/td&gt;&lt;/tr&gt;',<br />
'&lt;/tdata&gt;&lt;/table&gt;',$/;<br />
}<br />
<br />
if (keys(%{ $queue_time })) {<br />
my $total_queues_time = 0;<br />
<br />
print '&lt;h2&gt;Queue times&lt;/h2&gt;',<br />
'&lt;table&gt;&lt;tdata&gt;',$/;<br />
foreach(keys(%{ $queue_time })) {<br />
print '&lt;tr&gt;',<br />
'&lt;td&gt;',$_,'&lt;/td&gt;',<br />
'&lt;td&gt;',$queue_time-&gt;{$_},'&lt;/td&gt;',<br />
'&lt;/tr&gt;',$/;<br />
<br />
$total_queues_time += $queue_time-&gt;{$_};<br />
}<br />
print '&lt;tr style="font-weight: bold"&gt;',<br />
'&lt;td&gt;Total&lt;/td&gt;',<br />
'&lt;td&gt;',$total_queues_time,'&lt;/td&gt;',<br />
'&lt;/tr&gt;',$/,<br />
'&lt;/tdata&gt;&lt;/table&gt;',$/;<br />
}<br />
<br />
&lt;/%perl&gt;<br />
</nowiki></div>
Admin