Skip to content

Commit ba9756c

Browse files
committed
Merge branch 'MAGETWO-34644' of https://github.corp.ebay.com/magento-firedrakes/magento2ce into MAGETWO-34647
2 parents b3d27b1 + e47c731 commit ba9756c

File tree

30 files changed

+1409
-633
lines changed

30 files changed

+1409
-633
lines changed

app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/AddComment.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
namespace Magento\Sales\Controller\Adminhtml\Order\Creditmemo;
77

88
use Magento\Backend\App\Action;
9-
use Magento\Sales\Model\Order\Email\Sender\CreditmemoSender;
9+
use Magento\Sales\Model\Order\Email\Sender\CreditmemoCommentSender;
1010

1111
class AddComment extends \Magento\Backend\App\Action
1212
{
@@ -16,9 +16,9 @@ class AddComment extends \Magento\Backend\App\Action
1616
protected $creditmemoLoader;
1717

1818
/**
19-
* @var CreditmemoSender
19+
* @var CreditmemoCommentSender
2020
*/
21-
protected $creditmemoSender;
21+
protected $creditmemoCommentSender;
2222

2323
/**
2424
* @var \Magento\Framework\View\Result\PageFactory
@@ -38,21 +38,21 @@ class AddComment extends \Magento\Backend\App\Action
3838
/**
3939
* @param Action\Context $context
4040
* @param \Magento\Sales\Controller\Adminhtml\Order\CreditmemoLoader $creditmemoLoader
41-
* @param CreditmemoSender $creditmemoSender
41+
* @param CreditmemoCommentSender $creditmemoCommentSender
4242
* @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
4343
* @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
4444
* @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
4545
*/
4646
public function __construct(
4747
Action\Context $context,
4848
\Magento\Sales\Controller\Adminhtml\Order\CreditmemoLoader $creditmemoLoader,
49-
CreditmemoSender $creditmemoSender,
49+
CreditmemoCommentSender $creditmemoCommentSender,
5050
\Magento\Framework\View\Result\PageFactory $resultPageFactory,
5151
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
5252
\Magento\Framework\Controller\Result\RawFactory $resultRawFactory
5353
) {
5454
$this->creditmemoLoader = $creditmemoLoader;
55-
$this->creditmemoSender = $creditmemoSender;
55+
$this->creditmemoCommentSender = $creditmemoCommentSender;
5656
$this->resultPageFactory = $resultPageFactory;
5757
$this->resultJsonFactory = $resultJsonFactory;
5858
$this->resultRawFactory = $resultRawFactory;
@@ -94,7 +94,7 @@ public function execute()
9494
);
9595
$comment->save();
9696

97-
$this->creditmemoSender->send($creditmemo, !empty($data['is_customer_notified']), $data['comment']);
97+
$this->creditmemoCommentSender->send($creditmemo, !empty($data['is_customer_notified']), $data['comment']);
9898
$resultPage = $this->resultPageFactory->create();
9999
$response = $resultPage->getLayout()->getBlock('creditmemo_comments')->toHtml();
100100
} catch (\Magento\Framework\Exception\LocalizedException $e) {

app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Save.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,15 @@ public function execute()
8181
);
8282
}
8383

84-
$comment = '';
8584
if (!empty($data['comment_text'])) {
8685
$creditmemo->addComment(
8786
$data['comment_text'],
8887
isset($data['comment_customer_notify']),
8988
isset($data['is_visible_on_front'])
9089
);
91-
if (isset($data['comment_customer_notify'])) {
92-
$comment = $data['comment_text'];
93-
}
90+
91+
$creditmemo->setCustomerNote($data['comment_text']);
92+
$creditmemo->setCustomerNoteNotify(isset($data['comment_customer_notify']));
9493
}
9594

9695
if (isset($data['do_refund'])) {
@@ -107,9 +106,6 @@ public function execute()
107106
}
108107

109108
$creditmemo->register();
110-
if (!empty($data['send_email'])) {
111-
$creditmemo->setEmailSent(true);
112-
}
113109

114110
$creditmemo->getOrder()->setCustomerNoteNotify(!empty($data['send_email']));
115111
$transactionSave = $this->_objectManager->create(
@@ -123,7 +119,10 @@ public function execute()
123119
$transactionSave->addObject($creditmemo->getInvoice());
124120
}
125121
$transactionSave->save();
126-
$this->creditmemoSender->send($creditmemo, !empty($data['send_email']), $comment);
122+
123+
if (!empty($data['send_email'])) {
124+
$this->creditmemoSender->send($creditmemo);
125+
}
127126

