diff --git a/application/WorkorderAdmin/WorkorderAdminController.php b/application/WorkorderAdmin/WorkorderAdminController.php index 07f82e930..c0771036f 100644 --- a/application/WorkorderAdmin/WorkorderAdminController.php +++ b/application/WorkorderAdmin/WorkorderAdminController.php @@ -311,5 +311,35 @@ class WorkorderAdminController extends WorkorderBaseController } return true; } + + protected function revertDocumentedStatusAction() + { + if (empty($this->postData['workorderId'])) { + self::sendError("Arbeitsauftrags-ID fehlt."); + } + + $workorder = WorkorderModel::get($this->postData['workorderId']); + if (!$workorder) { + self::sendError("Arbeitsauftrag nicht gefunden."); + } + + if ($workorder->status !== 'documented') { + self::sendError("Nur Aufträge mit Status 'Dokumentiert' können zurückgesetzt werden."); + } + + $oldStatus = $workorder->status; + $workorder->status = 'assigned'; // Revert to 'assigned' status + WorkorderModel::update((array)$workorder); + + WorkorderJournalModel::create([ + 'workorderId' => $workorder->id, + 'text' => 'Status von Admin von "' . $this->getStatusText($oldStatus) . '" auf "' . $this->getStatusText('assigned') . '" zurückgesetzt.', + 'statusChange' => $this->getStatusText($oldStatus) . " -> " . $this->getStatusText('assigned'), + 'create' => time(), + 'createBy' => $this->user->id, + ]); + + self::returnJson(['success' => true, 'message' => 'Status erfolgreich auf "Zugewiesen" zurückgesetzt.']); + } //endregion } \ No newline at end of file diff --git a/public/js/pages/WorkorderBase/WorkorderBase.js b/public/js/pages/WorkorderBase/WorkorderBase.js index 37b1c0781..47770f6f9 100644 --- a/public/js/pages/WorkorderBase/WorkorderBase.js +++ b/public/js/pages/WorkorderBase/WorkorderBase.js @@ -205,6 +205,10 @@ Vue.component('workorder-details-manager', {