Postgres: "Bewegungskorrektur beim Bestand berücksichtigen"
Steffen Malte
- php
0 lulu0 Steffen Malte0 lulu
Hallo!
2 Tabellen:
-----------
1. bestand (artikel,bestand)
2. bewegung (transaktionsnr,artikel,menge,buchungsschluessel)
2 Dateien:
----------
1. Eingabeformular für jede Bewegung
2. PHP-Skript das die Eingabe verarbeitet
Bisdato habe ich folgendes realisiert:
--------------------------------------
Nach Erfassung einer neuen Bewegung (Eingabeformular) wird überprüft
(PHP-Skript) ob von dem jeweiligen Artikel bereits ein Bestand
vorhanden ist. Wenn dies zutreffen sollte wird ein UPDATE ansonsten
ein INSERT ausgeführt.
Dem Benutzer steht es aber frei eine Bewegung zu korrigieren (z.B. es
ist eine falsche Menge angegeben worden). Diese Änderung muss
nun von dem PHP-Skript auch als Korrektur und nicht als INSERT
bzw. als UPDATE betrachtet werden. Aktuell würde eine Bewegungskorrektur
ein zusätzliches INSERT bzw. UPDATE nachsichziehen.
Wie kann ich dieses Problem angehen?
Im Voraus schon einmal Danke für Eure Hilfe.
Gruß
Steffen
Huhu Steffen
Wie kann ich dieses Problem angehen?
ich würde das komplett ohne update machen und den aktuellen Ist-Bestand
jeweils frisch von der Datenbank rechnen lassen.
Dazu muss nur die Art der Transaktion und die Menge berücksichtigt werden.
Der Bestand ergibt sich aus der Differenz der Summe aller Eingänge und der Summe aller Ausgänge.
Ein Storno ist dann einfach ein weiterer Eintrag.
Durch ein Update gehen Dir u.U. Detailinformationen verloren die Du an anderer Stelle brauchst.
Eine Kumulierung der Daten kannst Du ja später immer noch vornehmen.
Viele Grüße
lulu
Hallo lulu,
danke für die schnelle Antwort.
Gehen wir mal von folgendem Beispiel aus:
Tabelle "Bewegung":
--------------------
TrNr | Artikel | Menge | BuchSchl
1 | 1 | 10 | WE
2 | 1 | 2 | WA <--- Menge ist nicht korrekt
3 | 1 | 3 | WA
Tabelle "Bestand":
------------------
Artikel | Bestand
1 | 5
Nach meinem bisherigen Skript würde eine Korrektur der
Transaktion 2 (Menge von 2 auf 4) eine weitere Bewegung
nachsichziehen.
Habe ich das richtig verstanden, dass es besser wäre eine
Storno- bzw. Korrekturbuchung zu vollziehen. Dies hätte zur
Folge, dass weitere Bewegungen erzeugt würden.
->
Tabelle "Bewegung":
--------------------
TrNr | Artikel | Menge | BuchSchl
1 | 1 | 10 | WE
2 | 1 | 2 | WA
3 | 1 | 3 | WA
4 | 1 | 2 | WE <--- Stornobuchung
5 | 1 | 4 | WA <--- Korrekturbuchung
Tabelle "Bestand":
------------------
Artikel | Bestand
1 | 3
Gruß
Steffen
Huhu Steffen
es ist ggf. transparenter wenn man die Änderungen als eigenständige
"Bewegungen" mitprotokolliert.
Wie das im Detail aussieht bzw. aussehen muss, musst Du entscheiden.
Da es ja anscheinend um einen Art Warenwirtschaftssystem geht
wäre ich da an Deiner Stelle nicht zu geizig mit den Protokollierungen sämtlicher Vorgänge.
Viele Grüße
lulu