diff --git a/migrations/075_euer_zeilen_korrektur.sql b/migrations/075_euer_zeilen_korrektur.sql new file mode 100644 index 0000000..cd7d587 --- /dev/null +++ b/migrations/075_euer_zeilen_korrektur.sql @@ -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'; diff --git a/migrations/076_ust_konten_betriebseinnahme.sql b/migrations/076_ust_konten_betriebseinnahme.sql new file mode 100644 index 0000000..baafcc5 --- /dev/null +++ b/migrations/076_ust_konten_betriebseinnahme.sql @@ -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'); diff --git a/migrations/077_ust_vorauszahlungen_betriebsausgabe.sql b/migrations/077_ust_vorauszahlungen_betriebsausgabe.sql new file mode 100644 index 0000000..eea15de --- /dev/null +++ b/migrations/077_ust_vorauszahlungen_betriebsausgabe.sql @@ -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'); diff --git a/tests/15_NichtAbzugsfaehigEuerTest.php b/tests/15_NichtAbzugsfaehigEuerTest.php index 0a7d4df..5f278b3 100644 --- a/tests/15_NichtAbzugsfaehigEuerTest.php +++ b/tests/15_NichtAbzugsfaehigEuerTest.php @@ -3,10 +3,11 @@ 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 - * in total_ausgaben oder gewinn einfließen, sondern erscheinen nur im + * Buchungen auf Konten mit euer_zeile='74' (Anlage EÜR Zeile 74: + * "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'. */ class NichtAbzugsfaehigEuerTest extends TestCase @@ -26,11 +27,11 @@ class NichtAbzugsfaehigEuerTest extends TestCase 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( "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) $belegEin = \Steuerkram\Models\Beleg::create([