![]() 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/cartforge.co/vendor/magento/module-sales/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Sales\Model; use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface; use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\Exception\InputException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Sales\Api\Data\OrderExtensionFactory; use Magento\Sales\Api\Data\OrderExtensionInterface; use Magento\Sales\Api\Data\OrderInterface; use Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory as SearchResultFactory; use Magento\Sales\Api\Data\ShippingAssignmentInterface; use Magento\Sales\Model\Order\ShippingAssignmentBuilder; use Magento\Sales\Model\ResourceModel\Metadata; use Magento\Tax\Api\OrderTaxManagementInterface; use Magento\Payment\Api\Data\PaymentAdditionalInfoInterface; use Magento\Payment\Api\Data\PaymentAdditionalInfoInterfaceFactory; use Magento\Framework\Serialize\Serializer\Json as JsonSerializer; /** * Repository class * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class OrderRepository implements \Magento\Sales\Api\OrderRepositoryInterface { /** * @var Metadata */ protected $metadata; /** * @var SearchResultFactory */ protected $searchResultFactory = null; /** * @var OrderExtensionFactory */ private $orderExtensionFactory; /** * @var ShippingAssignmentBuilder */ private $shippingAssignmentBuilder; /** * @var CollectionProcessorInterface */ private $collectionProcessor; /** * @var OrderInterface[] */ protected $registry = []; /** * @var OrderTaxManagementInterface */ private $orderTaxManagement; /** * @var PaymentAdditionalInfoFactory */ private $paymentAdditionalInfoFactory; /** * @var JsonSerializer */ private $serializer; /** * @var JoinProcessorInterface */ private $extensionAttributesJoinProcessor; /** * Constructor * * @param Metadata $metadata * @param SearchResultFactory $searchResultFactory * @param CollectionProcessorInterface|null $collectionProcessor * @param \Magento\Sales\Api\Data\OrderExtensionFactory|null $orderExtensionFactory * @param OrderTaxManagementInterface|null $orderTaxManagement * @param PaymentAdditionalInfoInterfaceFactory|null $paymentAdditionalInfoFactory * @param JsonSerializer|null $serializer * @param JoinProcessorInterface $extensionAttributesJoinProcessor */ public function __construct( Metadata $metadata, SearchResultFactory $searchResultFactory, CollectionProcessorInterface $collectionProcessor = null, \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory = null, OrderTaxManagementInterface $orderTaxManagement = null, PaymentAdditionalInfoInterfaceFactory $paymentAdditionalInfoFactory = null, JsonSerializer $serializer = null, JoinProcessorInterface $extensionAttributesJoinProcessor = null ) { $this->metadata = $metadata; $this->searchResultFactory = $searchResultFactory; $this->collectionProcessor = $collectionProcessor ?: ObjectManager::getInstance() ->get(\Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface::class); $this->orderExtensionFactory = $orderExtensionFactory ?: ObjectManager::getInstance() ->get(\Magento\Sales\Api\Data\OrderExtensionFactory::class); $this->orderTaxManagement = $orderTaxManagement ?: ObjectManager::getInstance() ->get(OrderTaxManagementInterface::class); $this->paymentAdditionalInfoFactory = $paymentAdditionalInfoFactory ?: ObjectManager::getInstance() ->get(PaymentAdditionalInfoInterfaceFactory::class); $this->serializer = $serializer ?: ObjectManager::getInstance() ->get(JsonSerializer::class); $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor ?: ObjectManager::getInstance()->get(JoinProcessorInterface::class); } /** * Load entity * * @param int $id * @return \Magento\Sales\Api\Data\OrderInterface * @throws \Magento\Framework\Exception\InputException * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function get($id) { if (!$id) { throw new InputException(__('An ID is needed. Set the ID and try again.')); } if (!isset($this->registry[$id])) { /** @var OrderInterface $entity */ $entity = $this->metadata->getNewInstance()->load($id); if (!$entity->getEntityId()) { throw new NoSuchEntityException( __("The entity that was requested doesn't exist. Verify the entity and try again.") ); } $this->setOrderTaxDetails($entity); $this->setShippingAssignments($entity); $this->setPaymentAdditionalInfo($entity); $this->registry[$id] = $entity; } return $this->registry[$id]; } /** * Set order tax details to extension attributes. * * @param OrderInterface $order * @return void */ private function setOrderTaxDetails(OrderInterface $order) { $extensionAttributes = $order->getExtensionAttributes(); if ($extensionAttributes === null) { $extensionAttributes = $this->orderExtensionFactory->create(); } $orderTaxDetails = $this->orderTaxManagement->getOrderTaxDetails($order->getEntityId()); $appliedTaxes = $orderTaxDetails->getAppliedTaxes(); $extensionAttributes->setAppliedTaxes($appliedTaxes); if (!empty($appliedTaxes)) { $extensionAttributes->setConvertingFromQuote(true); } $items = $orderTaxDetails->getItems(); $extensionAttributes->setItemAppliedTaxes($items); $order->setExtensionAttributes($extensionAttributes); } /** * Set additional info to the order. * * @param OrderInterface $order * @return void */ private function setPaymentAdditionalInfo(OrderInterface $order): void { $extensionAttributes = $order->getExtensionAttributes(); if ($extensionAttributes === null) { $extensionAttributes = $this->orderExtensionFactory->create(); } $paymentAdditionalInformation = []; $payment = $order->getPayment(); if ($payment) { $paymentAdditionalInformation = $payment->getAdditionalInformation(); } $objects = []; foreach ($paymentAdditionalInformation as $key => $value) { /** @var PaymentAdditionalInfoInterface $additionalInformationObject */ $additionalInformationObject = $this->paymentAdditionalInfoFactory->create(); $additionalInformationObject->setKey($key); if (!is_string($value)) { $value = $this->serializer->serialize($value); } $additionalInformationObject->setValue($value); $objects[] = $additionalInformationObject; } $extensionAttributes->setPaymentAdditionalInfo($objects); $order->setExtensionAttributes($extensionAttributes); } /** * Find entities by criteria * * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria * @return \Magento\Sales\Api\Data\OrderSearchResultInterface */ public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria) { /** @var \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult */ $searchResult = $this->searchResultFactory->create(); $this->extensionAttributesJoinProcessor->process($searchResult); $this->collectionProcessor->process($searchCriteria, $searchResult); $searchResult->setSearchCriteria($searchCriteria); foreach ($searchResult->getItems() as $order) { $this->setShippingAssignments($order); $this->setOrderTaxDetails($order); $this->setPaymentAdditionalInfo($order); } return $searchResult; } /** * Register entity to delete * * @param \Magento\Sales\Api\Data\OrderInterface $entity * @return bool */ public function delete(\Magento\Sales\Api\Data\OrderInterface $entity) { $this->metadata->getMapper()->delete($entity); unset($this->registry[$entity->getEntityId()]); return true; } /** * Delete entity by Id * * @param int $id * @return bool */ public function deleteById($id) { $entity = $this->get($id); return $this->delete($entity); } /** * Perform persist operations for one entity * * @param OrderInterface $entity * @return OrderInterface * @throws InputException * @throws NoSuchEntityException * @throws \Magento\Framework\Exception\AlreadyExistsException */ public function save(\Magento\Sales\Api\Data\OrderInterface $entity) { /** @var \Magento\Sales\Api\Data\OrderExtensionInterface $extensionAttributes */ $extensionAttributes = $entity->getExtensionAttributes(); if ($entity->getIsNotVirtual() && $extensionAttributes && $extensionAttributes->getShippingAssignments()) { $shippingAssignments = $extensionAttributes->getShippingAssignments(); if (!empty($shippingAssignments)) { $shipping = array_shift($shippingAssignments)->getShipping(); $entity->setShippingAddress($shipping->getAddress()); $entity->setShippingMethod($shipping->getMethod()); } } $this->metadata->getMapper()->save($entity); $this->registry[$entity->getEntityId()] = $entity; return $this->registry[$entity->getEntityId()]; } /** * Set shipping assignments to extension attributes. * * @param OrderInterface $order * @return void */ private function setShippingAssignments(OrderInterface $order) { /** @var OrderExtensionInterface $extensionAttributes */ $extensionAttributes = $order->getExtensionAttributes(); if ($extensionAttributes === null) { $extensionAttributes = $this->orderExtensionFactory->create(); } elseif ($extensionAttributes->getShippingAssignments() !== null) { return; } /** @var ShippingAssignmentInterface $shippingAssignment */ $shippingAssignments = $this->getShippingAssignmentBuilderDependency(); $shippingAssignments->setOrderId($order->getEntityId()); $extensionAttributes->setShippingAssignments($shippingAssignments->create()); $order->setExtensionAttributes($extensionAttributes); } /** * Get the new ShippingAssignmentBuilder dependency for application code * * @return ShippingAssignmentBuilder * @deprecated 100.0.4 */ private function getShippingAssignmentBuilderDependency() { if (!$this->shippingAssignmentBuilder instanceof ShippingAssignmentBuilder) { $this->shippingAssignmentBuilder = \Magento\Framework\App\ObjectManager::getInstance()->get( \Magento\Sales\Model\Order\ShippingAssignmentBuilder::class ); } return $this->shippingAssignmentBuilder; } /** * Helper function that adds a FilterGroup to the collection. * * @param \Magento\Framework\Api\Search\FilterGroup $filterGroup * @param \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult * @return void * @deprecated 101.0.0 * @throws \Magento\Framework\Exception\InputException */ protected function addFilterGroupToCollection( \Magento\Framework\Api\Search\FilterGroup $filterGroup, \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult ) { $fields = []; $conditions = []; foreach ($filterGroup->getFilters() as $filter) { $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq'; $conditions[] = [$condition => $filter->getValue()]; $fields[] = $filter->getField(); } if ($fields) { $searchResult->addFieldToFilter($fields, $conditions); } } }