diff --git a/application/WorkorderBase/WorkorderBaseController.php b/application/WorkorderBase/WorkorderBaseController.php index 5e1e2ca56..1811b6d1d 100644 --- a/application/WorkorderBase/WorkorderBaseController.php +++ b/application/WorkorderBase/WorkorderBaseController.php @@ -167,14 +167,40 @@ class WorkorderBaseController extends TTCrud $filters['preordercampaign_id'] = $tenantCampaigns; $newPreorders = PreorderModel::searchActive($filters); - foreach ($newPreorders as $preorder) { - if (!WorkorderModel::getFirst(['preorderId' => $preorder->id])) { - WorkorderModel::create([ - 'preorderId' => $preorder->id, 'clusterId' => $preorder->preordercampaign_id, - 'status' => 'new', 'create' => time(), 'createBy' => 0 // System User - ]); - } - } +foreach ($newPreorders as $preorder) { + $existingWorkorder = WorkorderModel::getFirst(['preorderId' => $preorder->id]); + + if ($existingWorkorder) { + if ($existingWorkorder->status === 'archived') { + $oldStatus = $existingWorkorder->status; + + WorkorderModel::update($existingWorkorder->id, [ + 'status' => 'new', + 'companyId' => null, + 'civilEngineeringCompanyId' => null, + 'deadlineDate' => null, + 'appointmentDate' => null, + 'clusterId' => $preorder->preordercampaign_id, + ]); + + WorkorderJournalModel::create([ + 'workorderId' => $existingWorkorder->id, + 'text' => 'Arbeitsauftrag wurde automatisch reaktiviert, da die zugehörige Vorbestellung wieder den Kriterien entspricht.', + 'statusChange' => $this->getStatusText($oldStatus) . " -> " . $this->getStatusText('new'), + 'create' => time(), + 'createBy' => 1, + ]); + } + } else { + WorkorderModel::create([ + 'preorderId' => $preorder->id, + 'clusterId' => $preorder->preordercampaign_id, + 'status' => 'new', + 'create' => time(), + 'createBy' => 1 + ]); + } +} } file_put_contents($lockFile, time()); } @@ -243,4 +269,4 @@ class WorkorderBaseController extends TTCrud file_put_contents($lockFile, time()); } //endregion -} \ No newline at end of file +}