Magento - afterHasSpecialPrice plugin
To change the HasSpecialPrice value you need to create a new module then after that you can add this code to the etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Pricing\Render\FinalPriceBox">
<plugin name="ItWevCaCatalogPricingRendererFinalPriceBox"
type="{Vendor}\{Module}\Plugin\Pricing\Render\FinalPriceBox"
sortOrder="10"/>
</type>
</config>
Here is the content of the FinalPriceBox
<?php
namespace {Vendor}\{Module}\Plugin\Pricing\Render;
use Magento\Catalog\Pricing\Price\FinalPrice;
use Magento\Catalog\Pricing\Price\SpecialPrice;
use Magento\Catalog\Pricing\Render\FinalPriceBox as MagentoFinalPriceBox;
class FinalPriceBox
{
/**
* After has special price
* Make sure the tier pricing does not show a special price
* @param MagentoFinalPriceBox $subject
* @param $return
* @return bool
*/
public function afterHasSpecialPrice(MagentoFinalPriceBox $subject, $return)
{
//You can write your logic here
$specialPrice = $subject->getPriceType(SpecialPrice::PRICE_CODE)->getAmount()->getValue();
$finalPrice = $subject->getPriceType(FinalPrice::PRICE_CODE)->getAmount()->getValue();
if (!$specialPrice) {
return false;
}
return $return;
}
}