overhauled workorder module
This commit is contained in:
@@ -54,6 +54,7 @@ class WorkorderAdminController extends WorkorderBaseController
|
||||
public function indexAction()
|
||||
{
|
||||
$this->createWorkordersFromPreorders();
|
||||
$this->archiveWorkorders();
|
||||
parent::indexAction();
|
||||
}
|
||||
|
||||
@@ -177,6 +178,40 @@ class WorkorderAdminController extends WorkorderBaseController
|
||||
self::returnJson(['success' => true, 'message' => 'Dokumentation akzeptiert und Arbeitsauftrag abgeschlossen.']);
|
||||
}
|
||||
|
||||
protected function chargeWorkorderAction()
|
||||
{
|
||||
if (!$this->user->can('RMLAdmin')) {
|
||||
self::sendError("Keine Berechtigung.");
|
||||
}
|
||||
|
||||
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 !== 'completed') {
|
||||
self::sendError("Nur abgeschlossene Arbeitsaufträge können verrechnet werden.");
|
||||
}
|
||||
|
||||
$oldStatus = $workorder->status;
|
||||
$workorder->status = 'charged';
|
||||
WorkorderModel::update((array)$workorder);
|
||||
|
||||
WorkorderJournalModel::create([
|
||||
'workorderId' => $workorder->id,
|
||||
'text' => 'Arbeitsauftrag wurde als verrechnet markiert.',
|
||||
'statusChange' => $this->getStatusText($oldStatus) . " -> " . $this->getStatusText('charged'),
|
||||
'create' => time(),
|
||||
'createBy' => $this->user->id,
|
||||
]);
|
||||
|
||||
self::returnJson(['success' => true, 'message' => 'Arbeitsauftrag als verrechnet markiert.']);
|
||||
}
|
||||
|
||||
protected function setToProblemSolvedAction()
|
||||
{
|
||||
if (empty($this->postData['workorderId']) || empty($this->postData['text'])) self::sendError("Arbeitsauftrags-ID und Text sind erforderlich.");
|
||||
@@ -276,32 +311,5 @@ class WorkorderAdminController extends WorkorderBaseController
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private function createWorkordersFromPreorders()
|
||||
{
|
||||
$configs = WorkorderTenantConfigModel::getAll();
|
||||
foreach ($configs as $config) {
|
||||
$filters = json_decode($config->workorderCreationFilters, true);
|
||||
if (empty($filters)) continue;
|
||||
|
||||
$networks = NetworkModel::search(['owner_id' => $config->addressId]);
|
||||
if (empty($networks)) continue;
|
||||
|
||||
$tenantCampaigns = array_map(fn($n) => $n->id, PreordercampaignModel::getAll(['network_id' => array_map(fn($n) => $n->id, $networks)]));
|
||||
if (empty($tenantCampaigns)) continue;
|
||||
|
||||
$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
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user