Skip to content

Commit aa6d4cb

Browse files
author
Natalia Momotenko
committed
Merge remote-tracking branch 'origin/develop' into UI
2 parents 630a91f + dc3cb6e commit aa6d4cb

File tree

27 files changed

+365
-29
lines changed

27 files changed

+365
-29
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
// @codingStandardsIgnoreFile
8+
9+
?>
10+
<?php
11+
/**
12+
* @var $block \Magento\CheckoutAgreements\Block\Agreements
13+
*/
14+
?>
15+
<?php if (!$block->getAgreements()) {
16+
return;
17+
} ?>
18+
<ol id="checkout-agreements" class="agreements checkout items">
19+
<?php foreach ($block->getAgreements() as $_a): ?>
20+
<li class="item">
21+
<div class="agreement content"<?php echo($_a->getContentHeight() ? ' style="height:' . $_a->getContentHeight() . '"' : '')?>>
22+
<?php if ($_a->getIsHtml()):?>
23+
<?php echo $_a->getContent() ?>
24+
<?php else:?>
25+
<?php echo nl2br($block->escapeHtml($_a->getContent())) ?>
26+
<?php endif; ?>
27+
</div>
28+
<div id="checkout-agreements-form-<?php echo $_a->getId()?>" class="field choice agree required">
29+
<input type="checkbox" id="agreement-<?php echo $_a->getId()?>" name="agreement[<?php echo $_a->getId()?>]" value="1" title="<?php echo $block->escapeHtml($_a->getCheckboxText()) ?>" class="checkbox""/>
30+
<label class="label" for="agreement-<?php echo $_a->getId()?>"><span><?php echo $_a->getIsHtml() ? $_a->getCheckboxText() : $block->escapeHtml($_a->getCheckboxText()) ?></span></label>
31+
</div>
32+
</li>
33+
<?php endforeach ?>
34+
</ol>

app/code/Magento/Multishipping/Controller/Checkout/OverviewPost.php

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,28 @@ class OverviewPost extends \Magento\Multishipping\Controller\Checkout
2121
protected $formKeyValidator;
2222

2323
/**
24-
* Constructor
25-
*
24+
* @var \Psr\Log\LoggerInterface
25+
*/
26+
protected $logger;
27+
28+
/**
2629
* @param \Magento\Framework\App\Action\Context $context
2730
* @param \Magento\Customer\Model\Session $customerSession
2831
* @param CustomerRepositoryInterface $customerRepository
2932
* @param AccountManagementInterface $accountManagement
3033
* @param \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator
34+
* @param \Psr\Log\LoggerInterface $logger
3135
*/
3236
public function __construct(
3337
\Magento\Framework\App\Action\Context $context,
3438
\Magento\Customer\Model\Session $customerSession,
3539
CustomerRepositoryInterface $customerRepository,
3640
AccountManagementInterface $accountManagement,
37-
\Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator
41+
\Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator,
42+
\Psr\Log\LoggerInterface $logger
3843
) {
3944
$this->formKeyValidator = $formKeyValidator;
45+
$this->logger = $logger;
4046
parent::__construct(
4147
$context,
4248
$customerSession,
@@ -113,14 +119,18 @@ public function execute()
113119
$this->messageManager->addError($e->getMessage());
114120
$this->_redirect('*/*/billing');
115121
} catch (\Exception $e) {
116-
$this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e);
117-
$this->_objectManager->get(
118-
'Magento\Checkout\Helper\Data'
119-
)->sendPaymentFailedEmail(
120-
$this->_getCheckout()->getQuote(),
121-
$e->getMessage(),
122-
'multi-shipping'
123-
);
122+
$this->logger->critical($e);
123+
try {
124+
$this->_objectManager->get(
125+
'Magento\Checkout\Helper\Data'
126+
)->sendPaymentFailedEmail(
127+
$this->_getCheckout()->getQuote(),
128+
$e->getMessage(),
129+
'multi-shipping'
130+
);
131+
} catch (\Exception $e) {
132+
$this->logger->error($e->getMessage());
133+
}
124134
$this->messageManager->addError(__('Order place error'));
125135
$this->_redirect('*/*/billing');
126136
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Quote\Model\Observer\Webapi;
7+
8+
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
9+
10+
class Submit
11+
{
12+
/**
13+
* @var \Psr\Log\LoggerInterface
14+
*/
15+
protected $logger;
16+
17+
/**
18+
* @var OrderSender
19+
*/
20+
protected $orderSender;
21+
22+
/**
23+
* @param \Psr\Log\LoggerInterface $logger
24+
* @param OrderSender $orderSender
25+
*/
26+
public function __construct(
27+
\Psr\Log\LoggerInterface $logger,
28+
OrderSender $orderSender
29+
) {
30+
$this->logger = $logger;
31+
$this->orderSender = $orderSender;
32+
}
33+
34+
/**
35+
* @param \Magento\Framework\Object $observer
36+
*
37+
* @return void
38+
*/
39+
public function sendEmail($observer)
40+
{
41+
/** @var \Magento\Quote\Model\Quote $quote */
42+
$quote = $observer->getEvent()->getQuote();
43+
/** @var \Magento\Sales\Model\Order $order */
44+
$order = $observer->getEvent()->getOrder();
45+
46+
/**
47+
* a flag to set that there will be redirect to third party after confirmation
48+
*/
49+
$redirectUrl = $quote->getPayment()->getOrderPlaceRedirectUrl();
50+
if (!$redirectUrl && $order->getCanSendNewEmailFlag()) {
51+
try {
52+
$this->orderSender->send($order);
53+
} catch (\Exception $e) {
54+
$this->logger->critical($e);
55+
}
56+
}
57+
}
58+
}

app/code/Magento/Quote/Model/Quote/Address/Total/Grand.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,11 @@ class Grand extends \Magento\Quote\Model\Quote\Address\Total\AbstractTotal
1515
*/
1616
public function collect(\Magento\Quote\Model\Quote\Address $address)
1717
{
18-
$grandTotal = $address->getGrandTotal();
19-
$baseGrandTotal = $address->getBaseGrandTotal();
20-
2118
$totals = array_sum($address->getAllTotalAmounts());
2219
$baseTotals = array_sum($address->getAllBaseTotalAmounts());
2320

24-
$address->setGrandTotal($grandTotal + $totals);
25-
$address->setBaseGrandTotal($baseGrandTotal + $baseTotals);
21+
$address->setGrandTotal($totals);
22+
$address->setBaseGrandTotal($baseTotals);
2623
return $this;
2724
}
2825

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,9 @@ public function placeOrder($cartId)
249249
$quote->setCustomerIsGuest(true);
250250
$quote->setCustomerGroupId(\Magento\Customer\Api\Data\GroupInterface::NOT_LOGGED_IN_ID);
251251
}
252+
$quoteId = $this->submit($quote)->getId();
252253

