From 8918b09d996e69632e97c77eed0c7aa643b38511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=A4rter?= Date: Thu, 27 Jun 2024 14:47:54 +0200 Subject: [PATCH 1/4] Issue #3545: Included AccountedTime in ticket overviews. --- Kernel/Config/Files/XML/Ticket.xml | 16 ++++++++++++++++ .../Standard/AgentTicketOverviewMedium.tt | 6 ++++++ .../Standard/AgentTicketOverviewPreview.tt | 5 +++++ Kernel/Output/HTML/TicketOverview/Medium.pm | 13 +++++++++++++ Kernel/Output/HTML/TicketOverview/Preview.pm | 13 +++++++++++++ Kernel/Output/HTML/TicketOverview/Small.pm | 9 +++++++++ 6 files changed, 62 insertions(+) diff --git a/Kernel/Config/Files/XML/Ticket.xml b/Kernel/Config/Files/XML/Ticket.xml index acbbb22eab..b02c0791bc 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 @@ -13779,6 +13786,8 @@ Thanks for your help! 1 - Available 2 - Enabled by default + + @@ -13817,6 +13826,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13855,6 +13865,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13893,6 +13904,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13931,6 +13943,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -13969,6 +13982,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -14007,6 +14021,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + @@ -14045,6 +14060,7 @@ Thanks for your help! 1 - Available 2 - Enabled by default + 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/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 From c1bd36192f969e18efbb48dc6ff04d830d116dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=A4rter?= Date: Thu, 27 Jun 2024 15:05:59 +0200 Subject: [PATCH 2/4] Issue #3545: Display accounted time units in AgentTicketZoom article list if any exist. --- Kernel/Modules/AgentTicketZoom.pm | 28 +++++++++++++++++++ .../Templates/Standard/AgentTicketZoom.tt | 8 ++++++ 2 files changed, 36 insertions(+) diff --git a/Kernel/Modules/AgentTicketZoom.pm b/Kernel/Modules/AgentTicketZoom.pm index e001053697..32169edd68 100644 --- a/Kernel/Modules/AgentTicketZoom.pm +++ b/Kernel/Modules/AgentTicketZoom.pm @@ -2389,6 +2389,22 @@ sub _ArticleTree { }, ); + # fetching accounted times of all articles to check if we display the column + my %ArticleAccountedTimes; + for my $ArticleTmp (@ArticleBox) { + + # Get accounted time for article using ArticleAccountedTimeGet + $ArticleAccountedTimes{ $ArticleTmp->{ArticleID} } = $ArticleObject->ArticleAccountedTimeGet( + ArticleID => $ArticleTmp->{ArticleID}, + ); + } + my $ShowTimeUnits = ( any { $_ != 0 } values %ArticleAccountedTimes ) ? 1 : 0; + if ($ShowTimeUnits) { + $LayoutObject->Block( + Name => 'TimeUnitHeader', + ); + } + ARTICLE: for my $ArticleTmp (@ArticleBox) { my %Article = %$ArticleTmp; @@ -2473,6 +2489,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 +2521,7 @@ sub _ArticleTree { TransmissionStatus => $TransmissionStatus, ZoomExpand => $Self->{ZoomExpand}, ZoomExpandSort => $Self->{ZoomExpandSort}, + ShowTimeUnits => $ShowTimeUnits, }, ); 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") %] From 84f37ff220455e99830f1597831ee1a494245619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=A4rter?= Date: Thu, 27 Jun 2024 15:08:59 +0200 Subject: [PATCH 3/4] Issue #3545: Removed duplicated entry. --- Kernel/Config/Files/XML/Ticket.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/Kernel/Config/Files/XML/Ticket.xml b/Kernel/Config/Files/XML/Ticket.xml index b02c0791bc..9acc6b3815 100644 --- a/Kernel/Config/Files/XML/Ticket.xml +++ b/Kernel/Config/Files/XML/Ticket.xml @@ -13787,7 +13787,6 @@ Thanks for your help! 2 - Enabled by default - From 1f7fb9bd82754cd215df5c6b9b72484995b40765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=A4rter?= Date: Thu, 27 Jun 2024 15:27:17 +0200 Subject: [PATCH 4/4] Issue #3545: Added sysconfig option for displaying time units in AgentTicketZoom article list. --- Kernel/Config/Files/XML/Ticket.xml | 7 +++++++ Kernel/Modules/AgentTicketZoom.pm | 25 ++++++++++++++----------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Kernel/Config/Files/XML/Ticket.xml b/Kernel/Config/Files/XML/Ticket.xml index 9acc6b3815..7355b783b6 100644 --- a/Kernel/Config/Files/XML/Ticket.xml +++ b/Kernel/Config/Files/XML/Ticket.xml @@ -13101,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 diff --git a/Kernel/Modules/AgentTicketZoom.pm b/Kernel/Modules/AgentTicketZoom.pm index 32169edd68..8fdf26fb89 100644 --- a/Kernel/Modules/AgentTicketZoom.pm +++ b/Kernel/Modules/AgentTicketZoom.pm @@ -2391,18 +2391,21 @@ sub _ArticleTree { # fetching accounted times of all articles to check if we display the column my %ArticleAccountedTimes; - for my $ArticleTmp (@ArticleBox) { + 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}, - ); - } - my $ShowTimeUnits = ( any { $_ != 0 } values %ArticleAccountedTimes ) ? 1 : 0; - if ($ShowTimeUnits) { - $LayoutObject->Block( - Name => 'TimeUnitHeader', - ); + # 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: