InvoiceCommentSender.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order\Email\Sender;
  7. use Magento\Sales\Model\Order;
  8. use Magento\Sales\Model\Order\Email\Container\InvoiceCommentIdentity;
  9. use Magento\Sales\Model\Order\Email\Container\Template;
  10. use Magento\Sales\Model\Order\Email\NotifySender;
  11. use Magento\Sales\Model\Order\Invoice;
  12. use Magento\Sales\Model\Order\Address\Renderer;
  13. use Magento\Framework\Event\ManagerInterface;
  14. use Magento\Framework\DataObject;
  15. /**
  16. * Class InvoiceCommentSender
  17. */
  18. class InvoiceCommentSender extends NotifySender
  19. {
  20. /**
  21. * @var Renderer
  22. */
  23. protected $addressRenderer;
  24. /**
  25. * Application Event Dispatcher
  26. *
  27. * @var ManagerInterface
  28. */
  29. protected $eventManager;
  30. /**
  31. * @param Template $templateContainer
  32. * @param InvoiceCommentIdentity $identityContainer
  33. * @param Order\Email\SenderBuilderFactory $senderBuilderFactory
  34. * @param \Psr\Log\LoggerInterface $logger
  35. * @param Renderer $addressRenderer
  36. * @param ManagerInterface $eventManager
  37. */
  38. public function __construct(
  39. Template $templateContainer,
  40. InvoiceCommentIdentity $identityContainer,
  41. \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
  42. \Psr\Log\LoggerInterface $logger,
  43. Renderer $addressRenderer,
  44. ManagerInterface $eventManager
  45. ) {
  46. parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger, $addressRenderer);
  47. $this->addressRenderer = $addressRenderer;
  48. $this->eventManager = $eventManager;
  49. }
  50. /**
  51. * Send email to customer
  52. *
  53. * @param Invoice $invoice
  54. * @param bool $notify
  55. * @param string $comment
  56. * @return bool
  57. */
  58. public function send(Invoice $invoice, $notify = true, $comment = '')
  59. {
  60. $order = $invoice->getOrder();
  61. $transport = [
  62. 'order' => $order,
  63. 'invoice' => $invoice,
  64. 'comment' => $comment,
  65. 'billing' => $order->getBillingAddress(),
  66. 'store' => $order->getStore(),
  67. 'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
  68. 'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
  69. ];
  70. $transportObject = new DataObject($transport);
  71. /**
  72. * Event argument `transport` is @deprecated. Use `transportObject` instead.
  73. */
  74. $this->eventManager->dispatch(
  75. 'email_invoice_comment_set_template_vars_before',
  76. ['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
  77. );
  78. $this->templateContainer->setTemplateVars($transportObject->getData());
  79. return $this->checkAndSend($order, $notify);
  80. }
  81. }