Respuestas:
El código que mencionaste siempre funcionó para mí. Creo que depende de cómo consigas el $product
.
Si haces esto, debería funcionar.
$product = Mage::getModel('catalog/product')->load($id);
Si obtiene los productos de una colección, obtenga la colección de esta manera:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents() //additional filters go here;
Ahora puede recorrer la colección y hacer su verificación.
foreach ($collection as $product){
if($product->getFinalPrice() < $product->getPrice()){
//had a discount
}
}
Este método tiene en cuenta el descuento proporcionado por precios especiales y reglas de precios de catálogo.
Información adicional. Un poco fuera de tema pero útil: así es como puede obtener la lista de productos que tienen un descuento
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addUrlRewrite();
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
$collection->getSelect()->where("`price_index`.price !=price_index.min_price");
Creo que estás buscando $product->getPrice()
y $product->getSpecialPrice()
.