Estoy usando la versión 1.8 de Magento. He escrito un observador que debe ejecutarse cuando el administrador guarda una revisión del producto con el estado "Aprobado". Y he creado un atributo de calificación para cada producto con selección múltiple y debe actualizarse automáticamente cada vez que el administrador guarde la revisión de un producto.
Nota: Las revisiones se encuentran en Informes / Revisiones / Revisiones de productos.
Código etc / Config.xml:
<review_save_after>
<observers>
<efkadminhtml>
<class>efkadminhtml/observer</class>
<method>ratingsUpdate</method>
</efkadminhtml>
</observers>
</review_save_after>
modo / Código de observador
public function ratingsUpdate(Varien_Event_Observer $observer)
{
$object = $observer->getEvent()->getObject();
$statusId = $object->getStatusId();
if($statusId == 1) {
$common = Mage::getSingleton('catalog/common');
$attribute = $common->getAttribute('ratings');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$productId = $object->getEntityPkValue();
$product = Mage::getModel('catalog/product')->load($productId);
$avgRating = Mage::getBlockSingleton('efkreports/product_allReviews')->getAvgReview($product->getId());
Mage::log($avgRating);
Mage::log($attribute->getOptionId(round($avgRating)));
$product->setRatings($attribute->getOptionId(round($avgRating)));
//$product->setRatings(round($avgRating));
$product->save();
}
}
Cuando el administrador intenta guardar la revisión de un producto, el código de observador anterior se está ejecutando y la revisión se está actualizando correctamente, pero el producto está obteniendo un valor de revisión anterior en lugar de la última revisión actualizada.
Escribí <review_save_after>
pero obteniendo valor anterior. ¿Cómo se llama el evento después de "Guardar revisión"? ¿Es correcto o no?
Por favor dime dónde estoy equivocado.
Gracias por adelantado.