/** * @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]); } }
/** * 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); }