OmsFacade::getOmsOrderItemState()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
rs 10
1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace Spryker\Zed\Oms\Business;
9
10
use Generated\Shared\Transfer\OmsAvailabilityReservationRequestTransfer;
11
use Generated\Shared\Transfer\OmsCheckConditionsQueryCriteriaTransfer;
12
use Generated\Shared\Transfer\OmsCheckTimeoutsQueryCriteriaTransfer;
13
use Generated\Shared\Transfer\OmsEventTimeoutCollectionDeleteCriteriaTransfer;
14
use Generated\Shared\Transfer\OmsEventTimeoutCollectionResponseTransfer;
15
use Generated\Shared\Transfer\OmsOrderItemStateHistoryCollectionDeleteCriteriaTransfer;
16
use Generated\Shared\Transfer\OmsOrderItemStateHistoryCollectionResponseTransfer;
17
use Generated\Shared\Transfer\OmsOrderItemStateTransfer;
18
use Generated\Shared\Transfer\OmsStateCollectionTransfer;
19
use Generated\Shared\Transfer\OmsTransitionLogCollectionDeleteCriteriaTransfer;
20
use Generated\Shared\Transfer\OmsTransitionLogCollectionResponseTransfer;
21
use Generated\Shared\Transfer\OrderItemFilterTransfer;
22
use Generated\Shared\Transfer\OrderMatrixCollectionTransfer;
23
use Generated\Shared\Transfer\OrderMatrixCriteriaTransfer;
24
use Generated\Shared\Transfer\OrderTransfer;
25
use Generated\Shared\Transfer\ReservationRequestTransfer;
26
use Generated\Shared\Transfer\ReservationResponseTransfer;
27
use Generated\Shared\Transfer\StoreTransfer;
28
use Orm\Zed\Sales\Persistence\SpySalesOrder;
29
use Orm\Zed\Sales\Persistence\SpySalesOrderItem;
30
use Propel\Runtime\Collection\ObjectCollection;
31
use Spryker\DecimalObject\Decimal;
32
use Spryker\Zed\Kernel\Business\AbstractFacade;
33
34
/**
35
 * @method \Spryker\Zed\Oms\Business\OmsBusinessFactory getFactory()
36
 * @method \Spryker\Zed\Oms\Persistence\OmsRepositoryInterface getRepository()
37
 * @method \Spryker\Zed\Oms\Persistence\OmsEntityManagerInterface getEntityManager()
38
 */
