Skip to content

Commit 5e0f932

Browse files
committed
BUG#AC-2811: Virtual refunded orders do not persist closed state when comment is added via Admin
1 parent d379b7f commit 5e0f932

File tree

2 files changed

+24
-1
lines changed
  • app/code/Magento/Sales

2 files changed

+24
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public function check(Order $order)
4141
} elseif ($currentState === Order::STATE_PROCESSING && !$order->canShip()) {
4242
$order->setState(Order::STATE_COMPLETE)
4343
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_COMPLETE));
44+
} elseif ($order->getIsVirtual() && $order->getStatus() === Order::STATE_CLOSED) {
45+
$order->setState(Order::STATE_CLOSED);
4446
}
4547
}
4648
return $this;

app/code/Magento/Sales/Test/Unit/Model/ResourceModel/Order/Handler/StateTest.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ protected function setUp(): void
4242
'canCreditmemo',
4343
'getTotalRefunded',
4444
'getConfig',
45-
'getIsNotVirtual'
45+
'getIsVirtual',
46+
'getIsNotVirtual',
47+
'getStatus',
4648
]
4749
)
4850
->disableOriginalConstructor()
@@ -102,6 +104,12 @@ public function testCheck(
102104
->willReturn($isInProcess);
103105
$this->orderMock->method('getIsNotVirtual')
104106
->willReturn($isNotVirtual);
107+
if (!$isNotVirtual) {
108+
$this->orderMock->method('getIsVirtual')
109+
->willReturn(!$isNotVirtual);
110+
$this->orderMock->method('getStatus')
111+
->willReturn($expectedState);
112+
}
105113
$this->state->check($this->orderMock);
106114
$this->assertEquals($expectedState, $this->orderMock->getState());
107115
}
@@ -323,6 +331,19 @@ public function stateCheckDataProvider()
323331
'can_unhold' => false,
324332
'is_not_virtual' => false
325333
],
334+
'closed(virtual product)' => [
335+
'can_credit_memo' => false,
336+
'can_credit_memo_invoke_count' => 1,
337+
'can_ship' => false,
338+
'call_can_skip_num' => 1,
339+
'current_state' => Order::STATE_COMPLETE,
340+
'expected_state' => Order::STATE_CLOSED,
341+
'is_in_process' => false,
342+
'get_is_in_process_invoke_count' => 0,
343+
'is_canceled' => false,
344+
'can_unhold' => false,
345+
'is_not_virtual' => false,
346+
],
326347
];
327348
}
328349
}

0 commit comments

Comments
 (0)