mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
52 lines
1.3 KiB
PHP
52 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\InstantPurchase\Model\ShippingMethodChoose;
|
|
|
|
use Magento\Quote\Model\Quote\Address;
|
|
use Magento\Quote\Model\Quote\Address\Rate;
|
|
|
|
/**
|
|
* Choose cheapest shipping method for defined quote.
|
|
*/
|
|
class CheapestMethodDeferredChooser implements DeferredShippingMethodChooserInterface
|
|
{
|
|
const METHOD_CODE = 'cheapest';
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function choose(Address $address)
|
|
{
|
|
$address->setCollectShippingRates(true);
|
|
$address->collectShippingRates();
|
|
$shippingRates = $address->getAllShippingRates();
|
|
|
|
if (empty($shippingRates)) {
|
|
return null;
|
|
}
|
|
|
|
$cheapestRate = $this->selectCheapestRate($shippingRates);
|
|
return $cheapestRate->getCode();
|
|
}
|
|
|
|
/**
|
|
* Selects shipping price with minimal price.
|
|
*
|
|
* @param Rate[] $shippingRates
|
|
* @return Rate
|
|
*/
|
|
private function selectCheapestRate(array $shippingRates) : Rate
|
|
{
|
|
$rate = array_shift($shippingRates);
|
|
foreach ($shippingRates as $tmpRate) {
|
|
if ($tmpRate->getPrice() < $rate->getPrice()) {
|
|
$rate = $tmpRate;
|
|
}
|
|
}
|
|
return $rate;
|
|
}
|
|
}
|