![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-sales/Model/Order/Creditmemo/Sender/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Model\Order\Creditmemo\Sender; use Magento\Sales\Model\Order\Email\Sender; use Magento\Sales\Model\Order\Creditmemo\SenderInterface; use Magento\Framework\DataObject; /** * Email notification sender for Creditmemo. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class EmailSender extends Sender implements SenderInterface { /** * @var \Magento\Payment\Helper\Data */ private $paymentHelper; /** * @var \Magento\Sales\Model\ResourceModel\Order\Creditmemo */ private $creditmemoResource; /** * @var \Magento\Framework\App\Config\ScopeConfigInterface */ private $globalConfig; /** * @var \Magento\Framework\Event\ManagerInterface */ private $eventManager; /** * @param \Magento\Sales\Model\Order\Email\Container\Template $templateContainer * @param \Magento\Sales\Model\Order\Email\Container\CreditmemoIdentity $identityContainer * @param \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory * @param \Psr\Log\LoggerInterface $logger * @param \Magento\Sales\Model\Order\Address\Renderer $addressRenderer * @param \Magento\Payment\Helper\Data $paymentHelper * @param \Magento\Sales\Model\ResourceModel\Order\Creditmemo $creditmemoResource * @param \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig * @param \Magento\Framework\Event\ManagerInterface $eventManager */ public function __construct( \Magento\Sales\Model\Order\Email\Container\Template $templateContainer, \Magento\Sales\Model\Order\Email\Container\CreditmemoIdentity $identityContainer, \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory, \Psr\Log\LoggerInterface $logger, \Magento\Sales\Model\Order\Address\Renderer $addressRenderer, \Magento\Payment\Helper\Data $paymentHelper, \Magento\Sales\Model\ResourceModel\Order\Creditmemo $creditmemoResource, \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig, \Magento\Framework\Event\ManagerInterface $eventManager ) { parent::__construct( $templateContainer, $identityContainer, $senderBuilderFactory, $logger, $addressRenderer ); $this->paymentHelper = $paymentHelper; $this->creditmemoResource = $creditmemoResource; $this->globalConfig = $globalConfig; $this->eventManager = $eventManager; } /** * Sends order creditmemo email to the customer. * * Email will be sent immediately in two cases: * * - if asynchronous email sending is disabled in global settings * - if $forceSyncMode parameter is set to TRUE * * Otherwise, email will be sent later during running of * corresponding cron job. * * @param \Magento\Sales\Api\Data\OrderInterface $order * @param \Magento\Sales\Api\Data\CreditmemoInterface $creditmemo * @param \Magento\Sales\Api\Data\CreditmemoCommentCreationInterface|null $comment * @param bool $forceSyncMode * * @return bool * @throws \Exception */ public function send( \Magento\Sales\Api\Data\OrderInterface $order, \Magento\Sales\Api\Data\CreditmemoInterface $creditmemo, \Magento\Sales\Api\Data\CreditmemoCommentCreationInterface $comment = null, $forceSyncMode = false ) { $creditmemo->setSendEmail($this->identityContainer->isEnabled()); if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) { $this->identityContainer->setStore($order->getStore()); $transport = [ 'order' => $order, 'creditmemo' => $creditmemo, 'comment' => $comment ? $comment->getComment() : '', 'billing' => $order->getBillingAddress(), 'payment_html' => $this->getPaymentHtml($order), 'store' => $order->getStore(), 'formattedShippingAddress' => $this->getFormattedShippingAddress($order), 'formattedBillingAddress' => $this->getFormattedBillingAddress($order), 'order_data' => [ 'customer_name' => $order->getCustomerName(), 'is_not_virtual' => $order->getIsNotVirtual(), 'email_customer_note' => $order->getEmailCustomerNote(), 'frontend_status_label' => $order->getFrontendStatusLabel() ] ]; $transportObject = new DataObject($transport); /** * Event argument `transport` is @deprecated. Use `transportObject` instead. */ $this->eventManager->dispatch( 'email_creditmemo_set_template_vars_before', ['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject] ); $this->templateContainer->setTemplateVars($transportObject->getData()); if ($this->checkAndSend($order)) { $creditmemo->setEmailSent(true); $this->creditmemoResource->saveAttribute($creditmemo, ['send_email', 'email_sent']); return true; } } else { $creditmemo->setEmailSent(null); $this->creditmemoResource->saveAttribute($creditmemo, 'email_sent'); } $this->creditmemoResource->saveAttribute($creditmemo, 'send_email'); return false; } /** * Returns payment info block as HTML. * * @param \Magento\Sales\Api\Data\OrderInterface $order * * @return string * @throws \Exception */ private function getPaymentHtml(\Magento\Sales\Api\Data\OrderInterface $order) { return $this->paymentHelper->getInfoBlockHtml( $order->getPayment(), $this->identityContainer->getStore()->getStoreId() ); } }