diff --git a/Model/Api/AbstractBuilder.php b/Model/Api/AbstractBuilder.php index be5244d..a486428 100644 --- a/Model/Api/AbstractBuilder.php +++ b/Model/Api/AbstractBuilder.php @@ -13,28 +13,34 @@ abstract class AbstractBuilder implements BuilderInterface const STATE_APPROVED = 'approved'; public static $centsPerWhole = 100; protected $merchant_id; + /** * @var \Magento\Sales\Model\OrderFactory */ protected $_orderFactory; + /** * @var \Magento\Catalog\Api\ProductRepositoryInterface */ protected $_productRepository; + /** * Order object or Quote Object * * @var \Magento\Framework\Model\AbstractModel */ protected $_order; + /** * @var \Magento\Framework\UrlInterface */ protected $_urlBuilder; + /** * @var \Magento\Framework\Locale\ResolverInterface */ protected $_localeResolver; + /** * Core store config * @@ -42,12 +48,18 @@ abstract class AbstractBuilder implements BuilderInterface */ protected $_scopeConfig; + /** + * @var \Psr\Log\LoggerInterface + */ + protected $_logger; + public function __construct( \Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Catalog\Api\ProductRepositoryInterface $productRepository, \Magento\Framework\UrlInterface $urlBuilder, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, - \Magento\Framework\Locale\ResolverInterface $localeResolver + \Magento\Framework\Locale\ResolverInterface $localeResolver, + \Psr\Log\LoggerInterface $logger ) { $this->_orderFactory = $orderFactory; $this->_productRepository = $productRepository; @@ -55,6 +67,7 @@ public function __construct( $this->_scopeConfig = $scopeConfig; $this->_localeResolver = $localeResolver; $this->merchant_id = $this->getConfigData('merchant_ref'); + $this->_logger = $logger; } public function getConfigData($field, $storeId = null) diff --git a/Model/Api/Builder/Order.php b/Model/Api/Builder/Order.php index 1df62c2..00f58a3 100644 --- a/Model/Api/Builder/Order.php +++ b/Model/Api/Builder/Order.php @@ -28,13 +28,16 @@ public function __construct( \Magento\Framework\UrlInterface $urlBuilder, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Locale\ResolverInterface $localeResolver, + \Psr\Log\LoggerInterface $logger, \Magento\Customer\Model\Session $customerSession ) { parent::__construct($orderFactory, $productRepository, $urlBuilder, $scopeConfig, - $localeResolver); + $localeResolver, + $logger + ); $this->_customerSession = $customerSession; } diff --git a/Model/Api/Builder/Report.php b/Model/Api/Builder/Report.php index dcbfa60..c0392dc 100644 --- a/Model/Api/Builder/Report.php +++ b/Model/Api/Builder/Report.php @@ -55,13 +55,14 @@ public function __construct( \Magento\Catalog\Api\ProductRepositoryInterface $productRepository, \Magento\Framework\UrlInterface $urlBuilder, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, - \Magento\Framework\Locale\ResolverInterface $localeResolver + \Magento\Framework\Locale\ResolverInterface $localeResolver, + \Psr\Log\LoggerInterface $logger ) { $this->_orderRepository = $orderRepository; $this->_orderCollectionFactory = $orderCollectionFactory; $this->customerRepository = $customerRepository; $this->_searchCriteriaBuilder = $searchCriteriaBuilder; - parent::__construct($orderFactory, $productRepository, $urlBuilder, $scopeConfig, $localeResolver); + parent::__construct($orderFactory, $productRepository, $urlBuilder, $scopeConfig, $localeResolver, $logger); } @@ -392,10 +393,20 @@ public function productItem() { $items = array(); foreach ($this->_order->getAllVisibleItems() as $itemOb) { - if (isnull($itemOb->getProductId()) || $itemOb->getQtyShipped() <= 0) { + if (is_null($itemOb->getProductId()) || $itemOb->getQtyShipped() <= 0) { continue; } - $product = $this->_productRepository->getById($itemOb->getProductId()); + try { + $product = $this->_productRepository->getById($itemOb->getProductId()); + } catch (Exception $e) { + $this->_logger->addError( + 'Can not get product for id: ' . + $itemOb->getProductId() . + ' ' . $e->getMessage() + ); + continue; + } + $item = $this->fillOptionalProductItemFields($product); $item["reference"] = self::notNull($itemOb->getSku()); $item["name"] = $itemOb->getName() ? self::notNull($itemOb->getName()) : self::notNull($itemOb->getSku());