He estado jugando con las Reglas de precios del carrito de compras para Magento Enterprise 1.14.1.0 y me he topado con un problema.
Estaba tratando de crear una regla simple para que obtendría un descuento de £ 10 si compra 3 artículos de una categoría definida, y ha gastado más de £ 15. Vea mi configuración a continuación.
En mi cesta tengo 3 artículos de la categoría con identificación 5
y 1 artículo de la categoría con identificación 3
.
Cuando habilito esta regla y veo mi cesta, recibo el error fatal. Aquí hay una sección del seguimiento de la pila. Como puede ver, ya he subido xdebug.max_nesting_level
a niveles horripilantes.
Fatal error: Maximum function nesting level of '18000' reached, aborting! in /dev/builds/1_14_1_0/lib/Varien/Object.php on line 344 Call Stack:
0.0003 348680 1. {main}() /dev/builds/1_14_1_0/index.php:0
0.0020 694956 2.Mage::run() /dev/builds/1_14_1_0/index.php:89
0.0068 1819640 3.Mage_Core_Model_App->run() /dev/builds/1_14_1_0/app/Mage.php:684
0.0509 9129168 4.Mage_Core_Controller_Varien_Front->dispatch() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Model/App.php:354
0.0626 11074424 5. Mage_Core_Controller_Varien_Router_Standard->match() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Controller/Varien/Front.php:172
0.0658 11765288 6. Mage_Core_Controller_Varien_Action->dispatch() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php:250
0.1314 16963044 7. Mage_Checkout_CartController->indexAction() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Controller/Varien/Action.php:418
0.3065 27313592 8. Mage_Checkout_Model_Cart->save() /dev/builds/1_14_1_0/app/code/core/Mage/Checkout/controllers/CartController.php:144
0.3195 28006864 9. Mage_Sales_Model_Quote->collectTotals() /dev/builds/1_14_1_0/app/code/core/Mage/Checkout/Model/Cart.php:458
0.3827 32507432 10. Mage_Sales_Model_Quote_Address->collectTotals() /dev/builds/1_14_1_0/app/code/core/Mage/Sales/Model/Quote.php:1331
0.6151 37466752 11. Mage_SalesRule_Model_Quote_Freeshipping->collect() /dev/builds/1_14_1_0/app/code/core/Mage/Sales/Model/Quote/Address.php:1013
0.6245 37839108 12. Mage_SalesRule_Model_Validator->processFreeShipping() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Quote/Freeshipping.php:74
0.6247 37839784 13. Mage_SalesRule_Model_Validator->_canProcessRule() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Validator.php:249
0.6282 37960924 14. Mage_Rule_Model_Abstract->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Validator.php:223
0.6418 38895940 15. Mage_Rule_Model_Condition_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/Rule/Model/Abstract.php:353
0.6420 38896372 16. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/Rule/Model/Condition/Combine.php:307
0.6421 38896772 17. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
0.6428 38898084 18. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php:219
0.6429 38898484 19. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
0.6433 38898572 20. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php:219
0.6434 38898972 21. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
0.6439 38899060 22. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php:219
0.6440 38899460 23. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
Cuando elimino la If total quantity is 3
sección del Condition
Magento ya no se asusta. ¿Podría alguien señalarme la forma correcta de configurar esta promoción, y arrojar algo de luz sobre por qué estoy fatal?
Esta es una instalación básica de Magento, y me preocupa que pueda romper el carrito de compras tan fácilmente.
Actualizar
Estoy ejecutando mysql como
Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu)
Y PHP como
PHP 5.3.10-1ubuntu3.15 with Suhosin-Patch (cli) (built: Oct 29 2014 12:16:30)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with the ionCube PHP Loader v4.0.10, Copyright (c) 2002-2011, by ionCube Ltd., and
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Actualización 2
Un volcado de la base de datos está disponible aquí, viene a ~ 130kb.
http://www.lukerodgers.co.uk/files/vanilla_1_14_1_0.sql.gz
- Fue creado con mysql ejecutándolo como root @ localhost sin contraseña
- El nombre de usuario del panel de administración de Magento es
admin
y la contraseña espassword1
- Tendrá que actualizar el
web/unsecure/base_url
yweb/secure/base_url
encore_config_data
que punto a la instancia de instalación.
Para replicar
- Como invitado, agregue 1 Green Bowler a su cesta
- Luego agregue 3 botas verdes a su cesta
- Esperemos tener un error horrible como el que estoy viendo
magerun index:reindex:all
y no hizo ninguna diferencia. Estoy súper ocupado hoy y mañana en el trabajo, pero si aún no puedes replicar, ¿podré proporcionar un volcado de DB el jueves si eso es bueno?Respuestas:
tomó el cambio para sumergirse en esto. Instaló un Magento Enterprise 1.14.1.0 limpio
Tu regla aún se rompe sin la primera
>15 rule
...Su origen está en la subselección del producto.
Estas dos funciones se llaman a sí mismas repetidamente.
Mas especifico:
Mage_SalesRule_Model_Rule_Condition_Product_Subselect: 118
Mage_SalesRule_Model_Rule_Condition_Product_Combine: 216
Como puede ver, si el producto es configurable (lo que en su caso es cierto para ambos productos), vuelva a llamar a la función extendida. Y así sucesivamente, y así sucesivamente, y así sucesivamente ...
De hecho, es un error de Magento porque no comprueba si es un elemento válido pasado a la función.
Normalmente, la función se llama con
Mage_Sales_Model_Quote_Address
y en la recursividad conMage_Sales_Model_Quote_Item
para que podamos construir una solución para ella. Ambos también tienen una función getQuote ().Si desea resolverlo en su caso, se hace agregando estas líneas de árbol.
Mage_SalesRule_Model_Rule_Condition_Product_Subselect
Puede copiar este archivo en app / code / local / Mage / SalesRule / Model / Rule / Condition / Product / Subselect.php
Así que mi última comprobación es ver si también se aplica a Magento CE 1.9.1.0. Este también es el caso porque la función principal se implementa en la edición CE. ¡Magento CE 1.9.0.1 no se ve afectado, no tiene la función padre! Así que supongo que Magento EE 1.13.1.0 también está libre de esto, porque son inherentes entre sí.
Debe crear un ticket en su cuenta de Magento Enterprise y proporcionar la información para que puedan hacer un parche para esto.
fuente