Extending MShop Price
Forum rules
Always add your Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
Always add your Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
-
- Posts: 44
- Joined: 05 Oct 2019, 06:42
Extending MShop Price
Hi, I am having a problem in extending this file-:
https://github.com/aimeos/aimeos-core/b ... d.php#L415
To extend this I have done the following -:
1. I have created a file named Ebdaa.php in the dir ebdaa/lib/custom/src/MShop/Price/Item/Ebdaa.php
2.I have added the following code in the above dir path file name Ebdaa.php
<?php
namespace Aimeos\MShop\Price\Item;
class Ebdaa extends Standard
{
**
* Add the given price to the current one.
*
* @param \Aimeos\MShop\Price\Item\Iface $item Price item which should be added
* @param float $quantity Number of times the Price should be added
* @return \Aimeos\MShop\Price\Item\Iface Price item for chaining method calls
*/
public function addItem( \Aimeos\MShop\Price\Item\Iface $item, float $quantity = 1 ) : \Aimeos\MShop\Price\Item\Iface
{
dd('here');
if( $item->getCurrencyId() != $this->getCurrencyId() )
{
$msg = 'Price can not be added. Currency ID "%1$s" of price item and currently used currency ID "%2$s" does not match.';
throw new \Aimeos\MShop\Price\Exception( sprintf( $msg, $item->getCurrencyId(), $this->getCurrencyId() ) );
}
if( $this === $item ) { $item = clone $item; }
$taxValue = $this->getTaxValue(); // use initial value before it gets reset
$this->setQuantity( 1 );
$this->setValue( $this->getValue() + $item->getValue() * $quantity );
$this->setCosts( $this->getCosts() + $item->getCosts() );
$this->setRebate( $this->getRebate() + $item->getRebate() * $quantity );
$this->setTaxValue( $taxValue + $item->getTaxValue() * $quantity );
return $this;
}
}
3. In the config/shop.php I have added the following lines -:
'mshop' => [
'locale' => [
'manager' => [
'standard' => [
'sitelevel' => 3
]
]
],
'order' => [
'manager' => [
'base' => [
'name' => 'Ebdaa'
]
]
],
'price' => [
'item' => [
'name' => 'Ebdaa'
]
]
],
This is not getting extended. Please assist. Thank you in advance.
https://github.com/aimeos/aimeos-core/b ... d.php#L415
To extend this I have done the following -:
1. I have created a file named Ebdaa.php in the dir ebdaa/lib/custom/src/MShop/Price/Item/Ebdaa.php
2.I have added the following code in the above dir path file name Ebdaa.php
<?php
namespace Aimeos\MShop\Price\Item;
class Ebdaa extends Standard
{
**
* Add the given price to the current one.
*
* @param \Aimeos\MShop\Price\Item\Iface $item Price item which should be added
* @param float $quantity Number of times the Price should be added
* @return \Aimeos\MShop\Price\Item\Iface Price item for chaining method calls
*/
public function addItem( \Aimeos\MShop\Price\Item\Iface $item, float $quantity = 1 ) : \Aimeos\MShop\Price\Item\Iface
{
dd('here');
if( $item->getCurrencyId() != $this->getCurrencyId() )
{
$msg = 'Price can not be added. Currency ID "%1$s" of price item and currently used currency ID "%2$s" does not match.';
throw new \Aimeos\MShop\Price\Exception( sprintf( $msg, $item->getCurrencyId(), $this->getCurrencyId() ) );
}
if( $this === $item ) { $item = clone $item; }
$taxValue = $this->getTaxValue(); // use initial value before it gets reset
$this->setQuantity( 1 );
$this->setValue( $this->getValue() + $item->getValue() * $quantity );
$this->setCosts( $this->getCosts() + $item->getCosts() );
$this->setRebate( $this->getRebate() + $item->getRebate() * $quantity );
$this->setTaxValue( $taxValue + $item->getTaxValue() * $quantity );
return $this;
}
}
3. In the config/shop.php I have added the following lines -:
'mshop' => [
'locale' => [
'manager' => [
'standard' => [
'sitelevel' => 3
]
]
],
'order' => [
'manager' => [
'base' => [
'name' => 'Ebdaa'
]
]
],
'price' => [
'item' => [
'name' => 'Ebdaa'
]
]
],
This is not getting extended. Please assist. Thank you in advance.
Re: Extending MShop Price
You have to overwrite the price manager and the createItemBase() method where you return an instance of your new item class and configure the price manager in your configuration, not the item. Background: The manager is the factory for the items which creates them.
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, give us a star
If you like Aimeos, give us a star