![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/app/code/Cnc/OrderFlow/Setup/Patch/Data/ |
<?php declare(strict_types=1); namespace Cnc\OrderFlow\Setup\Patch\Data; use Magento\Framework\Setup\Patch\DataPatchInterface; use Magento\Sales\Model\Order; use Magento\Sales\Model\Order\Status; use Magento\Sales\Model\Order\StatusFactory; use Magento\Sales\Model\ResourceModel\Order\Status as StatusResource; use Magento\Sales\Model\ResourceModel\Order\StatusFactory as StatusResourceFactory; class CreateOrderStatus implements DataPatchInterface { protected const ORDER_CUSTOM_STATUS = [ 'processing' => [ [ 'code' => 'transfer_invoiced', 'label' => 'Virement facturé', ], [ 'code' => 'transfer_received', 'label' => 'Virement reçu', ], [ 'code' => 'to_ship', 'label' => 'A expédier', ], ], 'complete' => [ [ 'code' => 'to_validate', 'label' => 'A valider', ], ], ]; /** @var StatusFactory */ protected $statusFactory; /** @var StatusResourceFactory */ protected $statusResourceFactory; public function __construct( StatusFactory $statusFactory, StatusResourceFactory $statusResourceFactory ) { $this->statusFactory = $statusFactory; $this->statusResourceFactory = $statusResourceFactory; } public function apply(): void { $this->addCustomStatusInProcessing(); $this->addCustomStatusInComplete(); } private function addCustomStatusInProcessing(): void { foreach (self::ORDER_CUSTOM_STATUS['processing'] as $customStatus) { /** @var StatusResource $statusResource */ $statusResource = $this->statusResourceFactory->create(); /** @var Status $status */ $status = $this->statusFactory->create(); $status->setData([ 'status' => $customStatus['code'], 'label' => $customStatus['label'], ]); $statusResource->save($status); $status->assignState(Order::STATE_PROCESSING, false, true); } } private function addCustomStatusInComplete(): void { foreach (self::ORDER_CUSTOM_STATUS['complete'] as $customStatus) { /** @var StatusResource $statusResource */ $statusResource = $this->statusResourceFactory->create(); /** @var Status $status */ $status = $this->statusFactory->create(); $status->setData([ 'status' => $customStatus['code'], 'label' => $customStatus['label'], ]); $statusResource->save($status); $status->assignState(Order::STATE_COMPLETE, false, true); } } public static function getDependencies(): array { return []; } public function getAliases(): array { return []; } }