LivraisonParSecteurs : rajout des infos de livraison dans les emails (order-confirmation et order-notification)
This commit is contained in:
@@ -27,6 +27,10 @@
|
|||||||
<tag name="hook.event_listener" event="order-delivery.extra" type="front" method="onOrderDeliveryExtra" />
|
<tag name="hook.event_listener" event="order-delivery.extra" type="front" method="onOrderDeliveryExtra" />
|
||||||
<tag name="hook.event_listener" event="order-invoice.delivery-address" type="front" method="displayDeliveryDate" />
|
<tag name="hook.event_listener" event="order-invoice.delivery-address" type="front" method="displayDeliveryDate" />
|
||||||
</hook>
|
</hook>
|
||||||
|
<hook id="lps.email.hookmanager" class="LivraisonParSecteurs\Hook\EmailHook">
|
||||||
|
<tag name="hook.event_listener" event="email-html.order-confirmation.delivery-address" type="email" method="displayDeliveryDateWithinEmail" />
|
||||||
|
<tag name="hook.event_listener" event="email-html.order-notification.delivery-address" type="email" method="displayDeliveryDateWithinEmail" />
|
||||||
|
</hook>
|
||||||
</hooks>
|
</hooks>
|
||||||
|
|
||||||
</config>
|
</config>
|
||||||
|
|||||||
40
local/modules/LivraisonParSecteurs/Hook/EmailHook.php
Normal file
40
local/modules/LivraisonParSecteurs/Hook/EmailHook.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace LivraisonParSecteurs\Hook;
|
||||||
|
|
||||||
|
use LivraisonParSecteurs\LivraisonParSecteurs;
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||||
|
use Thelia\Core\Hook\BaseHook;
|
||||||
|
use Thelia\Model\Order;
|
||||||
|
|
||||||
|
class EmailHook extends BaseHook
|
||||||
|
{
|
||||||
|
public function displayDeliveryDateWithinEmail(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
|
||||||
|
$moduleId = $event->getArgument('module');
|
||||||
|
$orderId = $event->getArgument('order');
|
||||||
|
|
||||||
|
if ((null !== $orderId) && ($moduleId == LivraisonParSecteurs::getModuleId()))
|
||||||
|
{
|
||||||
|
$selectedDay = $this->getSession()->get(LivraisonParSecteurs::LPS_DELIVERY_DATE);
|
||||||
|
$beginTime = $this->getSession()->get(LivraisonParSecteurs::LPS_DELIVERY_BEGIN_TIME);
|
||||||
|
$endTime = $this->getSession()->get(LivraisonParSecteurs::LPS_DELIVERY_END_TIME);
|
||||||
|
|
||||||
|
if ( (null !== $selectedDay) && (null !== $beginTime) && (null !== $endTime) )
|
||||||
|
{
|
||||||
|
$event->add(
|
||||||
|
$this->render(
|
||||||
|
'delivery-address.html', [
|
||||||
|
'day' => $selectedDay,
|
||||||
|
'begin_time' => $beginTime,
|
||||||
|
'end_time' => $endTime
|
||||||
|
])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<div class="panel panel-default col-sm-6">
|
||||||
|
<div class="panel-heading"><strong>{intl l="Delivery day" d="livraisonparsecteurs"}</strong></div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<span>{$day} entre {format_date date=$begin_time format="H:i"} et {format_date date=$end_time format="H:i"}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -89,7 +89,7 @@ class DeliveryListener extends BaseAction implements EventSubscriberInterface
|
|||||||
try {
|
try {
|
||||||
$query->setOrderId($orderId);
|
$query->setOrderId($orderId);
|
||||||
$query->setScheduleId($scheduleId);
|
$query->setScheduleId($scheduleId);
|
||||||
$query->setDeliveryAddressId($session->get('choosenDeliveryAddress'));
|
$query->setDeliveryAddressId($session->get(LivraisonParSecteurs::LPS_CHOSEN_ADDRESS));
|
||||||
|
|
||||||
$schedule = LpsAreaScheduleQuery::create()->findOneById($scheduleId);
|
$schedule = LpsAreaScheduleQuery::create()->findOneById($scheduleId);
|
||||||
$chosenDate = LivraisonParSecteurs::calculateRelativeDate($schedule->getDay());
|
$chosenDate = LivraisonParSecteurs::calculateRelativeDate($schedule->getDay());
|
||||||
@@ -103,10 +103,9 @@ class DeliveryListener extends BaseAction implements EventSubscriberInterface
|
|||||||
$query->save($con);
|
$query->save($con);
|
||||||
$con->commit();
|
$con->commit();
|
||||||
}
|
}
|
||||||
catch (ProcessFileException $e) {
|
catch (\Exception $e) {
|
||||||
throw new TheliaProcessException("PlanificationLivraison : Impossible to record this schedule");
|
throw new TheliaProcessException("PlanificationLivraison : Impossible to record this schedule - Cause : " . $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
463
templates/email/custom/email-layout.tpl
Normal file
463
templates/email/custom/email-layout.tpl
Normal file
@@ -0,0 +1,463 @@
|
|||||||
|
{default_translation_domain domain='email.default'}
|
||||||
|
{default_locale locale={$locale}}
|
||||||
|
{declare_assets directory='assets'}
|
||||||
|
{assign var="url_site" value="{config key="url_site"}"}
|
||||||
|
{assign var="company_name" value="{config key="store_name"}"}
|
||||||
|
{if not $company_name}
|
||||||
|
{assign var="company_name" value="{intl l='Thelia V2'}"}
|
||||||
|
{/if}
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
|
<title>{block name="email-subject"}{/block}</title>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
{literal}
|
||||||
|
#outlook a{
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
.ReadMsgBody{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.ExternalClass{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.yshortcuts,a .yshortcuts,a .yshortcuts:hover,a .yshortcuts:active,a .yshortcuts:focus{
|
||||||
|
background-color:transparent !important;
|
||||||
|
border:none !important;
|
||||||
|
color:inherit !important;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
border:0;
|
||||||
|
height:auto;
|
||||||
|
line-height:100%;
|
||||||
|
outline:none;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
table,td{
|
||||||
|
border-collapse:collapse !important;
|
||||||
|
mso-table-lspace:0pt;
|
||||||
|
mso-table-rspace:0pt;
|
||||||
|
}
|
||||||
|
#bodyTable,#bodyCell{
|
||||||
|
height:100% !important;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
width:100% !important;
|
||||||
|
}
|
||||||
|
#bodyCell{
|
||||||
|
padding:20px;
|
||||||
|
}
|
||||||
|
.templateContainer{
|
||||||
|
width:600px;
|
||||||
|
}
|
||||||
|
h1{
|
||||||
|
color:#202020;
|
||||||
|
display:block;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:26px;
|
||||||
|
font-style:normal;
|
||||||
|
font-weight:bold;
|
||||||
|
line-height:100%;
|
||||||
|
letter-spacing:normal;
|
||||||
|
margin-top:0;
|
||||||
|
margin-right:0;
|
||||||
|
margin-bottom:10px;
|
||||||
|
margin-left:0;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
h2{
|
||||||
|
color:#404040;
|
||||||
|
display:block;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:20px;
|
||||||
|
font-style:normal;
|
||||||
|
font-weight:bold;
|
||||||
|
line-height:100%;
|
||||||
|
letter-spacing:normal;
|
||||||
|
margin-top:0;
|
||||||
|
margin-right:0;
|
||||||
|
margin-bottom:10px;
|
||||||
|
margin-left:0;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
h3{
|
||||||
|
color:#606060;
|
||||||
|
display:block;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:16px;
|
||||||
|
font-style:normal;
|
||||||
|
font-weight:bold;
|
||||||
|
line-height:100%;
|
||||||
|
letter-spacing:normal;
|
||||||
|
margin-top:0;
|
||||||
|
margin-right:0;
|
||||||
|
margin-bottom:10px;
|
||||||
|
margin-left:0;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
h4{
|
||||||
|
color:#808080;
|
||||||
|
display:block;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:12px;
|
||||||
|
font-style:normal;
|
||||||
|
font-weight:bold;
|
||||||
|
line-height:100%;
|
||||||
|
letter-spacing:normal;
|
||||||
|
margin-top:0;
|
||||||
|
margin-right:0;
|
||||||
|
margin-bottom:10px;
|
||||||
|
margin-left:0;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
#templatePreheader{
|
||||||
|
background-color:#f5f5f5;
|
||||||
|
border-top:10px solid #f5f5f5;
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
.preheaderContent{
|
||||||
|
color:#707070;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:10px;
|
||||||
|
line-height:125%;
|
||||||
|
padding-top:10px;
|
||||||
|
padding-bottom:10px;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
.preheaderContent a:link,.preheaderContent a:visited,.preheaderContent a .yshortcuts {
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-weight:normal;
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
#templateHeader{
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border-top:10px solid #f5f5f5;
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
.headerContent{
|
||||||
|
color:#202020;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:20px;
|
||||||
|
font-weight:bold;
|
||||||
|
line-height:100%;
|
||||||
|
padding-top:40px;
|
||||||
|
padding-right:0;
|
||||||
|
padding-bottom:20px;
|
||||||
|
padding-left:0;
|
||||||
|
text-align:left;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
.headerContent a:link,.headerContent a:visited,.headerContent a .yshortcuts {
|
||||||
|
color:#E1523D;
|
||||||
|
font-weight:normal;
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
#templateBody{
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border-top:0;
|
||||||
|
border-bottom:0;
|
||||||
|
}
|
||||||
|
.titleContentBlock{
|
||||||
|
background-color:#ffffff;
|
||||||
|
border-top:0px solid #F47766;
|
||||||
|
border-bottom:0px solid #B14031;
|
||||||
|
}
|
||||||
|
.titleContent{
|
||||||
|
color:#7a7a7a;
|
||||||
|
font-family:Arial;
|
||||||
|
font-size:24px;
|
||||||
|
font-weight:normal;
|
||||||
|
line-height:110%;
|
||||||
|
padding-top:5px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
.bodyContentBlock{
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border-top:0;
|
||||||
|
border-bottom:1px solid #E5E5E5;
|
||||||
|
}
|
||||||
|
.bodyContent{
|
||||||
|
color:#505050;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:16px;
|
||||||
|
line-height:150%;
|
||||||
|
padding-top:20px;
|
||||||
|
padding-bottom:20px;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
.bodyContent a:link,.bodyContent a:visited,.bodyContent a .yshortcuts {
|
||||||
|
color:#E1523D;
|
||||||
|
font-weight:normal;
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
.templateButton{
|
||||||
|
-moz-border-radius:5px;
|
||||||
|
-webkit-border-radius:5px;
|
||||||
|
background-color:#f49a17;
|
||||||
|
border:0;
|
||||||
|
border-radius:5px;
|
||||||
|
}
|
||||||
|
.templateButtonContent,.templateButtonContent a:link,.templateButtonContent a:visited,.templateButtonContent a .yshortcuts {
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:15px;
|
||||||
|
font-weight:bold;
|
||||||
|
letter-spacing:-.5px;
|
||||||
|
line-height:100%;
|
||||||
|
text-align:center;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
.bodyContent img{
|
||||||
|
display:inline;
|
||||||
|
height:auto;
|
||||||
|
max-width:600px;
|
||||||
|
}
|
||||||
|
body,#bodyTable{
|
||||||
|
background-color:#444444;
|
||||||
|
}
|
||||||
|
#templateFooter{
|
||||||
|
border-top:0;
|
||||||
|
}
|
||||||
|
.footerContent{
|
||||||
|
color:#808080;
|
||||||
|
font-family:Helvetica;
|
||||||
|
font-size:10px;
|
||||||
|
line-height:150%;
|
||||||
|
padding-top:20px;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
.footerContent a:link,.footerContent a:visited,.footerContent a .yshortcuts {
|
||||||
|
color:#606060;
|
||||||
|
font-weight:normal;
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
.footerContent img{
|
||||||
|
display:inline;
|
||||||
|
max-width:600px;
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 480px){
|
||||||
|
body,table,td,p,a,li,blockquote{
|
||||||
|
-webkit-text-size-adjust:none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
width:auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table[class=templateContainer]{
|
||||||
|
width:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table[class=templateContainer]{
|
||||||
|
max-width:600px !important;
|
||||||
|
width:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1{
|
||||||
|
font-size:24px !important;
|
||||||
|
line-height:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2{
|
||||||
|
font-size:20px !important;
|
||||||
|
line-height:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3{
|
||||||
|
font-size:18px !important;
|
||||||
|
line-height:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4{
|
||||||
|
font-size:16px !important;
|
||||||
|
line-height:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table[id=templatePreheader]{
|
||||||
|
display:none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
img[id=headerImage]{
|
||||||
|
height:auto !important;
|
||||||
|
max-width:233px !important;
|
||||||
|
width:100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
td[class=headerContent]{
|
||||||
|
font-size:20px !important;
|
||||||
|
line-height:150% !important;
|
||||||
|
padding-top:40px !important;
|
||||||
|
padding-right:10px !important;
|
||||||
|
padding-bottom:20px !important;
|
||||||
|
padding-left:10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
img[class=bodyImage]{
|
||||||
|
height:auto !important;
|
||||||
|
max-width:400px !important;
|
||||||
|
width:50% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
td[class=titleContent]{
|
||||||
|
font-size:20px !important;
|
||||||
|
line-height:125% !important;
|
||||||
|
padding-right:10px;
|
||||||
|
padding-left:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td[class=bodyContent]{
|
||||||
|
font-size:16px !important;
|
||||||
|
line-height:125% !important;
|
||||||
|
padding-right:10px;
|
||||||
|
padding-left:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td[class=footerContent]{
|
||||||
|
font-size:14px !important;
|
||||||
|
line-height:150% !important;
|
||||||
|
padding-right:10px;
|
||||||
|
padding-left:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td[class=footerContent] a{
|
||||||
|
display:block !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.preheaderContent a:link,.preheaderContent a:visited,.preheaderContent a .yshortcuts{
|
||||||
|
color:#f49a17;
|
||||||
|
}
|
||||||
|
.footerContent a:link,.footerContent a:visited,.footerContent a .yshortcuts{
|
||||||
|
color:#ffffff;
|
||||||
|
}
|
||||||
|
.bodyContent a:link,.bodyContent a:visited,.bodyContent a .yshortcuts{
|
||||||
|
color:#f49a17;
|
||||||
|
text-decoration:none;
|
||||||
|
font-weight:normal;
|
||||||
|
}
|
||||||
|
.templateButtonContent,.templateButtonContent a:link,.templateButtonContent a:visited,.templateButtonContent a .yshortcuts{
|
||||||
|
font-weight:normal;
|
||||||
|
}
|
||||||
|
{/literal}
|
||||||
|
</style>
|
||||||
|
{hook name="email-html.layout.css"}
|
||||||
|
</head>
|
||||||
|
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" style="margin: 0;padding: 0;background-color: #444444;">
|
||||||
|
<center>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="bodyTable" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;margin: 0;padding: 0;background-color: #444444;border-collapse: collapse !important;height: 100% !important;width: 100% !important;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
{block name="pre-header"}
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="templatePreheader" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;background-color: #f5f5f5;border-top: 10px solid #f5f5f5;border-bottom: 0;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" class="templateContainer" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;width: 600px;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="preheaderContent" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;color: #707070;font-family: Helvetica;font-size: 10px;line-height: 125%;padding-top: 10px;padding-bottom: 10px;text-align: left;border-collapse: collapse !important;">
|
||||||
|
{block name="email-intro"}{/block}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td valign="top" class="preheaderContent" style="padding-left: 20px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;color: #707070;font-family: Helvetica;font-size: 10px;line-height: 125%;padding-top: 10px;padding-bottom: 10px;text-align: left;border-collapse: collapse !important;" width="200">
|
||||||
|
{block name="browser"}{intl l="Email not displaying correctly?"}<br><a href="{config key="url_site"}?view=email/register" target="_blank" style="color: #f49a17;font-weight: normal;text-decoration: underline;">{intl l="View it in your browser"}</a>.{/block}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/block}
|
||||||
|
|
||||||
|
{block name="logo-header"}
|
||||||
|
{/block}
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="templateBody" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;background-color: #FFFFFF;border-top: 0;border-bottom: 0;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="padding-top: 20px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" class="templateContainer" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;width: 600px;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="10" cellspacing="0" width="100%" class="titleContentBlock" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;background-color: #ffffff;border-top: 0px solid #F47766;border-bottom: 0px solid #B14031;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="titleContent" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;color: #7a7a7a;font-family: Arial;font-size: 24px;font-weight: normal;line-height: 110%;padding-top: 5px;padding-bottom: 5px;text-align: left;border-collapse: collapse !important;">
|
||||||
|
{block name="email-title"}{/block}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="padding-bottom: 40px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="10" cellspacing="0" width="100%" class="bodyContentBlock" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;background-color: #FFFFFF;border-top: 0;border-bottom: 1px solid #E5E5E5;border-collapse: collapse !important;">
|
||||||
|
{block name="image-header"}
|
||||||
|
<tr>
|
||||||
|
<td class="bodyContent" style="padding-bottom: 20px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;color: #505050;font-family: Helvetica;font-size: 16px;line-height: 150%;padding-top: 20px;text-align: left;border-collapse: collapse !important;">
|
||||||
|
{local_media type="banner"}
|
||||||
|
<img class="bodyImage" src="{$MEDIA_URL}" alt="" border="0" style="border: 0px none;border-color: ;border-style: none;border-width: 0px;margin: 0;padding: 0;line-height: 100%;outline: none;text-decoration: none;display: inline;max-width: 400px;">
|
||||||
|
{/local_media}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/block}
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="bodyContent" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;color: #505050;font-family: Helvetica;font-size: 14px;line-height: 150%;padding-top: 0px;padding-bottom: 20px;text-align: left;border-collapse: collapse !important;">
|
||||||
|
{block name="email-content"}{/block}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="templateFooter" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-top: 0;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" style="padding-bottom: 40px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;border-collapse: collapse !important;">
|
||||||
|
{hook name="email-html.layout.footer"}
|
||||||
|
{elsehook rel="email-html.layout.footer"}
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" class="templateContainer" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;width: 600px;border-collapse: collapse !important;">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="footerContent" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;color: #808080;font-family: Helvetica;font-size: 10px;line-height: 150%;padding-top: 20px;text-align: left;border-collapse: collapse !important;">
|
||||||
|
<strong>{intl l="Our mailing address is:"}</strong>
|
||||||
|
<br>
|
||||||
|
{config key="store_address1"} {config key="store_address2"} {config key="store_address3"}<br>
|
||||||
|
{config key="store_zipcode"} {config key="store_city"},
|
||||||
|
{if {config key="store_country"} }
|
||||||
|
{loop type="country" name="address.country.title" id={config key="store_country"}}, {$TITLE}{/loop}
|
||||||
|
{/if}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<em>{intl l="Copyright"} © {'Y'|date} {$company_name}, {intl l="All rights reserved."}</em>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
{/elsehook}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
142
templates/email/custom/order_confirmation.html
Normal file
142
templates/email/custom/order_confirmation.html
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
{extends file="email-layout.tpl"}
|
||||||
|
|
||||||
|
{* Do not provide a "Open in browser" link *}
|
||||||
|
{block name="browser"}{/block}
|
||||||
|
{* No pre-header *}
|
||||||
|
{block name="pre-header"}{/block}
|
||||||
|
|
||||||
|
{* Subject *}
|
||||||
|
{block name="email-subject"}{intl l="Your order confirmation Nº %ref" ref={$order_ref}}{/block}
|
||||||
|
|
||||||
|
{* Title *}
|
||||||
|
{block name="email-title"}{intl l="Thank you for your order!"}{/block}
|
||||||
|
|
||||||
|
{* Content *}
|
||||||
|
{block name="email-content"}
|
||||||
|
|
||||||
|
{loop name="order.invoice" type="order" id=$order_id customer="*"}
|
||||||
|
{loop name="currency.order" type="currency" id=$CURRENCY}
|
||||||
|
{assign var="orderCurrencyIsoCode" value=$ISOCODE}
|
||||||
|
{/loop}
|
||||||
|
{loop type="customer" name="customer.invoice" id=$CUSTOMER current="0"}
|
||||||
|
{assign var="customerRef" value=$REF}
|
||||||
|
{/loop}
|
||||||
|
|
||||||
|
{hook name="email-html.order-confirmation.before-address" order=$order_id}
|
||||||
|
|
||||||
|
{intl l="Here are the details of your purchase:"}<br /><br />
|
||||||
|
|
||||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="55%">
|
||||||
|
<strong>{intl l="Delivery address:"}</strong><br>
|
||||||
|
{format_address order_address=$DELIVERY_ADDRESS locale=$locale}
|
||||||
|
|
||||||
|
{ifhook rel="email-html.order-confirmation.delivery-address"}
|
||||||
|
{hook name="email-html.order-confirmation.delivery-address" module={$DELIVERY_MODULE} order=$order_id}
|
||||||
|
{/ifhook}
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<strong>{intl l="Billing address:"}</strong><br />
|
||||||
|
{format_address order_address=$INVOICE_ADDRESS locale=$locale}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{hook name="email-html.order-confirmation.after-address" order=$order_id}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{intl l="Order Total:"} {format_money number=$TOTAL_TAXED_AMOUNT currency_id=$CURRENCY}<br />
|
||||||
|
{intl l="Order Number:"} {$REF}<br />
|
||||||
|
{intl l="Paid With:"} {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}<br />
|
||||||
|
{intl l="Purchase Date:"} {format_date date=$CREATE_DATE output="datetime"}<br />
|
||||||
|
{intl l="Delivery method:"} {loop name="delivery-module" type="module" id=$DELIVERY_MODULE}{$TITLE}{/loop}<span class=""><strong>{$}</strong></span><br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{hook name="email-html.order-confirmation.before-products" order=$order_id}
|
||||||
|
|
||||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="font-size:13px;line-height:2em">
|
||||||
|
<tr style="color:#999;font-size:11px">
|
||||||
|
<td style="color:#999;border-bottom:1px solid #000">{intl l="What You Purchased"}</td>
|
||||||
|
<td align="right" style="color:#999;border-bottom:1px solid #000">{intl l="Price in"} {$orderCurrencyIsoCode}</td>
|
||||||
|
</tr>
|
||||||
|
{$subtotal = 0}
|
||||||
|
{loop type="order_product" name="order-products" order=$ID}
|
||||||
|
{if $WAS_IN_PROMO == 1}
|
||||||
|
{assign "realPrice" $PROMO_PRICE}
|
||||||
|
{assign "realTax" $PROMO_PRICE_TAX}
|
||||||
|
{assign "realTaxedPrice" $TAXED_PROMO_PRICE}
|
||||||
|
{else}
|
||||||
|
{assign "realPrice" $PRICE}
|
||||||
|
{assign "realTax" $PRICE_TAX}
|
||||||
|
{assign "realTaxedPrice" $TAXED_PRICE}
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td style="border-bottom:1px solid #000">
|
||||||
|
<b>{$TITLE}</b> <i>({$REF}{if $REF != $PRODUCT_SALE_ELEMENTS_REF}, {$PRODUCT_SALE_ELEMENTS_REF}{/if})</i>
|
||||||
|
{ifloop rel="combinations"}<br />
|
||||||
|
{loop type="order_product_attribute_combination" name="combinations" order_product=$ID}
|
||||||
|
<span style="color:#999;display:block;font-size:11px;line-height:1.2">* {$ATTRIBUTE_TITLE}: {$ATTRIBUTE_AVAILABILITY_TITLE}</span>
|
||||||
|
{/loop}
|
||||||
|
{/ifloop}
|
||||||
|
{hook name="email-html.order-confirmation.product-list" order=$order_id order_product=$ID}
|
||||||
|
</td>
|
||||||
|
<td align="right" style="border-bottom:1px solid #000; white-space:nowrap">
|
||||||
|
{$QUANTITY} x {format_money number=$realTaxedPrice currency_id=$CURRENCY}
|
||||||
|
{$subtotal = $subtotal + $realTaxedPrice * $QUANTITY}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
{hook name="email-html.order-confirmation.order-product" order="{$order_id}" order_product="{$ID}"}
|
||||||
|
|
||||||
|
{/loop}
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Subtotal"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number=$subtotal currency_id=$CURRENCY} </td>
|
||||||
|
</tr>
|
||||||
|
{if $DISCOUNT > 0}
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Discount"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number=$DISCOUNT currency_id=$CURRENCY} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Total"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number={$TOTAL_TAXED_AMOUNT - $POSTAGE} currency_id=$CURRENCY} </td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Shipping:"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number=$POSTAGE currency_id=$CURRENCY}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right"><strong>{intl l="Order Total"}</strong></td>
|
||||||
|
<td align="right" style="text-align:right"><strong>{format_money number=$TOTAL_TAXED_AMOUNT currency_id=$CURRENCY}</strong></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
{/loop}
|
||||||
|
|
||||||
|
{hook name="email-html.order-confirmation.after-products" order=$order_id}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
{ifhook rel="email-html.order-confirmation.footer"}
|
||||||
|
{hook name="email-html.order-confirmation.footer" order=$order_id}
|
||||||
|
{/ifhook}
|
||||||
|
{elsehook rel="email-html.order-confirmation.footer"}
|
||||||
|
<p><a href="{url path="/account"}">{intl l="View this order in your account at %shop_name" shop_name={config key="store_name"}}</a></p>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<h2>{intl l="Support"}</h2>
|
||||||
|
{intl l='For any questions, or concerns, feel free to contact <a href="mailto:%mail" style="color:#3c69c1;text-decoration:none" target="_blank">%mail</a>.' mail={config key="store_email"}}<br /><br />
|
||||||
|
<b>{intl l="Our contact us at:"}</b> <br />
|
||||||
|
{config key="store_name"}<br>
|
||||||
|
{config key="store_address1"}<br />
|
||||||
|
{config key="store_zipcode"} {config key="store_city"}<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
{intl l="Thanks"}<br />
|
||||||
|
{/elsehook}
|
||||||
|
{/block}
|
||||||
127
templates/email/custom/order_notification.html
Normal file
127
templates/email/custom/order_notification.html
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
{extends file="email-layout.tpl"}
|
||||||
|
|
||||||
|
{* Do not provide a "Open in browser" link *}
|
||||||
|
{block name="browser"}{/block}
|
||||||
|
{* No big image header *}
|
||||||
|
{block name="image-header"}{/block}
|
||||||
|
{* No logo header *}
|
||||||
|
{block name="logo-header"}{/block}
|
||||||
|
{* No pre-header *}
|
||||||
|
{block name="pre-header"}{/block}
|
||||||
|
|
||||||
|
{* Subject *}
|
||||||
|
{block name="email-subject"}{intl l="New order placed on %store_name Nº %ref" ref={$order_ref} store_name={config key="store_name"}}{/block}
|
||||||
|
|
||||||
|
{* Title *}
|
||||||
|
{block name="email-title"}{intl l="Hello, a new order has been placed."}{/block}
|
||||||
|
|
||||||
|
{* Content *}
|
||||||
|
{block name="email-content"}
|
||||||
|
{loop name="order.invoice" type="order" id=$order_id customer="*"}
|
||||||
|
{loop name="currency.order" type="currency" id=$CURRENCY}
|
||||||
|
{assign var="orderCurrencyIsoCode" value=$ISOCODE}
|
||||||
|
{/loop}
|
||||||
|
|
||||||
|
{loop type="customer" name="customer.invoice" id=$CUSTOMER current="0"}
|
||||||
|
{assign var="customerRef" value=$REF}
|
||||||
|
{/loop}
|
||||||
|
|
||||||
|
<p><a href="{url path="/admin/order/update/%id" id=$ID}">{intl l="View this order in your shop back-office."}</a></p>
|
||||||
|
|
||||||
|
{hook name="email-html.order-notification.before-address" order=$order_id}
|
||||||
|
|
||||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="55%">
|
||||||
|
<strong>{intl l="Customer delivery address:"}</strong><br>
|
||||||
|
{format_address order_address=$DELIVERY_ADDRESS locale=$locale}
|
||||||
|
|
||||||
|
{ifhook rel="email-html.order-notification.delivery-address"}
|
||||||
|
{hook name="email-html.order-notification.delivery-address" module={$DELIVERY_MODULE} order=$order_id}
|
||||||
|
{/ifhook}
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<strong>{intl l="Customer billing address:"}</strong><br />
|
||||||
|
{format_address order_address=$INVOICE_ADDRESS locale=$locale}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{hook name="email-html.order-notification.after-address" order=$order_id}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{intl l="Order Total:"} {format_money number=$TOTAL_TAXED_AMOUNT currency_id=$CURRENCY}<br />
|
||||||
|
{intl l="Order Number:"} {$REF}<br />
|
||||||
|
{intl l="Paid With:"} {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}<br />
|
||||||
|
{intl l="Purchase Date:"} {format_date date=$CREATE_DATE output="datetime"}<br />
|
||||||
|
{intl l="Delivery method:"} {loop name="delivery-module" type="module" id=$DELIVERY_MODULE}<strong>{$TITLE}</strong>{/loop}<br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{hook name="email-html.order-notification.before-products" order=$order_id}
|
||||||
|
|
||||||
|
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="font-size:13px;line-height:2em">
|
||||||
|
<tr style="color:#999;font-size:11px">
|
||||||
|
<td style="color:#999;border-bottom:1px solid #000">{intl l="What You Purchased"}</td>
|
||||||
|
<td align="right" style="color:#999;border-bottom:1px solid #000">{intl l="Price in"} {$orderCurrencyIsoCode}</td>
|
||||||
|
</tr>
|
||||||
|
{$subtotal = 0}
|
||||||
|
{loop type="order_product" name="order-products" order=$ID}
|
||||||
|
{if $WAS_IN_PROMO == 1}
|
||||||
|
{assign "realPrice" $PROMO_PRICE}
|
||||||
|
{assign "realTax" $PROMO_PRICE_TAX}
|
||||||
|
{assign "realTaxedPrice" $TAXED_PROMO_PRICE}
|
||||||
|
{else}
|
||||||
|
{assign "realPrice" $PRICE}
|
||||||
|
{assign "realTax" $PRICE_TAX}
|
||||||
|
{assign "realTaxedPrice" $TAXED_PRICE}
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td style="border-bottom:1px solid #000">
|
||||||
|
<b>{$TITLE}</b> <i>({$REF}{if $REF != $PRODUCT_SALE_ELEMENTS_REF}, {$PRODUCT_SALE_ELEMENTS_REF}{/if})</i>
|
||||||
|
{ifloop rel="combinations"}<br />
|
||||||
|
{loop type="order_product_attribute_combination" name="combinations" order_product=$ID}
|
||||||
|
<span style="color:#999;display:block;font-size:11px;line-height:1.2">* {$ATTRIBUTE_TITLE}: {$ATTRIBUTE_AVAILABILITY_TITLE}</span>
|
||||||
|
{/loop}
|
||||||
|
{/ifloop}
|
||||||
|
</td>
|
||||||
|
<td align="right" style="border-bottom:1px solid #000; white-space:nowrap">
|
||||||
|
{$QUANTITY} x {format_money number=$realTaxedPrice currency_id=$CURRENCY}
|
||||||
|
{$subtotal = $subtotal + $realTaxedPrice * $QUANTITY}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
{hook name="email-html.order-notification.order-product" order={$order_id} order_product={$ID}}
|
||||||
|
|
||||||
|
{/loop}
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Subtotal"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number=$subtotal currency_id=$CURRENCY} </td>
|
||||||
|
</tr>
|
||||||
|
{if $DISCOUNT > 0}
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Discount"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number=$DISCOUNT currency_id=$CURRENCY} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Total"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number={$TOTAL_TAXED_AMOUNT - $POSTAGE} currency_id=$CURRENCY} </td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right">{intl l="Shipping:"}</td>
|
||||||
|
<td align="right" style="text-align:right">{format_money number=$POSTAGE currency_id=$CURRENCY}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right" style="text-align:right"><strong>{intl l="Order Total"}</strong></td>
|
||||||
|
<td align="right" style="text-align:right"><strong>{format_money number=$TOTAL_TAXED_AMOUNT currency_id=$CURRENCY}</strong></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
{/loop}
|
||||||
|
|
||||||
|
{hook name="email-html.order-notification.after-products" order=$order_id}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
{intl l="Have a nice day."}<br />
|
||||||
|
{/block}
|
||||||
Reference in New Issue
Block a user