Steffen Malte: Postgres: "Bewegungskorrektur beim Bestand berücksichtigen"

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

  1. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. 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

      1. 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

        --
        bythewaythewebsuxgoofflineandenjoytheday