Beispiel #1
0
 /**
  * @param \Magento\Quote\Model\Quote $quote
  * @return void
  * @throws InputException
  */
 private function processShippingAssignment($quote)
 {
     // Shipping Assignments processing
     $extensionAttributes = $quote->getExtensionAttributes();
     if (!$quote->isVirtual() && $extensionAttributes && $extensionAttributes->getShippingAssignments()) {
         $shippingAssignments = $extensionAttributes->getShippingAssignments();
         if (count($shippingAssignments) > 1) {
             throw new InputException(__("Only 1 shipping assignment can be set"));
         }
         $this->shippingAssignmentPersister->save($quote, $shippingAssignments[0]);
     }
 }
Beispiel #2
0
 /**
  * Set shipping method to quote, if needed
  *
  * @param string $methodCode
  * @return void
  */
 public function updateShippingMethod($methodCode)
 {
     $shippingAddress = $this->_quote->getShippingAddress();
     if (!$this->_quote->getIsVirtual() && $shippingAddress) {
         if ($methodCode != $shippingAddress->getShippingMethod()) {
             $this->ignoreAddressValidation();
             $shippingAddress->setShippingMethod($methodCode)->setCollectShippingRates(true);
             $cartExtension = $this->_quote->getExtensionAttributes();
             if ($cartExtension && $cartExtension->getShippingAssignments()) {
                 $cartExtension->getShippingAssignments()[0]->getShipping()->setMethod($methodCode);
             }
             $this->_quote->collectTotals();
             $this->quoteRepository->save($this->_quote);
         }
     }
 }
 /**
  * @param \Magento\Quote\Model\Quote $quote
  * @return \Magento\Quote\Model\Quote
  */
 private function prepareShippingAssignment($quote)
 {
     $cartExtension = $quote->getExtensionAttributes();
     if ($cartExtension === null) {
         $cartExtension = $this->getCartExtensionFactory()->create();
     }
     /** @var \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment */
     $shippingAssignment = $this->getShippingAssignmentProcessor()->create($quote);
     $shipping = $shippingAssignment->getShipping();
     $shipping->setMethod(null);
     $shippingAssignment->setShipping($shipping);
     $cartExtension->setShippingAssignments([$shippingAssignment]);
     return $quote->setExtensionAttributes($cartExtension);
 }