298 lines
14 KiB
Nix
298 lines
14 KiB
Nix
{ time, panic, ... }:
|
|
{ formatOutcome, Section, Transaction, ... }:
|
|
let
|
|
inherit (time) formatDate;
|
|
Level
|
|
= {
|
|
Kleinst = 0;
|
|
Klein = 1;
|
|
Mittel = 2;
|
|
Gross = 3;
|
|
};
|
|
method = "Umsatz";
|
|
maxLevel = Level.Kleinst;
|
|
in
|
|
"\n${
|
|
formatOutcome { from = "2021-01-01"; till = "2021-12-31"; }
|
|
{
|
|
name = "EDV Solutions UG";
|
|
currency = "€";
|
|
events
|
|
= {
|
|
balance#: { ... } -> ~Transaction
|
|
= { ... } @ accounts:
|
|
{
|
|
inherit time;
|
|
credit = { "Passiva-A.I" = betrag; };
|
|
debit = { "Aktiva-B.IV.3" = betrag; };
|
|
description = "Jemand zahlt seinen*ihren Anteil ein";
|
|
};
|
|
formatAccountNames#: { ... } -> ...
|
|
= { ... }:
|
|
{
|
|
balance = "Bestandskonten";
|
|
assets = "Aktive Konten";
|
|
liabilities = "Passive Konten";
|
|
outcome = "Erfolgskonten";
|
|
revenues = "Ertragskonten";
|
|
expenses = "Aufwandskonten";
|
|
};
|
|
formatBalanceTitle = { name, time, ... }: "Bilanz von ${name} am ${formatDate time "deu"}";
|
|
formatBalanceNames
|
|
= { ... }:
|
|
{
|
|
credit = "Haben";
|
|
debit = "Soll";
|
|
total = "Gesamt";
|
|
difference = "Saldo";
|
|
};
|
|
formatOutcomeTitle
|
|
= { name, from, till, ... }:
|
|
"Gewinn- und Verlustrechnung von ${name} zwischen ${formatDate from "deu"} und ${formatDate till "deu"}";
|
|
formatOutcomeTotal = { ... }: "Jahresüberschuss/-fehlbetrag";
|
|
filterSection = { level, ... }: level <= maxLevel;
|
|
initialTransaction = { time, ... }: { description = "Vorjahresbilanz ${formatDate time "deu"}"; };
|
|
};
|
|
assets # Aktiva nach § 266 Abs. 2 HGB
|
|
= Section { title = "Aktiva"; level = Level.Kleinst; }
|
|
[
|
|
(
|
|
Section { title = "Anlagevermögen"; level = Level.Klein; }
|
|
[
|
|
(
|
|
Section { title = "Immaterielle Vermögensgegenstände"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Aktiva-A.I.1"; name = "Selbst geschaffene gewerbliche Schutzrechte und ähnliche Rechte und Werte"; }
|
|
{ id = "Aktiva-A.I.2"; name = "Entgeltlich erworbene Konzessionen, gewerbliche Schutzrechte und ähnliche Rechte und Werte sowie Lizenzen an solchen Rechten und Werten"; }
|
|
{ id = "Aktiva-A.I.3"; name = "Geschäfts- oder Firmenwert"; }
|
|
{ id = "Aktiva-A.I.4"; name = "Geleistete Anzahlungen"; }
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Sachanlagen"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Aktiva-A.II.1"; name = "Grundstücke, grundstücksgleiche Rechte und Bauten einschließlich der Bauten auf fremden Grundstücken"; }
|
|
{ id = "Aktiva-A.II.2"; name = "Technische Anlagen und Maschinen"; }
|
|
{ id = "Aktiva-A.II.3"; name = "Andere Anlagen, Betriebs- und Geschäftsausstattung"; }
|
|
{ id = "Aktiva-A.II.4"; name = "Geleistete Anzahlungen und Anlagen im Bau"; }
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Finanzanlagen"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Aktiva-A.III.1"; name = "Anteile an verbundenen Unternehmen"; }
|
|
{ id = "Aktiva-A.III.2"; name = "Ausleihungen an verbundene Unternehmen"; }
|
|
{ id = "Aktiva-A.III.3"; name = "Beteiligungen"; }
|
|
{ id = "Aktiva-A.III.4"; name = "Ausleihungen an Unternehmen, mit denen ein Beteiligungsverhältnis besteht"; }
|
|
{ id = "Aktiva-A.III.5"; name = "Wertpapiere des Anlagevermögens"; }
|
|
{ id = "Aktiva-A.III.6"; name = "Sonstige Ausleihungen"; }
|
|
]
|
|
)
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Umlaufvermögen"; level = Level.Klein; }
|
|
[
|
|
(
|
|
Section { title = "Vorräte"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Aktiva-B.I.1"; name = "Roh-, Hilfs- und Betriebsstoffe"; }
|
|
{ id = "Aktiva-B.I.2"; name = "Unfertige Erzeugnisse, unfertige Leistungen"; }
|
|
{ id = "Aktiva-B.I.3"; name = "Fertige Erzeugnisse und Waren"; }
|
|
{ id = "Aktiva-B.I.4"; name = "Geleistete Anzahlungen"; }
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Forderungen"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Aktiva-B.II.1"; name = "Forderungen aus Lieferungen und Leistungen"; }
|
|
{ id = "Aktiva-B.II.2"; name = "Forderungen gegen verbundene Unternehmen"; }
|
|
{ id = "Aktiva-B.II.3"; name = "Forderungen gegen Unternehmen, mit denen ein Beteiligungsverhältnis besteht"; }
|
|
(
|
|
Section { title = "Sonstige Vermögensgegenstände"; level = Level.Gross; }
|
|
[
|
|
{ id = "Aktiva-B.II.4.1"; name = "Abziehbare Vorsteuer"; }
|
|
]
|
|
)
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Wertpapiere"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Aktiva-B.III.1"; name = "Anteile an verbundenen Unternehmen"; }
|
|
{ id = "Aktiva-B.III.2"; name = "Sonstige Wertpapiere"; }
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Sonstiges Umlaufvermögen"; level = Level.Gross; }
|
|
[
|
|
{ id = "Aktiva-B.IV.1"; name = "Kassenbestand"; }
|
|
{ id = "Aktiva-B.IV.2"; name = "Bundesbankguthaben"; }
|
|
{ id = "Aktiva-B.IV.3"; name = "Bank"; }
|
|
{ id = "Aktiva-B.IV.4"; name = "Schecks"; }
|
|
]
|
|
)
|
|
]
|
|
)
|
|
{ id = "Aktiva-C"; name = "Rechnungsabgrenzungsposten"; }
|
|
{ id = "Aktiva-D"; name = "Aktive latente Steuern"; }
|
|
{ id = "Aktiva-E"; name = "Aktiver Unterschiedsbetrag aus der Vermögensverrechnung"; }
|
|
];
|
|
liabilities # Passiva nach § 266 Abs. 3 HGB
|
|
= Section { title = "Passiva"; level = Level.Kleinst; }
|
|
[
|
|
(
|
|
Section { title = "Eigenkapital"; level = Level.Klein; }
|
|
[
|
|
{ id = "Passiva-A.I"; name = "Gezeichnetes Kapital"; }
|
|
{ id = "Passiva-A.II"; name = "Kapitalrücklage"; }
|
|
(
|
|
Section { title = "Gewinnrücklagen"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Passiva-A.III.1"; name = "Gesetzliche Rücklage"; }
|
|
{ id = "Passiva-A.III.2"; name = "Rücklage für Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen"; }
|
|
{ id = "Passiva-A.III.3"; name = "Satzungsmäßige Rücklagen"; }
|
|
{ id = "Passiva-A.III.4"; name = "Andere Gewinnrücklagen"; }
|
|
]
|
|
)
|
|
{ id = "Passiva-A.IV"; name = "Gewinn-/Verlustvortrag"; }
|
|
{ id = "Passiva-A.V"; name = "Jahresüberschuß/-fehlbetrag"; }
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Rückstellungen"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Passiva-B.1"; name = "Rückstellungen für Pensionen und ähnliche Verpflichtungen"; }
|
|
{ id = "Passiva-B.2"; name = "Steuerrückstellungen"; }
|
|
{ id = "Passiva-B.3"; name = "Sonstige Rückstellungen"; }
|
|
]
|
|
)
|
|
(
|
|
Section { title = "Verbindlichkeiten"; level = Level.Mittel; }
|
|
[
|
|
{ id = "Passiva-C.1"; name = "Anleihen davon konvertibel"; }
|
|
{ id = "Passiva-C.2"; name = "Verbindlichkeiten gegenüber Kreditinstituten"; }
|
|
{ id = "Passiva-C.3"; name = "Erhaltene Anzahlungen auf Bestellungen"; }
|
|
{ id = "Passiva-C.4"; name = "Verbindlichkeiten aus Lieferungen und Leistungen"; }
|
|
{ id = "Passiva-C.5"; name = "Verbindlichkeiten aus der Annahme gezogener Wechsel und der Ausstellung eigener Wechsel"; }
|
|
{ id = "Passiva-C.6"; name = "Verbindlichkeiten gegenüber verbundenen Unternehmen"; }
|
|
{ id = "Passiva-C.7"; name = "Verbindlichkeiten gegenüber Unternehmen, mit denen ein Beteiligungsverhältnis besteht"; }
|
|
(
|
|
Section { title = "Sonstige Verbindlichkeiten, davon aus Steuern, davon im Rahmen der sozialen Sicherheit"; level = Level.Gross; }
|
|
[
|
|
{ id = "Passiva-C.8.1"; name = "Umsatzsteuer"; }
|
|
]
|
|
)
|
|
]
|
|
)
|
|
{ id = "Passiva-D"; name = "Rechnungsabgrenzungsposten"; }
|
|
{ id = "Passiva-E"; name = "Passive latente Steuern"; }
|
|
];
|
|
outcome # Gewinn- und Verlustrechnung nach § 275 Abs. 5 HGB
|
|
= Section { title = "Jahresüberschuss/-fehlbetrag"; level = Level.Kleinst; }
|
|
(
|
|
if maxLevel == Level.Kleinst
|
|
then
|
|
[
|
|
{ id = "GuV-1"; name = "Umsatzerlöse"; }
|
|
{ id = "GuV-2"; name = "Sonstige Erträge"; }
|
|
{ id = "GuV-3"; name = "Materialaufwand"; }
|
|
{ id = "GuV-4"; name = "Personalaufwand"; }
|
|
{ id = "GuV-5"; name = "Abschreibungen"; }
|
|
{ id = "GuV-6"; name = "Sonstige Aufwendungen"; }
|
|
{ id = "GuV-7"; name = "Steuern"; }
|
|
]
|
|
else if method == "Umsatz"
|
|
then
|
|
[
|
|
]
|
|
else if method == "Gesamt"
|
|
then
|
|
[
|
|
]
|
|
else
|
|
debug.panic "GuV"
|
|
''
|
|
GuV kann entweder für eine Kleinstkapitalgesellschaften (§ 267a HGB) nach § 275 Abs. 5,
|
|
nach § 275 Abs. 2 im Gesamtkostenverfahren (method=Gesamt) oder
|
|
nach § 275 Abs. 2 Umsatzkostenverfahren (method=Umsatz) erstellt werden!
|
|
''
|
|
);
|
|
inventory # Materialien, Maschinen, Grundstücken, …
|
|
= Section "Inventar"
|
|
[
|
|
{ id = "Inventar-1"; name = "Materialien"; }
|
|
];
|
|
journal # Chronologische Liste aller Geschäftsvorfälle
|
|
= import ./journal.nix
|
|
{
|
|
Gesellschaftereinzahlung
|
|
= time:
|
|
betrag:
|
|
name:
|
|
{
|
|
inherit time;
|
|
credit = { "Passiva-A.I" = betrag; };
|
|
debit = { "Aktiva-B.IV.3" = betrag; };
|
|
description = "${name} zahlt seinen*ihren Anteil ein";
|
|
};
|
|
Kontofuehrungsgebuehr
|
|
= time:
|
|
betrag:
|
|
{
|
|
inherit time;
|
|
credit = { "Aktiva-B.IV.3" = betrag; };
|
|
debit = { "GuV-6" = betrag; };
|
|
description = "Kontoführungsgebühren";
|
|
};
|
|
Forderung
|
|
= time:
|
|
betrag:
|
|
kunde:
|
|
rechnungsnummer:
|
|
let
|
|
betrag' = betrag / 1.19;
|
|
steuer = betrag - betrag';
|
|
in
|
|
{
|
|
inherit time;
|
|
credit = { "GuV-1" = betrag'; "Passiva-C.8.1" = steuer; };
|
|
debit = { "Aktiva-B.II.1" = betrag; };
|
|
description = "Rechnung an ${kunde} (${rechnungsnummer})";
|
|
};
|
|
Rechnungsbegleichung
|
|
= time:
|
|
betrag:
|
|
rechnungsnummer:
|
|
{
|
|
inherit time;
|
|
credit = { "Aktiva-B.II.1" = betrag; };
|
|
debit = { "Aktiva-B.IV.3" = betrag; };
|
|
description = "Rechnung ${rechnungsnummer} beglichen";
|
|
};
|
|
Sachanlagen
|
|
= time:
|
|
betrag:
|
|
sache:
|
|
let
|
|
betrag' = betrag / 1.19;
|
|
steuer = betrag - betrag';
|
|
in
|
|
{
|
|
inherit time;
|
|
credit = { "Aktiva-B.IV.3" = betrag; };
|
|
debit = { "Aktiva-A.II.2" = betrag'; "Aktiva-B.II.4.1" = steuer; };
|
|
description = "Ankauf von ${sache}";
|
|
};
|
|
Gewinnruecklage
|
|
= time:
|
|
betrag:
|
|
{
|
|
inherit time;
|
|
credit = { "Passiva-A.III.4" = betrag; };
|
|
debit = { "Passiva-A.IV" = betrag; };
|
|
description = "Gewinnrücklage";
|
|
};
|
|
};
|
|
}
|
|
}" |