overhauled workorder module

This commit is contained in:
Luca Haid
2025-10-08 14:32:04 +02:00
parent 2ce870746b
commit 41f941cfbc
5 changed files with 95 additions and 19 deletions

View File

@@ -1,8 +0,0 @@
<?php
class RMLWorkorderAdminController extends mfBaseController {
protected function init() {
$this->needlogin = true;
$this->redirect("WorkorderAdmin");
}
}

View File

@@ -1,8 +0,0 @@
<?php
class RMLWorkorderCompanyController extends mfBaseController {
protected function init() {
$this->needlogin = true;
$this->redirect("WorkorderCompany");
}
}

View File

@@ -13,6 +13,7 @@ class WorkorderBaseController extends TTCrud
['value' => 'new', 'text' => 'Neu', 'icon' => 'fas fa-star text-primary'],
['value' => 'assigned', 'text' => 'Zugewiesen', 'icon' => 'fas fa-user-check text-info'],
['value' => 'scheduled', 'text' => 'Geplant', 'icon' => 'fas fa-calendar-check text-warning'],
['value' => 'in_progress', 'text' => 'In Bearbeitung', 'icon' => 'fas fa-cog text-warning'],
['value' => 'correction_requested', 'text' => 'Korrektur angefordert', 'icon' => 'fas fa-exclamation-triangle text-danger'],
['value' => 'intervention_required', 'text' => 'Eingriff erforderlich', 'icon' => 'fas fa-times-circle text-danger'],
['value' => 'civil_engineering_required', 'text' => 'Tiefbau benötigt', 'icon' => 'fas fa-hard-hat text-orange'],
@@ -211,7 +212,7 @@ class WorkorderBaseController extends TTCrud
$activePreorderIds = array_column(PreorderModel::searchActive($activeFilters), 'id');
$activePreorderIdsSet = array_flip($activePreorderIds);
$statusesToCheck = ['new', 'assigned', 'scheduled', 'correction_requested', 'intervention_required', 'civil_engineering_required', 'civil_engineering_completed', 'problem_solved'];
$statusesToCheck = ['new', 'assigned', 'scheduled', 'in_progress', 'correction_requested', 'intervention_required', 'civil_engineering_required', 'civil_engineering_completed', 'problem_solved'];
$allTenantPreorders = PreorderModel::getAll(['preordercampaign_id' => $tenantCampaignIds]);
if(empty($allTenantPreorders)) continue;

View File

@@ -174,9 +174,26 @@ class WorkorderCompanyController extends WorkorderBaseController {
}
$workorder = WorkorderModel::get($workorderId);
if (in_array($workorder->status, ['correction_requested', 'problem_solved', 'civil_engineering_completed'])) {
$workorder->status = 'assigned';
$oldStatus = $workorder->status;
$newStatus = null;
if (in_array($oldStatus, ['assigned', 'scheduled'])) {
$newStatus = 'in_progress';
} else if (in_array($oldStatus, ['correction_requested', 'problem_solved', 'civil_engineering_completed'])) {
$newStatus = 'assigned';
}
if ($newStatus) {
$workorder->status = $newStatus;
WorkorderModel::update((array)$workorder);
WorkorderJournalModel::create([
'workorderId' => $workorder->id,
'text' => 'Status wurde nach Dokumenten-Upload automatisch auf In Beearbeitung gesetzt.',
'statusChange' => $this->getStatusText($oldStatus) . " -> " . $this->getStatusText($newStatus),
'create' => time(),
'createBy' => $this->user->id,
]);
}
self::returnJson(['success' => true, 'message' => "Datei(en) erfolgreich hochgeladen."]);

View File

@@ -0,0 +1,74 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class WorkorderAddInProgress extends AbstractMigration {
public function up(): void {
if ($this->getEnvironment() !== 'thetool') return;
$this->table('Workorder')
->changeColumn('status', 'enum', [
'values' => [
'new',
'assigned',
'scheduled',
'in_progress',
'correction_requested',
'intervention_required',
'civil_engineering_required',
'civil_engineering_completed',
'problem_solved',
'documented',
'completed',
'cancelled',
'archived',
'charged'
],
'default' => 'new',
'null' => false,
])
->save();
// Update existing Workorders that are assigned or scheduled and already have documentation.
$this->execute("
UPDATE Workorder w
SET w.status = 'in_progress'
WHERE w.status IN ('assigned', 'scheduled')
AND EXISTS (
SELECT 1
FROM WorkorderDocumentation wd
WHERE wd.workorderId = w.id
)
");
}
public function down(): void {
if ($this->getEnvironment() !== 'thetool') return;
$this->table('Workorder')
->changeColumn('status', 'enum', [
'values' => [
'new',
'assigned',
'scheduled',
'correction_requested',
'intervention_required',
'civil_engineering_required',
'civil_engineering_completed',
'problem_solved',
'documented',
'completed',
'cancelled',
'archived',
'charged'
],
'default' => 'new',
'null' => false,
])
->save();
}
}