como verificar se o produto é descontado

13

Como posso saber se o produto está atualmente com um desconto?

Eu usei esse código.

if($product->getFinalPrice() < $product->getPrice()){
   //had a discount
}

Mas isso não funciona.

Netorica
fonte
Eu acho que você precisa de preço especial?
precisa saber é o seguinte

Respostas:

13

O código que você mencionou sempre funcionou para mim. Eu acho que depende de como você recebe o $product.
Se você fizer isso, deve funcionar.

$product = Mage::getModel('catalog/product')->load($id);

se você obtiver os produtos de uma coleção, obtenha a coleção assim:

$collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
            ->addMinimalPrice()
            ->addFinalPrice()
            ->addTaxPercents() //additional filters go here;

Agora você pode percorrer a coleção e fazer sua verificação.

foreach ($collection as $product){
    if($product->getFinalPrice() < $product->getPrice()){
       //had a discount
    }
}

Esse método leva em consideração o desconto oferecido por preços especiais e regras de preços de catálogo.

Informação adicional. Um tópico pouco interessante, mas útil: veja como você pode obter a lista de produtos com desconto

$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");
Marius
fonte
5

Eu acredito que você está procurando $product->getPrice()e $product->getSpecialPrice().

musicliftsme
fonte
2
No entanto, isso não detectará se o produto está com desconto por meio de uma regra de preço de catálogo.
ProxiBlue