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
|
<?php
|
||||||
use PrestaShop\PrestaShop\Core\Stock\StockManager;
|
|
||||||
|
|
||||||
class OrderHistory extends OrderHistoryCore
|
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