Lager und Bestellbestandfehler bei Storno

Kein System ist vollkommen, findet Ihr Fehler im System, könnt ihr diese hier gerne Posten. Wir werden auch kurzfistige Lösungen und Fixes hier schreiben.

Moderatoren: Magnus, mmaass, ablass

Lager und Bestellbestandfehler bei Storno

Beitragvon daddelheini » Do 14. Feb 2013, 18:07

Hi,
ich schon wieder... :oops:

Vorhanden: 2.02 / Faktura, Lieferantenmodul u.a.

Lager u. Bestellbestand im Shop = 0
Anzeige im Shop: Lieferbar in 1 Woche
Testbestellung durchgeführt --> Bestellung anschließend storniert --> Anzeige im Shop 2 Stk. verfügbar........????????

ok,ok, erstmal ist WE....

Gruß an alle Draußenschläfer

Ralf
daddelheini
 
Beiträge: 134
Registriert: So 20. Mär 2011, 20:29

Re: Lager und Bestellbestandfehler bei Storno

Beitragvon ablass » Di 19. Feb 2013, 16:18

Hallo Ralf,

danke wiedermal für die Fehlermeldung. Habe das wie immer für die kommende Version behoben. Hier die Anleitung um es in der 2.0.x auch zu beheben:

Zunächst mal muss in der Datenbank in der Tabelle randshop_artikel das Feld lager_bestellungen geändert werden so dass es nicht mehr unsigned ist. Dazu kannst du einfach folgenden SQL Befehl auf der Datenbank ausführen:
Code: Alles auswählen
alter table `randshop_artikel` modify column lager_bestellungen int(10) not null default 0;

Falls du bei der Installation ein anderes Tabellenprefix als 'randshop' benutzt hast müsstest du das entsprechend ersetzen.

Sooo.. dann sind in 2 Dateien kleine Änderungen zu machen:
Einmal in /includes/functions.lager.inc.php in der Funktion StorniereWarenbestand, etwa Zeile 657 müsste irgendwo stehen:
Code: Alles auswählen
            if($StorniereLager) {
             AddLagerbestand($artikel["artikel_id"], $artikel["menge"], $StorniereBestellLager);
            }

dort den Parameter $StorniereBestellLager rausnehmen und durch false ersetzen, das sieht dann also so aus:
Code: Alles auswählen
            if($StorniereLager) {
             AddLagerbestand($artikel["artikel_id"], $artikel["menge"], false);
            }


Dann in /includes/functions.warenkorb.inc.php in der Funktion ChangeWarenkorb etwa Zeile 470 wird ein SQL Befehl zusammengebaut, das sieht etwa so aus:
Code: Alles auswählen
   // Warenkorb einlesen
   $SQLString = "SELECT ";
   $SQLString .= TABLE_WARENKORB . ".session, ";
   $SQLString .= TABLE_WARENKORB . ".artikel_id ";
   $SQLString .= "FROM " . TABLE_WARENKORB . " WHERE ";
   $SQLString .= TABLE_WARENKORB . ".id = '" . $WarenkorbID . "' ";


Dort muss noch ein Feld 'menge' mit rein, dann sieht das so aus:
Code: Alles auswählen
   // Warenkorb einlesen
   $SQLString = "SELECT ";
   $SQLString .= TABLE_WARENKORB . ".session, ";
   $SQLString .= TABLE_WARENKORB . ".artikel_id, ";
    $SQLString .= TABLE_WARENKORB . ".menge ";
   $SQLString .= "FROM " . TABLE_WARENKORB . " WHERE ";
   $SQLString .= TABLE_WARENKORB . ".id = '" . $WarenkorbID . "' ";


Nicht vergessen das Komma hinter artikel_id auch zu setzen.

So und dann einige Zeilen weiter unten in derselben Funktion etwa Zeile 533 steht folgendes:
Code: Alles auswählen
        if($BestellObject) {
            if($BestellObject->set_lager) {
                $Lagerbuchbemerkung = 'Artikel manuell zugefügt / Auftragsnummer ' . $BestellObject->auftragsnummer . ' (Kd Nr: ' . $BestellObject->kunden_id . ') vom ' . $BestellObject->auftragsdatum_format;
                RemoveWarenbestand($WarenkorbRow->artikel_id, $Menge, $Lagerbuchbemerkung, $BestellObject->id, $WarenkorbID);
            }
            if($BestellObject->set_lager_bestellung) {
                RemoveBestellLagerbestand($WarenkorbRow->artikel_id, $Menge);
            }
        }

Dort muss der Parameter $Menge ersetzt werden durch '$Menge - $WarenkorbRow->menge, das sieht dann so aus:

Code: Alles auswählen
        if($BestellObject) {
            if($BestellObject->set_lager) {
                $Lagerbuchbemerkung = 'Artikel manuell zugefügt / Auftragsnummer ' . $BestellObject->auftragsnummer . ' (Kd Nr: ' . $BestellObject->kunden_id . ') vom ' . $BestellObject->auftragsdatum_format;
                RemoveWarenbestand($WarenkorbRow->artikel_id, $Menge - $WarenkorbRow->menge, $Lagerbuchbemerkung, $BestellObject->id, $WarenkorbID);
            }
            if($BestellObject->set_lager_bestellung) {
                RemoveBestellLagerbestand($WarenkorbRow->artikel_id, $Menge - $WarenkorbRow->menge);
            }
        }


Das sollte es gewesen sein.

LG
Alex
ablass
 
Beiträge: 126
Registriert: Mi 22. Jul 2009, 07:56


Zurück zu Bugmeldungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 83 Gäste