Skip to content

Commit 957cb34

Browse files
committed
ENGCOM-2031: [Backport] #14063 - Wrong invoice prefix in multistore setup due to default store id (fix order increment id)
1 parent b82653b commit 957cb34

File tree

4 files changed

+105
-6
lines changed

4 files changed

+105
-6
lines changed

app/code/Magento/Quote/Model/ResourceModel/Quote.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public function getReservedOrderId($quote)
171171
{
172172
return $this->sequenceManager->getSequence(
173173
\Magento\Sales\Model\Order::ENTITY,
174-
$quote->getStore()->getGroup()->getDefaultStoreId()
174+
$quote->getStoreId()
175175
)
176176
->getNextValue();
177177
}
@@ -236,7 +236,7 @@ public function markQuotesRecollectOnCatalogRules()
236236
* @param \Magento\Catalog\Model\Product $product
237237
* @return $this
238238
*/
239-
public function substractProductFromQuotes($product)
239+
public function subtractProductFromQuotes($product)
240240
{
241241
$productId = (int)$product->getId();
242242
if (!$productId) {
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Quote\Test\Unit\Model\ResourceModel;
8+
9+
use Magento\Framework\DB\Sequence\SequenceInterface;
10+
use Magento\Framework\Model\ResourceModel\Db\Context;
11+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite;
12+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot;
13+
use Magento\Quote\Model\Quote;
14+
use Magento\SalesSequence\Model\Manager;
15+
16+
class QuoteTest extends \PHPUnit_Framework_TestCase
17+
{
18+
/**
19+
* @var Quote|\PHPUnit_Framework_MockObject_MockObject
20+
*/
21+
private $quoteMock;
22+
/**
23+
* @var Manager|\PHPUnit_Framework_MockObject_MockObject
24+
*/
25+
private $sequenceManagerMock;
26+
/**
27+
* @var SequenceInterface|\PHPUnit_Framework_MockObject_MockObject
28+
*/
29+
private $sequenceMock;
30+
/**
31+
* @var \Magento\Quote\Model\ResourceModel\Quote
32+
*/
33+
private $quote;
34+
35+
/**
36+
* {@inheritdoc}
37+
*/
38+
protected function setUp()
39+
{
40+
$context = $this->getMockBuilder(Context::class)
41+
->disableOriginalConstructor()
42+
->getMock();
43+
$snapshot = $this->getMockBuilder(Snapshot::class)
44+
->disableOriginalConstructor()
45+
->getMock();
46+
$relationComposite = $this->getMockBuilder(RelationComposite::class)
47+
->disableOriginalConstructor()
48+
->getMock();
49+
$this->quoteMock = $this->getMockBuilder(Quote::class)
50+
->disableOriginalConstructor()
51+
->getMock();
52+
$this->sequenceManagerMock = $this->getMockBuilder(Manager::class)
53+
->disableOriginalConstructor()
54+
->getMock();
55+
$this->sequenceMock = $this->getMockBuilder(SequenceInterface::class)
56+
->disableOriginalConstructor()
57+
->getMock();
58+
$this->quote = new \Magento\Quote\Model\ResourceModel\Quote(
59+
$context,
60+
$snapshot,
61+
$relationComposite,
62+
$this->sequenceManagerMock,
63+
null
64+
);
65+
}
66+
67+
/**
68+
* @param $entityType
69+
* @param $storeId
70+
* @param $reservedOrderId
71+
* @dataProvider getReservedOrderIdDataProvider
72+
*/
73+
public function testGetReservedOrderId($entityType, $storeId, $reservedOrderId)
74+
{
75+
$this->sequenceManagerMock->expects($this->once())
76+
->method('getSequence')
77+
->with($entityType, $storeId)
78+
->willReturn($this->sequenceMock);
79+
$this->quoteMock->expects($this->once())
80+
->method('getStoreId')
81+
->willReturn($storeId);
82+
$this->sequenceMock->expects($this->once())
83+
->method('getNextValue')
84+
->willReturn($reservedOrderId);
85+
$this->assertEquals($reservedOrderId, $this->quote->getReservedOrderId($this->quoteMock));
86+
}
87+
88+
/**
89+
* @return array
90+
*/
91+
public function getReservedOrderIdDataProvider()
92+
{
93+
return [
94+
[\Magento\Sales\Model\Order::ENTITY, 1, '1000000001'],
95+
[\Magento\Sales\Model\Order::ENTITY, 2, '2000000001'],
96+
[\Magento\Sales\Model\Order::ENTITY, 3, '3000000001']
97+
];
98+
}
99+
}

app/code/Magento/Sales/Observer/Backend/SubtractQtyFromQuotesObserver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ public function __construct(\Magento\Quote\Model\ResourceModel\Quote $quote)
3131
public function execute(\Magento\Framework\Event\Observer $observer)
3232
{
3333
$product = $observer->getEvent()->getProduct();
34-
$this->_quote->substractProductFromQuotes($product);
34+
$this->_quote->subtractProductFromQuotes($product);
3535
}
3636
}

app/code/Magento/Sales/Test/Unit/Observer/Backend/SubtractQtyFromQuotesObserverTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ class SubtractQtyFromQuotesObserverTest extends \PHPUnit_Framework_TestCase
1515
protected $_model;
1616

1717
/**
18-
* @var \PHPUnit_Framework_MockObject_MockObject
18+
* @var \Magento\Quote\Model\ResourceModel\Quote|\PHPUnit_Framework_MockObject_MockObject
1919
*/
2020
protected $_quoteMock;
2121

2222
/**
23-
* @var \PHPUnit_Framework_MockObject_MockObject
23+
* @var \Magento\Framework\Event\Observer|\PHPUnit_Framework_MockObject_MockObject
2424
*/
2525
protected $_observerMock;
2626

@@ -54,7 +54,7 @@ public function testSubtractQtyFromQuotes()
5454
false
5555
);
5656
$this->_eventMock->expects($this->once())->method('getProduct')->will($this->returnValue($productMock));
57-
$this->_quoteMock->expects($this->once())->method('substractProductFromQuotes')->with($productMock);
57+
$this->_quoteMock->expects($this->once())->method('subtractProductFromQuotes')->with($productMock);
5858
$this->_model->execute($this->_observerMock);
5959
}
6060
}

0 commit comments

Comments
 (0)