253-
return $this->submit($quote)->getId();
254+
return $quoteId;
254255
}
255256

256257
/**
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Quote\Test\Unit\Model\Observer\Webapi;
7+
8+
class SubmitTest extends \PHPUnit_Framework_TestCase
9+
{
10+
/**
11+
* @var \Magento\Quote\Model\Observer\Webapi\Submit
12+
*/
13+
protected $model;
14+
15+
/**
16+
* @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
protected $loggerMock;
19+
20+
/**
21+
* @var \Magento\Sales\Model\Order\Email\Sender\OrderSender|\PHPUnit_Framework_MockObject_MockObject
22+
*/
23+
protected $orderSenderMock;
24+
25+
/**
26+
* @var \Magento\Framework\Object|\PHPUnit_Framework_MockObject_MockObject
27+
*/
28+
protected $observerMock;
29+
30+
/**
31+
* @var \Magento\Quote\Model\Quote|\PHPUnit_Framework_MockObject_MockObject
32+
*/
33+
protected $quoteMock;
34+
35+
/**
36+
* @var \Magento\Sales\Model\Order|\PHPUnit_Framework_MockObject_MockObject
37+
*/
38+
protected $orderMock;
39+
40+
/**
41+
* @var \Magento\Quote\Model\Quote\Payment|\PHPUnit_Framework_MockObject_MockObject
42+
*/
43+
protected $paymentMock;
44+
45+
protected function setUp()
46+
{
47+
$this->loggerMock = $this->getMock('Psr\Log\LoggerInterface');
48+
$this->quoteMock = $this->getMock('Magento\Quote\Model\Quote', [], [], '', false);
49+
$this->orderMock = $this->getMock('Magento\Sales\Model\Order', [], [], '', false);
50+
$this->paymentMock = $this->getMock('Magento\Quote\Model\Quote\Payment', [], [], '', false);
51+
$this->orderSenderMock =
52+
$this->getMock('Magento\Sales\Model\Order\Email\Sender\OrderSender', [], [], '', false);
53+
$eventMock = $this->getMockBuilder('Magento\Framework\Event')
54+
->disableOriginalConstructor()
55+
->setMethods(['getQuote', 'getOrder'])
56+
->getMock();
57+
$this->observerMock = $this->getMock('Magento\Framework\Object', ['getEvent'], [], '', false);
58+
$this->observerMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
59+
$eventMock->expects($this->once())->method('getQuote')->willReturn($this->quoteMock);
60+
$eventMock->expects($this->once())->method('getOrder')->willReturn($this->orderMock);
61+
$this->quoteMock->expects($this->once())->method('getPayment')->willReturn($this->paymentMock);
62+
$this->model = new \Magento\Quote\Model\Observer\Webapi\Submit(
63+
$this->loggerMock,
64+
$this->orderSenderMock
65+
);
66+
}
67+
68+
public function testSendEmail()
69+
{
70+
$this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn('');
71+
$this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag')->willReturn(true);
72+
$this->orderSenderMock->expects($this->once())->method('send')->willReturn(true);
73+
$this->loggerMock->expects($this->never())->method('critical');
74+
$this->model->sendEmail($this->observerMock);
75+
}
76+
77+
public function testFailToSendEmail()
78+
{
79+
$this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn('');
80+
$this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag')->willReturn(true);
81+
$this->orderSenderMock->expects($this->once())->method('send')->willThrowException(
82+
new \Exception('Some email sending Error')
83+
);
84+
$this->loggerMock->expects($this->once())->method('critical');
85+
$this->model->sendEmail($this->observerMock);
86+
}
87+
88+
public function testSendEmailWhenRedirectUrlExists()
89+
{
90+
$this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn(false);
91+
$this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag');
92+
$this->orderSenderMock->expects($this->never())->method('send');
93+
$this->loggerMock->expects($this->never())->method('critical');
94+
$this->model->sendEmail($this->observerMock);
95+
}
96+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Quote\Test\Unit\Model\Quote\Address\Total;
7+
8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
9+
10+
class GrandTest extends \PHPUnit_Framework_TestCase
11+
{
12+
/**
13+
* @var \Magento\Quote\Model\Quote\Address\Total\Grand
14+
*/
15+
protected $model;
16+
17+
protected function setUp()
18+
{
19+
$objectManager = new ObjectManager($this);
20+
$this->model = $objectManager->getObject('Magento\Quote\Model\Quote\Address\Total\Grand');
21+
}
22+
23+
public function testCollect()
24+
{
25+
$totals = [1, 2, 3.4];
26+
$totalsBase = [4, 5, 6.7];
27+
$grandTotal = 6.4; // 1 + 2 + 3.4
28+
$grandTotalBase = 15.7; // 4 + 5 + 6.7
29+
30+
$addressMock = $this->getMock(
31+
'\Magento\Quote\Model\Quote\Address',
32+
['getAllTotalAmounts', 'getAllBaseTotalAmounts', 'setGrandTotal', 'setBaseGrandTotal', '__wakeup'],
33+
[],
34+
'',
35+
false
36+
);
37+
$addressMock->expects($this->once())->method('getAllTotalAmounts')->willReturn($totals);
38+
$addressMock->expects($this->once())->method('getAllBaseTotalAmounts')->willReturn($totalsBase);
39+
$addressMock->expects($this->once())->method('setGrandTotal')->with($grandTotal);
40+
$addressMock->expects($this->once())->method('setBaseGrandTotal')->with($grandTotalBase);
41+
42+
$this->model->collect($addressMock);
43+
}
44+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © 2015 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
9+
<event name="sales_model_service_quote_submit_success">
10+
<observer name="sendEmail" instance="Magento\Quote\Model\Observer\Webapi\Submit" method="sendEmail" />
11+
</event>
12+
</config>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © 2015 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
9+
<event name="sales_model_service_quote_submit_success">
10+
<observer name="sendEmail" instance="Magento\Quote\Model\Observer\Webapi\Submit" method="sendEmail" />
11+
</event>
12+
</config>

app/code/Magento/Sales/Model/Order/Email/Sender.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,27 @@ abstract class Sender
2626
*/
2727
protected $identityContainer;
2828

29+
/**
30+
* @var \Psr\Log\LoggerInterface
31+
*/
32+
protected $logger;
33+
2934
/**
3035
* @param Template $templateContainer
3136
* @param IdentityInterface $identityContainer
32-
* @param Order\Email\SenderBuilderFactory $senderBuilderFactory
37+
* @param SenderBuilderFactory $senderBuilderFactory
38+
* @param \Psr\Log\LoggerInterface $logger
3339
*/
3440
public function __construct(
3541
Template $templateContainer,
3642
IdentityInterface $identityContainer,
37-
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory
43+
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
44+
\Psr\Log\LoggerInterface $logger
3845
) {
3946
$this->templateContainer = $templateContainer;
4047
$this->identityContainer = $identityContainer;
4148
$this->senderBuilderFactory = $senderBuilderFactory;
49+
$this->logger = $logger;
4250
}
4351

4452
/**
@@ -56,8 +64,12 @@ protected function checkAndSend(Order $order)
5664
/** @var SenderBuilder $sender */
5765
$sender = $this->getSender();
5866

59-
$sender->send();
60-
$sender->sendCopyTo();
67+
try {
68+
$sender->send();
69+
$sender->sendCopyTo();
70+
} catch (\Exception $e) {
71+
$this->logger->error($e->getMessage());
72+
}
6173

6274
return true;
6375
}

0 commit comments

Comments
 (0)