|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / app / code / SendCloud / SendCloud / Plugin / Order / |
Filename | /home/dev2.destoffenstraat.com/app/code/SendCloud/SendCloud/Plugin/Order/OrderItemRepository.php |
Size | 3.07 kb |
Permission | rwxrwxrwx |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 11-Feb-2023 11:04 |
Last accessed | 23-Aug-2025 02:07 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
namespace SendCloud\SendCloud\Plugin\Order;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Sales\Api\Data\OrderItemExtensionFactory;
use Magento\Sales\Api\Data\OrderItemInterface;
use Magento\Sales\Api\Data\OrderItemSearchResultInterface;
use Magento\Sales\Api\OrderItemRepositoryInterface;
use SendCloud\SendCloud\Logger\SendCloudLogger;
class OrderItemRepository
{
const HS_CODE = 'hs_code';
const COUNTRY_OF_MANUFACTURE = 'country_of_manufacture';
/**
* @var OrderItemExtensionFactory
*/
private $extensionFactory;
/**
* @var ProductRepositoryInterface
*/
private $productRepository;
/**
* @var SendCloudLogger
*/
private $logger;
/**
* OrderItemRepository constructor.
* @param OrderItemExtensionFactory $extensionFactory
* @param ProductRepositoryInterface $productRepository
* @param SendCloudLogger $logger
*/
public function __construct(OrderItemExtensionFactory $extensionFactory, ProductRepositoryInterface $productRepository, SendCloudLogger $logger)
{
$this->extensionFactory = $extensionFactory;
$this->productRepository = $productRepository;
$this->logger = $logger;
}
/**
* @param OrderItemRepositoryInterface $subject
* @param OrderItemInterface $orderItem
* @return OrderItemInterface
* @throws NoSuchEntityException
*/
public function afterGet(OrderItemRepositoryInterface $subject, OrderItemInterface $orderItem)
{
$this->setCustomAttributes($orderItem);
return $orderItem;
}
/**
* @param OrderItemRepositoryInterface $subject
* @param OrderItemSearchResultInterface $searchResult
* @return OrderItemSearchResultInterface
* @throws NoSuchEntityException
*/
public function afterGetList(OrderItemRepositoryInterface $subject, OrderItemSearchResultInterface $searchResult)
{
$orderItems = $searchResult->getItems();
foreach ($orderItems as $orderItem) {
$this->setCustomAttributes($orderItem);
}
return $searchResult;
}
/**
* @param $orderItem
* @return OrderItemRepository
* @throws NoSuchEntityException
*/
protected function setCustomAttributes($orderItem)
{
try {
$product = $this->productRepository->getById($orderItem->getProductId());
$countryOfManufacture = $product->getData(self::COUNTRY_OF_MANUFACTURE);
$hsCode = $product->getData(self::HS_CODE);
$extensionAttributes = $orderItem->getExtensionAttributes();
$extensionAttributes = $extensionAttributes ? $extensionAttributes : $this->extensionFactory->create();
$extensionAttributes->setCountryOfManufacture($countryOfManufacture);
$extensionAttributes->setHsCode($hsCode);
$orderItem->setExtensionAttributes($extensionAttributes);
} catch (NoSuchEntityException $e) {
$this->logger->debug($e->getMessage());
}
return $this;
}
}
namespace SendCloud\SendCloud\Plugin\Order;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Sales\Api\Data\OrderItemExtensionFactory;
use Magento\Sales\Api\Data\OrderItemInterface;
use Magento\Sales\Api\Data\OrderItemSearchResultInterface;
use Magento\Sales\Api\OrderItemRepositoryInterface;
use SendCloud\SendCloud\Logger\SendCloudLogger;
class OrderItemRepository
{
const HS_CODE = 'hs_code';
const COUNTRY_OF_MANUFACTURE = 'country_of_manufacture';
/**
* @var OrderItemExtensionFactory
*/
private $extensionFactory;
/**
* @var ProductRepositoryInterface
*/
private $productRepository;
/**
* @var SendCloudLogger
*/
private $logger;
/**
* OrderItemRepository constructor.
* @param OrderItemExtensionFactory $extensionFactory
* @param ProductRepositoryInterface $productRepository
* @param SendCloudLogger $logger
*/
public function __construct(OrderItemExtensionFactory $extensionFactory, ProductRepositoryInterface $productRepository, SendCloudLogger $logger)
{
$this->extensionFactory = $extensionFactory;
$this->productRepository = $productRepository;
$this->logger = $logger;
}
/**
* @param OrderItemRepositoryInterface $subject
* @param OrderItemInterface $orderItem
* @return OrderItemInterface
* @throws NoSuchEntityException
*/
public function afterGet(OrderItemRepositoryInterface $subject, OrderItemInterface $orderItem)
{
$this->setCustomAttributes($orderItem);
return $orderItem;
}
/**
* @param OrderItemRepositoryInterface $subject
* @param OrderItemSearchResultInterface $searchResult
* @return OrderItemSearchResultInterface
* @throws NoSuchEntityException
*/
public function afterGetList(OrderItemRepositoryInterface $subject, OrderItemSearchResultInterface $searchResult)
{
$orderItems = $searchResult->getItems();
foreach ($orderItems as $orderItem) {
$this->setCustomAttributes($orderItem);
}
return $searchResult;
}
/**
* @param $orderItem
* @return OrderItemRepository
* @throws NoSuchEntityException
*/
protected function setCustomAttributes($orderItem)
{
try {
$product = $this->productRepository->getById($orderItem->getProductId());
$countryOfManufacture = $product->getData(self::COUNTRY_OF_MANUFACTURE);
$hsCode = $product->getData(self::HS_CODE);
$extensionAttributes = $orderItem->getExtensionAttributes();
$extensionAttributes = $extensionAttributes ? $extensionAttributes : $this->extensionFactory->create();
$extensionAttributes->setCountryOfManufacture($countryOfManufacture);
$extensionAttributes->setHsCode($hsCode);
$orderItem->setExtensionAttributes($extensionAttributes);
} catch (NoSuchEntityException $e) {
$this->logger->debug($e->getMessage());
}
return $this;
}
}