Beispiel #1
0
 /**
  * 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;
 }
 /**
  * @param array $giftMessages
  * @param \Magento\Quote\Model\Quote $quote
  * @return $this
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function add($giftMessages, $quote)
 {
     if (!is_array($giftMessages)) {
         return $this;
     }
     // types are 'quote', 'quote_item', etc
     foreach ($giftMessages as $type => $giftMessageEntities) {
         foreach ($giftMessageEntities as $entityId => $message) {
             $giftMessage = $this->messageFactory->create();
             switch ($type) {
                 case 'quote':
                     $entity = $quote;
                     break;
                 case 'quote_item':
                     $entity = $quote->getItemById($entityId);
                     break;
                 case 'quote_address':
                     $entity = $quote->getAddressById($entityId);
                     break;
                 case 'quote_address_item':
                     $entity = $quote->getAddressById($message['address'])->getItemById($entityId);
                     break;
                 default:
                     $entity = $quote;
                     break;
             }
             if ($entity->getGiftMessageId()) {
                 $giftMessage->load($entity->getGiftMessageId());
             }
             if (trim($message['message']) == '') {
                 if ($giftMessage->getId()) {
                     try {
                         $giftMessage->delete();
                         $entity->setGiftMessageId(0)->save();
                     } catch (\Exception $e) {
                     }
                 }
                 continue;
             }
             try {
                 $giftMessage->setSender($message['from'])->setRecipient($message['to'])->setMessage($message['message'])->setCustomerId($quote->getCustomerId())->save();
                 $entity->setGiftMessageId($giftMessage->getId())->save();
             } catch (\Exception $e) {
             }
         }
     }
     return $this;
 }
Beispiel #3
0
 public function getGiftMessage()
 {
     if (!is_null($this->giftMessage)) {
         return $this->giftMessage;
     }
     $giftMessageData = $this->proxyItem->getGiftMessage();
     if (!is_array($giftMessageData)) {
         return NULL;
     }
     $giftMessageData['customer_id'] = (int) $this->quote->getCustomerId();
     /** @var $giftMessage \Magento\GiftMessage\Model\Message */
     $giftMessage = $this->messageFactory->create()->addData($giftMessageData);
     if ($giftMessage->isMessageEmpty()) {
         return NULL;
     }
     $this->giftMessage = $giftMessage->save();
     return $this->giftMessage;
 }
 /**
  * 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]);
 }
 /**
  * Ensure that quote has customer data specified in customer fixture.
  *
  * @param \Magento\Quote\Model\Quote $quote
  */
 protected function _validateCustomerDataInQuote($quote)
 {
     $customerIdFromFixture = 1;
     $customerEmailFromFixture = '*****@*****.**';
     $customerFirstNameFromFixture = 'John';
     $this->assertEquals($customerEmailFromFixture, $quote->getCustomerEmail(), 'Customer email was not set to Quote correctly.');
     $this->assertEquals($customerIdFromFixture, $quote->getCustomerId(), 'Customer ID was not set to Quote correctly.');
     $this->assertEquals($customerFirstNameFromFixture, $quote->getCustomerFirstname(), 'Customer first name was not set to Quote correctly.');
 }
Beispiel #6
0
 /**
  * Prepare quote for customer order submit
  *
  * @param Quote $quote
  * @return void
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 protected function _prepareCustomerQuote($quote)
 {
     /** @var Quote $quote */
     $billing = $quote->getBillingAddress();
     $shipping = $quote->isVirtual() ? null : $quote->getShippingAddress();
     $customer = $this->customerRepository->getById($quote->getCustomerId());
     $hasDefaultBilling = (bool) $customer->getDefaultBilling();
     $hasDefaultShipping = (bool) $customer->getDefaultShipping();
     if ($shipping && !$shipping->getSameAsBilling() && (!$shipping->getCustomerId() || $shipping->getSaveInAddressBook())) {
         $shippingAddress = $shipping->exportCustomerAddress();
         if (!$hasDefaultShipping) {
             //Make provided address as default shipping address
             $shippingAddress->setIsDefaultShipping(true);
             $hasDefaultShipping = true;
         }
         $quote->addCustomerAddress($shippingAddress);
         $shipping->setCustomerAddressData($shippingAddress);
     }
     if (!$billing->getCustomerId() || $billing->getSaveInAddressBook()) {
         $billingAddress = $billing->exportCustomerAddress();
         if (!$hasDefaultBilling) {
             //Make provided address as default shipping address
             if (!$hasDefaultShipping) {
                 //Make provided address as default shipping address
                 $billingAddress->setIsDefaultShipping(true);
             }
             $billingAddress->setIsDefaultBilling(true);
         }
         $quote->addCustomerAddress($billingAddress);
         $billing->setCustomerAddressData($billingAddress);
     }
     if ($shipping && !$shipping->getCustomerId() && !$hasDefaultBilling) {
         $shipping->setIsDefaultBilling(true);
     }
 }
 /**
  * Check whether quote is allowed for current user context
  *
  * @param \Magento\Quote\Model\Quote $quote
  * @return bool
  */
 protected function isAllowed(\Magento\Quote\Model\Quote $quote)
 {
     return $this->userContext->getUserType() == UserContextInterface::USER_TYPE_CUSTOMER ? $quote->getCustomerId() === null || $quote->getCustomerId() == $this->userContext->getUserId() : true;
 }