Buchhaltung: T-Konto in python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

Hi Leute,

ich brauch mal wieder einen Denkanstoss von euch. Ich möchte gerne ein simples in T-Konto aus der Buchhaltung in Python abbilden. Die Logik selbst is ja nicht so schwer zu programmieren, aber ich weiß nicht, wie ich es am besten darstellen kann bzw. wie ich es umsetzen soll.

Meine erste Idee ist, dass man zwei Listen nebeneinander vertikal ausgibt aber dann fehlt noch die ganze formatierung. So sieht ein T-Konto aus: https://www.bwl-lerntipps.de/t-konto/

Wie würdet ihr es umsetzten, Bonus wäre natürlich, wenn man es später auch als PDF ausgeben kann.

VG und bleibt gesund.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@Code Codain: als Datenstruktur würde ich jeweils für die Soll- und Habenseite ein Wörterbuch verwenden. So hast du für eine formatierte Ausgabe aller Posten immer die Bezeichnung und den Wert. Die Bilanzsumme etc. kannst du einfach über die sum()-Funktion ermitteln. Die Werte aller Posten lassen sich in einem Wörterbuch ebenfalls einfach abgreifen.
Zuletzt geändert von sls am Samstag 21. März 2020, 17:53, insgesamt 1-mal geändert.
When we say computer, we mean the electronic computer.
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

sls hat geschrieben: Samstag 21. März 2020, 17:49 @Code Codain: als Datenstruktur würde ich jeweils für die Soll- und Habenseite ein Wörterbuch verwenden. So hast du für eine formatierte Ausgabe aller Posten immer die Bezeichnung und den Wert.
Ok, aber welche schlüssel/wertpaare sollen z.b. in das Soll-dict rein, ist ja eigendlich nur ein Wert immer.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@Code Codain: du hast doch das T-Konto verlinkt, schau dir die Darstellung doch selber nochmal an, dann müsstest du eigentlich darauf kommen.
When we say computer, we mean the electronic computer.
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

sls hat geschrieben: Samstag 21. März 2020, 18:00 @Code Codain: du hast doch das T-Konto verlinkt, schau dir die Darstellung doch selber nochmal an, dann müsstest du eigentlich darauf kommen.

Ich schnalls einfach nicht, da du ja jeweils ein dict für soll und haben empfohlen hast. Auf der sollseite (z.B.) stehen nur einzelne Werte, deswegen verstehe ich nicht was das key/value pair sein soll.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

z.B. so:

Code: Alles auswählen

>>> aktiva = {'Maschinen': 50000.00, 'Fuhrpark': 99000.00}
>>> bilanzsumme = sum(aktiva.values())
>>> bilanzsumme
149000.0
Für die Bilanzsumme spielt ja die passiva-Seite noch eine rolle. Daher ist o.g. Code nur ein abstraktes Beispiel.
When we say computer, we mean the electronic computer.
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

sls hat geschrieben: Samstag 21. März 2020, 18:06 z.B. so:

Code: Alles auswählen

>>> aktiva = {'Maschinen': 50000.00, 'Fuhrpark': 99000.00}
>>> bilanzsumme = sum(aktiva.values())
>>> bilanzsumme
149000.0
Für die Bilanzsumme spielt ja die passiva-Seite noch eine rolle. Daher ist o.g. Code nur ein abstraktes Beispiel.
Ah verstehe, du bist schon eine ebene höher.... jetzt macht es Sinn.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@Code Codain: du kannst Wörterbücher auch verschachteln um bspw. das Eigenkapital, Verbindlichkeiten usw. zu ermitteln etc.

Bei Listen geht dir schlicht die Zuordnung der Summen verloren, da du bei einem Listeneintrag nicht weißt, wofür der Wert 50000.00 steht.
When we say computer, we mean the electronic computer.
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

sls hat geschrieben: Samstag 21. März 2020, 18:12
Bei Listen geht dir schlicht die Zuordnung der Summen verloren, da du bei einem Listeneintrag nicht weißt, wofür der Wert 50000.00 steht.
Hatte überlegt, dass ich ne Klasse erstelle, mit kontoname, soll, haben und Anfangsbestand. Da sollte es mit der Zuordnung eigendlich klappen.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Probier's vielleicht erstmal mit einer einfachen Datenstruktur und Funktionen zur Berechnung der Eigenkapitalquote usw., ich denke da bist du erstmal gut mit bedient.
When we say computer, we mean the electronic computer.
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

Berechenungen wollte ich erstmal nicht anstellen, eigendlich gehts mir erstmal darum ein Bestandskonto z.B. Bank in Python als T-konto darzustellen. Ich finde da iwie keine Ansatz bzw. welche libs oder so ich dafür nutzten soll.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was heisst denn darstellen? Ein T-Konto ist ja nur eine Darstellung, der jeweilige Zu/Abgang wird einfach nur durch das Vorzeichen des Betrages dargestellt. Wenn da natuerlich noch andere Informationen dabei sind (und das sind sie ja ueblicherweise), dann muss zB ein Datenobjekt her, mit NamedTuple oder attrs etc., oder selbst gebaut. Und die Darstellung soll wo erfolgen? Im Browser, in einer eigenen GUI? Wenn letzteres, mit welchem Framework?
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

