Problem mit oxvarminprice (CE 4.7.2)

Hi!

Ich habe ein Tool geschrieben, dass alle Artikel aus der Wawi ins OXID schreibt. In meinem Tool selbst schreibe den Wert für oxvarminprice auch in die oxarticles. Nun ist mir folgendes Problem aufgefallen:
Nehmen wir einmal an, dass eine Variante 179€ kostet, eine weitere 209€ und eine dritte, inaktive 149€. Dann schreibe ich natürlich 179€ in oxvarminprice, denn ein Kunde kann die Variante mit 149€ natürlich nicht auswählen, da sie ja inaktiv ist.

Nun ists so, dass nicht reproduzierbar hin und wieder die 149€ auftauchen im Frontend. Was ich natürlich sehr unschön finde und den Kunden sicherlich auch verwirrt, findet er diesen Preis doch nirgends. Ich habe da bis jetzt leider auch keine Regelmäßigkeit herausfinden können. Achso, Vaterartikel sind nicht kaufbar.

Danke Euch schon mal für Eure Hilfe :slight_smile:

Achso, es ist natürlich ausgeschlossen, dass mein Tool rumspinnt. Das legt eine Logfile an. In der steht natürlich, wenn der Fehler auftaucht, auch drin, dass die 179€ in die Spalte oxvarminprice von oxarticles geschrieben wurden.

In der oxarticle.php fand ich nun endlich den Part, der oxvarminprice setzt. Leider brachte ein Auskommentieren nicht den gewünschten Erfolg. Hatte ich mir aber schon gedacht, da hier ja nachgeschaut wird, ob der Artikel auch wirklich aktiv ist.
Also mal eine Suche nach Dateiinhalten bequemt und in application/models/oxarticlelist.php folgenden Part gefunden:


$sQ = "CREATE TEMPORARY TABLE IF NOT EXISTS `__oxprices` (
                    `oxid` CHAR(32) character set latin1 collate latin1_general_ci NOT NULL,
                    `oxminprice` DOUBLE NOT NULL,
                    `oxmaxprice` DOUBLE NOT NULL,
                    PRIMARY KEY ( `oxid` )
                  ) ENGINE=MYISAM
                  SELECT `oxparentid` AS `oxid`, MIN(`oxprice`) AS `oxminprice`, MAX(`oxprice`) AS `oxmaxprice`
                      FROM `oxarticles` WHERE `oxparentid` <> '' GROUP BY `oxparentid`";

Hier wird ganz offensichtlich nicht oxactive beachtet. Habe jetzt mal


FROM `oxarticles` WHERE `oxparentid` <> '' GROUP BY `oxparentid`";

in


FROM `oxarticles` WHERE `oxparentid` <> '' AND `oxactive`=1 GROUP BY `oxparentid`";

geändert.

Hoffe, dass das nun wirklich der Fehler war. Denn ein Artikel ist am 4.2. mittels meiner Schnittstelle hinzu gekommen und wurde auf wundersame Weise am 5.2. verändert. Seitdem hatte oxvarminprice auch den falschen Wert.

Wenn du die Funktion “Preis zur festgesetzten Zeit aktualisieren” nicht benutzt, kannst du den kompletten Block in updateUpcomingPrices auskommentieren. Hab den Bug eingetragen: https://bugs.oxid-esales.com/view.php?id=4902