I'm implementing product price calculation based on a formula that uses customizible options in Magento 2 (ver. 2.3.1). I added some code to _applyOptionsPrice() to "Magento/Catalog/Model/Product/Type/Price.php and it works like a charm. Now I want to take my code out of magento code, and implement it as an custom module, but as much as I try I can not get it to work as it's suppose to do.
Here is my code:
in app/code/ABPPRK/ModulePrice/registration.php:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'ABPPRK_ModulePrice',
__DIR__
);
in app/code/ABPPRK/ModulePrice/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">
<preference for="Magento\Catalog\Model\Product\Type\Price" type="ABPPRK\ModulePrice\Model\Price" />
</config>
module.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="ABPPRK_ModulePrice" setup_version="1.0.1"></module>
</config>
And finally app/code/ABPPRK/ModulePrice/Model/Price.php:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace ABPPRK\ModulePrice\Model;
class Price extends \Magento\Catalog\Model\Product\Type\Price
{
public function getFinalPrice($qty, $product)
{
return 0;
}
}
Of course the return of the method to override (getFinalPrice) should not be that one. This is just a simple implementation to test with xdebug that does not work, as neither the real code.
There are no errors during "bin/magento setup:di:compile". And I can tell that command is considering my module because at some past point it gave the error:
"Warning: Declaration of ABPPRK\ModulePrice\Model\Price::getFinalPrice() should be compatible with Magento\Catalog\Model\Product\Type\Price::getFinalPrice($qty, $product)"
What is missing here? I've followed all the tutorials I've found about overriding class methods but Iven't found anyone specific for this method. :-(
Thanks in advance, Armando.