__deets__ hat geschrieben: Samstag 21. März 2020, 18:52 Und die Darstellung soll wo erfolgen? Im Browser, in einer eigenen GUI? Wenn letzteres, mit welchem Framework?
Genau das ist mein Problem, ich weiß es nicht. Ich würd leicht anfangen und sagen in dem Textfenster unten in Pycharm ^^ Sorry für die laienhafte Erklärung, mir fällt das Wort nicht ein, also Console oder Terminal ist es nicht. Textform mit print werde ich probieren und den T-Kontostrich probiere ich mit einem großen "I" darzustelllen.
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

Und wo ist jetzt konkret das Problem, mit einer Schleife zwei Spalten auszugeben?
Was hast Du schon versucht? Wie sieht Dein Programm bisher aus?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na doch, das ist eine Konsole, nur eben eingebettet in Pycharm. Alles, was du dann tun musst, ist deinen Eintraege in zwei Listen sortieren, abhaengig vom Vorzeichen. Eine soll, eine haben. Fuer jeden Eintrag in der einen Liste kommt ein Leerstring in die andere, und dann kannst du die maximale Laenge der Soll-Eintraege bestimmen. Und damit dann ganz einfach print-formatting betreiben, weil du weiss, wieviele Spaces du anhaengen musst an jeden Eintrag. Irgendein User hier (ich glaube snafu) hat da auch ein Project "shcol", in dem ASCII-Formatierung von Tabellen betrieben wird. Das kannst du dir ja mal anschauen. Oder ggf. gibt's da sogar schon was.
Code Codain
User
Beiträge: 28
Registriert: Samstag 8. Dezember 2018, 16:12

__deets__ hat geschrieben: Samstag 21. März 2020, 19:27 Na doch, das ist eine Konsole, nur eben eingebettet in Pycharm. Alles, was du dann tun musst, ist deinen Eintraege in zwei Listen sortieren, abhaengig vom Vorzeichen. Eine soll, eine haben. Fuer jeden Eintrag in der einen Liste kommt ein Leerstring in die andere, und dann kannst du die maximale Laenge der Soll-Eintraege bestimmen. Und damit dann ganz einfach print-formatting betreiben, weil du weiss, wieviele Spaces du anhaengen musst an jeden Eintrag. Irgendein User hier (ich glaube snafu) hat da auch ein Project "shcol", in dem ASCII-Formatierung von Tabellen betrieben wird. Das kannst du dir ja mal anschauen. Oder ggf. gibt's da sogar schon was.
Danke dir, so werde ich es mal probieren, shcol gucke ich mir mal an.
bfm
User
Beiträge: 88
Registriert: Donnerstag 14. März 2013, 09:42

Hallo,

also für mein Haushaltsbuch habe ich das so gemacht.

Die einzelnen Buchungen müssen ja auch gespeichert werden. Für die Anzeige werden diese Buchungssätze dann ganz einfach wie gewünscht aufbereitet. Jede Buchung besteht aus mindestens zwei Datensätzen. Es können aber auch mehrzeilige Buchungen vorkommen. Die Summe aus Soll und Haben aus allen Buchungen müssen nur gleich hoch sein.

DB-Tabelle
Datum..........Konto..SH...Betrag.. GegKto..........Text
24.03.2020...1500...H.....10,00.....5802..............Kino
24.03.2020...5802...S.....10,00.....1500.............. Kino
25.03.2020...1500...S .....50,00.....2500..............Bankautomat
25.03.2020...2500...H.....50,00.....1500..............Bankautomat
26.03.2020...1500...H.....30,00.....5100/5101.....Drogerie
26.03.2020...5100...S.....10,00.....1500...............Drogerie
26.03.2020...5101...S.....20,00.....1500...............Droberie

Anzeige am Bildschirm Konto 1500
Datum..........Konto...Soll.....Haben...GegKto..........Text
24.03.2020...1500...............10,00....5802..............Kino
25.03.2020...1500....50,00...............2500..............Bankautomat
26.03.2020...1500...............30,00....5100/5101....Drogerie

Den Saldovortrag hole ich mir aus einer Saldentabelle. Man kann aber auch hergehen und den Saldo als Buchung speichern. Machen manche Fibu-Programme so. Da müsste man aber die Buchungen geschickterweise entsprechend kennzeichnen, damit man sieht, ob es jetzt eine normale Buchung ist oder eine Vortragsbuchung. Auch kann man schon in der DB-Tabelle hergehen und die Beträge in einer Spalte für Soll und einer für Haben speichern.
Antworten