Skip to content

Commit 4814b4c

Browse files
committed
MAGETWO-99460: Custom status overrides standard state in dropdowns after being assigned
1 parent 7120c6e commit 4814b4c

File tree

4 files changed

+84
-1
lines changed

4 files changed

+84
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public function getStates()
213213
{
214214
$states = [];
215215
foreach ($this->_getCollection() as $item) {
216-
if ($item->getState()) {
216+
if ($item->getState() && $item->getIsDefault()) {
217217
$states[$item->getState()] = __($item->getData('label'));
218218
}
219219
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Sales\Model\Order;
7+
8+
use Magento\TestFramework\Helper\Bootstrap;
9+
use Magento\TestFramework\ObjectManager;
10+
11+
/**
12+
* Test class for \Magento\Sales\Model\Order\Config
13+
*/
14+
class ConfigTest extends \PHPUnit\Framework\TestCase
15+
{
16+
/**
17+
* @var ObjectManager
18+
*/
19+
private $objectManager;
20+
21+
/**
22+
* @var Config
23+
*/
24+
protected $orderConfig;
25+
26+
/**
27+
* @inheritdoc
28+
*/
29+
protected function setUp()
30+
{
31+
$this->objectManager = Bootstrap::getObjectManager();
32+
$this->orderConfig = $this->objectManager->create(Config::class);
33+
}
34+
35+
/**
36+
* Correct display of the list of "Order States" after assigning
37+
* the state "complete" to a custom order status.
38+
*
39+
* @magentoDataFixture Magento/Sales/_files/order_status_assign_state_complete.php
40+
*/
41+
public function testCorrectCompleteStatusInStatesList()
42+
{
43+
$allStates = $this->orderConfig->getStates();
44+
/** @var Status $completeStatus */
45+
$completeStatus = $this->objectManager->create(Status::class)
46+
->load(\Magento\Sales\Model\Order::STATE_COMPLETE);
47+
$completeState = $allStates[$completeStatus->getStatus()];
48+
49+
$this->assertEquals($completeStatus->getLabel(), $completeState->getText());
50+
}
51+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Sales\Model\Order\Status;
9+
use Magento\TestFramework\Helper\Bootstrap;
10+
11+
/** @var Status $orderStatus */
12+
$orderStatus = Bootstrap::getObjectManager()->create(Status::class);
13+
$data = [
14+
'status' => 'custom_complete',
15+
'label' => 'Custom Complete Status',
16+
];
17+
$orderStatus->setData($data)->save();
18+
$orderStatus->assignState(\Magento\Sales\Model\Order::STATE_COMPLETE, false, true);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Sales\Model\Order\Status;
9+
use Magento\TestFramework\Helper\Bootstrap;
10+
11+
/** @var Status $orderStatus */
12+
$orderStatus = Bootstrap::getObjectManager()->create(Status::class);
13+
$orderStatus->load('custom_complete', 'status');
14+
$orderStatus->delete();

0 commit comments

Comments
 (0)