From d50ebbb16a1e6b8ec4f55c63d2f01404cda20bb4 Mon Sep 17 00:00:00 2001 From: aydreeihn <adriane@enhancesoft.com> Date: Fri, 8 Nov 2019 09:19:50 -0600 Subject: [PATCH] Modify Reopen Assignment This commit modifies the code to ensure that if the 'Disable auto assign on reopen' box is checked for a department, reopened tickets are open as unassigned when a ticket is reopened by a user's message as well as when an agent manually reopens the ticket. --- include/class.ticket.php | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/include/class.ticket.php b/include/class.ticket.php index f8dbc5bf5..e28ec6993 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -1363,7 +1363,24 @@ implements RestrictedAccess, Threadable, Searchable { }; break; case 'open': - // TODO: check current status if it allows for reopening + if ($this->isClosed() && $this->isReopenable()) { + // Auto-assign to closing staff or the last respondent if the + // agent is available and has access. Otherwise, put the ticket back + // to unassigned pool. + $dept = $this->getDept(); + $staff = $this->getStaff() ?: $this->getLastRespondent(); + $autoassign = (!$dept->disableReopenAutoAssign()); + if ($autoassign + && $staff + // Is agent on vacation ? + && $staff->isAvailable() + // Does the agent have access to dept? + && $staff->canAccessDept($dept)) + $this->setStaffId($staff->getId()); + else + $this->setStaffId(0); // Clear assignment + } + if ($this->isClosed()) { $this->closed = $this->lastupdate = $this->reopened = SqlFunction::NOW(); $ecb = function ($t) { @@ -1701,24 +1718,8 @@ implements RestrictedAccess, Threadable, Searchable { // We're also checking autorespond flag because we don't want to // reopen closed tickets on auto-reply from end user. This is not to // confused with autorespond on new message setting - if ($reopen && $this->isClosed() && $this->isReopenable()) { + if ($reopen && $this->isClosed() && $this->isReopenable()) $this->reopen(); - // Auto-assign to closing staff or the last respondent if the - // agent is available and has access. Otherwise, put the ticket back - // to unassigned pool. - $dept = $this->getDept(); - $staff = $this->getStaff() ?: $this->getLastRespondent(); - $autoassign = (!$dept->disableReopenAutoAssign()); - if ($autoassign - && $staff - // Is agent on vacation ? - && $staff->isAvailable() - // Does the agent have access to dept? - && $staff->canAccessDept($dept)) - $this->setStaffId($staff->getId()); - else - $this->setStaffId(0); // Clear assignment - } if (!$autorespond) return; -- GitLab