Skip to content

Commit 29344b0

Browse files
author
Igor Miniailo
committed
Merge branch 'mainline-develop' into publication
2 parents 7982980 + 123750d commit 29344b0

File tree

23 files changed

+573
-178
lines changed

23 files changed

+573
-178
lines changed

app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ define([
6363
}
6464
if (res.minicart) {
6565
$(self.options.minicartSelector).replaceWith(res.minicart);
66+
$(self.options.minicartSelector).trigger('contentUpdated');
6667
}
6768
if (res.product && res.product.statusText) {
6869
$(self.options.productStatusSelector)

app/code/Magento/GiftMessage/Model/GiftMessageManager.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ public function add($giftMessages, $quote)
7979
$message['to']
8080
)->setMessage(
8181
$message['message']
82+
)->setCustomerId(
83+
$quote->getCustomerId()
8284
)->save();
8385

8486
$entity->setGiftMessageId($giftMessage->getId())->save();

app/code/Magento/GiftMessage/Model/Observer.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,27 @@ public function __construct(
3939
/**
4040
* Set gift messages to order from quote address
4141
*
42-
* @param \Magento\Framework\Object $observer
42+
* @param \Magento\Framework\Event\Observer $observer
4343
* @return $this
4444
*/
45-
public function salesEventConvertQuoteToOrder($observer)
45+
public function salesEventQuoteSubmitBefore($observer)
4646
{
4747
$observer->getEvent()->getOrder()->setGiftMessageId($observer->getEvent()->getQuote()->getGiftMessageId());
4848
return $this;
4949
}
5050

51+
/**
52+
* Set gift message to order from address in multiple addresses checkout.
53+
*
54+
* @param \Magento\Framework\Event\Observer $observer
55+
* @return $this
56+
*/
57+
public function multishippingEventCreateOrders($observer)
58+
{
59+
$observer->getEvent()->getOrder()->setGiftMessageId($observer->getEvent()->getAddress()->getGiftMessageId());
60+
return $this;
61+
}
62+
5163
/**
5264
* Duplicates giftmessage from order to quote on import or reorder
5365
*

app/code/Magento/GiftMessage/Test/Unit/Model/GiftMessageManagerTest.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ protected function setUp()
7272
'getAddressById',
7373
'getBillingAddress',
7474
'getShippingAddress',
75-
'__wakeup'],
75+
'__wakeup',
76+
'getCustomerId'
77+
],
7678
[],
7779
'',
7880
false);
@@ -116,6 +118,7 @@ protected function setUp()
116118
'setSender',
117119
'setRecipient',
118120
'setMessage',
121+
'setCustomerId',
119122
'getSender',
120123
'getRecipient',
121124
'getMessage',
@@ -184,6 +187,7 @@ public function testAddWithSaveMessageIdException()
184187
],
185188
],
186189
];
190+
$customerId = 42;
187191

188192
$this->messageFactoryMock->expects($this->once())
189193
->method('create')
@@ -201,6 +205,11 @@ public function testAddWithSaveMessageIdException()
201205
->method('setRecipient')
202206
->with('recipient')
203207
->will($this->returnValue($this->giftMessageMock));
208+
$this->quoteMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
209+
$this->giftMessageMock->expects($this->once())
210+
->method('setCustomerId')
211+
->with($customerId)
212+
->will($this->returnValue($this->giftMessageMock));
204213
$this->giftMessageMock->expects($this->once())
205214
->method('setMessage')
206215
->with('message')
@@ -229,6 +238,7 @@ public function testAddWithQuoteAddress()
229238
],
230239
],
231240
];
241+
$customerId = 42;
232242

233243
$this->messageFactoryMock->expects($this->once())
234244
->method('create')
@@ -250,6 +260,11 @@ public function testAddWithQuoteAddress()
250260
->method('setMessage')
251261
->with('message')
252262
->will($this->returnValue($this->giftMessageMock));
263+
$this->quoteMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
264+
$this->giftMessageMock->expects($this->once())
265+
->method('setCustomerId')
266+
->with($customerId)
267+
->will($this->returnValue($this->giftMessageMock));
253268
$this->giftMessageMock->expects($this->once())->method('save');
254269
$this->giftMessageMock->expects($this->once())->method('getId')->will($this->returnValue(33));
255270
$this->quoteAddressMock->expects($this->once())
@@ -273,6 +288,7 @@ public function testAddWithQuoteAddressItem()
273288
],
274289
],
275290
];
291+
$customerId = 42;
276292

277293
$this->messageFactoryMock->expects($this->once())
278294
->method('create')
@@ -298,6 +314,11 @@ public function testAddWithQuoteAddressItem()
298314
->method('setMessage')
299315
->with('message')
300316
->will($this->returnValue($this->giftMessageMock));
317+
$this->quoteMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
318+
$this->giftMessageMock->expects($this->once())
319+
->method('setCustomerId')
320+
->with($customerId)
321+
->will($this->returnValue($this->giftMessageMock));
301322
$this->giftMessageMock->expects($this->once())->method('save');
302323
$this->giftMessageMock->expects($this->once())->method('getId')->will($this->returnValue(33));
303324
$this->quoteAddressItemMock->expects($this->once())
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\GiftMessage\Test\Unit\Model;
8+
9+
class ObserverTest extends \PHPUnit_Framework_TestCase
10+
{
11+
/**
12+
* @var \Magento\GiftMessage\Model\Observer
13+
*/
14+
protected $model;
15+
16+
protected function setUp()
17+
{
18+
$giftMessageFactoryMock = $this->getMock('\Magento\GiftMessage\Model\MessageFactory', [], [], '', false);
19+
$giftMessageMock = $this->getMock('\Magento\GiftMessage\Helper\Message', [], [], '', false);
20+
$this->model = new \Magento\GiftMessage\Model\Observer($giftMessageFactoryMock, $giftMessageMock);
21+
}
22+
23+
public function testMultishippingEventCreateOrders()
24+
{
25+
$giftMessageId = 42;
26+
$observerMock = $this->getMock('\Magento\Framework\Event\Observer');
27+
$eventMock = $this->getMock('\Magento\Framework\Event', ['getOrder', 'getAddress']);
28+
$addressMock = $this->getMock('\Magento\Quote\Model\Quote\Address', ['getGiftMessageId'], [], '', false);
29+
$orderMock = $this->getMock('\Magento\Sales\Model\Order', ['setGiftMessageId'], [], '', false);
30+
$observerMock->expects($this->exactly(2))->method('getEvent')->willReturn($eventMock);
31+
$eventMock->expects($this->once())->method('getAddress')->willReturn($addressMock);
32+
$addressMock->expects($this->once())->method('getGiftMessageId')->willReturn($giftMessageId);
33+
$eventMock->expects($this->once())->method('getOrder')->willReturn($orderMock);
34+
$orderMock->expects($this->once())->method('setGiftMessageId')->with($giftMessageId);
35+
$this->assertEquals($this->model, $this->model->multishippingEventCreateOrders($observerMock));
36+
}
37+
38+
public function testSalesEventQuoteSubmitBefore()
39+
{
40+
$giftMessageId = 42;
41+
$observerMock = $this->getMock('\Magento\Framework\Event\Observer');
42+
$eventMock = $this->getMock('\Magento\Framework\Event', ['getOrder', 'getQuote']);
43+
$quoteMock = $this->getMock('\Magento\Quote\Model\Quote', ['getGiftMessageId'], [], '', false);
44+
$orderMock = $this->getMock('\Magento\Sales\Model\Order', ['setGiftMessageId'], [], '', false);
45+
$observerMock->expects($this->exactly(2))->method('getEvent')->willReturn($eventMock);
46+
$eventMock->expects($this->once())->method('getQuote')->willReturn($quoteMock);
47+
$quoteMock->expects($this->once())->method('getGiftMessageId')->willReturn($giftMessageId);
48+
$eventMock->expects($this->once())->method('getOrder')->willReturn($orderMock);
49+
$orderMock->expects($this->once())->method('setGiftMessageId')->with($giftMessageId);
50+
$this->assertEquals($this->model, $this->model->salesEventQuoteSubmitBefore($observerMock));
51+
}
52+
}

app/code/Magento/GiftMessage/etc/adminhtml/events.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
9-
<event name="sales_convert_quote_to_order">
10-
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="salesEventConvertQuoteToOrder" shared="false" />
9+
<event name="sales_model_service_quote_submit_before">
10+
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="salesEventQuoteSubmitBefore" shared="false" />
1111
</event>
1212
<event name="adminhtml_sales_order_create_create_order">
1313
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="checkoutEventCreateOrder" shared="false" />

app/code/Magento/GiftMessage/etc/frontend/events.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
9-
<event name="sales_convert_quote_to_order">
10-
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="salesEventConvertQuoteToOrder" shared="false" />
9+
<event name="sales_model_service_quote_submit_before">
10+
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="salesEventQuoteSubmitBefore" shared="false" />
1111
</event>
1212
<event name="sales_convert_order_to_quote">
1313
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="salesEventOrderToQuote" shared="false" />
1414
</event>
15+
<event name="checkout_type_multishipping_create_orders_single">
16+
<observer name="giftmessage" instance="Magento\GiftMessage\Model\Observer" method="multishippingEventCreateOrders" shared="false" />
17+
</event>
1518
</config>
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Quote\Model;
7+
8+
use Magento\Framework\Config\CacheInterface;
9+
use Magento\Framework\App\Resource\ConfigInterface;
10+
11+
class QueryResolver
12+
{
13+
/**
14+
* @var array
15+
*/
16+
private $data = [];
17+
18+
/**
19+
* @var ConfigInterface
20+
*/
21+
private $config;
22+
23+
/**
24+
* @var CacheInterface
25+
*/
26+
private $cache;
27+
28+
/**
29+
* @var string
30+
*/
31+
private $cacheId;
32+
33+
/**
34+
* Cache tags
35+
*
36+
* @var array
37+
*/
38+
private $cacheTags = [];
39+
40+
/**
41+
* @param ConfigInterface $config
42+
* @param CacheInterface $cache
43+
* @param string $cacheId
44+
*/
45+
public function __construct(
46+
ConfigInterface $config,
47+
CacheInterface $cache,
48+
$cacheId = 'connection_config_cache'
49+
) {
50+
$this->config = $config;
51+
$this->cache = $cache;
52+
$this->cacheId = $cacheId;
53+
}
54+
55+
/**
56+
* Get flag value
57+
*
58+
* @return bool
59+
*/
60+
public function isSingleQuery()
61+
{
62+
if (!isset($this->data['checkout'])) {
63+
$this->initData();
64+
}
65+
return $this->data['checkout'];
66+
}
67+
68+
/**
69+
* Initialise data for configuration
70+
* @return void
71+
*/
72+
protected function initData()
73+
{
74+
$data = $this->cache->load($this->cacheId);
75+
if (false === $data) {
76+
$singleQuery = $this->config->getConnectionName('checkout_setup') == 'default' ? true : false;
77+
$data['checkout'] = $singleQuery;
78+
$this->cache->save(serialize($data), $this->cacheId, $this->cacheTags);
79+
} else {
80+
$data = unserialize($data);
81+
}
82+
$this->merge($data);
83+
}
84+
85+
/**
86+
* Merge config data to the object
87+
*
88+
* @param array $config
89+
* @return void
90+
*/
91+
public function merge(array $config)
92+
{
93+
$this->data = array_replace_recursive($this->data, $config);
94+
}
95+
}

app/code/Magento/Quote/Model/QuoteManagement.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,15 @@ protected function createCustomerCart($storeId)
236236
public function placeOrder($cartId)
237237
{
238238
$quote = $this->quoteRepository->getActive($cartId);
239-
$order = $this->submit($quote);
240-
return $order->getId();
239+
240+
if ($quote->getCheckoutMethod() === 'guest') {
241+
$quote->setCustomerId(null);
242+
$quote->setCustomerEmail($quote->getBillingAddress()->getEmail());
243+
$quote->setCustomerIsGuest(true);
244+
$quote->setCustomerGroupId(\Magento\Customer\Api\Data\GroupInterface::NOT_LOGGED_IN_ID);
245+
}
246+
247+
return $this->submit($quote)->getId();
241248
}
242249

243250
/**

0 commit comments

Comments
 (0)