From 1d0115a31f46b64b85a2547639b9c66710ddbca2 Mon Sep 17 00:00:00 2001 From: Pierre LE MAGUER Date: Wed, 28 Oct 2020 13:27:19 +0100 Subject: [PATCH 1/2] [Reorder] #30686 - Allow developers to filter order items for reorder --- app/code/Magento/Sales/Helper/Reorder.php | 14 ++++++++++++++ app/code/Magento/Sales/Model/Reorder/Reorder.php | 3 +++ 2 files changed, 17 insertions(+) diff --git a/app/code/Magento/Sales/Helper/Reorder.php b/app/code/Magento/Sales/Helper/Reorder.php index eae5122d8a85e..b83db4d01d8b3 100644 --- a/app/code/Magento/Sales/Helper/Reorder.php +++ b/app/code/Magento/Sales/Helper/Reorder.php @@ -84,4 +84,18 @@ public function canReorder($orderId) 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) + { + return true; + } } diff --git a/app/code/Magento/Sales/Model/Reorder/Reorder.php b/app/code/Magento/Sales/Model/Reorder/Reorder.php index c7636696382b4..e282975a8e7cf 100644 --- a/app/code/Magento/Sales/Model/Reorder/Reorder.php +++ b/app/code/Magento/Sales/Model/Reorder/Reorder.php @@ -205,6 +205,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); } } From 6ea7d525a94450b58729f0f8a1a54cbc55ce6131 Mon Sep 17 00:00:00 2001 From: Pierre LE MAGUER Date: Thu, 29 Oct 2020 08:41:23 +0100 Subject: [PATCH 2/2] [Reorder] #30686 - Refactor codes and fix static tests errors --- app/code/Magento/Sales/Helper/Reorder.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Sales/Helper/Reorder.php b/app/code/Magento/Sales/Helper/Reorder.php index b83db4d01d8b3..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,14 +76,14 @@ 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; } @@ -94,7 +98,7 @@ public function canReorder($orderId) * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ - public function canReorderItem($item, $product) + public function canReorderItem($item, $product): bool { return true; }