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.
Buchhaltung: T-Konto in python
- 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.
-
- User
- Beiträge: 28
- Registriert: Samstag 8. Dezember 2018, 16:12
Ok, aber welche schlüssel/wertpaare sollen z.b. in das Soll-dict rein, ist ja eigendlich nur ein Wert immer.
- 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.
-
- User
- Beiträge: 28
- Registriert: Samstag 8. Dezember 2018, 16:12
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.
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
z.B. so:
Für die Bilanzsumme spielt ja die passiva-Seite noch eine rolle. Daher ist o.g. Code nur ein abstraktes Beispiel.
Code: Alles auswählen
>>> aktiva = {'Maschinen': 50000.00, 'Fuhrpark': 99000.00}
>>> bilanzsumme = sum(aktiva.values())
>>> bilanzsumme
149000.0
When we say computer, we mean the electronic computer.
-
- User
- Beiträge: 28
- Registriert: Samstag 8. Dezember 2018, 16:12
Ah verstehe, du bist schon eine ebene höher.... jetzt macht es Sinn.sls hat geschrieben: ↑Samstag 21. März 2020, 18:06 z.B. so:
Für die Bilanzsumme spielt ja die passiva-Seite noch eine rolle. Daher ist o.g. Code nur ein abstraktes Beispiel.Code: Alles auswählen
>>> aktiva = {'Maschinen': 50000.00, 'Fuhrpark': 99000.00} >>> bilanzsumme = sum(aktiva.values()) >>> bilanzsumme 149000.0
- 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.
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.
-
- User
- Beiträge: 28
- Registriert: Samstag 8. Dezember 2018, 16:12
Hatte überlegt, dass ich ne Klasse erstelle, mit kontoname, soll, haben und Anfangsbestand. Da sollte es mit der Zuordnung eigendlich klappen.
- 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.
-
- 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.
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?
-
- User
- Beiträge: 28
- Registriert: Samstag 8. Dezember 2018, 16:12
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.
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.
-
- User
- Beiträge: 28
- Registriert: Samstag 8. Dezember 2018, 16:12
Danke dir, so werde ich es mal probieren, shcol gucke ich mir mal an.__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.
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.
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.