Offen Lösungsuche Lagerbestand bei Komponenten falsch ermittelt

  • Ersteller des Themas Ersteller des Themas 3333
  • Erstellungsdatum Erstellungsdatum

3333

Aktives Mitglied
16. April 2013
8
0
ich bin heute über ein Problem gestolpert, welches Auftritt wenn versucht wird, zwei Artikel in den Warenkorb zu legen, die jeweils aus Stücklisten besteht, wo die Stücklistenkomponenten teilweise übereinstimmen und wo die beiden Artikel jeweils einen Lagerbestand von 1 haben. Bei Hinzufügen des zweiten Artikels in den Warenkorb wird in der Funktion pruefeWarenkorbStueckliste geprüft, ob die Lagermenge der einzelnen Komponenten es zulässt. Das Problem dabei ist, dass die Lagermenge der Komponente aus der Anzahl der Komponente in der Stückliste und dem Lagerbestand der ersten Position berechnet wird, was nicht (immer) stimmt.

Direktes Beispiel:

Artikel A
Enthält Stücklisten-Komponenten
- 1 x Komponente-Artikel-AAA selbst (Lagermenge = 1)
- 1 x Anleitung B (Lagermenge > 400)
- 1 x Flyer C (Lagermenge > 400)

Artikel B
Enthält Stücklisten-Komponenten
- 1 x Komponente-Artikel-BBB selbst (Lagermenge = 1)
- 1 x Anleitung B (Lagermenge > 400)
- 1 x Flyer C (Lagermenge > 400)

Wenn ein Kunde beide Artikel jeweils zum Warenkorb nach einander hinzufügen möchte, bekommt er beim zweiten Artikel die Fehlermeldung, dass der Artikel nicht hinzugefügt werden kann, weil die gewünschte Menge nicht verfügbar ist, obwohl beide Artikel noch jeweils 1 auf Lager sind und komplett verkaufbar.

Das Problem tritt auf, weil in der Funktion pruefeWarenkorbStueckliste die currentComponentStock folgendermaßen bestimmt wird:
$currentComponentStock = $oPosition->Artikel->fLagerbestand * $oKomponente->fAnzahl; ---> Ergebnis 1 (obwohl definitiv mehr als 1 davon vorhanden sind)

$desiredComponentQuantity = $fAnzahl * $oStuecklisteKomponente_arr[$oKomponente->kArtikel]->fAnzahl; --> 1 .... ok
$currentComponentQuantity = $oPosition->nAnzahl * $oKomponente->fAnzahl; --> 1 .... ok
$currentComponentStock = $oPosition->Artikel->fLagerbestand * $oKomponente->fAnzahl; ---> 1 .... Hier muss die Lagermenge der Komponente anders ermittelt werden.

Dadurch greift die if Funktion und liefer einen return R_LAGER, was falsch ist.

if ($desiredComponentQuantity + $currentComponentQuantity > $currentComponentStock) return R_LAGER;

Und dadurch kann ein Kunde seine gewünschte Bestellung nicht aufgeben, obwohl sowohl beide Artikel als auch alle Komponenten noch in ausreichender Anzahl auf Lager sind.
 

3po

Sehr aktives Mitglied
30. August 2011
2.605
100
AW: Lösungsuche Lagerbestand bei Komponenten falsch ermittelt

Hast du hierzu ein Ticket aufgemacht, scheint mir ein komplexes problem zu sein?
 

Ähnliche Themen