verlangeAnmeldung(); $suche = $this->query('suche'); $this->render('vorlagen/index.php', [ 'titel' => 'Buchungsvorlagen', 'vorlagen' => Buchungsvorlage::alle($suche), 'suche' => $suche, 'anzahl' => Buchungsvorlage::anzahl(), 'konten' => Konto::alle(true), 'kategorien' => Kategorie::baumFlach(null, true), 'klassen' => Klasse::alle(), ]); } public function anlegen(): void { $this->verlangeAnmeldung(); try { Buchungsvorlage::anlegen($this->formulardaten()); } catch (\Throwable $e) { View::redirect('/vorlagen', $e->getMessage(), 'fehler'); return; } View::redirect('/vorlagen', 'Vorlage angelegt.'); } /** @param array $params */ public function speichern(array $params): void { $this->verlangeAnmeldung(); try { Buchungsvorlage::speichern((int)$params['id'], $this->formulardaten()); } catch (\Throwable $e) { View::redirect('/vorlagen', $e->getMessage(), 'fehler'); return; } View::redirect('/vorlagen', 'Vorlage gespeichert.'); } /** @param array $params */ public function loeschen(array $params): void { $this->verlangeAnmeldung(); Buchungsvorlage::loeschen((int)$params['id']); View::redirect('/vorlagen', 'Vorlage gelöscht.'); } /** @param array $params */ public function buchen(array $params): void { $this->verlangeAnmeldung(); try { $buchungId = Buchungsvorlage::buchen((int)$params['id'], [ 'datum' => $this->post('datum') ?: date('Y-m-d'), 'betrag' => $this->post('betrag'), 'konto_id' => $this->post('konto_id'), ]); } catch (\Throwable $e) { View::redirect('/vorlagen', $e->getMessage(), 'fehler'); return; } View::redirect('/buchungen/' . $buchungId, 'Buchung aus der Vorlage angelegt.'); } /** Aus einer vorhandenen Buchung eine Vorlage machen. */ public function ausBuchung(): void { $this->verlangeAnmeldung(); $buchungId = (int)$this->post('buchung_id'); try { Buchungsvorlage::ausBuchung($buchungId, $this->post('name')); } catch (\Throwable $e) { View::redirect('/buchungen/' . $buchungId, $e->getMessage(), 'fehler'); return; } View::redirect('/buchungen/' . $buchungId, 'Vorlage aus dieser Buchung angelegt.'); } /** @return array */ private function formulardaten(): array { return [ 'name' => $this->post('name'), 'konto_id' => $this->post('konto_id'), 'betrag' => str_replace(',', '.', $this->post('betrag')), 'empfaenger' => $this->post('empfaenger'), 'buchungstext' => $this->post('buchungstext'), 'nummer' => $this->post('nummer'), 'kategorie_id' => $this->post('kategorie_id'), 'klasse_id' => $this->post('klasse_id'), 'gegenkonto_id' => $this->post('gegenkonto_id'), ]; } }