- Anlage-Spalte in allen Buchungstabellen verlinkt jetzt auf /assets/{id}/edit
- bk.asset_id in UstvaCalculator und EuerCalculator-Queries ergänzt
- Fallback-Anzeige: Bezeichnung wenn anlage_nr leer ist
- Migration 032: anlage_nr für bestehende Anlagegüter nachgenerieren
- README: Feature Anlagevermögen dokumentiert
108 lines
5 KiB
PHP
108 lines
5 KiB
PHP
<?php
|
||
use Steuerkram\View;
|
||
$h = fn($v) => View::h($v);
|
||
$fmtKz = fn($v) => number_format((float)$v, 2, ',', '.') . ' €';
|
||
|
||
// Für Kz 69: vorzeichenbehafteter USt-Beitrag zur Zahllast.
|
||
// Einnahmen mit USt = positiv, Ausgaben mit Vorsteuer = negativ,
|
||
// ig_erwerb heben sich gegenseitig auf → 0.
|
||
$ustBeitragKz69 = function(array $b): float {
|
||
$steuerart = $b['steuerart'] ?? 'normal';
|
||
$ustSatz = (float)$b['ust_satz'];
|
||
$betragUst = (float)$b['betrag_ust'];
|
||
if ($b['buchungstyp'] === 'Einnahme' && $steuerart === 'normal' && $ustSatz > 0) {
|
||
return $betragUst; // Umsatzsteuer → positiv
|
||
}
|
||
if ($b['buchungstyp'] === 'Ausgabe' && $steuerart === 'normal' && $betragUst != 0) {
|
||
return -$betragUst; // Vorsteuer → Vorzeichen umkehren
|
||
}
|
||
return 0.0; // steuerfreie Umsätze und ig_erwerb (KZ91-KZ94 = KZ67, Netto-Beitrag 0)
|
||
};
|
||
|
||
// Ausgaben werden als negative Beträge angezeigt (Geld fließt ab).
|
||
// Stornobuchungen haben bereits negative Beträge in der DB – kein abs().
|
||
$signedBetrag = fn(array $b, string $field): float =>
|
||
$b['buchungstyp'] === 'Ausgabe' ? -(float)$b[$field] : (float)$b[$field];
|
||
?>
|
||
|
||
<div class="card">
|
||
<div class="card-header">
|
||
<div>
|
||
<div class="card-title">Kz <?= $h($kz) ?> – <?= $h($kzName) ?></div>
|
||
<div class="text-muted text-sm"><?= $h($months[$month-1]) ?> <?= $h($year) ?></div>
|
||
</div>
|
||
<a href="/tax/ustva/<?= $h($year) ?>/<?= $h($month) ?>" class="btn btn-secondary btn-sm">← Zurück zur UStVA</a>
|
||
</div>
|
||
|
||
<?php if (empty($bookings)): ?>
|
||
<div class="card-body">
|
||
<p class="text-muted">Keine Buchungen für diesen Zeitraum.</p>
|
||
</div>
|
||
<?php else: ?>
|
||
<div class="table-wrap">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Datum</th>
|
||
<th>Beleg</th>
|
||
<th>Buchungstext</th>
|
||
<th>Kategorie</th>
|
||
<th>Zahlungskonto</th>
|
||
<th class="td-right">Netto</th>
|
||
<th class="td-right"><?= $kz === '69' ? 'USt-Beitrag' : 'USt' ?></th>
|
||
<th class="td-right">Brutto</th>
|
||
<th>Anlage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<?php
|
||
$sumNetto = 0.0;
|
||
$sumUst = 0.0;
|
||
$sumBrutto = 0.0;
|
||
foreach ($bookings as $b):
|
||
$ust = $kz === '69' ? $ustBeitragKz69($b) : $signedBetrag($b, 'betrag_ust');
|
||
$netto = $signedBetrag($b, 'betrag_netto');
|
||
$brutto = $signedBetrag($b, 'betrag_brutto');
|
||
$sumNetto += $netto;
|
||
$sumUst += $ust;
|
||
$sumBrutto += $brutto;
|
||
?>
|
||
<tr<?= $b['is_reversal'] ? ' style="font-style:italic;color:#888"' : '' ?>>
|
||
<td class="td-mono text-sm"><?= $h($b['buchungs_datum']) ?></td>
|
||
<td>
|
||
<?php if ($b['beleg_id']): ?>
|
||
<a href="/belege/<?= (int)$b['beleg_id'] ?>"><?= $h($b['beleg_nr'] ?? '#' . $b['beleg_id']) ?></a>
|
||
<?php else: ?>
|
||
<span class="text-muted">–</span>
|
||
<?php endif; ?>
|
||
</td>
|
||
<td><?= $h($b['buchungstext']) ?></td>
|
||
<td class="text-sm text-muted"><?= $h($b['kategorie_nr']) ?> <?= $h($b['kategorie_name']) ?></td>
|
||
<td class="text-sm text-muted"><?= $h($b['zahlungs_nr']) ?> <?= $h($b['zahlungs_name']) ?></td>
|
||
<td class="td-right td-mono"><?= $fmtKz($netto) ?></td>
|
||
<td class="td-right td-mono"><?= $fmtKz($ust) ?></td>
|
||
<td class="td-right td-mono"><?= $fmtKz($brutto) ?></td>
|
||
<td class="td-mono text-sm">
|
||
<?php if (!empty($b['anlage_nr'])): ?>
|
||
<a href="/assets/<?= (int)$b['asset_id'] ?>/edit" title="<?= $h($b['anlage_bezeichnung']) ?>"><?= $h($b['anlage_nr']) ?></a>
|
||
<?php elseif (!empty($b['anlage_bezeichnung'])): ?>
|
||
<a href="/assets/<?= (int)$b['asset_id'] ?>/edit"><?= $h($b['anlage_bezeichnung']) ?></a>
|
||
<?php else: ?>
|
||
<span class="text-muted">–</span>
|
||
<?php endif; ?>
|
||
</td>
|
||
</tr>
|
||
<?php endforeach; ?>
|
||
</tbody>
|
||
<tfoot>
|
||
<tr style="font-weight:700;border-top:2px solid #000">
|
||
<td colspan="6">Summe (<?= count($bookings) ?> Buchungen)</td>
|
||
<td class="td-right td-mono"><?= $fmtKz($sumNetto) ?></td>
|
||
<td class="td-right td-mono"><?= $fmtKz($sumUst) ?></td>
|
||
<td class="td-right td-mono"><?= $fmtKz($sumBrutto) ?></td>
|
||
</tr>
|
||
</tfoot>
|
||
</table>
|
||
</div>
|
||
<?php endif; ?>
|
||
</div>
|