Ejemplo n.º 1
0
 /**
  * Convert Magento SaleOrderItem to service item.
  *
  * @param \Magento\Sales\Api\Data\OrderItemInterface $item
  * @param int $stockId
  * @return \Praxigento\Pv\Service\Sale\Data\Item
  */
 public function getServiceItemForMageItem(\Magento\Sales\Api\Data\OrderItemInterface $item, $stockId = null)
 {
     $result = $this->_manObj->create(\Praxigento\Pv\Service\Sale\Data\Item::class);
     $prodId = $item->getProductId();
     $itemId = $item->getItemId();
     /* qty of the product can be changed in invoice but we use ordered only */
     $qty = $item->getQtyOrdered();
     /* create data item for service */
     $result->setItemId($itemId);
     $result->setProductId($prodId);
     $result->setQuantity($qty);
     $result->setStockId($stockId);
     return $result;
 }
Ejemplo n.º 2
0
 /**
  * Retrieve order item's buy request
  *
  * @param OrderItemInterface $entity
  * @return DataObject
  */
 protected function getBuyRequest(OrderItemInterface $entity)
 {
     $request = $this->objectFactory->create(['qty' => $entity->getQtyOrdered()]);
     $productType = $entity->getProductType();
     if (isset($this->processorPool[$productType]) && !$entity->getParentItemId()) {
         $productOption = $entity->getProductOption();
         if ($productOption) {
             $requestUpdate = $this->processorPool[$productType]->convertToBuyRequest($productOption);
             $request->addData($requestUpdate->getData());
         }
     }
     if (isset($this->processorPool['custom_options']) && !$entity->getParentItemId()) {
         $productOption = $entity->getProductOption();
         if ($productOption) {
             $requestUpdate = $this->processorPool['custom_options']->convertToBuyRequest($productOption);
             $request->addData($requestUpdate->getData());
         }
     }
     return $request;
 }
Ejemplo n.º 3
0
 /**
  * @param \Magento\Sales\Api\Data\OrderItemInterface $item
  * @return bool
  */
 protected function isProductCalculated(\Magento\Sales\Api\Data\OrderItemInterface $item)
 {
     // @see \Magento\Tax\Model\Sales\Total\Quote\CommonTaxCollector::mapItems
     if ($item->getHasChildren() && $item->isChildrenCalculated()) {
         return false;
     } else {
         return true;
     }
 }
Ejemplo n.º 4
0
/**
 * 2016-05-03
 * Заметил, что у order item, которым соответствуют простые варианты настраиваемого товара,
 * цена почему-то равна нулю и содержится в родительском order item.
 * 2016-08-17
 * Цена возвращается в валюте заказа (не в учётной валюте системы).
 * @param OI|IOI $item
 * @return float
 */
function df_oi_price(IOI $item)
{
    return $item->getPrice() ?: ($item->getParentItem() ? df_oi_price($item->getParentItem()) : 0);
}
Ejemplo n.º 5
0
 /**
  * Check if order item can be invoiced. Dummy item can be invoiced or with his children or
  * with parent item which is included to invoice
  *
  * @param \Magento\Sales\Api\Data\OrderItemInterface $item
  * @return bool
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 protected function _canInvoiceItem(\Magento\Sales\Api\Data\OrderItemInterface $item)
 {
     $qtys = [];
     if ($item->getLockedDoInvoice()) {
         return false;
     }
     if ($item->isDummy()) {
         if ($item->getHasChildren()) {
             foreach ($item->getChildrenItems() as $child) {
                 if (empty($qtys)) {
                     if ($child->getQtyToInvoice() > 0) {
                         return true;
                     }
                 } else {
                     if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
                         return true;
                     }
                 }
             }
             return false;
         } elseif ($item->getParentItem()) {
             $parent = $item->getParentItem();
             if (empty($qtys)) {
                 return $parent->getQtyToInvoice() > 0;
             } else {
                 return isset($qtys[$parent->getId()]) && $qtys[$parent->getId()] > 0;
             }
         }
     } else {
         return $item->getQtyToInvoice() > 0;
     }
 }