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