22 lines
986 B
PHP
22 lines
986 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Esun\Reward\Observer;
|
|
|
|
use Esun\Reward\Model\BalanceManager;
|
|
use Magento\Framework\Event\Observer;
|
|
use Magento\Framework\Event\ObserverInterface;
|
|
|
|
class RefundCancelledOrderPoints implements ObserverInterface
|
|
{
|
|
public function __construct(private readonly BalanceManager $balances) {}
|
|
public function execute(Observer $observer): void
|
|
{
|
|
$order = $observer->getEvent()->getOrder(); $points = (int)$order->getData('reward_points_used') + (int)$order->getData('reward_product_points');
|
|
if ($points <= 0 || !(int)$order->getCustomerId()) { return; }
|
|
$this->balances->change((int)$order->getCustomerId(), (int)$order->getStore()->getWebsiteId(), $points, 'cancel_refund', 'order_cancel_refund:' . (int)$order->getId(), [
|
|
'reference_type' => 'order', 'reference_id' => (int)$order->getId(), 'reason' => (string)__('Points returned for cancelled order %1', $order->getIncrementId())
|
|
]);
|
|
}
|
|
}
|