Merge pull request 'EÜR-Zeilen, USt-Konten und Test 15 korrigieren' (#93) from fds2610-bot/Steuerkram:main into main

Reviewed-on: https://codeberg.org/fds2610/Steuerkram/pulls/93
This commit is contained in:
fds2610 2026-05-24 16:37:36 +02:00
commit c68596223f
4 changed files with 251 additions and 5 deletions

View file

@ -0,0 +1,226 @@
-- 075_euer_zeilen_korrektur.sql
-- Korrektur aller euer_zeile-Werte gemäß amtlicher Anlage EÜR 2025.
-- Bisherige Werte folgten einem internen Schema, das nicht der amtlichen
-- Zeilennummerierung entspricht.
-- ============================================================
-- BETRIEBSEINNAHMEN
-- ============================================================
-- Erlöse 19 % USt: 16 → 15
-- (Zeile 15 gilt für ALLE umsatzsteuerpflichtigen BE, nicht nur 7 %)
UPDATE accounts SET euer_zeile = '15'
WHERE kontonummer IN ('8400','8570','8720');
-- Steuerfreie Umsätze § 4 UStG: 17 → 16
UPDATE accounts SET euer_zeile = '16'
WHERE kontonummer IN ('8100','8105','8110');
-- Steuerfreie Auslandslieferungen: 18 → 16
UPDATE accounts SET euer_zeile = '16'
WHERE kontonummer IN ('8120','8125');
-- Nicht steuerbare Umsätze: 21 → 16
UPDATE accounts SET euer_zeile = '16'
WHERE kontonummer = '8950';
-- Erlöse Anlagenverkauf: 22 → 19
UPDATE accounts SET euer_zeile = '19'
WHERE kontonummer IN ('8800','8801','8820');
-- Entnahmen (Sach-/Nutzungsentnahmen): 22 → 21
UPDATE accounts SET euer_zeile = '21'
WHERE kontonummer IN ('8920','8921','8922');
-- Sonstige betriebliche Erträge: 23 → 21
-- (kein separater Zeile-Code im amtlichen Formular)
UPDATE accounts SET euer_zeile = '21'
WHERE kontonummer IN ('8900','8910');
-- ============================================================
-- BETRIEBSAUSGABEN – Material
-- ============================================================
-- Wareneingang ohne VSt: 26 → 27
UPDATE accounts SET euer_zeile = '27'
WHERE kontonummer = '3349';
-- Wareneingang 7 % VSt: 28 → 27
UPDATE accounts SET euer_zeile = '27'
WHERE kontonummer = '3300';
-- ============================================================
-- Personal
-- ============================================================
-- Gesetzliche Sozialaufwendungen: 31 → 30
UPDATE accounts SET euer_zeile = '30'
WHERE kontonummer IN ('4130','4138');
-- Freiwillige Sozialaufwendungen: 32 → 30
UPDATE accounts SET euer_zeile = '30'
WHERE kontonummer IN ('4140','4145');
-- Reisekosten Arbeitnehmer (alle): 42 → 30
-- (Arbeitnehmer-Reisekosten sind Personalaufwand, kein Unternehmer-Reisekostenabzug)
UPDATE accounts SET euer_zeile = '30'
WHERE kontonummer IN ('4660','4663','4664','4666','4668');
-- ============================================================
-- Raumkosten
-- ============================================================
-- Miete/Pacht unbewegliche WG: 33 → 39
UPDATE accounts SET euer_zeile = '39'
WHERE kontonummer IN ('4210','4211','4220');
-- Sonstige Raumkosten, Heizung, Energie: 33/34 → 41
UPDATE accounts SET euer_zeile = '41'
WHERE kontonummer IN ('4230','4240','4280');
-- Reinigung, Instandhaltung betriebliche Räume, Reparaturen Bauten: 37 → 41
UPDATE accounts SET euer_zeile = '41'
WHERE kontonummer IN ('4250','4260','4801');
-- Sonderabschreibungen § 7b EStG: 37 → 34
UPDATE accounts SET euer_zeile = '34'
WHERE kontonummer = '4856';
-- ============================================================
-- Instandhaltung / Reparaturen
-- ============================================================
-- Reparaturen Maschinen, Anlagen, BGA: 38 → 48
UPDATE accounts SET euer_zeile = '48'
WHERE kontonummer IN ('4800','4805','4809');
-- Wartungskosten Hard-/Software: 38 → 50 (Laufende EDV-Kosten)
UPDATE accounts SET euer_zeile = '50'
WHERE kontonummer = '4806';
-- ============================================================
-- Kfz-Kosten
-- ============================================================
-- Kfz-Leasing: 40 → 68
UPDATE accounts SET euer_zeile = '68'
WHERE kontonummer IN ('4570','4575');
-- Kfz-Steuer, Versicherungen, Maut: 40 → 69
UPDATE accounts SET euer_zeile = '69'
WHERE kontonummer IN ('4510','4520','4560');
-- Sonstige tatsächliche Fahrtkosten (Betrieb, Reparaturen, Treibstoff): 40 → 70
UPDATE accounts SET euer_zeile = '70'
WHERE kontonummer IN ('4500','4530','4540','4550','4580');
-- Fremdfahrzeuge (Nutzungseinlage): 40 → 71
UPDATE accounts SET euer_zeile = '71'
WHERE kontonummer = '4590';
-- ============================================================
-- Werbekosten / Geschenke
-- ============================================================
-- Werbekosten, Streuartikel: 41 → 54
UPDATE accounts SET euer_zeile = '54'
WHERE kontonummer IN ('4600','4605');
-- Geschenke abzugsfähig: 41 → 62 (beschränkt abziehbar)
UPDATE accounts SET euer_zeile = '62'
WHERE kontonummer IN ('4630','4631');
-- ============================================================
-- Reisekosten Unternehmer
-- ============================================================
-- Übernachtungs-/Reisenebenkosten Unternehmer: 43 → 44
UPDATE accounts SET euer_zeile = '44'
WHERE kontonummer IN ('4670','4673','4676');
-- Verpflegungsmehraufwand Unternehmer: 43 → 64 (beschränkt abziehbar)
UPDATE accounts SET euer_zeile = '64'
WHERE kontonummer = '4674';
-- ============================================================
-- Bewirtung
-- ============================================================
-- Bewirtungskosten abzugsfähig (70 %): 44 → 63 (beschränkt abziehbar)
UPDATE accounts SET euer_zeile = '63'
WHERE kontonummer IN ('4650','4651','4652');
-- ============================================================
-- Telekommunikation / Bürobedarf
-- ============================================================
-- Telefon, Internet: 47 → 43
UPDATE accounts SET euer_zeile = '43'
WHERE kontonummer IN ('4920','4925');
-- Porto, Bürobedarf, Fachliteratur: 47 → 51
UPDATE accounts SET euer_zeile = '51'
WHERE kontonummer IN ('4910','4930','4940');
-- ============================================================
-- Miete / Leasing bewegliche WG
-- ============================================================
-- Mieten Einrichtungen, Lizenzen, Mietleasing: 48 → 47
UPDATE accounts SET euer_zeile = '47'
WHERE kontonummer IN ('4960','4964','4965');
-- ============================================================
-- Abschreibungen (AfA)
-- ============================================================
-- AfA immaterielle WG: 49 → 32
UPDATE accounts SET euer_zeile = '32'
WHERE kontonummer = '4822';
-- AfA Gebäude/Grundstücke: 49 → 31
UPDATE accounts SET euer_zeile = '31'
WHERE kontonummer = '4831';
-- AfA bewegliche WG (Sachanlagen, Fahrzeuge): 49 → 33
UPDATE accounts SET euer_zeile = '33'
WHERE kontonummer IN ('4830','4832');
-- GWG-Sofortabschreibung: 50 → 36
UPDATE accounts SET euer_zeile = '36'
WHERE kontonummer = '4855';
-- ============================================================
-- Nicht abziehbare Betriebsausgaben → Zeile 74
-- Zeile 74 (amtl. Anlage EÜR): "Nicht abziehbare Beträge"
-- Dient intern als Kennzeichen für den separaten Ausweis in der EÜR-Ansicht.
-- ============================================================
UPDATE accounts SET euer_zeile = '74'
WHERE kontonummer IN ('4289','4320','4635','4636','4654','4656','4657','4672');
-- ============================================================
-- Sonstige Betriebsausgaben (bisher pauschal 52)
-- ============================================================
-- Versicherungen, Beiträge, Gebühren, Abgaben, nicht abziehbare VSt: 52 → 49
UPDATE accounts SET euer_zeile = '49'
WHERE kontonummer IN ('4300','4301','4306','4340','4350','4360','4366','4380','4390');
-- Fortbildungskosten: 52 → 45
UPDATE accounts SET euer_zeile = '45'
WHERE kontonummer = '4945';
-- Rechts- und Beratungskosten: 52 → 46
UPDATE accounts SET euer_zeile = '46'
WHERE kontonummer = '4950';
-- Abfallbeseitigung: 52 bleibt 52 (passt jetzt korrekt zur amtlichen Zeile 52)
-- Kein UPDATE erforderlich für 4969.
-- Bankgebühren/Zinsen, Verwahrentgelt, sonstiger Betriebsbedarf: 52 → 60
UPDATE accounts SET euer_zeile = '60'
WHERE kontonummer IN ('4900','4970','4971','4980');
-- Werkzeuge und Kleingeräte: 52 → 51 (Arbeitsmittel)
UPDATE accounts SET euer_zeile = '51'
WHERE kontonummer = '4985';

View file

@ -0,0 +1,10 @@
-- 076_ust_konten_betriebseinnahme.sql
-- Vereinnahmte Umsatzsteuer-Konten als Betriebseinnahme klassifizieren
-- und EÜR-Zeile 17 zuweisen (Anlage EÜR: "Vereinnahmte Umsatzsteuer
-- sowie Umsatzsteuer auf unentgeltliche Wertabgaben").
-- Ausgenommen: 1780/1781 (USt-Vorauszahlungen ans FA) → bleiben Verbindlichkeit.
UPDATE accounts
SET kontenart = 'Betriebseinnahme',
euer_zeile = '17'
WHERE kontonummer IN ('1770','1771','1774','1776');

View file

@ -0,0 +1,9 @@
-- 077_ust_vorauszahlungen_betriebsausgabe.sql
-- USt-Vorauszahlungskonten als Betriebsausgabe klassifizieren
-- und EÜR-Zeile 58 zuweisen (Anlage EÜR: "An das Finanzamt gezahlte
-- und ggf. verrechnete Umsatzsteuer").
UPDATE accounts
SET kontenart = 'Betriebsausgabe',
euer_zeile = '58'
WHERE kontonummer IN ('1780','1781');

View file

@ -3,10 +3,11 @@
declare(strict_types=1); declare(strict_types=1);
/** /**
* Test 15: Nicht abzugsfähige Betriebsausgaben (KZ 165) in der EÜR. * Test 15: Nicht abzugsfähige Betriebsausgaben in der EÜR.
* *
* Buchungen auf Konten mit euer_zeile='51' (z.B. 4654, 4656) dürfen nicht * Buchungen auf Konten mit euer_zeile='74' (Anlage EÜR Zeile 74:
* in total_ausgaben oder gewinn einfließen, sondern erscheinen nur im * "Nicht abziehbare Beträge", z.B. 4654, 4656) dürfen nicht in
* total_ausgaben oder gewinn einfließen, sondern erscheinen nur im
* separaten Abschnitt 'nicht_abzugsfaehig'. * separaten Abschnitt 'nicht_abzugsfaehig'.
*/ */
class NichtAbzugsfaehigEuerTest extends TestCase class NichtAbzugsfaehigEuerTest extends TestCase
@ -26,11 +27,11 @@ class NichtAbzugsfaehigEuerTest extends TestCase
return; return;
} }
// Prüfen, dass 4654 wirklich euer_zeile='51' hat // Prüfen, dass 4654 wirklich euer_zeile='74' hat (seit Migration 075)
$kto = \Steuerkram\Database::fetchOne( $kto = \Steuerkram\Database::fetchOne(
"SELECT euer_zeile FROM accounts WHERE kontonummer = '4654'" "SELECT euer_zeile FROM accounts WHERE kontonummer = '4654'"
); );
$this->assertEquals('51', $kto['euer_zeile'] ?? null, 'Konto 4654 hat euer_zeile=51'); $this->assertEquals('74', $kto['euer_zeile'] ?? null, 'Konto 4654 hat euer_zeile=74');
// Einnahme buchen (Referenz für Gewinnberechnung) // Einnahme buchen (Referenz für Gewinnberechnung)
$belegEin = \Steuerkram\Models\Beleg::create([ $belegEin = \Steuerkram\Models\Beleg::create([