39
class OmsFacade extends AbstractFacade implements OmsFacadeInterface
40
{
41
    /**
42
     * {@inheritDoc}
43
     *
44
     * @api
45
     *
46
     * @param int $idOrderItem
47
     *
48
     * @return array<string>
49
     */
50
    public function getManualEvents($idOrderItem)
51
    {
52
        return $this->getFactory()
53
            ->createOrderStateMachineFinder()
54
            ->getManualEvents($idOrderItem);
55
    }
56
57
    /**
58
     * {@inheritDoc}
59
     *
60
     * @api
61
     *
62
     * @param int $idOrder
63
     * @param string $flag
64
     *
65
     * @return bool
66
     */
67
    public function isOrderFlagged($idOrder, $flag)
68
    {
69
        return $this->getFactory()
70
            ->createOrderStateMachineFinder()
71
            ->isOrderFlagged($idOrder, $flag);
72
    }
73
74
    /**
75
     * {@inheritDoc}
76
     *
77
     * @api
78
     *
79
     * @param int $idOrder
80
     * @param string $flag
81
     *
82
     * @return bool
83
     */
84
    public function isOrderFlaggedAll($idOrder, $flag)
85
    {
86
        return $this->getFactory()
87
            ->createOrderStateMachineFinder()
88
            ->isOrderFlaggedAll($idOrder, $flag);
89
    }
90
91
    /**
92
     * {@inheritDoc}
93
     *
94
     * @api
95
     *
96
     * @param int $idOrder
97
     *
98
     * @return bool
99
     */
100
    public function isOrderFlaggedExcludeFromCustomer($idOrder)
101
    {
102
        return $this->getFactory()
103
            ->createOrderStateMachineFinder()
104
            ->isOrderFlaggedExcludeFromCustomer($idOrder);
105
    }
106
107
    /**
108
     * {@inheritDoc}
109
     *
110
     * @api
111
     *
112
     * @param string $eventId
113
     * @param array $orderItemIds
114
     * @param array<string, mixed> $data
115
     *
116
     * @return array|null
117
     */
118
    public function triggerEventForOrderItems($eventId, array $orderItemIds, array $data = [])
119
    {
120
        return $this->getFactory()
121
            ->createLockedOrderStateMachine()
122
            ->triggerEventForOrderItems($eventId, $orderItemIds, $data);
123
    }
124
125
    /**
126
     * {@inheritDoc}
127
     *
128
     * @api
129
     *
130
     * @param array $orderItemIds
131
     * @param array<string, mixed> $data
132
     *
133
     * @return array|null
134
     */
135
    public function triggerEventForNewOrderItems(array $orderItemIds, array $data = [])
136
    {
137
        return $this->getFactory()
138
            ->createLockedOrderStateMachine()
139
            ->triggerEventForNewOrderItems($orderItemIds, $data);
140
    }
141
142
    /**
143
     * {@inheritDoc}
144
     *
145
     * @api
146
     *
147
     * @param string $eventId
148
     * @param int $orderItemId
149
     * @param array<string, mixed> $data
150
     *
151
     * @return array|null
152
     */
153
    public function triggerEventForOneOrderItem($eventId, $orderItemId, array $data = [])
154
    {
155
        return $this->getFactory()
156
            ->createLockedOrderStateMachine()
157
            ->triggerEventForOneOrderItem($eventId, $orderItemId, $data);
158
    }
159
160
    /**
161
     * {@inheritDoc}
162
     *
163
     * @api
164
     *
165
     * @param bool $regenerateCache
166
     *
167
     * @return array<\Spryker\Zed\Oms\Business\Process\ProcessInterface>
168
     */
169
    public function getProcesses(bool $regenerateCache = false)
170
    {
171
        return $this->getFactory()
172
            ->createOrderStateMachineFinder()
173
            ->getProcesses($regenerateCache);
174
    }
175
176
    /**
177
     * {@inheritDoc}
178
     *
179
     * @api
180
     *
181
     * @return array
182
     */
183
    public function getProcessList()
184
    {
185
        return $this->getFactory()
186
            ->getConfig()
187
            ->getActiveProcesses();
188
    }
189
190
    /**
191
     * {@inheritDoc}
192
     *
193
     * @api
194
     *
195
     * @param array $logContext
196
     * @param \Generated\Shared\Transfer\OmsCheckConditionsQueryCriteriaTransfer|null $omsCheckConditionsQueryCriteriaTransfer
197
     *
198
     * @return int
199
     */
200
    public function checkConditions(array $logContext = [], ?OmsCheckConditionsQueryCriteriaTransfer $omsCheckConditionsQueryCriteriaTransfer = null)
201
    {
202
        return $this->getFactory()
203
            ->createLockedOrderStateMachine($logContext)
204
            ->checkConditions($logContext, $omsCheckConditionsQueryCriteriaTransfer);
205
    }
206
207
    /**
208
     * {@inheritDoc}
209
     *
210
     * @api
211
     *
212
     * @param array $logContext
213
     * @param \Generated\Shared\Transfer\OmsCheckTimeoutsQueryCriteriaTransfer|null $omsCheckTimeoutsQueryCriteriaTransfer
214
     *
215
     * @return int
216
     */
217
    public function checkTimeouts(array $logContext = [], ?OmsCheckTimeoutsQueryCriteriaTransfer $omsCheckTimeoutsQueryCriteriaTransfer = null)
218
    {
219
        $factory = $this->getFactory();
220
        $orderStateMachine = $factory
221
            ->createLockedOrderStateMachine($logContext);
222
223
        return $factory->createOrderStateMachineTimeout()
224
            ->checkTimeouts($orderStateMachine, $omsCheckTimeoutsQueryCriteriaTransfer);
225
    }
226
227
    /**
228
     * {@inheritDoc}
229
     *
230
     * @api
231
     *
232
     * @param string $processName
233
     * @param string|null $highlightState
234
     * @param string|null $format
235
     * @param int|null $fontSize
236
     *
237
     * @return string
238
     */
239
    public function drawProcess($processName, $highlightState = null, $format = null, $fontSize = null)
240
    {
241
        $process = $this->getFactory()
242
            ->createOrderStateMachineBuilder()
243
            ->createProcess($processName);
244
245
        return $process->draw($highlightState, $format, $fontSize);
246
    }
247
248
    /**
249
     * {@inheritDoc}
250
     *
251
     * @api
252
     *
253
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $order
254
     *
255
     * @return array<\Spryker\Zed\Oms\Business\Process\Event>
256
     */
257
    public function getGroupedManuallyExecutableEvents(SpySalesOrder $order)
258
    {
259
        return $this->getFactory()
260
            ->createOrderStateMachineFinder()
261
            ->getGroupedManuallyExecutableEvents($order);
262
    }
263
264
    /**
265
     * {@inheritDoc}
266
     *
267
     * @api
268
     *
269
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $order
270
     * @param string $flag
271
     *
272
     * @return array<\Orm\Zed\Sales\Persistence\SpySalesOrderItem>
273
     */
274
    public function getItemsWithFlag(SpySalesOrder $order, $flag)
275
    {
276
        return $this->getFactory()
277
            ->createOrderStateMachineFinder()
278
            ->getItemsWithFlag($order, $flag);
279
    }
280
281
    /**
282
     * {@inheritDoc}
283
     *
284
     * @api
285
     *
286
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $order
287
     * @param string $flag
288
     *
289
     * @return array<\Orm\Zed\Sales\Persistence\SpySalesOrderItem>
290
     */
291
    public function getItemsWithoutFlag(SpySalesOrder $order, $flag)
292
    {
293
        return $this->getFactory()
294
            ->createOrderStateMachineFinder()
295
            ->getItemsWithoutFlag($order, $flag);
296
    }
297
298
    /**
299
     * {@inheritDoc}
300
     *
301
     * @api
302
     *
303
     * @deprecated Will be removed without replacement.
304
     *
305
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $order
306
     * @param array $logContext
307
     *
308
     * @return \Propel\Runtime\Collection\ObjectCollection<\Orm\Zed\Oms\Persistence\SpyOmsTransitionLog>
309
     */
310
    public function getLogForOrder(SpySalesOrder $order, array $logContext = [])
311
    {
312
        return $this->getFactory()
313
            ->createUtilTransitionLog($logContext)
314
            ->getLogForOrder($order);
315
    }
316
317
    /**
318
     * {@inheritDoc}
319
     *
320
     * @api
321
     *
322
     * @deprecated Not used anymore. Will be removed with next major release.
323
     *
324
     * @param string $sku
325
     * @param \Generated\Shared\Transfer\StoreTransfer|null $storeTransfer
326
     *
327
     * @return \Spryker\DecimalObject\Decimal
328
     */
329
    public function sumReservedProductQuantitiesForSku(string $sku, ?StoreTransfer $storeTransfer = null): Decimal
330
    {
331
        return $this->getFactory()
332
            ->createReservationReader()
333
            ->sumReservedProductQuantitiesForSku($sku, $storeTransfer);
334
    }
335
336
    /**
337
     * {@inheritDoc}
338
     *
339
     * @api
340
     *
341
     * @param string $sku
342
     * @param \Generated\Shared\Transfer\StoreTransfer $storeTransfer
343
     *
344
     * @return \Spryker\DecimalObject\Decimal
345
     */
346
    public function getOmsReservedProductQuantityForSku(string $sku, StoreTransfer $storeTransfer): Decimal
347
    {
348
        return $this->getFactory()
349
            ->createReservationReader()
350
            ->getOmsReservedProductQuantityForSku($sku, $storeTransfer);
351
    }
352
353
    /**
354
     * {@inheritDoc}
355
     *
356
     * @api
357
     *
358
     * @param array<string> $skus
359
     * @param \Generated\Shared\Transfer\StoreTransfer $storeTransfer
360
     *
361
     * @return \Spryker\DecimalObject\Decimal
362
     */
363
    public function getOmsReservedProductQuantityForSkus(array $skus, StoreTransfer $storeTransfer): Decimal
364
    {
365
        return $this->getFactory()
366
            ->createReservationReader()
367
            ->getOmsReservedProductQuantityForSkus($skus, $storeTransfer);
368
    }
369
370
    /**
371
     * {@inheritDoc}
372
     *
373
     * @api
374
     *
375
     * @param string $processName
376
     *
377
     * @return \Orm\Zed\Oms\Persistence\SpyOmsOrderProcess
378
     */
379
    public function getProcessEntity($processName)
380
    {
381
        return $this->getFactory()
382
            ->createOrderStateMachinePersistenceManager()
383
            ->getProcessEntity($processName);
384
    }
385
386
    /**
387
     * {@inheritDoc}
388
     *
389
     * @api
390
     *
391
     * @return \Orm\Zed\Oms\Persistence\SpyOmsOrderItemState
392
     */
393
    public function getInitialStateEntity()
394
    {
395
        return $this->getFactory()
396
            ->createOrderStateMachinePersistenceManager()
397
            ->getInitialStateEntity();
398
    }
399
400
    /**
401
     * {@inheritDoc}
402
     *
403
     * @api
404
     *
405
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItem
406
     *
407
     * @return string
408
     */
409
    public function getStateDisplayName(SpySalesOrderItem $orderItem)
410
    {
411
        return $this->getFactory()
412
            ->createOrderStateMachineFinder()
413
            ->getStateDisplayName($orderItem);
414
    }
415
416
    /**
417
     * {@inheritDoc}
418
     *
419
     * @api
420
     *
421
     * @param string $eventId
422
     * @param \Propel\Runtime\Collection\ObjectCollection $orderItems
423
     * @param array $logContext
424
     * @param array<string, mixed> $data
425
     *
426
     * @return array|null
427
     */
428
    public function triggerEvent($eventId, ObjectCollection $orderItems, array $logContext, array $data = [])
429
    {
430
        $orderItemsArray = $orderItems->getData();
431
432
        return $this->getFactory()
433
            ->createLockedOrderStateMachine($logContext)
434
            ->triggerEvent($eventId, $orderItemsArray, $data);
435
    }
436
437
    /**
438
     * {@inheritDoc}
439
     *
440
     * @api
441
     *
442
     * @param \Propel\Runtime\Collection\ObjectCollection $orderItems
443
     * @param array $logContext
444
     * @param array<string, mixed> $data
445
     *
446
     * @return array|null
447
     */
448
    public function triggerEventForNewItem(ObjectCollection $orderItems, array $logContext, array $data = [])
449
    {
450
        $orderItemsArray = $orderItems->getData();
451
452
        return $this->getFactory()
453
            ->createLockedOrderStateMachine($logContext)
454
            ->triggerEventForNewItem($orderItemsArray, $data);
455
    }
456
457
    /**
458
     * {@inheritDoc}
459
     *
460
     * @api
461
     *
462
     * @param string $eventId
463
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItem
464
     * @param array $logContext
465
     * @param array<string, mixed> $data
466
     *
467
     * @return array|null
468
     */
469
    public function triggerEventForOneItem($eventId, $orderItem, array $logContext, array $data = [])
470
    {
471
        $orderItemsArray = [$orderItem];
472
473
        return $this->getFactory()
474
            ->createLockedOrderStateMachine($logContext)
475
            ->triggerEvent($eventId, $orderItemsArray, $data);
476
    }
477
478
    /**
479
     * {@inheritDoc}
480
     *
481
     * @api
482
     *
483
     * @deprecated Use {@link \Spryker\Zed\Oms\Business\OmsFacadeInterface::getOrderMatrixCollection()} instead.
484
     *
485
     * @return array
486
     */
487
    public function getOrderItemMatrix()
488
    {
489
        return $this->getFactory()->createUtilOrderItemMatrix()->getMatrix();
490
    }
491
492
    /**
493
     * {@inheritDoc}
494
     *
495
     * @api
496
     *
497
     * @param \Generated\Shared\Transfer\OrderMatrixCriteriaTransfer $orderMatrixCriteriaTransfer
498
     *
499
     * @return \Generated\Shared\Transfer\OrderMatrixCollectionTransfer
500
     */
501
    public function getOrderMatrixCollection(OrderMatrixCriteriaTransfer $orderMatrixCriteriaTransfer): OrderMatrixCollectionTransfer
502
    {
503
        return $this->getRepository()->getOrderMatrixCollection($orderMatrixCriteriaTransfer);
504
    }
505
506
    /**
507
     * {@inheritDoc}
508
     *
509
     * @api
510
     *
511
     * @return array<int, string>
512
     */
513
    public function getProcessNamesIndexedByIdOmsOrderProcess(): array
514
    {
515
        return $this->getRepository()->getProcessNamesIndexedByIdOmsOrderProcess();
516
    }
517
518
    /**
519
     * {@inheritDoc}
520
     *
521
     * @api
522
     *
523
     * @param int $idSalesOrder
524
     *
525
     * @return array<array<string>>
526
     */
527
    public function getManualEventsByIdSalesOrder($idSalesOrder)
528
    {
529
        return $this->getFactory()
530
            ->createOrderStateMachineFinder()
531
            ->getManualEventsByIdSalesOrder($idSalesOrder);
532
    }
533
534
    /**
535
     * {@inheritDoc}
536
     *
537
     * @api
538
     *
539
     * @param int $idSalesOrder
540
     *
541
     * @return array<string>
542
     */
543
    public function getDistinctManualEventsByIdSalesOrder($idSalesOrder)
544
    {
545
        return $this->getFactory()
546
            ->createOrderStateMachineFinder()
547
            ->getDistinctManualEventsByIdSalesOrder($idSalesOrder);
548
    }
549
550
    /**
551
     * {@inheritDoc}
552
     *
553
     * @api
554
     *
555
     * @param int $idSalesOrder
556
     *
557
     * @return array<string>
558
     */
559
    public function getGroupedDistinctManualEventsByIdSalesOrder(int $idSalesOrder): array
560
    {
561
        return $this->getFactory()
562
            ->createManualOrderReader()
563
            ->getGroupedDistinctManualEventsByIdSalesOrder($idSalesOrder);
564
    }
565
566
    /**
567
     * {@inheritDoc}
568
     *
569
     * @api
570
     *
571
     * @return void
572
     */
573
    public function clearLocks()
574
    {
575
        $this->getFactory()->createTriggerLocker()->clearLocks();
576
    }
577
578
    /**
579
     * {@inheritDoc}
580
     *
581
     * @api
582
     *
583
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $salesOrderEntity
584
     *
585
     * @return void
586
     */
587
    public function sendOrderConfirmationMail(SpySalesOrder $salesOrderEntity)
588
    {
589
        $this->getFactory()->createMailHandler()->sendOrderConfirmationMail($salesOrderEntity);
590
    }
591
592
    /**
593
     * {@inheritDoc}
594
     *
595
     * @api
596
     *
597
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $salesOrderEntity
598
     *
599
     * @return void
600
     */
601
    public function sendOrderShippedMail(SpySalesOrder $salesOrderEntity)
602
    {
603
        $this->getFactory()->createMailHandler()->sendOrderShippedMail($salesOrderEntity);
604
    }
605
606
    /**
607
     * {@inheritDoc}
608
     *
609
     * @api
610
     *
611
     * @param string $sku
612
     * @param \Generated\Shared\Transfer\StoreTransfer|null $storeTransfer
613
     *
614
     * @return void
615
     */
616
    public function saveReservationVersion($sku, ?StoreTransfer $storeTransfer = null)
617
    {
618
        $this->getFactory()->createReservationVersionHandler()->saveReservationVersion($sku, $storeTransfer);
619
    }
620
621
    /**
622
     * {@inheritDoc}
623
     *
624
     * @api
625
     *
626
     * @param \Generated\Shared\Transfer\OmsAvailabilityReservationRequestTransfer $omsAvailabilityReservationRequestTransfer
627
     *
628
     * @return void
629
     */
630
    public function importReservation(
631
        OmsAvailabilityReservationRequestTransfer $omsAvailabilityReservationRequestTransfer
632
    ) {
633
        $this->getFactory()->createReservationWriter()->saveReservationRequest($omsAvailabilityReservationRequestTransfer);
634
    }
635
636
    /**
637
     * {@inheritDoc}
638
     *
639
     * @api
640
     *
641
     * @return void
642
     */
643
    public function exportReservation()
644
    {
645
        $this->getFactory()->createExportReservation()->exportReservation();
646
    }
647
648
    /**
649
     * {@inheritDoc}
650
     *
651
     * @api
652
     *
653
     * @param string $sku
654
     * @param \Generated\Shared\Transfer\StoreTransfer $storeTransfer
655
     *
656
     * @return \Spryker\DecimalObject\Decimal
657
     */
658
    public function getReservationsFromOtherStores(string $sku, StoreTransfer $storeTransfer): Decimal
659
    {
660
        return $this->getFactory()->createReservationReader()->getReservationsFromOtherStores($sku, $storeTransfer);
661
    }
662
663
    /**
664
     * {@inheritDoc}
665
     *
666
     * @api
667
     *
668
     * @deprecated Will be removed without replacement.
669
     *
670
     * @return int
671
     */
672
    public function getLastExportedReservationVersion()
673
    {
674
        return $this->getFactory()->createExportReservation()->getLastExportedVersion();
675
    }
676
677
    /**
678
     * {@inheritDoc}
679
     *
680
     * @api
681
     *
682
     * @param string $processName
683
     * @param string $stateName
684
     *
685
     * @return array<string>
686
     */
687
    public function getStateFlags(string $processName, string $stateName): array
688
    {
689
        return $this->getFactory()->createOrderStateMachineFlagReader()->getStateFlags($processName, $stateName);
690
    }
691
692
    /**
693
     * {@inheritDoc}
694
     *
695
     * @api
696
     *
697
     * @deprecated Will be removed without replacement.
698
     *
699
     * @param string $sku
700
     * @param \Generated\Shared\Transfer\StoreTransfer $storeTransfer
701
     * @param \Spryker\DecimalObject\Decimal $reservationQuantity
702
     *
703
     * @return void
704
     */
705
    public function saveReservation(string $sku, StoreTransfer $storeTransfer, Decimal $reservationQuantity): void
706
    {
707
        $this->getFactory()
708
            ->createUtilReservation()
709
            ->saveReservation($sku, $storeTransfer, $reservationQuantity);
710
    }
711
712
    /**
713
     * {@inheritDoc}
714
     *
715
     * @api
716
     *
717
     * @deprecated Use {@link updateReservation()} instead.
718
     *
719
     * @param string $sku
720
     *
721
     * @return void
722
     */
723
    public function updateReservationQuantity(string $sku): void
724
    {
725
        $this->getFactory()
726
            ->createUtilReservation()
727
            ->updateReservationQuantity($sku);
728
    }
729
730
    /**
731
     * {@inheritDoc}
732
     *
733
     * @api
734
     *
735
     * @param \Generated\Shared\Transfer\ReservationRequestTransfer $reservationRequestTransfer
736
     *
737
     * @return void
738
     */
739
    public function updateReservation(ReservationRequestTransfer $reservationRequestTransfer): void
740
    {
741
        $this->getFactory()
742
            ->createUtilReservation()
743
            ->updateReservation($reservationRequestTransfer);
744
    }
745
746
    /**
747
     * {@inheritDoc}
748
     *
749
     * @api
750
     *
751
     * @deprecated Will be removed without replacement.
752
     *
753
     * @return \Generated\Shared\Transfer\OmsStateCollectionTransfer
754
     */
755
    public function getOmsReservedStateCollection(): OmsStateCollectionTransfer
756
    {
757
        return $this->getFactory()->createReservationReader()->getOmsReservedStateCollection();
758
    }
759
760
    /**
761
     * {@inheritDoc}
762
     *
763
     * @api
764
     *
765
     * @param array<\Generated\Shared\Transfer\ItemTransfer> $itemTransfers
766
     *
767
     * @return array<\Generated\Shared\Transfer\ItemTransfer>
768
     */
769
    public function expandOrderItemsWithStateHistory(array $itemTransfers): array
770
    {
771
        return $this->getFactory()
772
            ->createStateHistoryExpander()
773
            ->expandOrderItemsWithStateHistory($itemTransfers);
774
    }
775
776
    /**
777
     * {@inheritDoc}
778
     *
779
     * @api
780
     *
781
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
782
     *
783
     * @return \Generated\Shared\Transfer\OrderTransfer
784
     */
785
    public function expandOrderWithOmsStates(OrderTransfer $orderTransfer): OrderTransfer
786
    {
787
        return $this->getFactory()
788
            ->createOrderExpander()
789
            ->expandOrderWithOmsStates($orderTransfer);
790
    }
791
792
    /**
793
     * {@inheritDoc}
794
     *
795
     * @api
796
     *
797
     * @param \Generated\Shared\Transfer\OrderItemFilterTransfer $orderItemFilterTransfer
798
     *
799
     * @return array<array<string>>
800
     */
801
    public function getOrderItemManualEvents(OrderItemFilterTransfer $orderItemFilterTransfer): array
802
    {
803
        return $this->getFactory()
804
            ->createStateMachineReader()
805
            ->getOrderItemManualEvents($orderItemFilterTransfer);
806
    }
807
808
    /**
809
     * {@inheritDoc}
810
     *
811
     * @api
812
     *
813
     * @param \Generated\Shared\Transfer\ReservationRequestTransfer $reservationRequestTransfer
814
     *
815
     * @return \Generated\Shared\Transfer\ReservationResponseTransfer
816
     */
817
    public function getOmsReservedProductQuantity(ReservationRequestTransfer $reservationRequestTransfer): ReservationResponseTransfer
818
    {
819
        return $this->getFactory()->createReservationReader()->getOmsReservedProductQuantity($reservationRequestTransfer);
820
    }
821
822
    /**
823
     * {@inheritDoc}
824
     *
825
     * @api
826
     *
827
     * @param array<\Generated\Shared\Transfer\ItemTransfer> $itemTransfers
828
     *
829
     * @return array<\Generated\Shared\Transfer\ItemTransfer>
830
     */
831
    public function expandOrderItemsWithItemState(array $itemTransfers): array
832
    {
833
        return $this->getFactory()
834
            ->createOrderItemStateExpander()
835
            ->expandOrderItemsWithItemState($itemTransfers);
836
    }
837
838
    /**
839
     * {@inheritDoc}
840
     *
841
     * @api
842
     *
843
     * @param array<\Generated\Shared\Transfer\OrderTransfer> $orderTransfers
844
     *
845
     * @return array<\Generated\Shared\Transfer\OrderTransfer>
846
     */
847
    public function expandOrdersWithAggregatedItemStates(array $orderTransfers): array
848
    {
849
        return $this->getFactory()
850
            ->createOrderAggregatedItemStateExpander()
851
            ->expandOrdersWithAggregatedItemStates($orderTransfers);
852
    }
853
854
    /**
855
     * {@inheritDoc}
856
     *
857
     * @api
858
     *
859
     * @param array<\Generated\Shared\Transfer\OrderTransfer> $orderTransfers
860
     *
861
     * @return array<\Generated\Shared\Transfer\OrderTransfer>
862
     */
863
    public function setOrderIsCancellableByItemState(array $orderTransfers): array
864
    {
865
        return $this->getFactory()
866
            ->createOrderExpander()
867
            ->setOrderIsCancellableByItemState($orderTransfers);
868
    }
869
870
    /**
871
     * {@inheritDoc}
872
     *
873
     * @api
874
     *
875
     * @param int $idSalesOrder
876
     *
877
     * @return void
878
     */
879
    public function sendOrderStatusChangedMessage(int $idSalesOrder): void
880
    {
881
        $this->getFactory()->createOrderStatusChangedMessageSender()->sendMessage($idSalesOrder);
882
    }
883
884
    /**
885
     * {@inheritDoc}
886
     *
887
     * @api
888
     *
889
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
890
     * @param string $flag
891
     *
892
     * @return bool
893
     */
894
    public function areOrderItemsSatisfiedByFlag(OrderTransfer $orderTransfer, string $flag): bool
895
    {
896
        return $this->getFactory()
897
            ->createOrderChecker()
898
            ->areOrderItemsSatisfiedByFlag($orderTransfer, $flag);
899
    }
900
901
    /**
902
     * {@inheritDoc}
903
     *
904
     * @api
905
     *
906
     * @param \Generated\Shared\Transfer\OmsOrderItemStateHistoryCollectionDeleteCriteriaTransfer $omsOrderItemStateHistoryCollectionDeleteCriteriaTransfer
907
     *
908
     * @return \Generated\Shared\Transfer\OmsOrderItemStateHistoryCollectionResponseTransfer
909
     */
910
    public function deleteOmsOrderItemStateHistoryCollection(
911
        OmsOrderItemStateHistoryCollectionDeleteCriteriaTransfer $omsOrderItemStateHistoryCollectionDeleteCriteriaTransfer
912
    ): OmsOrderItemStateHistoryCollectionResponseTransfer {
913
        return $this->getFactory()
914
            ->createOmsOrderItemStateHistoryDeleter()
915
            ->deleteOmsOrderItemStateHistoryCollection($omsOrderItemStateHistoryCollectionDeleteCriteriaTransfer);
916
    }
917
918
    /**
919
     * {@inheritDoc}
920
     *
921
     * @api
922
     *
923
     * @param \Generated\Shared\Transfer\OmsTransitionLogCollectionDeleteCriteriaTransfer $omsTransitionLogCollectionDeleteCriteriaTransfer
924
     *
925
     * @return \Generated\Shared\Transfer\OmsTransitionLogCollectionResponseTransfer
926
     */
927
    public function deleteOmsTransitionLogCollection(
928
        OmsTransitionLogCollectionDeleteCriteriaTransfer $omsTransitionLogCollectionDeleteCriteriaTransfer
929
    ): OmsTransitionLogCollectionResponseTransfer {
930
        return $this->getFactory()
931
            ->createOmsTransitionLogDeleter()
932
            ->deleteOmsTransitionLogCollection($omsTransitionLogCollectionDeleteCriteriaTransfer);
933
    }
934
935
    /**
936
     * {@inheritDoc}
937
     *
938
     * @api
939
     *
940
     * @param \Generated\Shared\Transfer\OmsEventTimeoutCollectionDeleteCriteriaTransfer $omsEventTimeoutCollectionDeleteCriteriaTransfer
941
     *
942
     * @return \Generated\Shared\Transfer\OmsEventTimeoutCollectionResponseTransfer
943
     */
944
    public function deleteOmsEventTimeoutCollection(
945
        OmsEventTimeoutCollectionDeleteCriteriaTransfer $omsEventTimeoutCollectionDeleteCriteriaTransfer
946
    ): OmsEventTimeoutCollectionResponseTransfer {
947
        return $this->getFactory()
948
            ->createOmsEventTimeoutDeleter()
949
            ->deleteOmsEventTimeoutCollection($omsEventTimeoutCollectionDeleteCriteriaTransfer);
950
    }
951
952
    /**
953
     * {@inheritDoc}
954
     *
955
     * @api
956
     *
957
     * @param string $stateName
958
     *
959
     * @return \Generated\Shared\Transfer\OmsOrderItemStateTransfer
960
     */
961
    public function getOmsOrderItemState(string $stateName): OmsOrderItemStateTransfer
962
    {
963
        return $this->getFactory()
964
            ->createOrderStateMachinePersistenceManager()
965
            ->getOmsOrderItemState($stateName);
966
    }
967
968
    /**
969
     * {@inheritDoc}
970
     *
971
     * @api
972
     *
973
     * @param array|string $identifier
974
     * @param bool $blocking
975
     *
976
     * @return bool
977
     */
978
    public function acquireOrderItemLock(array|string $identifier, bool $blocking): bool
979
    {
980
        return $this->getFactory()
981
            ->createTriggerLocker()
982
            ->acquire($identifier, null, $blocking);
983
    }
984
985
    /**
986
     * {@inheritDoc}
987
     *
988
     * @api
989
     *
990
     * @param array|string $identifier
991
     *
992
     * @return void
993
     */
994
    public function releaseOrderItemLock(array|string $identifier): void
995
    {
996
        $this->getFactory()
997
            ->createTriggerLocker()
998
            ->release($identifier);
999
    }
1000
1001
    /**
1002
     * {@inheritDoc}
1003
     *
1004
     * @api
1005
     *
1006
     * @param array|string $identifier
1007
     * @param bool $blocking
1008
     *
1009
     * @return bool
1010
     */
1011
    public function acquireOrderLock(array|string $identifier, bool $blocking): bool
1012
    {
1013
        return $this->getFactory()
1014
            ->createTriggerLocker()
1015
            ->acquireForOrder($identifier, $blocking);
1016
    }
1017
1018
    /**
1019
     * {@inheritDoc}
1020
     *
1021
     * @api
1022
     *
1023
     * @param array|string $identifier
1024
     *
1025
     * @return void
1026
     */
1027
    public function releaseOrderLock(array|string $identifier): void
1028
    {
1029
        $this->getFactory()
1030
            ->createTriggerLocker()
1031
            ->releaseForOrder($identifier);
1032
    }
1033
}
1034