128127
$this->messageManager->addSuccess(__('You created the credit memo.'));
129128
$this->_getSession()->getCommentText(true);

app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Magento\Backend\App\Action;
1010
use Magento\Framework\Exception\LocalizedException;
1111
use Magento\Framework\Registry;
12-
use Magento\Sales\Model\Order\Email\Sender\InvoiceCommentSender;
12+
use Magento\Sales\Model\Order\Email\Sender\InvoiceSender;
1313
use Magento\Sales\Model\Order\Email\Sender\ShipmentSender;
1414
use Magento\Sales\Model\Order\Invoice;
1515

@@ -19,9 +19,9 @@
1919
class Save extends \Magento\Backend\App\Action
2020
{
2121
/**
22-
* @var InvoiceCommentSender
22+
* @var InvoiceSender
2323
*/
24-
protected $invoiceCommentSender;
24+
protected $invoiceSender;
2525

2626
/**
2727
* @var ShipmentSender
@@ -36,17 +36,17 @@ class Save extends \Magento\Backend\App\Action
3636
/**
3737
* @param Action\Context $context
3838
* @param Registry $registry
39-
* @param InvoiceCommentSender $invoiceCommentSender
39+
* @param InvoiceSender $invoiceSender
4040
* @param ShipmentSender $shipmentSender
4141
*/
4242
public function __construct(
4343
Action\Context $context,
4444
Registry $registry,
45-
InvoiceCommentSender $invoiceCommentSender,
45+
InvoiceSender $invoiceSender,
4646
ShipmentSender $shipmentSender
4747
) {
4848
$this->registry = $registry;
49-
$this->invoiceCommentSender = $invoiceCommentSender;
49+
$this->invoiceSender = $invoiceSender;
5050
$this->shipmentSender = $shipmentSender;
5151
parent::__construct($context);
5252
}
@@ -153,14 +153,13 @@ public function execute()
153153
isset($data['comment_customer_notify']),
154154
isset($data['is_visible_on_front'])
155155
);
156+
157+
$invoice->setCustomerNote($data['comment_text']);
158+
$invoice->setCustomerNoteNotify(isset($data['comment_customer_notify']));
156159
}
157160

158161
$invoice->register();
159162

160-
if (!empty($data['send_email'])) {
161-
$invoice->setEmailSent(true);
162-
}
163-
164163
$invoice->getOrder()->setCustomerNoteNotify(!empty($data['send_email']));
165164
$invoice->getOrder()->setIsInProcess(true);
166165

@@ -175,7 +174,6 @@ public function execute()
175174
if (!empty($data['do_shipment']) || (int)$invoice->getOrder()->getForcedShipmentWithInvoice()) {
176175
$shipment = $this->_prepareShipment($invoice);
177176
if ($shipment) {
178-
$shipment->setEmailSent($invoice->getEmailSent());
179177
$transactionSave->addObject($shipment);
180178
}
181179
}
@@ -195,19 +193,19 @@ public function execute()
195193
}
196194

