Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InvoiceSender.php
Go to the documentation of this file.
1 <?php
7 
8 use Magento\Payment\Helper\Data as PaymentHelper;
18 
24 class InvoiceSender extends Sender
25 {
29  protected $paymentHelper;
30 
34  protected $invoiceResource;
35 
41  protected $globalConfig;
42 
46  protected $addressRenderer;
47 
53  protected $eventManager;
54 
66  public function __construct(
69  \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
70  \Psr\Log\LoggerInterface $logger,
72  PaymentHelper $paymentHelper,
76  ) {
78  $this->paymentHelper = $paymentHelper;
79  $this->invoiceResource = $invoiceResource;
80  $this->globalConfig = $globalConfig;
81  $this->addressRenderer = $addressRenderer;
82  $this->eventManager = $eventManager;
83  }
84 
100  public function send(Invoice $invoice, $forceSyncMode = false)
101  {
102  $invoice->setSendEmail(true);
103 
104  if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) {
105  $order = $invoice->getOrder();
106 
107  $transport = [
108  'order' => $order,
109  'invoice' => $invoice,
110  'comment' => $invoice->getCustomerNoteNotify() ? $invoice->getCustomerNote() : '',
111  'billing' => $order->getBillingAddress(),
112  'payment_html' => $this->getPaymentHtml($order),
113  'store' => $order->getStore(),
114  'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
115  'formattedBillingAddress' => $this->getFormattedBillingAddress($order)
116  ];
117  $transportObject = new DataObject($transport);
118 
122  $this->eventManager->dispatch(
123  'email_invoice_set_template_vars_before',
124  ['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
125  );
126 
127  $this->templateContainer->setTemplateVars($transportObject->getData());
128 
129  if ($this->checkAndSend($order)) {
130  $invoice->setEmailSent(true);
131  $this->invoiceResource->saveAttribute($invoice, ['send_email', 'email_sent']);
132  return true;
133  }
134  } else {
135  $invoice->setEmailSent(null);
136  $this->invoiceResource->saveAttribute($invoice, 'email_sent');
137  }
138 
139  $this->invoiceResource->saveAttribute($invoice, 'send_email');
140 
141  return false;
142  }
143 
150  protected function getPaymentHtml(Order $order)
151  {
152  return $this->paymentHelper->getInfoBlockHtml(
153  $order->getPayment(),
154  $this->identityContainer->getStore()->getStoreId()
155  );
156  }
157 }
$order
Definition: order.php:55
__construct(Template $templateContainer, InvoiceIdentity $identityContainer, \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory, \Psr\Log\LoggerInterface $logger, Renderer $addressRenderer, PaymentHelper $paymentHelper, InvoiceResource $invoiceResource, \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig, ManagerInterface $eventManager)
$invoice
send(Invoice $invoice, $forceSyncMode=false)