EÜR umgebaut auf Kontenart statt Buchungstyp
This commit is contained in:
parent
452fac2698
commit
37fcf53e8f
3 changed files with 48 additions and 28 deletions
32
BERICHTE.md
32
BERICHTE.md
|
|
@ -9,33 +9,29 @@ Dieses Dokument beschreibt, wie Buchungen in die beiden steuerlichen Berichte ei
|
|||
|
||||
**Datei:** `src/Services/EuerCalculator.php`
|
||||
|
||||
Die EÜR basiert ausschließlich auf dem Feld `buchungstyp` der Buchung, kombiniert mit dem verknüpften Kategorie-Konto (`kategorie_konto_id → accounts`). Es gibt keine feste Zuordnung von Kontonummern zu bestimmten EÜR-Zeilen – jedes Konto erscheint als eigene Zeile in der jeweiligen Sektion.
|
||||
Die EÜR basiert ausschließlich auf dem Feld `accounts.kontenart` des Kategorie-Kontos. Das Feld `buchungstyp` wird nicht ausgewertet. Stornobuchungen (`is_reversal = 1`) werden ausgeschlossen.
|
||||
|
||||
### Einnahmen
|
||||
### Spaltenauswahl nach Kontenart
|
||||
|
||||
Bedingung: `buchungstyp = 'Einnahme'`
|
||||
| kontenart | EÜR-Spalte |
|
||||
|---|---|
|
||||
| `Betriebseinnahme` | Einnahmen |
|
||||
| `Betriebsausgabe` | Ausgaben |
|
||||
| `Privat` | nicht in EÜR (Privatentnahmen/-einlagen beeinflussen den Gewinn nicht) |
|
||||
| `Zahlungskonto`, `Verbindlichkeit` | nicht in EÜR |
|
||||
|
||||
Alle passenden Buchungen werden nach Kategorie-Konto gruppiert und als Einnahmen ausgewiesen. Der Nettobetrag (`betrag_netto`) wird summiert.
|
||||
### Vorzeichen
|
||||
|
||||
### Ausgaben (Betriebsausgaben)
|
||||
|
||||
Bedingung: `buchungstyp = 'Ausgabe'`
|
||||
|
||||
Alle passenden Buchungen werden nach Kategorie-Konto gruppiert und als Betriebsausgaben ausgewiesen. Der Nettobetrag wird summiert.
|
||||
`betrag_netto` wird ohne `abs()` direkt summiert:
|
||||
- Positiver Wert → addiert zur jeweiligen Spalte
|
||||
- Negativer Wert → mindert die jeweilige Spalte (z.B. Gutschriften, Erlösschmälerungen)
|
||||
|
||||
### Sortierung und Ergebnis
|
||||
|
||||
- Sortierung innerhalb beider Sektionen: nach `accounts.kontonummer` aufsteigend
|
||||
- Stornobuchungen (`is_reversal = 1`) werden ausgeschlossen
|
||||
- Gruppierung: je Kategorie-Konto (`accounts.id`), ein Eintrag pro Konto
|
||||
- Sortierung: nach `accounts.kontonummer` aufsteigend
|
||||
- Ergebnis: `total_einnahmen − total_ausgaben = gewinn`
|
||||
|
||||
### Übersicht
|
||||
|
||||
| Bedingung | Sektion im Bericht |
|
||||
|---|---|
|
||||
| `buchungstyp = 'Einnahme'` | Einnahmen |
|
||||
| `buchungstyp = 'Ausgabe'` | Ausgaben / Betriebsausgaben |
|
||||
|
||||
---
|
||||
|
||||
## UStVA (Umsatzsteuervoranmeldung)
|
||||
|
|
|
|||
15
Changes.md
15
Changes.md
|
|
@ -2,6 +2,21 @@
|
|||
|
||||
---
|
||||
|
||||
## 2026-03-29 – EÜR: Spaltenauswahl nach Kontenart statt Buchungstyp
|
||||
|
||||
### Geändert
|
||||
- `EuerCalculator::calculate()` wertet `accounts.kontenart` aus statt `buchungstyp`
|
||||
- `Betriebseinnahme` → Einnahmen-Spalte, `Betriebsausgabe` → Ausgaben-Spalte
|
||||
- `Privat`, `Zahlungskonto`, `Verbindlichkeit` als Kategorie-Konto werden nicht in der EÜR ausgewiesen
|
||||
- Vorzeichen von `betrag_netto` werden beibehalten (kein `abs()` mehr) – negative Beträge mindern die jeweilige Spalte
|
||||
- Buchungen desselben Kontos werden unabhängig vom `buchungstyp` zu einem Eintrag zusammengefasst
|
||||
|
||||
### Betrifft
|
||||
- `src/Services/EuerCalculator.php`
|
||||
- `BERICHTE.md` (EÜR-Kapitel aktualisiert)
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-29 – UStVA: kontonummernbasierte Kennzahlenberechnung
|
||||
|
||||
### Geändert
|
||||
|
|
|
|||
|
|
@ -8,7 +8,15 @@ use Steuerkram\Database;
|
|||
|
||||
/**
|
||||
* Berechnet die Einnahmen-Überschuss-Rechnung (EÜR) für ein Geschäftsjahr.
|
||||
* Gruppiert alle Buchungen nach buchungstyp und Kategorie-Konto.
|
||||
*
|
||||
* Maßgeblich ist ausschließlich accounts.kontenart des Kategorie-Kontos:
|
||||
* Betriebseinnahme → Einnahmen-Spalte
|
||||
* Betriebsausgabe → Ausgaben-Spalte
|
||||
* Privat / Zahlungskonto / Verbindlichkeit → nicht in EÜR
|
||||
*
|
||||
* Vorzeichen von betrag_netto werden beibehalten:
|
||||
* positiver Wert → addiert zur jeweiligen Spalte
|
||||
* negativer Wert → mindert die jeweilige Spalte (z.B. Gutschriften)
|
||||
*/
|
||||
class EuerCalculator
|
||||
{
|
||||
|
|
@ -20,14 +28,15 @@ class EuerCalculator
|
|||
a.kontonummer,
|
||||
a.bezeichnung,
|
||||
a.kontenart,
|
||||
bk.buchungstyp,
|
||||
SUM(bk.betrag_netto) as summe_netto,
|
||||
COUNT(bk.id) as buchungsanzahl
|
||||
SUM(bk.betrag_netto) AS summe_netto,
|
||||
COUNT(bk.id) AS buchungsanzahl
|
||||
FROM bookings bk
|
||||
JOIN accounts a ON bk.kategorie_konto_id = a.id
|
||||
JOIN accounts a ON bk.kategorie_konto_id = a.id
|
||||
JOIN fiscal_years fy ON bk.fiscal_year_id = fy.id
|
||||
WHERE fy.year = ? AND bk.is_reversal = 0
|
||||
GROUP BY a.id, a.kontonummer, a.bezeichnung, a.kontenart, bk.buchungstyp
|
||||
WHERE fy.year = ?
|
||||
AND bk.is_reversal = 0
|
||||
AND a.kontenart IN (\'Betriebseinnahme\', \'Betriebsausgabe\')
|
||||
GROUP BY a.id, a.kontonummer, a.bezeichnung, a.kontenart
|
||||
HAVING buchungsanzahl > 0
|
||||
ORDER BY a.kontonummer',
|
||||
[$year]
|
||||
|
|
@ -37,11 +46,11 @@ class EuerCalculator
|
|||
$ausgaben = [];
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$netto = round(abs((float)$row['summe_netto']), 2);
|
||||
$netto = round((float)$row['summe_netto'], 2);
|
||||
|
||||
if ($row['buchungstyp'] === 'Einnahme') {
|
||||
if ($row['kontenart'] === 'Betriebseinnahme') {
|
||||
$einnahmen[] = array_merge($row, ['netto' => $netto]);
|
||||
} elseif ($row['buchungstyp'] === 'Ausgabe') {
|
||||
} else {
|
||||
$ausgaben[] = array_merge($row, ['netto' => $netto]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue