Skip to content

Commit 87d9c6f

Browse files
committed
AC-3178::worked on failing test case
1 parent f2f9457 commit 87d9c6f

File tree

2 files changed

+55
-51
lines changed

2 files changed

+55
-51
lines changed

app/code/Magento/Sales/Model/Order.php

Lines changed: 7 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66
namespace Magento\Sales\Model;
77

8-
use Magento\Catalog\Api\ProductRepositoryInterface;
98
use Magento\Config\Model\Config\Source\Nooptreq;
109
use Magento\Directory\Model\Currency;
1110
use Magento\Directory\Model\RegionFactory;
@@ -197,9 +196,10 @@ class Order extends AbstractModel implements EntityInterface, OrderInterface
197196
protected $_orderConfig;
198197

199198
/**
200-
* @var ProductRepositoryInterface
199+
* @var \Magento\Catalog\Api\ProductRepositoryInterface
200+
* @deprecated 100.1.0 Remove unused dependency.
201201
*/
202-
protected ProductRepositoryInterface $productRepository;
202+
protected $productRepository;
203203

204204
/**
205205
* @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
@@ -339,7 +339,7 @@ class Order extends AbstractModel implements EntityInterface, OrderInterface
339339
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone
340340
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
341341
* @param Order\Config $orderConfig
342-
* @param ProductRepositoryInterface $productRepository
342+
* @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
343343
* @param \Magento\Sales\Model\ResourceModel\Order\Item\CollectionFactory $orderItemCollectionFactory
344344
* @param \Magento\Catalog\Model\Product\Visibility $productVisibility
345345
* @param \Magento\Sales\Api\InvoiceManagementInterface $invoiceManagement
@@ -378,7 +378,7 @@ public function __construct(
378378
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
379379
\Magento\Store\Model\StoreManagerInterface $storeManager,
380380
\Magento\Sales\Model\Order\Config $orderConfig,
381-
ProductRepositoryInterface $productRepository,
381+
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
382382
\Magento\Sales\Model\ResourceModel\Order\Item\CollectionFactory $orderItemCollectionFactory,
383383
\Magento\Catalog\Model\Product\Visibility $productVisibility,
384384
\Magento\Sales\Api\InvoiceManagementInterface $invoiceManagement,
@@ -750,11 +750,11 @@ private function canCreditmemoForZeroTotal($totalRefunded)
750750
$hasDueAmount = $this->canInvoice() && ($checkAmtTotalPaid);
751751
//case when paid amount is refunded and order has creditmemo created
752752
$creditmemos = ($this->getCreditmemosCollection() === false) ?
753-
true : ($this->_memoCollectionFactory->create()->setOrderFilter($this)->getTotalCount() > 0);
753+
true : ($this->_memoCollectionFactory->create()->setOrderFilter($this)->getTotalCount() > 0);
754754
$paidAmtIsRefunded = $this->getTotalRefunded() == $totalPaid && $creditmemos;
755755
if (($hasDueAmount || $paidAmtIsRefunded) ||
756756
(!$checkAmtTotalPaid &&
757-
abs($totalRefunded - $this->getAdjustmentNegative()) < .0001)) {
757+
abs($totalRefunded - $this->getAdjustmentNegative()) < .0001)) {
758758
return false;
759759
}
760760
return true;
@@ -839,49 +839,6 @@ public function canShip()
839839
return false;
840840
}
841841

842-
/**
843-
* Check if all items are remaining items after partially refunded are shipped
844-
*
845-
* @return bool
846-
*/
847-
public function isPartiallyRefundedOrderShipped(): bool
848-
{
849-
if ($this->getShippedItems() > 0
850-
&& $this->getTotalQtyOrdered() <= $this->getRefundedItems() + $this->getShippedItems()) {
851-
return true;
852-
}
853-
return false;
854-
}
855-
856-
/**
857-
* Get all refunded items number
858-
*
859-
* @return int
860-
*/
861-
private function getRefundedItems(): int
862-
{
863-
$num_of_refunded_items = 0;
864-
foreach ($this->getAllItems() as $item) {
865-
if ($item->getProductType() == 'simple') {
866-
$num_of_refunded_items += (int)$item->getQtyRefunded();
867-
}
868-
}
869-
return $num_of_refunded_items;
870-
}
871-
872-
/**
873-
* Get all shipped items number
874-
*
875-
* @return int
876-
*/
877-
private function getShippedItems(): int
878-
{
879-
$num_of_shipped_items= 0;
880-
foreach ($this->getAllItems() as $item) {
881-
$num_of_shipped_items += (int)$item->getQtyShipped();
882-
}
883-
return $num_of_shipped_items;
884-
}
885842
/**
886843
* Check if item is refunded.
887844
*

app/code/Magento/Sales/Model/ResourceModel/Order/Handler/State.php

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function check(Order $order)
3939
$order->setState(Order::STATE_CLOSED)
4040
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_CLOSED));
4141
} elseif ($currentState === Order::STATE_PROCESSING
42-
&& (!$order->canShip() || $order->isPartiallyRefundedOrderShipped())
42+
&& (!$order->canShip() || $this->isPartiallyRefundedOrderShipped($order))
4343
) {
4444
$order->setState(Order::STATE_COMPLETE)
4545
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_COMPLETE));
@@ -49,4 +49,51 @@ public function check(Order $order)
4949
}
5050
return $this;
5151
}
52+
53+
/**
54+
* Check if all items are remaining items after partially refunded are shipped
55+
* @param Order $order
56+
*
57+
* @return bool
58+
*/
59+
public function isPartiallyRefundedOrderShipped(Order $order): bool
60+
{
61+
if ($this->getShippedItems($order) > 0
62+
&& $order->getTotalQtyOrdered() <= $this->getRefundedItems($order) + $this->getShippedItems($order)) {
63+
return true;
64+
}
65+
return false;
66+
}
67+
68+
/**
69+
* Get all refunded items number
70+
* @param Order $order
71+
*
72+
* @return int
73+
*/
74+
private function getRefundedItems(Order $order): int
75+
{
76+
$num_of_refunded_items = 0;
77+
foreach ($order->getAllItems() as $item) {
78+
if ($item->getProductType() == 'simple') {
79+
$num_of_refunded_items += (int)$item->getQtyRefunded();
80+
}
81+
}
82+
return $num_of_refunded_items;
83+
}
84+
85+
/**
86+
* Get all shipped items number
87+
* @param Order $order
88+
*
89+
* @return int
90+
*/
91+
private function getShippedItems(Order $order): int
92+
{
93+
$num_of_shipped_items= 0;
94+
foreach ($order->getAllItems() as $item) {
95+
$num_of_shipped_items += (int)$item->getQtyShipped();
96+
}
97+
return $num_of_shipped_items;
98+
}
5299
}

0 commit comments

Comments
 (0)