/** * Get shipped items * * @return array */ public function getItems() { $items = parent::getItems(); if ($this->order->getUsedCoupons()) { foreach ($this->order->getUsedCoupons() as $coupon) { if ($coupon->getCoupon() && $coupon->getCoupon()->isFreeShipping()) { foreach ($items as $k => $item) { if ($coupon->getCoupon()->isValidItem($item)) { unset($items[$k]); } } } } } return $items; }
/** * Returns true if any of order items are shipped * * @return boolean */ protected function isShippable() { $result = parent::isShippable(); foreach (parent::getItems() as $item) { if ($item->isShippable()) { $result = true; break; } } return $result; }
/** * Collect items data from modifier * * @param \XLite\Logic\Order\Modifier\Shipping $modifier Shipping order modifier * * @return array */ protected function getItems($modifier) { $result = array(); /** @var \XLite\Model\OrderItem $item */ foreach ($modifier->getItems() as $item) { $product = $item->getProduct(); /** @var \XLite\Module\XC\AuctionInc\Model\ProductAuctionInc $auctionIncData */ $auctionIncData = $product->getAuctionIncData() ?: new \XLite\Module\XC\AuctionInc\Model\ProductAuctionInc(); $onDemand = array_map(function ($a) { list(, $serviceCode) = explode('_', $a); return $serviceCode; }, $auctionIncData->getOnDemand()); $resultItem = array('calculationMethod' => $auctionIncData->getCalculationMethod(), 'sku' => $product->getSku(), 'name' => $product->getName(), 'qty' => (int) $item->getAmount(), 'weight' => $product->getWeight(), 'weightUOM' => $auctionIncData->getWeightUOM(), 'dimensions' => $auctionIncData->getDimensions(), 'dimensionsUOM' => $auctionIncData->getDimensionsUOM(), 'package' => $auctionIncData->getPackage(), 'originCode' => $auctionIncData->getOriginCode(), 'onDemand' => implode(', ', $onDemand), 'carrierAccessorialFees' => implode(', ', $auctionIncData->getCarrierAccessorialFees())); $resultItem['price'] = 'Y' == $auctionIncData->getInsurable() ? $item->getTotal() / $item->getAmount() : 0; if ('F' == $auctionIncData->getSupplementalItemHandlingMode()) { $resultItem['supplementalItemHandlingFee'] = $auctionIncData->getSupplementalItemHandlingFee(); } elseif ('C' == $auctionIncData->getSupplementalItemHandlingMode()) { $resultItem['supplementalItemHandlingCode'] = $auctionIncData->getSupplementalItemHandlingCode(); } if ('F' == $auctionIncData->getFixedFeeMode()) { $resultItem['fixedFee1'] = $auctionIncData->getFixedFee1(); $resultItem['fixedFee2'] = $auctionIncData->getFixedFee2(); } elseif ('C' == $auctionIncData->getFixedFeeMode()) { $resultItem['fixedFeeCode'] = $auctionIncData->getFixedFeeCode(); } $result[] = $resultItem; } return $result; }
/** * Get packages for shipment * * @param \XLite\Logic\Order\Modifier\Shipping $modifier Shipping modifier * * @return array */ public function getPackages($modifier) { return \XLite\Core\Package::getInstance()->getPackages($modifier->getItems(), $this->getPackageLimits()); }