/** * @return bool */ public function canSendCommentEmail() { switch ($this->getParentType()) { case 'invoice': return $this->_salesData->canSendInvoiceCommentEmail($this->getEntity()->getOrder()->getStore()->getId()); case 'shipment': return $this->_salesData->canSendShipmentCommentEmail($this->getEntity()->getOrder()->getStore()->getId()); case 'creditmemo': return $this->_salesData->canSendCreditmemoCommentEmail($this->getEntity()->getOrder()->getStore()->getId()); } return true; }
/** * @dataProvider getScopeConfigValue */ public function testCanSendInvoiceCommentEmail($scopeConfigValue) { $this->setupScopeConfigIsSetFlag(\Magento\Sales\Model\Order\Email\Container\InvoiceCommentIdentity::XML_PATH_EMAIL_ENABLED, $scopeConfigValue); $this->assertEquals($scopeConfigValue, $this->helper->canSendInvoiceCommentEmail($this->storeMock)); }
/** * Send email with invoice update information * * @param boolean $notifyCustomer * @param string $comment * @return $this */ public function sendUpdateEmail($notifyCustomer = true, $comment = '') { $order = $this->getOrder(); $storeId = $order->getStore()->getId(); if (!$this->_salesData->canSendInvoiceCommentEmail($storeId)) { return $this; } // Get the destination email addresses to send copies to $copyTo = $this->_getEmails(self::XML_PATH_UPDATE_EMAIL_COPY_TO); $copyMethod = $this->_scopeConfig->getValue(self::XML_PATH_UPDATE_EMAIL_COPY_METHOD, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); // Check if at least one recipient is found if (!$notifyCustomer && !$copyTo) { return $this; } // Retrieve corresponding email template id and customer name if ($order->getCustomerIsGuest()) { $templateId = $this->_scopeConfig->getValue(self::XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); $customerName = $order->getBillingAddress()->getName(); } else { $templateId = $this->_scopeConfig->getValue(self::XML_PATH_UPDATE_EMAIL_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); $customerName = $order->getCustomerName(); } if ($notifyCustomer) { $this->_transportBuilder->setTemplateIdentifier($templateId)->setTemplateOptions(array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId))->setTemplateVars(array('order' => $order, 'invoice' => $this, 'comment' => $comment, 'billing' => $order->getBillingAddress(), 'store' => $this->getStore()))->setFrom($this->_scopeConfig->getValue(self::XML_PATH_UPDATE_EMAIL_IDENTITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId))->addTo($order->getCustomerEmail(), $customerName); if ($copyTo && $copyMethod == 'bcc') { // Add bcc to customer email foreach ($copyTo as $email) { $this->_transportBuilder->addBcc($email); } } /** @var \Magento\Framework\Mail\TransportInterface $transport */ $transport = $this->_transportBuilder->getTransport(); $transport->sendMessage(); } // Email copies are sent as separated emails if their copy method is 'copy' or a customer should not be notified if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) { foreach ($copyTo as $email) { $this->_transportBuilder->setTemplateIdentifier($templateId)->setTemplateOptions(array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId))->setTemplateVars(array('order' => $order, 'invoice' => $this, 'comment' => $comment, 'billing' => $order->getBillingAddress(), 'store' => $this->getStore()))->setFrom($this->_scopeConfig->getValue(self::XML_PATH_UPDATE_EMAIL_IDENTITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId))->addTo($email)->getTransport()->sendMessage(); } } return $this; }