Example #1
0
 /**
  * Allows free shipping when all product items have free shipping (promotions etc.)
  *
  * @param \Magento\Sales\Model\Quote\Address\RateRequest $request
  * @return void
  */
 protected function _updateFreeMethodQuote($request)
 {
     $freeShipping = false;
     $items = $request->getAllItems();
     $c = count($items);
     for ($i = 0; $i < $c; $i++) {
         if ($items[$i]->getProduct() instanceof \Magento\Catalog\Model\Product) {
             if ($items[$i]->getFreeShipping()) {
                 $freeShipping = true;
             } else {
                 return;
             }
         }
     }
     if ($freeShipping) {
         $request->setFreeShipping(true);
     }
 }