本文整理汇总了PHP中Shipment::getItems方法的典型用法代码示例。如果您正苦于以下问题:PHP Shipment::getItems方法的具体用法?PHP Shipment::getItems怎么用?PHP Shipment::getItems使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Shipment
的用法示例。
在下文中一共展示了Shipment::getItems方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getModel
/**
* @param Shipment $dataObject
* @return \Magento\Sales\Model\Order\Shipment
* @throws \Exception
*/
public function getModel(Shipment $dataObject)
{
$this->shipmentLoader->setOrderId($dataObject->getOrderId());
$this->shipmentLoader->setShipmentId($dataObject->getEntityId());
$items = [];
foreach ($dataObject->getItems() as $item) {
$items[$item->getOrderItemId()] = $item->getQty();
}
$shipmentItems = ['items' => $items];
$this->shipmentLoader->setShipment($shipmentItems);
$this->shipmentLoader->setTracking($dataObject->getTracks());
return $this->shipmentLoader->load();
}
示例2: getDeliveryRate
/**
* Calculate a delivery rate for a particular shipment
*
* @return ShipmentDeliveryRate
*/
public function getDeliveryRate(Shipment $shipment)
{
$hasFreeShipping = false;
// get applicable rates
if (self::WEIGHT_BASED == $this->rangeType->get()) {
$weight = $shipment->getChargeableWeight($this->deliveryZone->get());
$cond = new EqualsOrLessCond(new ARFieldHandle('ShippingRate', 'weightRangeStart'), $weight * 1.000001);
$cond->addAND(new EqualsOrMoreCond(new ARFieldHandle('ShippingRate', 'weightRangeEnd'), $weight * 0.99999));
} else {
$total = $shipment->getSubTotal(Shipment::WITHOUT_TAXES);
$cond = new EqualsOrLessCond(new ARFieldHandle('ShippingRate', 'subtotalRangeStart'), $total * 1.000001);
$cond->addAND(new EqualsOrMoreCond(new ARFieldHandle('ShippingRate', 'subtotalRangeEnd'), $total * 0.99999));
}
$f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('ShippingRate', 'shippingServiceID'), $this->getID()));
$f->mergeCondition($cond);
$rates = ActiveRecordModel::getRecordSet('ShippingRate', $f);
if (!$rates->size()) {
return null;
}
$itemCount = $shipment->getChargeableItemCount($this->deliveryZone->get());
$maxRate = 0;
foreach ($rates as $rate) {
$charge = $rate->flatCharge->get();
foreach ($shipment->getItems() as $item) {
$charge += $rate->getItemCharge($item) * $item->getCount();
}
if (self::WEIGHT_BASED == $this->rangeType->get()) {
$charge += $rate->perKgCharge->get() * $weight;
} else {
$charge += $rate->subtotalPercentCharge->get() / 100 * $total;
}
if ($charge > $maxRate) {
$maxRate = $charge;
}
}
return ShipmentDeliveryRate::getNewInstance($this, $maxRate);
}