82 lines
2.7 KiB
SQL
82 lines
2.7 KiB
SQL
-- Migration 047: ig. Erwerb 19 % ReverseCharge über Kindzeilen (1574/1774)
|
||
--
|
||
-- Hintergrund: Bisher wurden Kz 91 (USt ig.E.) und Kz 67 (VSt ig.E.) durch den
|
||
-- UstvaCalculator aus betrag_netto × 0,19 der Hauptbuchung berechnet.
|
||
-- Ab jetzt erzeugt Booking::create() bei steuerart='ig_erwerb_19' zwei Kindzeilen:
|
||
-- - 1574 (Vorsteuer ig.E. 19 %, ustva_kz='67') für Kz 67
|
||
-- - 1774 (USt ig.E. 19 %, ustva_kz='91') für Kz 91
|
||
|
||
-- ── 1. ustva_kz für 1774 auf '91' setzen ─────────────────────────────────────
|
||
|
||
UPDATE accounts SET ustva_kz = '91' WHERE kontonummer = '1774';
|
||
|
||
-- ── 2. Kindzeilen für bestehende ig_erwerb_19 Hauptbuchungen anlegen ─────────
|
||
-- Idempotenz: WHERE NOT EXISTS verhindert Doppel-Einfügung
|
||
|
||
-- 2a. VSt-Zeile auf 1574 (Kz 67)
|
||
INSERT INTO bookings (
|
||
buchungs_nr, beleg_id, parent_booking_id, buchungs_datum, buchungstyp,
|
||
kategorie_konto_id, zahlungskonto_id,
|
||
betrag_netto, ust_satz, steuerart, betrag_ust, betrag_brutto,
|
||
buchungstext, is_reversal, fiscal_year_id
|
||
)
|
||
SELECT
|
||
CONCAT('IGE-VST-', LPAD(b.id, 8, '0')),
|
||
b.beleg_id,
|
||
b.id,
|
||
b.buchungs_datum,
|
||
b.buchungstyp,
|
||
a_vst.id,
|
||
b.zahlungskonto_id,
|
||
ROUND(b.betrag_netto * 0.19, 2),
|
||
0.00,
|
||
'normal',
|
||
0.00,
|
||
ROUND(b.betrag_netto * 0.19, 2),
|
||
CONCAT('VSt ig.E. zu ', b.buchungs_nr),
|
||
b.is_reversal,
|
||
b.fiscal_year_id
|
||
FROM bookings b
|
||
JOIN accounts a_vst ON a_vst.kontonummer = '1574'
|
||
WHERE b.steuerart = 'ig_erwerb_19'
|
||
AND b.parent_booking_id IS NULL
|
||
AND b.betrag_netto != 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM bookings k
|
||
JOIN accounts ak ON k.kategorie_konto_id = ak.id
|
||
WHERE k.parent_booking_id = b.id AND ak.kontonummer = '1574'
|
||
);
|
||
|
||
-- 2b. USt-Zeile auf 1774 (Kz 91)
|
||
INSERT INTO bookings (
|
||
buchungs_nr, beleg_id, parent_booking_id, buchungs_datum, buchungstyp,
|
||
kategorie_konto_id, zahlungskonto_id,
|
||
betrag_netto, ust_satz, steuerart, betrag_ust, betrag_brutto,
|
||
buchungstext, is_reversal, fiscal_year_id
|
||
)
|
||
SELECT
|
||
CONCAT('IGE-UST-', LPAD(b.id, 8, '0')),
|
||
b.beleg_id,
|
||
b.id,
|
||
b.buchungs_datum,
|
||
b.buchungstyp,
|
||
a_ust.id,
|
||
b.zahlungskonto_id,
|
||
ROUND(b.betrag_netto * 0.19, 2),
|
||
0.00,
|
||
'normal',
|
||
0.00,
|
||
ROUND(b.betrag_netto * 0.19, 2),
|
||
CONCAT('USt ig.E. zu ', b.buchungs_nr),
|
||
b.is_reversal,
|
||
b.fiscal_year_id
|
||
FROM bookings b
|
||
JOIN accounts a_ust ON a_ust.kontonummer = '1774'
|
||
WHERE b.steuerart = 'ig_erwerb_19'
|
||
AND b.parent_booking_id IS NULL
|
||
AND b.betrag_netto != 0
|
||
AND NOT EXISTS (
|
||
SELECT 1 FROM bookings k
|
||
JOIN accounts ak ON k.kategorie_konto_id = ak.id
|
||
WHERE k.parent_booking_id = b.id AND ak.kontonummer = '1774'
|
||
);
|