Ano n°0000020 : rajout des 2 variables {followup} et {delivery_block_html} sur le template "shipped"
This commit is contained in:
@@ -1,5 +1,101 @@
|
||||
<?php
|
||||
use PrestaShop\PrestaShop\Core\Stock\StockManager;
|
||||
|
||||
|
||||
class OrderHistory extends OrderHistoryCore
|
||||
{
|
||||
protected function _getFormatedAddress(Address $the_address, $line_sep, $fields_style = array())
|
||||
{
|
||||
return AddressFormat::generateAddress($the_address, array('avoid' => array()), $line_sep, ' ', $fields_style);
|
||||
}
|
||||
|
||||
public function sendEmail($order, $template_vars = false)
|
||||
{
|
||||
$carrier = new Carrier((int) $order->id_carrier, $order->id_lang);
|
||||
$delivery = new Address((int)$order->id_address_delivery);
|
||||
|
||||
$result = Db::getInstance()->getRow('
|
||||
SELECT osl.`template`, c.`lastname`, c.`firstname`, osl.`name` AS osname, c.`email`, os.`module_name`, os.`id_order_state`, os.`pdf_invoice`, os.`pdf_delivery`
|
||||
FROM `' . _DB_PREFIX_ . 'order_history` oh
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'orders` o ON oh.`id_order` = o.`id_order`
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'customer` c ON o.`id_customer` = c.`id_customer`
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'order_state` os ON oh.`id_order_state` = os.`id_order_state`
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = o.`id_lang`)
|
||||
WHERE oh.`id_order_history` = ' . (int) $this->id . ' AND os.`send_email` = 1');
|
||||
if (isset($result['template']) && Validate::isEmail($result['email'])) {
|
||||
ShopUrl::cacheMainDomainForShop($order->id_shop);
|
||||
|
||||
$topic = $result['osname'];
|
||||
$data = array(
|
||||
'{lastname}' => $result['lastname'],
|
||||
'{firstname}' => $result['firstname'],
|
||||
'{id_order}' => (int) $this->id_order,
|
||||
'{order_name}' => $order->getUniqReference(),
|
||||
'{followup}' => str_replace('@', $this->tracking_number, $carrier->url),
|
||||
'{delivery_block_html}' => $this->_getFormatedAddress($delivery, '<br />', array(
|
||||
'firstname' => '<span style="font-weight:bold;">%s</span>',
|
||||
'lastname' => '<span style="font-weight:bold;">%s</span>'
|
||||
)),
|
||||
);
|
||||
|
||||
if ($result['module_name']) {
|
||||
$module = Module::getInstanceByName($result['module_name']);
|
||||
if (Validate::isLoadedObject($module) && isset($module->extra_mail_vars) && is_array($module->extra_mail_vars)) {
|
||||
$data = array_merge($data, $module->extra_mail_vars);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($template_vars)) {
|
||||
$data = array_merge($data, $template_vars);
|
||||
}
|
||||
|
||||
$data['{total_paid}'] = Tools::displayPrice((float) $order->total_paid, new Currency((int) $order->id_currency), false);
|
||||
|
||||
if (Validate::isLoadedObject($order)) {
|
||||
// Attach invoice and / or delivery-slip if they exists and status is set to attach them
|
||||
if (($result['pdf_invoice'] || $result['pdf_delivery'])) {
|
||||
$context = Context::getContext();
|
||||
$invoice = $order->getInvoicesCollection();
|
||||
$file_attachement = array();
|
||||
|
||||
if ($result['pdf_invoice'] && (int) Configuration::get('PS_INVOICE') && $order->invoice_number) {
|
||||
Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $invoice));
|
||||
$pdf = new PDF($invoice, PDF::TEMPLATE_INVOICE, $context->smarty);
|
||||
$file_attachement['invoice']['content'] = $pdf->render(false);
|
||||
$file_attachement['invoice']['name'] = Configuration::get('PS_INVOICE_PREFIX', (int) $order->id_lang, null, $order->id_shop) . sprintf('%06d', $order->invoice_number) . '.pdf';
|
||||
$file_attachement['invoice']['mime'] = 'application/pdf';
|
||||
}
|
||||
if ($result['pdf_delivery'] && $order->delivery_number) {
|
||||
$pdf = new PDF($invoice, PDF::TEMPLATE_DELIVERY_SLIP, $context->smarty);
|
||||
$file_attachement['delivery']['content'] = $pdf->render(false);
|
||||
$file_attachement['delivery']['name'] = Configuration::get('PS_DELIVERY_PREFIX', Context::getContext()->language->id, null, $order->id_shop) . sprintf('%06d', $order->delivery_number) . '.pdf';
|
||||
$file_attachement['delivery']['mime'] = 'application/pdf';
|
||||
}
|
||||
} else {
|
||||
$file_attachement = null;
|
||||
}
|
||||
|
||||
if (!Mail::Send(
|
||||
(int) $order->id_lang,
|
||||
$result['template'],
|
||||
$topic,
|
||||
$data,
|
||||
$result['email'],
|
||||
$result['firstname'] . ' ' . $result['lastname'],
|
||||
null,
|
||||
null,
|
||||
$file_attachement,
|
||||
null,
|
||||
_PS_MAIL_DIR_,
|
||||
false,
|
||||
(int) $order->id_shop
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
ShopUrl::resetMainDomainCache();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user