diff --git a/Kernel/Config/Files/XML/Ticket.xml b/Kernel/Config/Files/XML/Ticket.xml index acbbb22eab..7355b783b6 100644 --- a/Kernel/Config/Files/XML/Ticket.xml +++ b/Kernel/Config/Files/XML/Ticket.xml @@ -2408,6 +2408,13 @@ 1 + + Which units are used and shown in the overview for timeunits? + Frontend::Agent::Ticket::AccountedTime + + Minutes + + Defines the default ticket attribute for ticket sorting in the status view of the agent interface. Frontend::Agent::View::TicketStatus @@ -13094,6 +13101,13 @@ Thanks for your help! + + If the accounted time units for articles are shown in the article list. Only showing if at least one article has any accounted time. + Frontend::Agent::View::TicketZoom + + 1 + + AgentTicketZoom widget that displays ticket data in the side bar. Frontend::Agent::View::TicketZoom @@ -13779,6 +13793,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13817,6 +13832,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13855,6 +13871,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13893,6 +13910,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13931,6 +13949,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13969,6 +13988,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -14007,6 +14027,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -14045,6 +14066,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + diff --git a/Kernel/Modules/AgentTicketZoom.pm b/Kernel/Modules/AgentTicketZoom.pm index e001053697..8fdf26fb89 100644 --- a/Kernel/Modules/AgentTicketZoom.pm +++ b/Kernel/Modules/AgentTicketZoom.pm @@ -2389,6 +2389,25 @@ sub _ArticleTree { }, ); + # fetching accounted times of all articles to check if we display the column + my %ArticleAccountedTimes; + my $ShowTimeUnits = 0; + if ( $Self->{Config}{ArticleListShowTimeUnits} ) { + for my $ArticleTmp (@ArticleBox) { + + # Get accounted time for article using ArticleAccountedTimeGet + $ArticleAccountedTimes{ $ArticleTmp->{ArticleID} } = $ArticleObject->ArticleAccountedTimeGet( + ArticleID => $ArticleTmp->{ArticleID}, + ); + } + $ShowTimeUnits = ( any { $_ != 0 } values %ArticleAccountedTimes ) ? 1 : 0; + if ($ShowTimeUnits) { + $LayoutObject->Block( + Name => 'TimeUnitHeader', + ); + } + } + ARTICLE: for my $ArticleTmp (@ArticleBox) { my %Article = %$ArticleTmp; @@ -2473,6 +2492,17 @@ sub _ArticleTree { ShowDeletedArticles => $Self->{ShowDeletedArticles} ); + if ($ShowTimeUnits) { + + my %TimeUnitField = ( + Value => $ArticleAccountedTimes{ $ArticleTmp->{ArticleID} }, + Label => 'Time Unit' + ); + $Article{TimeUnit} = $ArticleAccountedTimes{ $ArticleTmp->{ArticleID} }; + + $ArticleFields{TimeUnit} = \%TimeUnitField; + } + # Get transmission status information for email articles. my $TransmissionStatus; if ( $Article{ChannelName} && $Article{ChannelName} eq 'Email' ) { @@ -2494,6 +2524,7 @@ sub _ArticleTree { TransmissionStatus => $TransmissionStatus, ZoomExpand => $Self->{ZoomExpand}, ZoomExpandSort => $Self->{ZoomExpandSort}, + ShowTimeUnits => $ShowTimeUnits, }, ); diff --git a/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewMedium.tt b/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewMedium.tt index 185e4534df..ee4a71c6b5 100644 --- a/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewMedium.tt +++ b/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewMedium.tt @@ -202,6 +202,12 @@
[% Data.SolutionTimeHuman | html %] / [% Data.SolutionTimeDestinationDate | Localize("TimeShort") %]
[% RenderBlockEnd("SolutionTime") %] + + +[% RenderBlockStart("AccountedTime") %] +
[% Data.AccountedTime | html %]
+[% RenderBlockEnd("AccountedTime") %] + diff --git a/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewPreview.tt b/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewPreview.tt index 3f54ebfad6..3b8d5113e1 100644 --- a/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewPreview.tt +++ b/Kernel/Output/HTML/Templates/Standard/AgentTicketOverviewPreview.tt @@ -156,6 +156,11 @@
[% Data.Type | html %]
[% RenderBlockEnd("Type") %] + +[% RenderBlockStart("AccountedTime") %] +
[% Data.AccountedTime | html %]
+[% RenderBlockEnd("AccountedTime") %] + [% RenderBlockStart("UpdateTime") %] diff --git a/Kernel/Output/HTML/Templates/Standard/AgentTicketZoom.tt b/Kernel/Output/HTML/Templates/Standard/AgentTicketZoom.tt index 033f26c50c..d3da86e1d1 100644 --- a/Kernel/Output/HTML/Templates/Standard/AgentTicketZoom.tt +++ b/Kernel/Output/HTML/Templates/Standard/AgentTicketZoom.tt @@ -426,6 +426,9 @@ +[% RenderBlockStart("TimeUnitHeader") %] + [% Translate("Time Units") | html %] +[% RenderBlockEnd("TimeUnitHeader") %] @@ -518,6 +521,11 @@ [% RenderBlockEnd("TreeItemNoAttachment") %] + [% IF Data.ShowTimeUnits %] + + [% Data.TimeUnit | html %] + + [% END %] [% RenderBlockEnd("TreeItem") %] diff --git a/Kernel/Output/HTML/TicketOverview/Medium.pm b/Kernel/Output/HTML/TicketOverview/Medium.pm index c8bf0be8f0..b87908416a 100644 --- a/Kernel/Output/HTML/TicketOverview/Medium.pm +++ b/Kernel/Output/HTML/TicketOverview/Medium.pm @@ -865,6 +865,19 @@ sub _Show { ); } + # show accounted time if needed + # get ticket object + my $DataValue = $TicketObject->TicketAccountedTimeGet( TicketID => $Param{TicketID} ); + + if ( defined $DataValue ) { + $LayoutObject->Block( + Name => 'AccountedTime', + Data => { + AccountedTime => $DataValue, + }, + ); + } + # Dynamic fields $Counter = 0; my $DisplayDynamicFieldTable = 1; diff --git a/Kernel/Output/HTML/TicketOverview/Preview.pm b/Kernel/Output/HTML/TicketOverview/Preview.pm index 224e9495bc..c132f431b2 100644 --- a/Kernel/Output/HTML/TicketOverview/Preview.pm +++ b/Kernel/Output/HTML/TicketOverview/Preview.pm @@ -962,6 +962,19 @@ sub _Show { ); } + # show accounted time if needed + # get ticket object + my $DataValue = $TicketObject->TicketAccountedTimeGet( TicketID => $Param{TicketID} ); + + if ( defined $DataValue ) { + $LayoutObject->Block( + Name => 'AccountedTime', + Data => { + AccountedTime => $DataValue, + }, + ); + } + # Dynamic fields $Counter = 0; my $Class = 'Middle'; diff --git a/Kernel/Output/HTML/TicketOverview/Small.pm b/Kernel/Output/HTML/TicketOverview/Small.pm index 3e0c3873af..14f68bdd71 100644 --- a/Kernel/Output/HTML/TicketOverview/Small.pm +++ b/Kernel/Output/HTML/TicketOverview/Small.pm @@ -168,6 +168,7 @@ sub new { 'EscalationUpdateTime' => 1, 'EscalationResponseTime' => 1, 'EscalationSolutionTime' => 1, + 'AccountedTime' => 1, }; $Self->{AvailableFilterableColumns} = { @@ -1632,6 +1633,13 @@ sub Run { $DataValue = $ResponsibleInfo{'UserFullname'}; } + elsif ( $TicketColumn eq 'AccountedTime' ) { + + # get ticket object + my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket'); + my $TimeUnits = $ConfigObject->Get("AccountedTime::UsedUnits"); + $DataValue = $TicketObject->TicketAccountedTimeGet( TicketID => $Article{TicketID} ) . ' ' . $TimeUnits; + } else { $DataValue = $Article{$TicketColumn} || $UserInfo{$TicketColumn} @@ -2108,6 +2116,7 @@ sub _DefaultColumnSort { Service => 191, SLA => 192, Priority => 193, + AccountedTime => 194, ); # dynamic fields can not be on the DefaultColumns sorting hash