197195
// send invoice/shipment emails
198-
$comment = '';
199-
if (isset($data['comment_customer_notify'])) {
200-
$comment = $data['comment_text'];
201-
}
202196
try {
203-
$this->invoiceCommentSender->send($invoice, !empty($data['send_email']), $comment);
197+
if (!empty($data['send_email'])) {
198+
$this->invoiceSender->send($invoice);
199+
}
204200
} catch (\Exception $e) {
205201
$this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e);
206202
$this->messageManager->addError(__('We can\'t send the invoice email.'));
207203
}
208204
if ($shipment) {
209205
try {
210-
$this->shipmentSender->send($shipment, !empty($data['send_email']));
206+
if (!empty($data['send_email'])) {
207+
$this->shipmentSender->send($shipment);
208+
}
211209
} catch (\Exception $e) {
212210
$this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e);
213211
$this->messageManager->addError(__('We can\'t send the shipment.'));
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Sales\Model\Config\Backend\Email;
7+
8+
/**
9+
* Backend model for global configuration value
10+
* 'sales_email/general/async_sending'.
11+
*/
12+
class AsyncSending extends \Magento\Framework\App\Config\Value
13+
{
14+
/**
15+
* Dispatches corresponding event after saving of configuration
16+
* value if it was changed.
17+
*
18+
* Dispatches next events:
19+
*
20+
* - config_data_sales_email_general_async_sending_enabled
21+
* - config_data_sales_email_general_async_sending_disabled
22+
*
23+
* @return $this
24+
*/
25+
public function afterSave()
26+
{
27+
if ($this->isValueChanged()) {
28+
$state = $this->getValue() ? 'enabled' : 'disabled';
29+
30+
$this->_eventManager->dispatch(
31+
$this->_eventPrefix . '_sales_email_general_async_sending_' . $state,
32+
$this->_getEventData()
33+
);
34+
}
35+
36+
return $this;
37+
}
38+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Sales\Model\Observer;
7+
8+
/**
9+
* Sales emails sending observer.
10+
*
11+
* Performs handling of cron jobs related to sending emails to customers
12+
* after creation/modification of Order, Invoice, Shipment or Creditmemo.
13+
*/
14+
class SendEmails
15+
{
16+
/**
17+
* Email sender model.
18+
*
19+
* @var \Magento\Sales\Model\Order\Email\Sender
20+
*/
21+
protected $emailSender;
22+
23+
/**
24+
* Entity resource model.
25+
*
26+
* @var \Magento\Sales\Model\Resource\EntityAbstract
27+
*/
28+
protected $entityResource;
29+
30+
/**
31+
* Entity collection model.
32+
*
33+
* @var \Magento\Sales\Model\Resource\Collection\AbstractCollection
34+
*/
35+
protected $entityCollection;
36+
37+
/**
38+
* Global configuration storage.
39+
*
40+
* @var \Magento\Framework\App\Config\ScopeConfigInterface
41+
*/
42+
protected $globalConfig;
43+
44+
/**
45+
* @param \Magento\Sales\Model\Order\Email\Sender $emailSender
46+
* @param \Magento\Sales\Model\Resource\EntityAbstract $entityResource
47+
* @param \Magento\Sales\Model\Resource\Collection\AbstractCollection $entityCollection
48+
* @param \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig
49+
*/
50+
public function __construct(
51+
\Magento\Sales\Model\Order\Email\Sender $emailSender,
52+
\Magento\Sales\Model\Resource\EntityAbstract $entityResource,
53+
\Magento\Sales\Model\Resource\Collection\AbstractCollection $entityCollection,
54+
\Magento\Framework\App\Config\ScopeConfigInterface $globalConfig
55+
) {
56+
$this->emailSender = $emailSender;
57+
$this->entityResource = $entityResource;
58+
$this->entityCollection = $entityCollection;
59+
$this->globalConfig = $globalConfig;
60+
}
61+
62+
/**
63+
* Handles asynchronous email sending during corresponding
64+
* cron job.
65+
*
66+
* Also method is used in the next events:
67+
*
68+
* - config_data_sales_email_general_async_sending_disabled
69+
*
70+
* Works only if asynchronous email sending is enabled
71+
* in global settings.
72+
*
73+
* @return void
74+
*/
75+
public function execute()
76+
{
77+
if ($this->globalConfig->getValue('sales_email/general/async_sending')) {
78+
$this->entityCollection->addFieldToFilter('send_email', ['eq' => 1]);
79+
$this->entityCollection->addFieldToFilter('email_sent', ['null' => true]);
80+
81+
/** @var \Magento\Sales\Model\AbstractModel $item */
82+
foreach ($this->entityCollection->getItems() as $item) {
83+
if ($this->emailSender->send($item, true)) {
84+
$this->entityResource->save(
85+
$item->setEmailSent(true)
86+
);
87+
}
88+
}
89+
}
90+
}
91+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
* @method bool hasForcedCanCreditmemo()
4646
* @method bool getIsInProcess()
4747
* @method \Magento\Customer\Model\Customer getCustomer()
48+
* @method \Magento\Sales\Model\Order setSendEmail(bool $value)
4849
* @SuppressWarnings(PHPMD.ExcessivePublicCount)
4950
* @SuppressWarnings(PHPMD.TooManyFields)
5051
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)

app/code/Magento/Sales/Model/Order/Creditmemo.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
* @method \Magento\Sales\Model\Resource\Order\Creditmemo _getResource()
2222
* @method \Magento\Sales\Model\Resource\Order\Creditmemo getResource()
2323
* @method \Magento\Sales\Model\Order\Creditmemo setCreatedAt(string $value)
24+
* @method \Magento\Sales\Model\Order\Invoice setSendEmail(bool $value)
25+
* @method \Magento\Sales\Model\Order\Invoice setCustomerNote(string $value)
26+
* @method string getCustomerNote()
27+
* @method \Magento\Sales\Model\Order\Invoice setCustomerNoteNotify(bool $value)
28+
* @method bool getCustomerNoteNotify()
2429
* @SuppressWarnings(PHPMD.ExcessivePublicCount)
2530
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
2631
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)

0 commit comments

Comments
 (0)