'id', 'text' => 'ID', 'modal' => false], ['key' => 'distributorId', 'text' => 'Lieferant', 'required' => true, 'type' => 'autocomplete','table' => ['class' => 'text-nowrap', 'filter' => 'autocomplete'],'modal' => [ 'apiUrl' => 'WarehouseDistributor/autocomplete','items' => 'WarehouseDistributor/autocomplete', 'type' => 'autocomplete']], ['key' => 'extRef', 'text' => 'Externe Referenz', 'required' => false], ['key' => 'intRef', 'text' => 'Interne Referenz', 'required' => false], ['key' => 'status', 'text' => 'Status', 'required' => true, 'modal' => ['type' => 'select', 'items' => [ ['value' => 'new', 'text' => 'Neu'], ['value' => 'accepted', 'text' => 'An Lieferant übergeben'], ['value' => 'sent', 'text' => 'Gesendet'], ['value' => 'done', 'text' => 'Erledigt'], ]]], ['key' => 'trackingNumber', 'text' => 'Trackingnummer', 'required' => false], ['key' => 'sum', 'text' => 'Summe', 'required' => true, 'modal' => false, 'table' => ['filter' => 'numberRange']], ['key' => 'create', 'text' => 'Erstellt', 'required' => true, 'modal' => false, 'filter' => 'datetime'], ['key' => 'createBy', 'text' => 'Erstellt von', 'required' => true, 'table' => ['filter' => 'select'], 'modal' => ['type' => 'select', 'items' => []]], ['key' => 'actions', 'text' => 'Aktionen', 'required' => false, 'modal' => false, 'table' => ['filter' => false, 'sortable' => false, 'class' => 'text-center']], ]; protected array $additionalActions = [['key' => 'openHistory', 'title' => 'Historie', 'class' => 'fas fa-history text-primary']]; protected array $infoMessages = ['create' => 'Bestellung wurde erfolgreich erstellt.', 'update' => 'Bestellung wurde aktualisiert.', 'delete' => 'Bestellung wurde gelöscht', 'noChanges' => 'Keine Änderungen',]; public function permissionCheck(): bool { return $this->user->can(["WarehouseEShop"]); } protected function prepareCrudConfig() { // Fill Users in createBy column $column = array_search('createBy', array_column($this->columns, 'key')); $this->columns[$column]['modal']['items'] = array_map(function ($user) { return ['value' => intval($user->id), 'text' => $user->name]; }, UserModel::search()); } protected function createOrderAction() { ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $json = json_decode(file_get_contents('php://input'), true); $orders = $json; $orderIds = []; foreach ($orders as $order) { $distributor = $order['distributor'][0]; $orderAmount = $order['orderAmount']; $orders = $order['orders']; $order = [ 'distributorId' => $distributor['id'], 'extRef' => null, 'status' => 'new', 'trackingNumber' => null, 'sum' => $orderAmount, 'create' => time(), 'createBy' => $this->user->id, ]; $orderId = WarehouseOrderModel::create($order); $orderIds[] = $orderId; foreach ($orders as $orderItem) { $article = WarehouseArticleModel::get($orderItem['articleId']); WarehouseEShopOrderItemModel::create([ 'orderId' => $orderId, 'articleId' => $orderItem['articleId'], 'quantity' => $orderItem['amount'], 'price' => $article->cheapestPurchasePrice, ]); } } self::returnJson(['success' => true, 'message' => $this->infoMessages['create'], 'ids' => $orderIds]); } protected function getOrderItemsAction() { $orderItems = WarehouseEShopOrderItemModel::getAll(['orderId' => $this->request->id]); // also get the article name of the order items foreach ($orderItems as $key => $orderItem) { $article = WarehouseArticleModel::get($orderItem->articleId); $orderItem->articleName = $article->title; } self::returnJson($orderItems); } protected function beforeUpdate($postData): bool { (new WarehouseHistoryController)->create($postData, $this->mod); return true; } protected function getHistoryAction() { self::returnJson((new WarehouseHistoryController)->getHistory($this->request->id, $this->mod, $this->columns)); } }