Hallo,
ich wollte eine Art kleines Kassensystem programmieren, und habe mich diesmal entschieden Elixir zu verwenden.
Das ganze besteht aus folgenden Klassen:
Product:
ein Produkt mit seinen jeweiligen Werten, so aus der Datenbank geladen
Name
Preis
Beschreibung
...
ProductInstance:
ein Produkt wie es während dem einkaufen verwendet wird
Erlaubt das Bündeln von mehreren Produkten, und repräsentiert gemeinsam einige Produkte (z.B. 5x Cola)
Die Unterscheidung wird per Hash gemacht, so dass, sollte man ein Produkt zum Beispiel rabattieren, es nicht mehr dazu gebündelt wird, sondern eine eigene ProductInstance bekommt. Eine ProductInstance bündelt immer nur die Product-Objekte die den selben Hash haben.
Transaction:
Der jeweilige Verkaufsprozess, während er stattfindet. Enthält die Produktinstanzen, und erlaubt zum Beispiel den Zahlungsvorgang und das Abschließen des ganzen Prozesses.
DAs ganze ist noch in einem weiten Vorstadium, aber schon jetzt verzweifle ich.
Anbei mal der Code:
http://python-forum.de/pastebin.php?mode=view&s=35
Hoffe da kann jemand meinen Denkfehler rausfinden, ich sitze jetzt schon Stunden dran, und weiß nicht was ich falsch verstanden habe, an Elixir.
Liebe Grüße
Chris
Ich verzweifle an Elixir
Hallo,
Es ist ganz komisch, wenn ich mir das in der SQLite-Datenbank danach anschaue.
Bei den Produkten wird in das Feld transaction_tid die ID von der letzten Transaction eingetragen,
bei den Transactionen werden überhaupt nicht die Produkte eingetragen, sondern eben nur die ID von der Transaktion,
Es ist ganz komisch, wenn ich mir das in der SQLite-Datenbank danach anschaue.
Bei den Produkten wird in das Feld transaction_tid die ID von der letzten Transaction eingetragen,
bei den Transactionen werden überhaupt nicht die Produkte eingetragen, sondern eben nur die ID von der Transaktion,
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Der Thread gehört imho ins Datenbanken-Subforum.
Die Getter und Setter sind so unschön; würde ich mit Propertirs lösen. Einige sind komplett unnötig (GetID in Product).
Achte mehr auf PEP8; Methoden werden mit underscores geschrieben und klein:
"foo_bar()" statt FooBar().
Ich verstehe Deine Fehlerbeschreibung nicht. Werde doch da noch einmal ein wenig genauer, was Du erwartest und was passiert.
Die Getter und Setter sind so unschön; würde ich mit Propertirs lösen. Einige sind komplett unnötig (GetID in Product).
Achte mehr auf PEP8; Methoden werden mit underscores geschrieben und klein:
"foo_bar()" statt FooBar().
Ich verstehe Deine Fehlerbeschreibung nicht. Werde doch da noch einmal ein wenig genauer, was Du erwartest und was passiert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Was ich mir wünschen würde:
Wenn die Funktion Finish() ausgeführt wird, soll folgendes passieren:
Tabelle Products:
-nichts passiert
Tabelle ProductInstance:
-Es wird eine Liste erzeugt, mit den pid-s von den Produkten die darin sind
Tabelle Transaction:
-Es wird die Transaction mit dem aktuellen Datum sowie den dort enthaltenen ProductInstances erstellt.
Danach wird alles für einen weiteren EInkauf zurückgesetzt.
Wenn die Funktion Finish() ausgeführt wird, soll folgendes passieren:
Tabelle Products:
-nichts passiert
Tabelle ProductInstance:
-Es wird eine Liste erzeugt, mit den pid-s von den Produkten die darin sind
Tabelle Transaction:
-Es wird die Transaction mit dem aktuellen Datum sowie den dort enthaltenen ProductInstances erstellt.
Danach wird alles für einen weiteren EInkauf zurückgesetzt.
Machst du auch immer brav ein 'commit', nachdem du Änderungen (weitere Werte eingetragen) vorgenommen hast? Mit Elixir selbst kenne ich mich nicht aus, aber ich bin noch keinem DB-Toolkit begegnet, in dem du das nicht machen müßtest.