Extending MShop Price

How to configure and adapt Aimeos based shops as developer
Forum rules
Always add your Aimeos and PHP version as well as your environment (Linux/Mac/Win)
adityabanerjee
Posts: 32
Joined: 05 Oct 2019, 06:42

Extending MShop Price

Post by adityabanerjee » 06 Jun 2020, 07:13

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.

User avatar
aimeos
Administrator
Posts: 5445
Joined: 01 Jan 1970, 00:00

Re: Extending MShop Price

Post by aimeos » 08 Jun 2020, 10:02

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, Image give us a star

Post Reply