/**
  * Send email to customer
  *
  * @param Shipment $shipment
  * @param bool $notify
  * @param string $comment
  * @return bool
  */
 public function send(Shipment $shipment, $notify = true, $comment = '')
 {
     $order = $shipment->getOrder();
     $this->templateContainer->setTemplateVars(['order' => $order, 'shipment' => $shipment, 'comment' => $comment, 'billing' => $order->getBillingAddress(), 'payment_html' => $this->getPaymentHtml($order), 'store' => $order->getStore()]);
     $result = $this->checkAndSend($order, $notify);
     if ($result) {
         $shipment->setEmailSent(true);
         $this->shipmentResource->saveAttribute($shipment, 'email_sent');
     }
     return $result;
 }
Beispiel #2
0
 /**
  * Sends order shipment 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 Shipment $shipment
  * @param bool $forceSyncMode
  * @return bool
  */
 public function send(Shipment $shipment, $forceSyncMode = false)
 {
     $shipment->setSendEmail(true);
     if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) {
         $order = $shipment->getOrder();
         $transport = ['order' => $order, 'shipment' => $shipment, 'comment' => $shipment->getCustomerNoteNotify() ? $shipment->getCustomerNote() : '', 'billing' => $order->getBillingAddress(), 'payment_html' => $this->getPaymentHtml($order), 'store' => $order->getStore(), 'formattedShippingAddress' => $this->getFormattedShippingAddress($order), 'formattedBillingAddress' => $this->getFormattedBillingAddress($order)];
         $this->eventManager->dispatch('email_shipment_set_template_vars_before', ['sender' => $this, 'transport' => $transport]);
         $this->templateContainer->setTemplateVars($transport);
         if ($this->checkAndSend($order)) {
             $shipment->setEmailSent(true);
             $this->shipmentResource->saveAttribute($shipment, ['send_email', 'email_sent']);
             return true;
         }
     }
     $this->shipmentResource->saveAttribute($shipment, 'send_email');
     return false;
 }