46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Stemcell\Checkout\Observer;
|
|
|
|
use Magento\Framework\App\ObjectManager;
|
|
use Magento\Framework\App\RequestInterface;
|
|
use Magento\Framework\Event\Observer;
|
|
use Magento\Framework\Event\ObserverInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class ApplyCustomerDiscount implements ObserverInterface
|
|
{
|
|
private RequestInterface $request;
|
|
|
|
public function __construct(
|
|
RequestInterface $request
|
|
) {
|
|
$this->request = $request;
|
|
}
|
|
|
|
/**
|
|
* @param \Magento\Quote\Model\Quote\Item $item
|
|
* @return $this
|
|
*/
|
|
protected function getDiscountPercent(\Magento\Quote\Model\Quote\Item $item)
|
|
{
|
|
$cartData = $this->request->getParam('cart');
|
|
if (isset($cartData[$item->getId()]['customer_discount_percent'])) {
|
|
$discount = floatval($cartData[$item->getId()]['customer_discount_percent']);
|
|
$item->setCustomerDiscountPercent($discount);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
public function execute(Observer $observer)
|
|
{
|
|
/* @var $cart \Magento\Checkout\Model\Cart */
|
|
$cart = $observer->getCart();
|
|
$logger = ObjectManager::getInstance()->get(LoggerInterface::class);
|
|
foreach ($cart->getItems() as $item) {
|
|
/* @var $item \Magento\Quote\Model\Quote\Item */
|
|
$this->getDiscountPercent($item);
|
|
}
|
|
}
|
|
}
|