Neues Vorlagen-Badge zwischen Bank-Badge und Buchungsformular in
/belege/{id}. Vorlage auswählen öffnet modalen Dialog mit Feldgruppen
(Metadaten, USt-Zeilen mit Live-Berechnung, Zahlungskonto). Buchungen
werden per VorlageBuchungsService aus JSON-Regeln in der DB erstellt.
Pflege-UI unter /einstellungen/buchungsvorlagen (CRUD inkl. Felder und
Regeln). Initiale Vorlage "Essensbeleg n. abzugsfähig (nur USt.)" via
Migration 080 eingespielt. Test 42 prüft CRUD und Buchungsausführung.
61 lines
3.7 KiB
SQL
61 lines
3.7 KiB
SQL
-- 080_buchungsvorlage_seed_essensbeleg.sql
|
|
-- Seed: Vorlage "Essensbeleg n. abzugsfähig (nur USt.)"
|
|
-- Idempotent: Vorlage wird nur angelegt wenn nicht vorhanden.
|
|
|
|
SET @vorlage_name = 'Essensbeleg n. abzugsfähig (nur USt.)';
|
|
|
|
INSERT INTO buchungsvorlagen (name, beschreibung, aktiv, sort_order)
|
|
SELECT @vorlage_name,
|
|
'Essensbelegle bei dem der Nettobetrag steuerlich nicht abzugsfähig ist, die Vorsteuer jedoch geltend gemacht werden kann.',
|
|
1,
|
|
10
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlagen WHERE name = @vorlage_name);
|
|
|
|
SET @vid = (SELECT id FROM buchungsvorlagen WHERE name = @vorlage_name LIMIT 1);
|
|
|
|
-- Felder nur einfügen wenn für diese Vorlage noch keine existieren
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 1, 10, 'lieferant', 'Lieferant', 'text', NULL, 'supplier_name'
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'lieferant');
|
|
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 1, 20, 'rechnungsnr', 'Rechnungsnummer', 'text', NULL, 'rechnungs_nr'
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'rechnungsnr');
|
|
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 1, 30, 'belegdatum', 'Belegdatum', 'date', NULL, 'beleg_datum'
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'belegdatum');
|
|
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 1, 40, 'brutto_gesamt', 'Brutto gesamt', 'readonly', NULL, NULL
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'brutto_gesamt');
|
|
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 2, 10, 'netto_7', '7% USt.', 'ust_zeile', 7.00, NULL
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'netto_7');
|
|
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 2, 20, 'netto_19', '19% USt.', 'ust_zeile', 19.00, NULL
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'netto_19');
|
|
|
|
INSERT INTO buchungsvorlage_felder (vorlage_id, gruppe_nr, sort_order, feldname, label, typ, ust_satz, meta_key)
|
|
SELECT @vid, 3, 10, 'zahlungskonto', 'Zahlungskonto', 'account_select', NULL, NULL
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_felder WHERE vorlage_id = @vid AND feldname = 'zahlungskonto');
|
|
|
|
-- Regeln: 7% Anteil
|
|
INSERT INTO buchungsvorlage_regeln (vorlage_id, sort_order, bedingung_feld, bedingung_op, buchungen)
|
|
SELECT @vid, 10, 'netto_7', 'neq_zero',
|
|
JSON_ARRAY(
|
|
JSON_OBJECT('betrag_ref', 'netto_7', 'nach_konto', '4656'),
|
|
JSON_OBJECT('betrag_ref', 'ust_7', 'nach_konto', '1571')
|
|
)
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_regeln WHERE vorlage_id = @vid AND bedingung_feld = 'netto_7');
|
|
|
|
-- Regeln: 19% Anteil
|
|
INSERT INTO buchungsvorlage_regeln (vorlage_id, sort_order, bedingung_feld, bedingung_op, buchungen)
|
|
SELECT @vid, 20, 'netto_19', 'neq_zero',
|
|
JSON_ARRAY(
|
|
JSON_OBJECT('betrag_ref', 'netto_19', 'nach_konto', '4654'),
|
|
JSON_OBJECT('betrag_ref', 'ust_19', 'nach_konto', '1576')
|
|
)
|
|
WHERE NOT EXISTS (SELECT 1 FROM buchungsvorlage_regeln WHERE vorlage_id = @vid AND bedingung_feld = 'netto_19');
|