'id', 'text' => 'ID', 'modal' => false, 'table' => false], ['key' => 'offerNumber', 'text' => 'Angebotsnummer', 'required' => true, 'modal' => false], ['key' => 'customerNumber', 'text' => 'Kundennummer', 'required' => true, 'modal' => false], ['key' => 'customerName', 'text' => 'Kundenname', 'required' => true, 'modal' => false], ['key' => 'customerCity', 'text' => 'Stadt', 'required' => true, 'modal' => false], ['key' => 'customerVAT', 'text' => 'UID', 'required' => true, 'modal' => false], ['key' => 'editor', 'text' => 'Sachbearbeiter', 'required' => true, 'modal' => ['type' => 'select'], 'table' => ['filter' => 'select']], ['key' => 'totalAmount', 'text' => 'Gesamtbetrag', 'required' => true, 'modal' => false], ['key' => 'status', 'text' => 'Status', 'required' => true], ['key' => 'create', 'text' => 'Erstellt', 'required' => true, 'modal' => false], ['key' => 'createBy', 'text' => 'Erstellt von', 'required' => true, 'modal' => ['type' => 'select'], 'table' => ['filter' => 'select']], ['key' => 'actions', 'text' => 'Aktionen', 'required' => false, 'modal' => false, 'table' => ['filter' => false, 'sortable' => false, 'class' => 'text-center']], ]; protected array $permissionCheck = ['WarehouseAdmin']; protected array $additionalActions = [['key' => 'openHistory', 'title' => 'Historie', 'class' => 'fas fa-history text-primary']]; protected function prepareCrudConfig(): void { $editorColumnIndex = array_search('editor', array_column($this->columns, 'key')); $this->columns[$editorColumnIndex]['modal']['items'] = array_map(function ($user) { return ['value' => intval($user->id), 'text' => $user->name]; }, UserModel::search(['employee' => true])); } protected function beforeCreate(): bool { $currentCount = WarehouseOfferModel::count(['create' => ['from' => strtotime(date('Y-01-01'))]]); $this->postData['offerNumber'] = 'AN' . date('Y') . '-' . str_pad($currentCount + 1, 4, '0', STR_PAD_LEFT); $this->postData['status'] = 'new'; return true; } 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)); } protected function createTemplateAction() { $_POST = json_decode(file_get_contents('php://input'), true); $templateId = WarehouseOfferTemplateModel::create([ 'templateName' => $_POST['name'], 'positions' => $_POST['positions'], 'totalDiscount' => $_POST['totalDiscount'], 'paymentTerms' => $_POST['paymentTerms'], 'deliveryTerms' => $_POST['deliveryTerms'], 'closingText' => $_POST['closingText'], 'notes' => $_POST['notes'], ]); self::returnJson(['success' => true, 'id' => $templateId]); } protected function getTemplatesAction() { self::returnJson(WarehouseOfferTemplateModel::getAll()); } }