Cron en Magento. Problemas de actualización, reglas de precios del catálogo

Hoy hemos tenido que solucionar un problema (gran problema mejor dicho) con la ejecución del cron en Magento. A continuación detallo los problemas detectados.
  • 1.- Damos de alta un producto (con su precio)
  • 2.- Creamos un regla ( Admin -> Promociones -> Reglas de precios del catálogo)
  • 3.- Damos de alta una nueva regla. En nuestro caso, 20% de descuento para una categoría en concreto.
  • 4.- Guardamos y aplicamos la regla.
  • 5.- Comprobamos en el front que el precio está saliendo correctamente en la parte visible de la web.

¿Cuál es el problema? Bien, ahora vamos a modifcar el precio del producto. En teoría el nuevo precio también debería tener aplicado esta regla, pero en la práctica esto no ocurre. Se supone que el cron.php debería arreglar esto, pero la verdad es que esto no sucede, además, en el caso de hacerse habrá un intérvalo de tiempo donde el precio no será correcto. ¿Soluciones? La más rápida que he encontrado es esta: 1.- Creamos un cron en el sistema (por ejemplo que se ejecute cada 5 minutos). En el Blog de magento tenemos más detalles.
PHP:
  1. */5 * * * * wget -q http://www.yoursite.com/absolute/path/to/magento/cron.php

2.- Editamos nuestro fichero cron.php situado en la raíz de nuestra instalación y lo dejamos así:
PHP:
  1. ...
  2. try {
  3.     Mage::getConfig()->init()->loadEventObservers('crontab');
  4.     Mage::app()->addEventArea('crontab');
  5.     Mage::dispatchEvent('default');
  6.     $ob = Mage::getModel('catalogrule/observer')//nueva línea
  7.     $ob->dailyCatalogUpdate("*/5 * * * *");         //nueva línea
  8. } catch (Exception $e) {
  9. ...

Con esto conseguimos la actualización de las reglas del catálogo cada vez que se ejecuta el cron. Ahora nos encontramos con otro problema. Este no tiene nada que ver con el anterior pero en mi caso ha empezado a ocurrir a raíz de crear reglas para el catálogo. Cada vez que editamos un producto e intentamos guardarlo el proceso demora 30-40 segundos... ¿por qué ocurre esto? Por que al guardar el producto aplicada los descuentos creados en las reglas del catálogo y esto es un proceso muy pesado (si tenemos muchos productos). Por lo menos en la versión 1.3.2.4 ocurre. El error está reportado en este post, y por lo visto ocurre siempre. Esperemos que lo corrijan en la 1.4. La solución pasa por: 1.- Copiar este fichero app/code/core/Mage/Weee/Model/Mysql4/Tax.php y dejarlo en app/code/local/Mage/Weee/Model/Mysql4/Tax.php 2.- Si no estamos usando Weee, poner dentro del nuevo fichero la siguiente función:
PHP:
  1. public function updateDiscountPercents()
  2.     {
  3.         //Ignore this function
  4.         return;
  5.     }

En el caso de estar usando Weee, la solución es más compleja, así que pasar por la fuente original para resolver vuestras dudas. Supongo que al final encontrarán una solución fácil
Compartir:
  • Print
  • Facebook
  • Twitter
  • Meneame
  • Google Bookmarks
  • del.icio.us
  • Digg

PROYECTOS RELACIONADOS


COMENTARIOS

Hola, soy nuevo en esto de Magento y me parecio interesante tu articulo, queria comentarte un problema que tengo a ver si me podes dar una mano.
He definido una nueva Regla de Precios de Catalogo, pero cuando quiero activar dicha regla no hace nada, se queda trabajando un tiempo y luego queda la pantalla en blanco y la regla permanece inactiva. Tengo que configurar algo extraordinario ademas de la instalacion estandar para que funcione esto?. Gracias y saludos.


@Joshua ¿Qué versión de Magento estás utilizando?


Hola Sergio.

Tengo el mismo problema que comentas en mi tienda.

Tengo una duda, a parte de editar el cron.php es indispensable crear la tarea cron que comentas en el paso 1 no?

Mi duda viene porque…. El sistema ya ejecuta el cron.php cada x no? Porque ejecutarlo tambien con un cron nuevo?

Una cosita mas, los caracteres ( -&gt ) que veo en el código, los va a interpretar bien el sistema?

Un saludo y gracias!


Hola José,
el -&gt en realidad es una flecha, el WP me lo ha cambiado sin querer.
Ya está arreglado.


OK!

mmm…

“Tengo una duda, a parte de editar el cron.php es indispensable crear la tarea cron que comentas en el paso 1 no?”

;) Thanks!


PARTICIPA EN LA CONVERSACIÓN

Introduce tu información personal o utiliza tu cuenta de twitter o facebook para acceder

   



CATEGORÍAS


C\ Trafalgar 13
46930 Quart de Poblet - Valencia - España

  • (+34) 961 139 313
  • info@onestic.com
  • (+34) 963 023 041
  • (+34) 622 858 391

HABLEMOS...

No dudes en ponerte en contacto con nosotros. Hablamos tranquilamente, te damos nuestra opinión sobre tu proyecto y decidimos cómo te podemos ayudar.

CONTACTO



SIGUÉNOSEN: