Jeder Legendeneintrag der Cockpit-Kacheln führt zu den Buchungen, aus denen sich sein Wert zusammensetzt: Kategorien, „Nicht kategorisiert“ und „Übrige“ in „Meine Ausgaben“, Einnahmen/Ausgaben/Saldo in „Einnahmen und Ausgaben“, Konten der Vermögensentwicklung ins Kontoblatt. Ziel ist der Drilldown der Auswertungen mit dem Filter der Kachel; zeilenbuchungen() kennt dafür einen Art-Filter, „alle Bewegungen“ und mehrere Kategorien. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
105 lines
3.7 KiB
PHP
105 lines
3.7 KiB
PHP
<?php
|
||
|
||
use Finanzmanager\View;
|
||
|
||
/**
|
||
* Der Drilldown: die Buchungen hinter einer Berichtszeile – oder hinter einem
|
||
* Legendeneintrag einer Cockpit-Kachel.
|
||
*
|
||
* @var array<string,mixed> $zeile
|
||
* @var string $zurueck
|
||
* @var bool $ausCockpit
|
||
*/
|
||
|
||
$ausCockpit = $ausCockpit ?? false;
|
||
$artname = match ($zeile['art'] ?? '') {
|
||
'einnahme' => 'Einnahmen',
|
||
'ausgabe' => 'Ausgaben',
|
||
default => '',
|
||
};
|
||
|
||
include __DIR__ . '/../layout/kopf.php';
|
||
?>
|
||
|
||
<div class="tableiste">
|
||
<?php if ($ausCockpit): ?>
|
||
<a class="tab" href="/">Cockpit</a>
|
||
<?php else: ?>
|
||
<a class="tab" href="/auswertungen">Hauptansicht</a>
|
||
<a class="tab" href="<?= View::h($zurueck) ?>">Bericht</a>
|
||
<?php endif; ?>
|
||
<span class="tab aktiv">Buchungen</span>
|
||
</div>
|
||
|
||
<div class="seitenaktionen">
|
||
<a href="<?= View::h($zurueck) ?>" class="knopf primaer"><?= $ausCockpit ? 'Zurück zum Cockpit' : 'Zurück zum Bericht' ?></a>
|
||
</div>
|
||
|
||
<div class="berichtskopf">
|
||
<h2><?= View::h($zeile['name']) ?></h2>
|
||
<p><?= View::h($zeile['dimension']) ?><?= $artname !== '' && $artname !== $zeile['name'] ? ' · ' . View::h($artname) : '' ?>
|
||
· <?= View::h($zeile['spaltentitel']) ?></p>
|
||
</div>
|
||
|
||
<?php if ($zeile['buchungen'] === []): ?>
|
||
<p class="platzhalter">Zu dieser Zeile gibt es keine Buchungen mehr – vermutlich wurde
|
||
zwischenzeitlich etwas geändert.</p>
|
||
<?php else: ?>
|
||
<table class="liste">
|
||
<thead>
|
||
<tr>
|
||
<th>Datum</th>
|
||
<th>Konto</th>
|
||
<th>Empfänger</th>
|
||
<th>Buchungstext</th>
|
||
<th>Kategorie</th>
|
||
<th>Klasse</th>
|
||
<th class="rechts">Betrag</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<?php foreach ($zeile['buchungen'] as $buchung): ?>
|
||
<tr>
|
||
<td class="nowrap"><?= View::datum($buchung['datum']) ?></td>
|
||
<td>
|
||
<a href="/konten/<?= (int)$buchung['konto_id'] ?>"><?= View::h($buchung['konto']) ?></a>
|
||
</td>
|
||
<td>
|
||
<a href="/buchungen/<?= (int)$buchung['buchung_id'] ?>">
|
||
<?= View::h($buchung['empfaenger'] !== '' ? $buchung['empfaenger'] : '(ohne Empfänger)') ?>
|
||
</a>
|
||
</td>
|
||
<td><?= View::h($buchung['text']) ?></td>
|
||
<td>
|
||
<?= View::h($buchung['kategorie']) ?>
|
||
<?php if ($buchung['split_gesamt']): ?>
|
||
<span class="marke" title="Gesamtbetrag einer Splitbuchung – Aufschlüsselung im Kontoblatt">Splitbuchung</span>
|
||
<?php elseif ($buchung['gesplittet']): ?>
|
||
<span class="marke" title="Zeile einer Splitbuchung">Split</span>
|
||
<?php endif; ?>
|
||
</td>
|
||
<td><?= View::h($buchung['klasse']) ?></td>
|
||
<td class="rechts <?= View::betragKlasse($buchung['betrag']) ?>">
|
||
<?= View::betrag($buchung['betrag'], false) ?>
|
||
</td>
|
||
</tr>
|
||
<?php endforeach; ?>
|
||
</tbody>
|
||
<tfoot>
|
||
<tr class="summenzeile">
|
||
<td colspan="6">Summe (<?= count($zeile['buchungen']) ?> Buchungen)</td>
|
||
<td class="rechts <?= View::betragKlasse($zeile['summe']) ?>">
|
||
<?= View::betrag($zeile['summe'], false) ?>
|
||
</td>
|
||
</tr>
|
||
</tfoot>
|
||
</table>
|
||
|
||
<p class="hinweis klein">
|
||
Die Beträge stehen mit ihrem buchhalterischen Vorzeichen – <?= $ausCockpit
|
||
? 'in der Kachel erscheinen Ausgaben ohne Minus.'
|
||
: 'im Summenbericht erscheint dieselbe Summe unter „Ausgaben“ ohne Minus.' ?>
|
||
</p>
|
||
<?php endif; ?>
|
||
|
||
<?php include __DIR__ . '/../layout/fuss.php'; ?>
|