Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Calculator.php
Go to the documentation of this file.
1 <?php
13 
15 
20 class Calculator extends Validator
21 {
30  public function processFreeShipping(\Magento\Quote\Model\Quote\Item\AbstractItem $item)
31  {
32  $address = $item->getAddress();
33  $item->setFreeShipping(false);
34 
35  foreach ($this->_getRules($address) as $rule) {
36  /* @var $rule \Magento\SalesRule\Model\Rule */
37  if (!$this->validatorUtility->canProcessRule($rule, $address)) {
38  continue;
39  }
40 
41  if (!$rule->getActions()->validate($item)) {
42  continue;
43  }
44 
45  switch ($rule->getSimpleFreeShipping()) {
47  $item->setFreeShipping($rule->getDiscountQty() ? $rule->getDiscountQty() : true);
48  break;
49 
51  $address->setFreeShipping(true);
52  break;
53  }
54  if ($rule->getStopRulesProcessing()) {
55  break;
56  }
57  }
58  return $this;
59  }
60 }
$address
Definition: customer.php:38
_getRules(Address $address=null)
Definition: Validator.php:162
processFreeShipping(\Magento\Quote\Model\Quote\Item\AbstractItem $item)
Definition: Calculator.php:30