From fc8bcc2e5d2eebda0361f20df8ad57b4b43480a0 Mon Sep 17 00:00:00 2001 From: Luca Haid Date: Mon, 20 Oct 2025 13:55:49 +0000 Subject: [PATCH] updated rml workorder --- .../WorkorderAdminController.php | 30 ++++++++++++++++++ .../js/pages/WorkorderBase/WorkorderBase.js | 31 +++++++++++++++++-- 2 files changed, 58 insertions(+), 3 deletions(-) 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', {
+ @@ -229,7 +233,7 @@ Vue.component('workorder-details-manager', {
-
+
Neues Dokument hochladen
@@ -280,6 +284,9 @@ Vue.component('workorder-details-manager', { Soll die Dokumentation für diesen Arbeitsauftrag wirklich akzeptiert und der Auftrag abgeschlossen werden? + + Möchten Sie den Status dieses Auftrags wirklich von 'Dokumentiert' auf 'Zugewiesen' zurücksetzen? Die Firma muss den Auftrag dann erneut einreichen. +
`, data: () => ({ loading: true, loadingConfig: true, workorder: null, docs: [], journals: [], tenantDocTypes: null, @@ -290,10 +297,10 @@ Vue.component('workorder-details-manager', { interventionData: null, interventionTypes: [], // Admin state - selectedDocs: [], correctionText: '', correctionLoading: false, showAcceptModal: false, + selectedDocs: [], correctionText: '', correctionLoading: false, showAcceptModal: false, showRevertModal: false, }), computed: { - isReadOnly() { return ['documented', 'completed', 'cancelled'].includes(this.workorder?.status); }, + isReadOnly() { return ['completed', 'cancelled'].includes(this.workorder?.status); }, requiredDocTypes() { return this.tenantDocTypes ?? []; }, @@ -459,6 +466,24 @@ Vue.component('workorder-details-manager', { this.showAcceptModal = false; }, getInterventionLabel(type) { return this.interventionTypes.find(t => t.value === type)?.text || type; }, + async revertDocumentedStatus() { + // Optional: Add loading state if needed + try { + const { data } = await axios.post(`${window.TT_CONFIG.BASE_PATH}/WorkorderAdmin/revertDocumentedStatus`, { + workorderId: this.workorderId + }); + if (data.success) { + window.notify('success', data.message); + this.showRevertModal = false; + await this.fetchData(); // Refresh data to show new status + this.$emit('workorder-updated'); // Or a more specific event if needed + } else { + window.notify('error', data.message || 'Status konnte nicht zurückgesetzt werden.'); + } + } catch (e) { + window.notify('error', 'Netzwerkfehler beim Zurücksetzen des Status.'); + } + }, }, async mounted() { await this.loadTenantConfig();