本文整理匯總了PHP中Shipment::getChargeableWeight方法的典型用法代碼示例。如果您正苦於以下問題:PHP Shipment::getChargeableWeight方法的具體用法?PHP Shipment::getChargeableWeight怎麽用?PHP Shipment::getChargeableWeight使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Shipment
的用法示例。
在下文中一共展示了Shipment::getChargeableWeight方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: getRealTimeRates
public static function getRealTimeRates(ShippingRateCalculator $handler, Shipment $shipment)
{
$rates = new ShippingRateSet();
$handler->setWeight($shipment->getChargeableWeight());
$order = $shipment->order->get();
if ($order->isMultiAddress->get()) {
$address = $shipment->shippingAddress->get();
} else {
$address = $order->shippingAddress->get();
}
if (!$address) {
return $rates;
}
$handler->setDestCountry($address->countryID->get());
$handler->setDestState($address->state->get() ? $address->state->get()->code->get() : $address->stateName->get());
$handler->setDestZip($address->postalCode->get());
$config = $shipment->getApplication()->getConfig();
$handler->setSourceCountry($config->get('STORE_COUNTRY'));
$handler->setSourceZip($config->get('STORE_ZIP'));
$handler->setSourceState($config->get('STORE_STATE'));
foreach ($handler->getAllRates() as $k => $rate) {
$newRate = new ShipmentDeliveryRate();
$newRate->setApplication($shipment->getApplication());
$newRate->setCost($rate->getCostAmount(), $rate->getCostCurrency());
$newRate->setServiceName($rate->getServiceName());
$newRate->setClassName($rate->getClassName());
$newRate->setProviderName($rate->getProviderName());
$newRate->setServiceId($rate->getClassName() . '_' . $k);
$rates->add($newRate);
}
return $rates;
}
示例2: getRealTimeRates
public static function getRealTimeRates(ShippingRateCalculator $handler, Shipment $shipment)
{
$rates = new ShippingRateSet();
$handler->setWeight($shipment->getChargeableWeight());
$order = $shipment->order->get();
// TODO: fix issue when address has zip and country data, but are missing city, user and record id!
// (now workround - get address id, if $address has no id, load address by id)
if ($order->isMultiAddress->get()) {
$address = $shipment->shippingAddress->get();
$arr = $shipment->toArray();
} else {
$address = $order->shippingAddress->get();
$arr = $order->toArray();
}
if (!$address->getID() && array_key_exists('shippingAddressID', $arr)) {
$address = ActiveRecordModel::getInstanceByID('UserAddress', $arr['shippingAddressID'], true);
}
if (!$address) {
return $rates;
}
$handler->setDestCountry($address->countryID->get());
$handler->setDestState($address->state->get() ? $address->state->get()->code->get() : $address->stateName->get());
$handler->setDestZip($address->postalCode->get());
$handler->setDestCity($address->city->get());
$config = $shipment->getApplication()->getConfig();
$handler->setSourceCountry($config->get('STORE_COUNTRY'));
$handler->setSourceZip($config->get('STORE_ZIP'));
$handler->setSourceState($config->get('STORE_STATE'));
foreach ($handler->getAllRates() as $k => $rate) {
$newRate = new ShipmentDeliveryRate();
$newRate->setApplication($shipment->getApplication());
$newRate->setCost($rate->getCostAmount(), $rate->getCostCurrency());
$newRate->setServiceName($rate->getServiceName());
$newRate->setClassName($rate->getClassName());
$newRate->setProviderName($rate->getProviderName());
$newRate->setServiceId($rate->getClassName() . '_' . $k);
$rates->add($newRate);
}
return $rates;
}
示例3: 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);
}