/** * @inheritdoc */ public function setUp() { parent::setUp(); $this->quote = $this->_objectManager->create('Magento\\Quote\\Model\\Quote'); $this->checkoutSession = $this->_objectManager->get('Magento\\Checkout\\Model\\Session'); $this->quote->load('test01', 'reserved_order_id'); $this->checkoutSession->setQuoteId($this->quote->getId()); $this->checkoutSession->setCartWasUpdated(false); }
/** * Set Quote object to Collection * * @param \Magento\Quote\Model\Quote $quote * @return $this */ public function setQuote($quote) { $this->_quote = $quote; $quoteId = $quote->getId(); if ($quoteId) { $this->addFieldToFilter('quote_id', $quote->getId()); } else { $this->_totalRecords = 0; $this->_setIsLoaded(true); } return $this; }
/** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php */ public function testSetMethodWithoutShippingAddress() { $this->quote->load('test_order_with_simple_product_without_address', 'reserved_order_id'); $serviceInfo = $this->getServiceInfo(); $requestData = ['cartId' => $this->quote->getId(), 'carrierCode' => 'flatrate', 'methodCode' => 'flatrate']; try { $this->_webApiCall($serviceInfo, $requestData); } catch (\SoapFault $e) { $message = $e->getMessage(); } catch (\Exception $e) { $message = json_decode($e->getMessage())->message; } $this->assertEquals('Shipping address is not set', $message); }
/** * Retrieve quote model object * * @return \Magento\Quote\Model\Quote */ public function getQuote() { if ($this->_quote === null) { $this->_quote = $this->quoteFactory->create(); if ($this->getStoreId()) { if (!$this->getQuoteId()) { $this->_quote->setCustomerGroupId($this->groupManagement->getDefaultGroup()->getId()); $this->_quote->setIsActive(false); $this->_quote->setStoreId($this->getStoreId()); $this->quoteRepository->save($this->_quote); $this->setQuoteId($this->_quote->getId()); $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]); } else { $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]); $this->_quote->setStoreId($this->getStoreId()); } if ($this->getCustomerId() && $this->getCustomerId() != $this->_quote->getCustomerId()) { $customer = $this->customerRepository->getById($this->getCustomerId()); $this->_quote->assignCustomer($customer); $this->quoteRepository->save($this->_quote); } } $this->_quote->setIgnoreOldQty(true); $this->_quote->setIsSuperMode(true); } return $this->_quote; }
/** * @magentoApiDataFixture Magento/Customer/_files/customer.php * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php */ public function testGetListForMyCart() { $this->markTestSkipped('Will be fixed after MAGETWO-35573'); $this->_markTestAsRestOnly(); $this->quote->load('test_order_1', 'reserved_order_id'); /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */ $customerTokenService = $this->objectManager->create('Magento\\Integration\\Api\\CustomerTokenServiceInterface'); $token = $customerTokenService->createCustomerAccessToken('*****@*****.**', 'password'); /** @var \Magento\Quote\Api\ShippingMethodManagementInterface $shippingMethodManagementService */ $shippingMethodManagementService = $this->objectManager->create('Magento\\Quote\\Api\\ShippingMethodManagementInterface'); $shippingMethodManagementService->set($this->quote->getId(), 'flatrate', 'flatrate'); $serviceInfo = ['rest' => ['resourcePath' => '/V1/carts/mine/shipping-methods', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, 'token' => $token]]; $result = $this->_webApiCall($serviceInfo, []); $this->assertNotEmpty($result); $this->assertCount(1, $result); $shippingMethod = $shippingMethodManagementService->get($this->quote->getId()); $expectedData = [ShippingMethodInterface::KEY_CARRIER_CODE => $shippingMethod->getCarrierCode(), ShippingMethodInterface::KEY_METHOD_CODE => $shippingMethod->getMethodCode(), ShippingMethodInterface::KEY_CARRIER_TITLE => $shippingMethod->getCarrierTitle(), ShippingMethodInterface::KEY_METHOD_TITLE => $shippingMethod->getMethodTitle(), ShippingMethodInterface::KEY_SHIPPING_AMOUNT => $shippingMethod->getAmount(), ShippingMethodInterface::KEY_BASE_SHIPPING_AMOUNT => $shippingMethod->getBaseAmount(), ShippingMethodInterface::KEY_AVAILABLE => $shippingMethod->getAvailable(), ShippingMethodInterface::KEY_ERROR_MESSAGE => null, ShippingMethodInterface::KEY_PRICE_EXCL_TAX => $shippingMethod->getPriceExclTax(), ShippingMethodInterface::KEY_PRICE_INCL_TAX => $shippingMethod->getPriceInclTax()]; $this->assertEquals($expectedData, $result[0]); }
/** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php */ public function testSetMethodWithoutShippingAddress() { $this->quote->load('test_order_with_simple_product_without_address', 'reserved_order_id'); $serviceInfo = $this->getServiceInfo(); $cartId = $this->quote->getId(); /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Quote\\Model\\QuoteIdMaskFactory')->create(); $quoteIdMask->load($cartId); //Use masked cart Id $cartId = $quoteIdMask->getMaskedId(); $requestData = ['cartId' => $cartId, 'carrierCode' => 'flatrate', 'methodCode' => 'flatrate']; try { $this->_webApiCall($serviceInfo, $requestData); } catch (\SoapFault $e) { $message = $e->getMessage(); } catch (\Exception $e) { $message = json_decode($e->getMessage())->message; } $this->assertEquals('Shipping address is not set', $message); }
/** * Set shipping options to api * @param \Magento\Paypal\Model\Cart $cart * @param \Magento\Quote\Model\Quote\Address|null $address * @return void */ private function setShippingOptions(PaypalCart $cart, Address $address = null) { // for included tax always disable line items (related to paypal amount rounding problem) $this->_api->setIsLineItemsEnabled($this->_config->getValue(PaypalConfig::TRANSFER_CART_LINE_ITEMS)); // add shipping options if needed and line items are available $cartItems = $cart->getAllItems(); if ($this->_config->getValue(PaypalConfig::TRANSFER_CART_LINE_ITEMS) && $this->_config->getValue(PaypalConfig::TRANSFER_SHIPPING_OPTIONS) && !empty($cartItems)) { if (!$this->_quote->getIsVirtual()) { $options = $this->_prepareShippingOptions($address, true); if ($options) { $this->_api->setShippingOptionsCallbackUrl($this->_coreUrl->getUrl('*/*/shippingOptionsCallback', ['quote_id' => $this->_quote->getId()]))->setShippingOptions($options); } } } }
public function testPopulateBeforeSaveData() { /** Preconditions */ $customerId = 1; $customerAddressId = 1; $this->_address->setQuote($this->_quote); $this->assertNotEquals($customerId, $this->_address->getCustomerId(), "Precondition failed: Customer ID was not set."); $this->assertNotEquals(1, $this->_address->getQuoteId(), "Precondition failed: Quote ID was not set."); $this->assertNotEquals($customerAddressId, $this->_address->getCustomerAddressId(), "Precondition failed: Customer address ID was not set."); /** @var \Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory */ $addressFactory = Bootstrap::getObjectManager()->create('Magento\\Customer\\Api\\Data\\AddressInterfaceFactory'); $customerAddressData = $addressFactory->create()->setId($customerAddressId); $this->_address->setCustomerAddressData($customerAddressData); $this->_address->save(); $this->assertEquals($customerId, $this->_address->getCustomerId()); $this->assertEquals($this->_quote->getId(), $this->_address->getQuoteId()); $this->assertEquals($customerAddressId, $this->_address->getCustomerAddressId()); }
/** * @param \Magento\Quote\Model\Quote $quote * @return void */ public function collect(\Magento\Quote\Model\Quote $quote) { if ($this->customerSession->isLoggedIn()) { $customer = $this->customerRepository->getById($this->customerSession->getCustomerId()); if ($defaultShipping = $customer->getDefaultShipping()) { $address = $this->addressRepository->getById($defaultShipping); if ($address) { /** @var \Magento\Quote\Api\Data\EstimateAddressInterface $estimatedAddress */ $estimatedAddress = $this->estimatedAddressFactory->create(); $estimatedAddress->setCountryId($address->getCountryId()); $estimatedAddress->setPostcode($address->getPostcode()); $estimatedAddress->setRegion((string) $address->getRegion()->getRegion()); $estimatedAddress->setRegionId($address->getRegionId()); $this->shippingMethodManager->estimateByAddress($quote->getId(), $estimatedAddress); $this->quoteRepository->save($quote); } } } }
/** * Declare quote model object * * @param \Magento\Quote\Model\Quote $quote * @return $this */ public function setQuote(\Magento\Quote\Model\Quote $quote) { $this->_quote = $quote; $this->setQuoteId($quote->getId()); $this->setStoreId($quote->getStoreId()); return $this; }
/** * Delete quote * * @param Quote $quote * @return void */ public function delete(Quote $quote) { $quoteId = $quote->getId(); $customerId = $quote->getCustomerId(); $quote->delete(); unset($this->quotesById[$quoteId]); unset($this->quotesByCustomerId[$customerId]); }
/** * @param Quote $quote * @return $this */ public function replaceQuote($quote) { $this->_quote = $quote; $this->setQuoteId($quote->getId()); return $this; }
/** * Reserve order ID for specified quote and start checkout on PayPal * * @param string $returnUrl * @param string $cancelUrl * @param bool|null $button * @return string * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function start($returnUrl, $cancelUrl, $button = null) { $this->_quote->collectTotals(); if (!$this->_quote->getGrandTotal()) { throw new \Magento\Framework\Exception\LocalizedException(__('PayPal can\'t process orders with a zero balance due. ' . 'To finish your purchase, please go through the standard checkout process.')); } $this->_quote->reserveOrderId(); $this->quoteRepository->save($this->_quote); // prepare API $this->_getApi(); $solutionType = $this->_config->getMerchantCountry() == 'DE' ? \Magento\Paypal\Model\Config::EC_SOLUTION_TYPE_MARK : $this->_config->getValue('solutionType'); $this->_api->setAmount($this->_quote->getBaseGrandTotal())->setCurrencyCode($this->_quote->getBaseCurrencyCode())->setInvNum($this->_quote->getReservedOrderId())->setReturnUrl($returnUrl)->setCancelUrl($cancelUrl)->setSolutionType($solutionType)->setPaymentAction($this->_config->getValue('paymentAction')); if ($this->_giropayUrls) { list($successUrl, $cancelUrl, $pendingUrl) = $this->_giropayUrls; $this->_api->addData(['giropay_cancel_url' => $cancelUrl, 'giropay_success_url' => $successUrl, 'giropay_bank_txn_pending_url' => $pendingUrl]); } if ($this->_isBml) { $this->_api->setFundingSource('BML'); } $this->_setBillingAgreementRequest(); if ($this->_config->getValue('requireBillingAddress') == PaypalConfig::REQUIRE_BILLING_ADDRESS_ALL) { $this->_api->setRequireBillingAddress(1); } // suppress or export shipping address if ($this->_quote->getIsVirtual()) { if ($this->_config->getValue('requireBillingAddress') == PaypalConfig::REQUIRE_BILLING_ADDRESS_VIRTUAL) { $this->_api->setRequireBillingAddress(1); } $this->_api->setSuppressShipping(true); } else { $address = $this->_quote->getShippingAddress(); $isOverridden = 0; if (true === $address->validate()) { $isOverridden = 1; $this->_api->setAddress($address); } $this->_quote->getPayment()->setAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_SHIPPING_OVERRIDDEN, $isOverridden); $this->_quote->getPayment()->save(); } // add line items /** @var $cart \Magento\Payment\Model\Cart */ $cart = $this->_cartFactory->create(['salesModel' => $this->_quote]); $this->_api->setPaypalCart($cart)->setIsLineItemsEnabled($this->_config->getValue('lineItemsEnabled')); // add shipping options if needed and line items are available $cartItems = $cart->getAllItems(); if ($this->_config->getValue('lineItemsEnabled') && $this->_config->getValue('transferShippingOptions') && !empty($cartItems)) { if (!$this->_quote->getIsVirtual()) { $options = $this->_prepareShippingOptions($address, true); if ($options) { $this->_api->setShippingOptionsCallbackUrl($this->_coreUrl->getUrl('*/*/shippingOptionsCallback', ['quote_id' => $this->_quote->getId()]))->setShippingOptions($options); } } } $this->_config->exportExpressCheckoutStyleSettings($this->_api); /* Temporary solution. @TODO: do not pass quote into Nvp model */ $this->_api->setQuote($this->_quote); $this->_api->callSetExpressCheckout(); $token = $this->_api->getToken(); $this->_redirectUrl = $button ? $this->_config->getExpressCheckoutStartUrl($token) : $this->_config->getPayPalBasicStartUrl($token); $payment = $this->_quote->getPayment(); $payment->unsAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT); // Set flag that we came from Express Checkout button if (!empty($button)) { $payment->setAdditionalInformation(self::PAYMENT_INFO_BUTTON, 1); } elseif ($payment->hasAdditionalInformation(self::PAYMENT_INFO_BUTTON)) { $payment->unsAdditionalInformation(self::PAYMENT_INFO_BUTTON); } $payment->save(); return $token; }
private function assertQuoteCollectionNotContains(Quote $expected) { $message = sprintf('The quote with ID "%s" is contained in the quote collection, but was expected to be absent', $expected->getId()); $this->assertNotContains($expected->getId(), $this->quoteCollection->getAllIds(), $message); }