PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konzept variable Lagerbewirtschaftung



hayloft_ch
26-06-2007, 11:05
Hallo l

Für einen Kunden muss ich eine bestehende Software erweitern. Eine normale Lagerbewirtschaftung mit Artikelstamm, Rüstliste, Lieferscheinen usw. besteht bereits.

Die Erweiterung betrifft eine Firma im Messebaubereich, bei der Artikel jeweils nur einen bestimmten Zeitabschnitt weg sind.

Beim Erfassen eines Auftrags wird also ein Zeitraum angegeben und beim Erstellen der Rüstliste wird der Lagerbestand für genau diesen Zeitraum überprüft und dann abgebucht. Überprüft wird, ob für diesen Zeitraum der Lagerbestand irgendwann unter die geforderte Menge fällt (zum Teil sind das zb. Schrauben, die bei fast jedem Auftrag benötigt werden, der Lagerbestand kann über den gewünchten Zeitraum also mehrmals wechseln).

Umsetzungsideen:
Spontan dachte ich an eine zweite Tabelle (Artikel 1:n abgebuchte Zeiträume):

Artikel
--------
ArtikelId
ArtikelNr
usw..

abgebuchte Zeiträume
--------------------
ArtikelId
Von
Bis

Mal abgesehen davon, dass so keine Relation zum Auftrag besteht (das ist ja kein Problem), sehe ich keine Möglichkeit, auf einfache Weise den tiefsten Lagerbestand in einen bestimmten Zeitraum auszulesen (ausser für jeden Tag eine einzelne Abfrage oder über viel PHP-Code).

Wie würdet ihr die Abfrage gestalten?
Oder würdet ihr schon beim db-Aufbau etwas anders machen?

Hoffe mal die Problematik war einigermassen klar geschildert.

Gruss

Matthias

Waxolunist
27-06-2007, 13:32
Ich würde bei jeder Aus- bzw. Einbuchung über einen Trigger in eine weitere Tabelle einen Beleg mit dem Lagerstand schreiben, der zu diesem Zeitpunkt besteht. Zur Not mit 2 Einträgen.

Ausbuchungsvorgang:
Zeitpunkt | ArtikelID | Menge
t1 | 1 | 100
t1+1 | 1 | 80

Einbuchungsvorgang:
Zeitpunkt | ArtikelID | Menge
t2 | 1 | 80
t2+1 | 1 | 100

Für eine Abfrage über den tiefsten Stand fragst du dann einfach diese ein Tabelle über den Zeitraum von t1 bis t2 ab für den Artikel 1 mit minimaler Menge ab und erhältst als Ergebnis 80.

lg, Christian