diff -Nuar a/vendor/magento/module-reward/Model/Action/OrderExtra.php b/vendor/magento/module-reward/Model/Action/OrderExtra.php index d43c48be87b..0897fce8f0b 100644 --- a/vendor/magento/module-reward/Model/Action/OrderExtra.php +++ b/vendor/magento/module-reward/Model/Action/OrderExtra.php @@ -130,7 +130,10 @@ class OrderExtra extends \Magento\Reward\Model\Action\AbstractAction } else { $monetaryAmount = $this->getEntity()->getTotalPaid() - $this->getEntity()->getShippingAmount() - - $this->getEntity()->getTaxAmount(); + ( + $this->getEntity()->getTaxAmount() - + $this->getEntity()->getTaxCanceled() + ); } } $pointsDelta = $this->getReward()->getRateToPoints()->calculateToPoints((double)$monetaryAmount); @@ -139,7 +142,8 @@ class OrderExtra extends \Magento\Reward\Model\Action\AbstractAction /** * Check whether rewards can be added for action - * Checking for the history records is intentionaly omitted + * + * Checking for the history records is intentionally omitted * * @return bool */ @@ -149,6 +153,8 @@ class OrderExtra extends \Magento\Reward\Model\Action\AbstractAction } /** + * Get tax config + * * @return \Magento\Tax\Model\Config|mixed|null * @deprecated 101.0.2 */ diff -Nuar a/vendor/magento/module-reward/Observer/OrderCompleted.php b/vendor/magento/module-reward/Observer/OrderCompleted.php index 7daf4e189d5..4d1a0f7b9ce 100644 --- a/vendor/magento/module-reward/Observer/OrderCompleted.php +++ b/vendor/magento/module-reward/Observer/OrderCompleted.php @@ -6,31 +6,37 @@ */ namespace Magento\Reward\Observer; +use Exception; +use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; +use Magento\Reward\Helper\Data; +use Magento\Reward\Model\Reward; +use Magento\Reward\Model\RewardFactory; +use Magento\Sales\Model\Order; class OrderCompleted implements ObserverInterface { /** * Reward factory * - * @var \Magento\Reward\Model\RewardFactory + * @var RewardFactory */ protected $_rewardFactory; /** * Reward helper * - * @var \Magento\Reward\Helper\Data + * @var Data */ protected $_rewardData; /** - * @param \Magento\Reward\Helper\Data $rewardData - * @param \Magento\Reward\Model\RewardFactory $rewardFactory + * @param Data $rewardData + * @param RewardFactory $rewardFactory */ public function __construct( - \Magento\Reward\Helper\Data $rewardData, - \Magento\Reward\Model\RewardFactory $rewardFactory + Data $rewardData, + RewardFactory $rewardFactory ) { $this->_rewardData = $rewardData; $this->_rewardFactory = $rewardFactory; @@ -38,15 +44,21 @@ class OrderCompleted implements ObserverInterface /** * Check if order is paid exactly now + * * If order was paid before Rewards were enabled, reward points should not be added * - * @param \Magento\Sales\Model\Order $order + * @param Order $order * @return bool */ protected function _isOrderPaidNow($order) { - $isOrderPaid = (double)$order->getBaseTotalPaid() > 0 && - $order->getBaseGrandTotal() - $order->getBaseSubtotalCanceled() - $order->getBaseTotalPaid() < 0.0001; + $baseGrandTotal = (float) $order->getBaseGrandTotal(); + $baseSubtotalCanceled = (float) $order->getBaseSubtotalCanceled(); + $baseTaxCanceled = (float) $order->getBaseTaxCanceled(); + $baseTotalPaid = (float) $order->getBaseTotalPaid(); + $totalAmountPaid = $baseGrandTotal - ($baseSubtotalCanceled + $baseTaxCanceled + $baseTotalPaid); + $isOrderPaid = (double) $order->getBaseTotalPaid() > 0 && + $totalAmountPaid < 0.0001; if (!$order->getOrigData('base_grand_total')) { //New order with "Sale" payment action @@ -58,6 +70,8 @@ class OrderCompleted implements ObserverInterface ) - $order->getOrigData( 'base_subtotal_canceled' ) - $order->getOrigData( + 'base_tax_canceled' + ) - $order->getOrigData( 'base_total_paid' ) >= 0.0001; } @@ -65,19 +79,20 @@ class OrderCompleted implements ObserverInterface /** * Update points balance after order becomes completed * - * @param \Magento\Framework\Event\Observer $observer + * @param Observer $observer * @return $this + * @throws Exception */ - public function execute(\Magento\Framework\Event\Observer $observer) + public function execute(Observer $observer) { - /* @var $order \Magento\Sales\Model\Order */ + /* @var $order Order */ $order = $observer->getEvent()->getOrder(); if ($order->getCustomerIsGuest() || !$this->_rewardData->isEnabledOnFront($order->getStore()->getWebsiteId())) { return $this; } if ($order->getCustomerId() && $this->_isOrderPaidNow($order)) { - /* @var $reward \Magento\Reward\Model\Reward */ + /* @var $reward Reward */ $reward = $this->_rewardFactory->create()->setActionEntity( $order )->setCustomerId( @@ -85,7 +100,7 @@ class OrderCompleted implements ObserverInterface )->setWebsiteId( $order->getStore()->getWebsiteId() )->setAction( - \Magento\Reward\Model\Reward::REWARD_ACTION_ORDER_EXTRA + Reward::REWARD_ACTION_ORDER_EXTRA )->updateRewardPoints(); if ($reward->getRewardPointsUpdated() && $reward->getPointsDelta()) { $order->addStatusHistoryComment(