overhauled workorder module
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
class RMLWorkorderAdminController extends mfBaseController {
|
||||
protected function init() {
|
||||
$this->needlogin = true;
|
||||
$this->redirect("WorkorderAdmin");
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
class RMLWorkorderCompanyController extends mfBaseController {
|
||||
protected function init() {
|
||||
$this->needlogin = true;
|
||||
$this->redirect("WorkorderCompany");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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."]);
|
||||
|
||||
74
db/migrations/20251008140000_workorder_add_in_progress.php
Normal file
74
db/migrations/20251008140000_workorder_add_in_progress.php
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user