/**
  * Creates a sample order
  *
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 public function createOrder()
 {
     $store = $this->storeManager->getStore();
     $websiteId = $this->storeManager->getStore()->getWebsiteId();
     $customer = $this->getCustomer();
     $repositoryCustomer = $this->customerRepository->getById($customer->getId());
     $quote = $this->quoteFactory->create();
     $quote->setStore($store);
     $quote->assignCustomer($repositoryCustomer);
     $this->addItemsToQuote($quote);
     $quote->getBillingAddress()->addData($this->orderSampleData['address']);
     $quote->getShippingAddress()->addData($this->orderSampleData['address']);
     $this->addressRate->setCode(self::ORDER_SHIPPING_METHOD_CODE);
     $this->addressRate->getPrice(1);
     $shippingAddress = $quote->getShippingAddress();
     $shippingAddress->addShippingRate($this->addressRate);
     $shippingAddress->setCollectShippingRates(true)->collectShippingRates()->setShippingMethod(self::ORDER_SHIPPING_METHOD_CODE);
     $quote->setPaymentMethod(self::ORDER_PAYMENT_METHOD_CODE);
     $quote->setInventoryProcessed(false);
     $quote->save();
     $quote->getPayment()->importData(['method' => self::ORDER_PAYMENT_METHOD_CODE]);
     $quote->collectTotals()->save();
     $order = $this->quoteManagement->submit($quote);
     $order->setEmailSent(0);
 }
Ejemplo n.º 2
0
 public function testCollect()
 {
     $this->shippingAssignment->expects($this->exactly(3))->method('getShipping')->willReturn($this->shipping);
     $this->shipping->expects($this->exactly(2))->method('getAddress')->willReturn($this->address);
     $this->shipping->expects($this->once())->method('getMethod')->willReturn('flatrate');
     $this->shippingAssignment->expects($this->atLeastOnce())->method('getItems')->willReturn([$this->cartItem]);
     $this->freeShipping->expects($this->once())->method('isFreeShipping')->with($this->quote, [$this->cartItem])->willReturn(true);
     $this->address->expects($this->once())->method('setFreeShipping')->with(true);
     $this->total->expects($this->atLeastOnce())->method('setTotalAmount');
     $this->total->expects($this->atLeastOnce())->method('setBaseTotalAmount');
     $this->cartItem->expects($this->atLeastOnce())->method('getProduct')->willReturnSelf();
     $this->cartItem->expects($this->atLeastOnce())->method('isVirtual')->willReturn(false);
     $this->cartItem->expects($this->once())->method('getParentItem')->willReturn(false);
     $this->cartItem->expects($this->once())->method('getHasChildren')->willReturn(false);
     $this->cartItem->expects($this->once())->method('getWeight')->willReturn(2);
     $this->cartItem->expects($this->atLeastOnce())->method('getQty')->willReturn(2);
     $this->address->expects($this->once())->method('getFreeShipping')->willReturn(true);
     $this->cartItem->expects($this->once())->method('setRowWeight')->with(0);
     $this->address->expects($this->once())->method('setItemQty')->with(2);
     $this->address->expects($this->atLeastOnce())->method('setWeight');
     $this->address->expects($this->atLeastOnce())->method('setFreeMethodWeight');
     $this->address->expects($this->once())->method('collectShippingRates');
     $this->address->expects($this->once())->method('getAllShippingRates')->willReturn([$this->rate]);
     $this->rate->expects($this->once())->method('getCode')->willReturn('flatrate');
     $this->quote->expects($this->once())->method('getStore')->willReturn($this->store);
     $this->rate->expects($this->atLeastOnce())->method('getPrice')->willReturn(5);
     $this->priceCurrency->expects($this->once())->method('convert')->with(5, $this->store)->willReturn(5);
     $this->total->expects($this->once())->method('setShippingAmount')->with(5);
     $this->rate->expects($this->once())->method('getCarrierTitle')->willReturn('Carrier title');
     $this->rate->expects($this->once())->method('getMethodTitle')->willReturn('Method title');
     $this->address->expects($this->once())->method('setShippingDescription')->with('Carrier title - Method title');
     $this->address->expects($this->once())->method('getShippingDescription')->willReturn('Carrier title - Method title');
     $this->total->expects($this->once())->method('setShippingDescription')->with('Carrier title - Method title');
     $this->shippingModel->collect($this->quote, $this->shippingAssignment, $this->total);
 }
 /**
  * Converts a specified rate model to a shipping method data object.
  *
  * @param string $quoteCurrencyCode The quote currency code.
  * @param \Magento\Quote\Model\Quote\Address\Rate $rateModel The rate model.
  * @return mixed Shipping method data object.
  */
 public function modelToDataObject($rateModel, $quoteCurrencyCode)
 {
     /** @var \Magento\Directory\Model\Currency $currency */
     $currency = $this->storeManager->getStore()->getBaseCurrency();
     $errorMessage = $rateModel->getErrorMessage();
     return $this->shippingMethodDataFactory->create()->setCarrierCode($rateModel->getCarrier())->setMethodCode($rateModel->getMethod())->setCarrierTitle($rateModel->getCarrierTitle())->setMethodTitle($rateModel->getMethodTitle())->setAmount($currency->convert($rateModel->getPrice(), $quoteCurrencyCode))->setBaseAmount($rateModel->getPrice())->setAvailable(empty($errorMessage));
 }
Ejemplo n.º 4
0
 /**
  * Add shipping rate
  *
  * @param \Magento\Quote\Model\Quote\Address\Rate $rate
  * @return $this
  */
 public function addShippingRate(\Magento\Quote\Model\Quote\Address\Rate $rate)
 {
     $rate->setAddress($this);
     $this->getShippingRatesCollection()->addItem($rate);
     return $this;
 }
 /**
  * Get Shipping Price including or excluding tax
  *
  * @param \Magento\Quote\Model\Quote\Address\Rate $rateModel
  * @param bool $flag
  * @return float
  */
 private function getShippingPriceWithFlag($rateModel, $flag)
 {
     return $this->taxHelper->getShippingPrice($rateModel->getPrice(), $flag, $rateModel->getAddress(), $rateModel->getAddress()->getQuote()->getCustomerTaxClassId());
 }
Ejemplo n.º 6
0
 /**
  * Get Shipping Price
  *
  * @return float
  */
 public function getShippingPrice()
 {
     return $this->priceCurrency->convertAndFormat($this->shippingRate->getPrice());
 }