Skip to content

Commit 4de64b6

Browse files
authored
Allocate order increment ID (#257)
* Allocate order increment ID * Address test results * added return type * added return type
1 parent 315735a commit 4de64b6

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

app/code/Meta/Sales/Model/Order/CreateOrder.php

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use Magento\Sales\Api\InvoiceManagementInterface;
2626
use Magento\Sales\Api\OrderManagementInterface;
2727
use Magento\Sales\Model\Order;
28+
use Magento\SalesSequence\Model\Manager as OrderSequenceManager;
2829
use Meta\BusinessExtension\Model\System\Config as SystemConfig;
2930
use Meta\Sales\Api\Data\FacebookOrderInterface;
3031
use Meta\Sales\Api\Data\FacebookOrderInterfaceFactory;
@@ -34,6 +35,7 @@
3435

3536
/**
3637
* Create order from facebook api data
38+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
3739
*/
3840
class CreateOrder
3941
{
@@ -72,6 +74,11 @@ class CreateOrder
7274
*/
7375
private OrderMapper $orderMapper;
7476

77+
/**
78+
* @var OrderSequenceManager
79+
*/
80+
private OrderSequenceManager $orderSequenceManager;
81+
7582
/**
7683
* @param ManagerInterface $eventManager
7784
* @param OrderManagementInterface $orderManagement
@@ -80,6 +87,7 @@ class CreateOrder
8087
* @param InvoiceManagementInterface $invoiceManagement
8188
* @param TransactionFactory $transactionFactory
8289
* @param OrderMapper $orderMapper
90+
* @param OrderSequenceManager $orderSequenceManager
8391
*/
8492
public function __construct(
8593
ManagerInterface $eventManager,
@@ -88,7 +96,8 @@ public function __construct(
8896
FacebookOrderInterfaceFactory $facebookOrderFactory,
8997
InvoiceManagementInterface $invoiceManagement,
9098
TransactionFactory $transactionFactory,
91-
OrderMapper $orderMapper
99+
OrderMapper $orderMapper,
100+
OrderSequenceManager $orderSequenceManager
92101
) {
93102
$this->eventManager = $eventManager;
94103
$this->orderManagement = $orderManagement;
@@ -97,6 +106,23 @@ public function __construct(
97106
$this->invoiceManagement = $invoiceManagement;
98107
$this->transactionFactory = $transactionFactory;
99108
$this->orderMapper = $orderMapper;
109+
$this->orderSequenceManager = $orderSequenceManager;
110+
}
111+
112+
/**
113+
* Generate a new increment order ID and associate it with a current order
114+
*
115+
* @param Order $order
116+
* @return string|null
117+
* @throws LocalizedException
118+
*/
119+
public function reserveOrderIncrementId(Order $order): ?string
120+
{
121+
$reservedOrderId = $this->orderSequenceManager
122+
->getSequence(Order::ENTITY, $order->getStoreId())
123+
->getNextValue();
124+
$order->setIncrementId($reservedOrderId);
125+
return $reservedOrderId;
100126
}
101127

102128
/**
@@ -119,6 +145,7 @@ public function execute(array $data, int $storeId): Order
119145
}
120146

121147
$order = $this->orderMapper->map($data, $storeId);
148+
$this->reserveOrderIncrementId($order);
122149
$channel = ucfirst($data['channel']);
123150

124151
$this->orderManagement->place($order);

app/code/Meta/Sales/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"php": "~7.4.0||~8.1.0",
77
"magento/framework": "*",
88
"magento/module-sales": "*",
9+
"magento/module-sales-sequence": "*",
910
"magento/module-backend": "*",
1011
"magento/module-config": "*",
1112
"magento/module-catalog": "*",

app/code/Meta/Sales/etc/module.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<module name="Magento_Eav"/>
1313
<module name="Magento_Directory"/>
1414
<module name="Magento_Payment"/>
15+
<module name="Magento_SalesSequence"/>
1516
<module name="Magento_Shipping"/>
1617
<module name="Meta_BusinessExtension"/>
1718
<module name="Meta_Catalog"/>

0 commit comments

Comments
 (0)