Der Durchschnittspreis lügt
Die meisten Lagerprogramme beantworten «wie viele» und zucken bei «zu welchem Preis» mit den Schultern. Sie führen einen Durchschnittspreis je Artikel, und sobald die Einkaufspreise auseinanderlaufen, passt dieser Durchschnitt still nicht mehr zur Wirklichkeit — die Marge jeder Bestellung liegt um ein paar Prozent daneben, und niemand kann sagen, warum.
Crate behält die Schichten. Ein Wareneingang legt eine Charge mit eigenem Preis an, eine Auslieferung verbraucht die Warteschlange vom alten Ende her und schreibt auf, was sie genommen hat. Öffnen Sie eine Bestellung und Sie sehen die Rechnung: vier Stück aus der Juni-Charge, eines von Ende Juni, acht aus der Juli-Charge — und daneben, was dieselbe Zeile nach gewichtetem Durchschnitt gekostet hätte.
Was drinsteckt
Echtes FIFO
Chargen werden mit Zeilensperren gelesen und in Eingangsreihenfolge verbraucht, zwei gleichzeitige Bestellungen können denselben Bestand nicht doppelt ausgeben. Eine Auslieferung über den Bestand hinaus wird nie halb gebucht — der ganze Beleg rollt zurück.
Kosten Zeile für Zeile
Jede Auslieferungszeile speichert ihre Schichten: Charge, Datum, entnommene Menge, Einkaufspreis. Daneben steht die Alternative nach gewichtetem Durchschnitt und die Differenz — man sieht genau, wie stark der Durchschnitt gelogen hätte.
Ein unveränderliches Journal
Ein gebuchter Beleg wird nie bearbeitet. Ein Fehler wird storniert, und die Stornierung gibt die Ware genau in die Chargen zurück, aus denen sie kam. Ein Wareneingang, aus dessen Charge bereits ausgeliefert wurde, lässt sich nicht stornieren.
Umlagerungen altern nicht
Eine Umlagerung erzeugt am neuen Ort dieselben Schichten mit Preis und Eingangsdatum. Sonst würde die FIFO-Warteschlange bei jedem Transport zurückgesetzt und ein halbes Jahr alter Bestand sähe frisch aus.
Inventuren mit Aussage
Die Zählliste hält die erwartete Menge beim Öffnen fest, denn das Lager arbeitet weiter, während jemand durch die Regale geht. Überschuss wird zum Durchschnittspreis eingebucht, Fehlmenge über die Warteschlange abgeschrieben — zwei Belege, nicht einer mit Vorzeichen.
Ganze Zahlen und Prüfung
Geld in Kopeken, Mengen in Tausendsteln einer Einheit — keine Floats in einem System, dessen ganze Aufgabe es ist, dass die Zahlen aufgehen. Der Befehl crate:verify rechnet die Bestände jede Nacht aus dem Journal nach.
Screenshots