Nach Update auf CE 4.9.0: "oxSystemComponentException-oxException (time: 2014-10-21 14:36:51): [0]: Function 'getWeight' does not exist"

Hallo,

nach dem Update von 4.8.7 auf 4.9.0 wird im Admin-Bereich in einer Bestellung der Karteireiter Stamm nicht mehr angezeigt, sondern man sieht in dem iFrame die Startseite des Shops.

In der ./log/EXCEPTION_LOG.txt erscheint dazu folgendes:


oxSystemComponentException-oxException (time: 2014-10-21 14:36:51): [0]: Function 'getWeight' does not exist or is not accessible! (oxOrderArticle)

 Stack Trace: #0 /htdocs/application/models/oxdelivery.php(240): oxSuperCfg->__call('getWeight', Array)
#1 /htdocs/application/models/oxdelivery.php(240): oxOrderArticle->getWeight()
#2 /htdocs/application/models/oxdelivery.php(386): oxDelivery->getDeliveryAmount(Object(oxBasketItem))
#3 /htdocs/application/models/oxdeliverylist.php(264): oxDelivery->isForBasket(Object(oxBasket))
#4 /htdocs/application/models/oxorder.php(1627): oxDeliveryList->getDeliveryList(Object(oxBasket), Object(oxUser), 'a7c40f631fc9206...')
#5 /htdocs/application/controllers/admin/order_main.php(63): oxOrder->getShippingSetList()
#6 /htdocs/core/oxshopcontrol.php(471): Order_Main->render()
#7 /htdocs/core/oxshopcontrol.php(353): oxShopControl->_render(Object(Order_Main))
#8 /htdocs/core/oxshopcontrol.php(126): oxShopControl->_process('order_main', NULL, NULL, NULL)
#9 /htdocs/core/oxid.php(40): oxShopControl->start()
#10 /htdocs/index.php(26): Oxid::run()
#11 /htdocs/admin/index.php(27): require_once('/homepages/16/d...')
#12 {main}

 Faulty component -->
---------------------------------------------

Folgendes habe ich bisher versucht:[ul]
[li]Mit oxchkversion die Integrität des Shops geprüft (alles ok).
[/li][li]Alle Module deaktivert.
[/li][li]Auf Azure zurück gewechselt.
[/li][li]Leserechte der angeführten php-Files geprüft (sind alle 644).
[/li][li]tmp-Verzeichnis gelöscht
[/li][/ul]

Das alles blieb ohne Wirkung. Ich kann in der Bestellung den Karteireiter Stamm nicht aufrufen.

Ich bin mit meiner Weisheit am Ende. Hat jemand einen Tipp für mich, wo ich noch suchen kann? :frowning:

Hallo Phillinger,

haben Sie eine Lösung gefunden? Habe offensichtlich ein gleichgelagertes Problem, siehe http://forum.oxid-esales.com/showthread.php?t=25154.

schönen Gruß

Leider nein, noch nichts neues. Da diverse Module (noch) inkompatibel für die 4.9.0 sind, ist das im Moment eher so eine Long Term Issue für mich. :wink:

Ich hatte eigentlich gehofft, jemand könnte mir einen Hinweis geben, wo man noch nach Fehlern suchen könnte. Also weitere Logs als lediglich EXCEPTION_LOG.txt.

Die o.g. Fehlermeldung ergibt für mich einfach keinen Sinn. Die Methode getWeight() ist vorhanden. Warum wird sie als “does not exist or is not accessible!” gemeldet?

Ich will ja keine Out-Of-The-Box-Lösung für das Problem. Viel lieber wären mir Tipps für eine planvolle Ursachenforschung. :slight_smile:

hab die Ursache bei mir gerade gefunden, war eine falsche Templateversion.

Ich habe das gleiche Phänomen, nämlich die Startseite des Shops im “Stamm”-Reiter, allerdings mit einer etwas anderen Fehlermeldung und wohl auch einer anderen Ursache. Die Fehlermeldung ist


oxSystemComponentException-oxException (time: 2014-10-30 20:56:04): [0]: Function 'getSize' does not exist or is not accessible! (oxOrderArticle)

 Stack Trace: #0 /var/www/html/apps/oxid/application/models/oxdelivery.php(247): oxSuperCfg->__call('getSize', Array)
#1 /var/www/html/apps/oxid/application/models/oxdelivery.php(247): oxOrderArticle->getSize()
<snip>

Das Problem tritt auf, wenn eine Versandkostenregel wirksam wird, die auf die Grösse abzielt. Ich bin mir noch nicht sicher genug, um einen “offiziellen” Bugreport zu schreiben, aber vielleicht könnte mir jemand sagen, ob ich auf der richtigen Fährte bin?

Mein Eindruck ist, dass der Shop versucht, aus dem Eintrag für einen Artikel in der Bestellung (oxOrderArticle) die Größe des Artikels auszulesen (getSize()). Diese Klasse kennt die Methode jedoch nicht, sie ist im Artikel selbst (oxArticle) definiert. Der Shop müsste also vom Eintrag für den Artikel in der Bestellung auf dem Artikel rückschließen und dann dort getSize() aufrufen. Also in oxdelivery.php, Zeile 246, statt

$dAmount += $oProduct->getSize();

eher etwas wie

$dAmount += $oProduct->getArticle()->getSize();

Kommt das ungefähr hin, oder bin ich auf der ganz falschen Spur? Die Shop-Version ist übrigens 4.9.0.

Vielen Dank für alle Antworten :slight_smile:

Bis dann,

Henning

Wie man das genau behebt weiß ich nicht aber das ist definitiv ein Bug, die Ursache ist auch richtig. Kann man auch im Demoshop nachvollziehen.

Danke, das genügt mir für einen Bugreport :slight_smile:

https://bugs.oxid-esales.com/view.php?id=5942

Bis dann,

Henning

Der Fehler triit auch bei einer Neuinstallation auf. Folgendes habe ich gefunden und es ghet:

http://www.foxido.de/category/tipps

[QUOTE=adamweber;151987]Der Fehler triit auch bei einer Neuinstallation auf. Folgendes habe ich gefunden und es ghet:

http://www.foxido.de/category/tipps[/QUOTE]

Kann ich so bestätigen. Mein Fehler tritt mit der Ersetzung

$dAmount += $oProduct->getWeight();

durch

$dAmount += $oProduct->oxarticles__oxweight->value;

nicht mehr auf. Vielen Dank! :slight_smile: