![]() 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/Ecombricks/InventorySales/Model/AdminOrder/Create/ |
<?php /** * Copyright © eComBricks. All rights reserved. * See LICENSE.txt for license details. */ namespace Ecombricks\InventorySales\Model\AdminOrder\Create; /** * Create admin order source trait */ trait SourceTrait { /** * Send orders emails * * @return \Magento\Sales\Model\AdminOrder\Create */ protected function sendOrdersEmails($orders) { if (!$this->getSendConfirmation()) { return $this; } foreach ($orders as $order) { $this->emailSender->send($order); } return $this; } /** * Get order data * * @return array */ protected function getOrderData() { $oldOrder = $this->getSession()->getOrder(); if (!$oldOrder->getId()) { return []; } $originalId = $oldOrder->getOriginalIncrementId(); if (!$originalId) { $originalId = $oldOrder->getIncrementId(); } $orderData = []; $index = 0; foreach ($this->getQuote()->getSourceCodes() as $sourceCode) { $orderData[$sourceCode] = [ 'original_increment_id' => $originalId, 'relation_parent_id' => $oldOrder->getId(), 'relation_parent_real_id' => $oldOrder->getIncrementId(), 'edit_increment' => $oldOrder->getEditIncrement() + $index + 1, 'increment_id' => $originalId.'-'.($oldOrder->getEditIncrement() + $index + 1) ]; $index++; } return $orderData; } /** * Create order * * @return array */ public function inventoryCreateOrder() { $this->_prepareCustomer(); $this->_validate(); $this->_prepareQuoteItems(); $orderData = $this->getOrderData(); $orders = $this->quoteManagement->submit($this->getQuote(), $orderData); if (count($orderData) > 0) { $oldOrder = $this->getSession()->getOrder(); if (count($orderData) == 1) { $newOrder = current($orders); $oldOrder->setRelationChildId($newOrder->getId()); $oldOrder->setRelationChildRealId($newOrder->getIncrementId()); $oldOrder->save(); } $this->orderManagement->cancel($oldOrder->getEntityId()); foreach ($orders as $order) { $order->save(); } } $this->sendOrdersEmails($orders); foreach ($orders as $order) { $this->_eventManager->dispatch('checkout_submit_all_after', ['order' => $order, 'quote' => $this->getQuote()]); } return $orders; } }