diff --git a/app/code/Magento/Sales/Helper/Reorder.php b/app/code/Magento/Sales/Helper/Reorder.php index eae5122d8a85e..6c0a6f84694e9 100644 --- a/app/code/Magento/Sales/Helper/Reorder.php +++ b/app/code/Magento/Sales/Helper/Reorder.php @@ -8,6 +8,8 @@ /** * Sales module base helper + * + * @SuppressWarnings(PHPMD.CookieAndSessionMisuse) */ class Reorder extends \Magento\Framework\App\Helper\AbstractHelper { @@ -41,9 +43,11 @@ public function __construct( } /** + * Is reorder allowed ? + * * @return bool */ - public function isAllow() + public function isAllow(): bool { return $this->isAllowed(); } @@ -54,7 +58,7 @@ public function isAllow() * @param \Magento\Store\Model\Store|int|null $store * @return bool */ - public function isAllowed($store = null) + public function isAllowed($store = null): bool { if ($this->scopeConfig->getValue( self::XML_PATH_SALES_REORDER_ALLOW, @@ -72,16 +76,30 @@ public function isAllowed($store = null) * @param int $orderId * @return bool */ - public function canReorder($orderId) + public function canReorder($orderId): bool { $order = $this->orderRepository->get($orderId); if (!$this->isAllowed($order->getStore())) { return false; } if ($this->customerSession->isLoggedIn()) { - return $order->canReorder(); + return (bool) $order->canReorder(); } else { return true; } } + + /** + * Check is it possible to reorder one item. + * + * @param \Magento\Sales\Model\Order\Item $item + * @param \Magento\Catalog\Model\Product $product + * @return bool + * + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function canReorderItem($item, $product): bool + { + return true; + } } diff --git a/app/code/Magento/Sales/Model/Reorder/Reorder.php b/app/code/Magento/Sales/Model/Reorder/Reorder.php index b4599f9df2c36..dda455fc0f530 100644 --- a/app/code/Magento/Sales/Model/Reorder/Reorder.php +++ b/app/code/Magento/Sales/Model/Reorder/Reorder.php @@ -260,6 +260,9 @@ private function addItemsToCart(Quote $cart, ItemCollection $orderItems, string } $product = $products[$productId]; foreach ($orderItems as $orderItem) { + if (!$this->reorderHelper->canReorderItem($orderItem, $product)) { + continue; + } $this->addItemToCart($orderItem, $cart, clone $product); } }