// Added hook actionProductCoverage in mailalerts module and updated StockManager
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@13860 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -406,6 +406,16 @@ class StockManagerCore implements StockManagerInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if we remove a usable quantity, exec hook
|
||||||
|
if ($is_usable)
|
||||||
|
Hook::exec('actionProductCoverage',
|
||||||
|
array(
|
||||||
|
'id_product' => $id_product,
|
||||||
|
'id_product_attribute' => $id_product_attribute,
|
||||||
|
'warehouse' => $warehouse
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<module>
|
<module>
|
||||||
<name>mailalerts</name>
|
<name>mailalerts</name>
|
||||||
<displayName><![CDATA[Mail alerts]]></displayName>
|
<displayName><![CDATA[Mail alerts]]></displayName>
|
||||||
<version><![CDATA[2.3]]></version>
|
<version><![CDATA[2.4]]></version>
|
||||||
<description><![CDATA[Sends e-mail notifications to customers and merchants.]]></description>
|
<description><![CDATA[Sends e-mail notifications to customers and merchants.]]></description>
|
||||||
<author><![CDATA[PrestaShop]]></author>
|
<author><![CDATA[PrestaShop]]></author>
|
||||||
<tab><![CDATA[administration]]></tab>
|
<tab><![CDATA[administration]]></tab>
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ class MailAlerts extends Module
|
|||||||
private $_merchant_order;
|
private $_merchant_order;
|
||||||
private $_merchant_oos;
|
private $_merchant_oos;
|
||||||
private $_customer_qty;
|
private $_customer_qty;
|
||||||
|
private $_merchant_coverage;
|
||||||
|
private $_product_coverage;
|
||||||
|
|
||||||
const __MA_MAIL_DELIMITOR__ = ',';
|
const __MA_MAIL_DELIMITOR__ = ',';
|
||||||
|
|
||||||
@@ -45,7 +47,7 @@ class MailAlerts extends Module
|
|||||||
{
|
{
|
||||||
$this->name = 'mailalerts';
|
$this->name = 'mailalerts';
|
||||||
$this->tab = 'administration';
|
$this->tab = 'administration';
|
||||||
$this->version = '2.3';
|
$this->version = '2.4';
|
||||||
$this->author = 'PrestaShop';
|
$this->author = 'PrestaShop';
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
@@ -64,6 +66,8 @@ class MailAlerts extends Module
|
|||||||
$this->_merchant_order = (int)Configuration::get('MA_MERCHANT_ORDER');
|
$this->_merchant_order = (int)Configuration::get('MA_MERCHANT_ORDER');
|
||||||
$this->_merchant_oos = (int)Configuration::get('MA_MERCHANT_OOS');
|
$this->_merchant_oos = (int)Configuration::get('MA_MERCHANT_OOS');
|
||||||
$this->_customer_qty = (int)Configuration::get('MA_CUSTOMER_QTY');
|
$this->_customer_qty = (int)Configuration::get('MA_CUSTOMER_QTY');
|
||||||
|
$this->_merchant_coverage = (int)Configuration::getGlobalValue('MA_MERCHANT_COVERAGE');
|
||||||
|
$this->_product_coverage = (int)Configuration::getGlobalValue('MA_PRODUCT_COVERAGE');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function install()
|
public function install()
|
||||||
@@ -78,6 +82,7 @@ class MailAlerts extends Module
|
|||||||
!$this->registerHook('actionProductAttributeDelete') ||
|
!$this->registerHook('actionProductAttributeDelete') ||
|
||||||
!$this->registerHook('actionProductAttributeUpdate') ||
|
!$this->registerHook('actionProductAttributeUpdate') ||
|
||||||
!$this->registerHook('actionProductUpdate') ||
|
!$this->registerHook('actionProductUpdate') ||
|
||||||
|
!$this->registerHook('actionProductCoverage') ||
|
||||||
!$this->registerHook('displayHeader'))
|
!$this->registerHook('displayHeader'))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -86,6 +91,8 @@ class MailAlerts extends Module
|
|||||||
Configuration::updateValue('MA_CUSTOMER_QTY', 1);
|
Configuration::updateValue('MA_CUSTOMER_QTY', 1);
|
||||||
Configuration::updateValue('MA_MERCHANT_MAILS', Configuration::get('PS_SHOP_EMAIL'));
|
Configuration::updateValue('MA_MERCHANT_MAILS', Configuration::get('PS_SHOP_EMAIL'));
|
||||||
Configuration::updateValue('MA_LAST_QTIES', (int)Configuration::get('PS_LAST_QTIES'));
|
Configuration::updateValue('MA_LAST_QTIES', (int)Configuration::get('PS_LAST_QTIES'));
|
||||||
|
Configuration::updateGlobalValue('MA_MERCHANT_COVERAGE', 0);
|
||||||
|
Configuration::updateGlobalValue('MA_PRODUCT_COVERAGE', 0);
|
||||||
|
|
||||||
$sql = 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.MailAlert::$definition['table'].'`
|
$sql = 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.MailAlert::$definition['table'].'`
|
||||||
(
|
(
|
||||||
@@ -110,6 +117,8 @@ class MailAlerts extends Module
|
|||||||
Configuration::deleteByName('MA_CUSTOMER_QTY');
|
Configuration::deleteByName('MA_CUSTOMER_QTY');
|
||||||
Configuration::deleteByName('MA_MERCHANT_MAILS');
|
Configuration::deleteByName('MA_MERCHANT_MAILS');
|
||||||
Configuration::deleteByName('MA_LAST_QTIES');
|
Configuration::deleteByName('MA_LAST_QTIES');
|
||||||
|
Configuration::deleteByName('MA_MERCHANT_COVERAGE');
|
||||||
|
Configuration::deleteByName('MA_PRODUCT_COVERAGE');
|
||||||
|
|
||||||
if (!Db::getInstance()->execute('DROP TABLE '._DB_PREFIX_.MailAlert::$definition['table']))
|
if (!Db::getInstance()->execute('DROP TABLE '._DB_PREFIX_.MailAlert::$definition['table']))
|
||||||
return false;
|
return false;
|
||||||
@@ -169,6 +178,10 @@ class MailAlerts extends Module
|
|||||||
$errors[] = $this->l('Cannot update settings');
|
$errors[] = $this->l('Cannot update settings');
|
||||||
else if (!Configuration::updateValue('MA_LAST_QTIES', (int)Tools::getValue('MA_LAST_QTIES')))
|
else if (!Configuration::updateValue('MA_LAST_QTIES', (int)Tools::getValue('MA_LAST_QTIES')))
|
||||||
$errors[] = $this->l('Cannot update settings');
|
$errors[] = $this->l('Cannot update settings');
|
||||||
|
else if (!Configuration::updateGlobalValue('MA_MERCHANT_COVERAGE', (int)Tools::getValue('mA_merchant_coverage')))
|
||||||
|
$errors[] = $this->l('Cannot update settings');
|
||||||
|
else if (!Configuration::updateGlobalValue('MA_PRODUCT_COVERAGE', (int)Tools::getValue('MA_PRODUCT_COVERAGE')))
|
||||||
|
$errors[] = $this->l('Cannot update settings');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,7 +194,8 @@ class MailAlerts extends Module
|
|||||||
public function _displayForm()
|
public function _displayForm()
|
||||||
{
|
{
|
||||||
return '<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
|
return '<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
|
||||||
<fieldset><legend><img src="'.$this->_path.'logo.gif" />'.$this->l('Customer notification').'</legend>
|
<fieldset><legend><img src="'.$this->_path.'logo.gif" />'.$this->l('Customer notifications').'</legend>
|
||||||
|
<div style="clear:both;"> </div>
|
||||||
<label>'.$this->l('Product availability:').' </label>
|
<label>'.$this->l('Product availability:').' </label>
|
||||||
<div class="margin-form">
|
<div class="margin-form">
|
||||||
<input type="checkbox" value="1" id="mA_customer_qty" name="mA_customer_qty" '.(Tools::getValue('mA_customer_qty', $this->_customer_qty) == 1 ? 'checked' : '').'>
|
<input type="checkbox" value="1" id="mA_customer_qty" name="mA_customer_qty" '.(Tools::getValue('mA_customer_qty', $this->_customer_qty) == 1 ? 'checked' : '').'>
|
||||||
@@ -192,28 +206,44 @@ class MailAlerts extends Module
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
<br />
|
<div style="clear:both;"> </div>
|
||||||
<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
|
<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
|
||||||
<fieldset><legend><img src="'.$this->_path.'logo.gif" />'.$this->l('Merchant notification').'</legend>
|
<fieldset>
|
||||||
|
<legend><img src="'.$this->_path.'logo.gif" />'.$this->l('Merchant notifications').'</legend>
|
||||||
|
<div style="clear:both;"> </div>
|
||||||
<label>'.$this->l('New order:').' </label>
|
<label>'.$this->l('New order:').' </label>
|
||||||
<div class="margin-form">
|
<div class="margin-form">
|
||||||
<input type="checkbox" value="1" id="mA_merchand_order" name="mA_merchand_order" '.(Tools::getValue('mA_merchand_order', $this->_merchant_order) == 1 ? 'checked' : '').'>
|
<input type="checkbox" value="1" id="mA_merchand_order" name="mA_merchand_order" '.(Tools::getValue('mA_merchand_order', $this->_merchant_order) == 1 ? 'checked' : '').'>
|
||||||
<label for="mA_merchand_order" class="t">'.$this->l('Receive a notification if a new order is made').'</label>
|
<label for="mA_merchand_order" class="t">'.$this->l('Receive a notification when an order is placed').'</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div style="clear:both;"> </div>
|
||||||
<label>'.$this->l('Out of stock:').' </label>
|
<label>'.$this->l('Out of stock:').' </label>
|
||||||
<div class="margin-form">
|
<div class="margin-form">
|
||||||
<input type="checkbox" value="1" id="mA_merchand_oos" name="mA_merchand_oos" '.(Tools::getValue('mA_merchand_oos', $this->_merchant_oos) == 1 ? 'checked' : '').'>
|
<input type="checkbox" value="1" id="mA_merchand_oos" name="mA_merchand_oos" '.(Tools::getValue('mA_merchand_oos', $this->_merchant_oos) == 1 ? 'checked' : '').'>
|
||||||
<label for="mA_merchand_oos" class="t">'.$this->l('Receive a notification if the quantity of a product is below the alert threshold').'</label>
|
<label for="mA_merchand_oos" class="t">'.$this->l('Receive a notification if the available quantity of a product is below the following threshold').'</label>
|
||||||
</div>
|
</div>
|
||||||
<label>'.$this->l('Alert threshold:').'</label>
|
<label>'.$this->l('Threshold:').'</label>
|
||||||
<div class="margin-form">
|
<div class="margin-form">
|
||||||
<input type="text" name="MA_LAST_QTIES" value="'.(Tools::getValue('MA_LAST_QTIES') != null ? (int)Tools::getValue('MA_LAST_QTIES') : Configuration::get('MA_LAST_QTIES')).'" size="3" />
|
<input type="text" name="MA_LAST_QTIES" value="'.(Tools::getValue('MA_LAST_QTIES') != null ? (int)Tools::getValue('MA_LAST_QTIES') : Configuration::get('MA_LAST_QTIES')).'" size="3" />
|
||||||
<p>'.$this->l('Quantity for which a product is regarded as out of stock').'</p>
|
<p>'.$this->l('Quantity for which a product is considered out of stock').'</p>
|
||||||
</div>
|
</div>
|
||||||
<label>'.$this->l('Send to these e-mail addresses:').' </label>
|
<div style="clear:both;"> </div>
|
||||||
|
<label>'.$this->l('Coverage warning:').' </label>
|
||||||
|
<div class="margin-form">
|
||||||
|
<input type="checkbox" value="1" id="mA_merchant_coverage" name="mA_merchant_coverage" '.(Tools::getValue('mA_merchant_coverage', $this->_merchant_coverage) == 1 ? 'checked' : '').'>
|
||||||
|
<label for="mA_merchant_coverage" class="t">'.$this->l('Receive a notification if the stock coverage of a product is below the following coverage').'</label>
|
||||||
|
</div>
|
||||||
|
<label>'.$this->l('Coverage:').'</label>
|
||||||
|
<div class="margin-form">
|
||||||
|
<input type="text" name="MA_PRODUCT_COVERAGE" value="'.(Tools::getValue('MA_PRODUCT_COVERAGE') != null ? (int)Tools::getValue('MA_PRODUCT_COVERAGE') : Configuration::getGlobalValue('MA_PRODUCT_COVERAGE')).'" size="3" />
|
||||||
|
<p>'.$this->l('Stock cover, in days. Also, the stock cover of a given product will be calculated based on this number').'</p>
|
||||||
|
</div>
|
||||||
|
<div style="clear:both;"> </div>
|
||||||
|
<div style="clear:both;"> </div>
|
||||||
|
<label>'.$this->l('E-mail addresses:').' </label>
|
||||||
<div class="margin-form">
|
<div class="margin-form">
|
||||||
<div style="float:left; margin-right:10px;">
|
<div style="float:left; margin-right:10px;">
|
||||||
<textarea name="ma_merchant_mails" rows="10" cols="30">'.Tools::getValue('ma_merchant_mails', str_replace(self::__MA_MAIL_DELIMITOR__, "\n", $this->_merchant_mails)).'</textarea>
|
<textarea name="ma_merchant_mails" rows="10" cols="40">'.Tools::getValue('ma_merchant_mails', str_replace(self::__MA_MAIL_DELIMITOR__, "\n", $this->_merchant_mails)).'</textarea>
|
||||||
</div>
|
</div>
|
||||||
<div style="float:left;">
|
<div style="float:left;">
|
||||||
'.$this->l('One e-mail address per line').'<br />
|
'.$this->l('One e-mail address per line').'<br />
|
||||||
@@ -484,6 +514,66 @@ class MailAlerts extends Module
|
|||||||
Db::getInstance()->Execute($sql);
|
Db::getInstance()->Execute($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hookActionProductCoverage($params)
|
||||||
|
{
|
||||||
|
// if not advanced stock management, nothing to do
|
||||||
|
if (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// retrieves informations
|
||||||
|
$id_product = (int)$params['id_product'];
|
||||||
|
$id_product_attribute = (int)$params['id_product_attribute'];
|
||||||
|
$warehouse = $params['warehouse'];
|
||||||
|
$product = new Product($id_product);
|
||||||
|
|
||||||
|
if (!Validate::isLoadedObject($product))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!$product->advanced_stock_management)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// sets warehouse id to get the coverage
|
||||||
|
if (!Validate::isLoadedObject($warehouse))
|
||||||
|
$id_warehouse = 0;
|
||||||
|
else
|
||||||
|
$id_warehouse = (int)$warehouse->id;
|
||||||
|
|
||||||
|
// coverage of the product
|
||||||
|
$warning_coverage = (int)Configuration::getGlobalValue('MA_PRODUCT_COVERAGE');
|
||||||
|
|
||||||
|
$coverage = StockManagerFactory::getManager()->getProductCoverage($id_product, $id_product_attribute, $warning_coverage, $id_warehouse);
|
||||||
|
|
||||||
|
// if we need to send a notification
|
||||||
|
if ($product->active == 1 &&
|
||||||
|
($coverage < $warning_coverage) && !empty($this->_merchant_mails) &&
|
||||||
|
Configuration::getGlobalValue('MA_MERCHANT_COVERAGE'))
|
||||||
|
{
|
||||||
|
$id_lang = (int)Context::getContext()->language->id;
|
||||||
|
$iso = Language::getIsoById($id_lang);
|
||||||
|
$product_name = Product::getProductName($id_product, $id_product_attribute, $id_lang);
|
||||||
|
$template_vars = array(
|
||||||
|
'{current_coverage}' => $coverage,
|
||||||
|
'{warning_coverage}' => $warning_coverage,
|
||||||
|
'{product}' => pSQL($product_name));
|
||||||
|
|
||||||
|
if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/productcoverage.txt') &&
|
||||||
|
file_exists(dirname(__FILE__).'/mails/'.$iso.'/productcoverage.html'))
|
||||||
|
{
|
||||||
|
Mail::Send($id_lang,
|
||||||
|
'productcoverage',
|
||||||
|
Mail::l('Stock coverage', $id_lang),
|
||||||
|
$template_vars,
|
||||||
|
explode(self::__MA_MAIL_DELIMITOR__, $this->_merchant_mails),
|
||||||
|
null,
|
||||||
|
strval(Configuration::get('PS_SHOP_EMAIL')),
|
||||||
|
strval(Configuration::get('PS_SHOP_NAME')),
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
dirname(__FILE__).'/mails/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function hookDisplayHeader($params)
|
public function hookDisplayHeader($params)
|
||||||
{
|
{
|
||||||
$this->context->controller->addCSS($this->_path.'mailalerts.css', 'all');
|
$this->context->controller->addCSS($this->_path.'mailalerts.css', 'all');
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>[{shop_name}] Stock cover</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table style="font-family:Verdana,sans-serif; font-size:11px; color:#374953; width: 550px;">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<a href="{shop_url}" title="{shop_name}"><img alt="{shop_name}" src="{shop_logo}" style="border:none;" ></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left" style="background-color:#DB3484; color:#FFF; font-size: 12px; font-weight:bold; padding: 0.5em 1em;">{product} is almost out of stock.</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
The stock cover is now less than the specified minimum of <strong>{warning_coverage}</strong>.<br /><br />
|
||||||
|
<strong>Current stock cover: <span style="color:#DB3484;">{current_coverage}</span></strong><br /><br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="font-size:10px; border-top: 1px solid #D9DADE;">
|
||||||
|
<a href="{shop_url}" style="color:#DB3484; font-weight:bold; text-decoration:none;">{shop_name}</a> powered with <a href="http://www.prestashop.com/" style="text-decoration:none; color:#374953;">PrestaShop™</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Hi,
|
||||||
|
|
||||||
|
The product {product} is almost out of stock.
|
||||||
|
The stock cover is now less than the specified minimum of {warning_coverage}.
|
||||||
|
Current stock cover : {current_coverage}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{shop_url} powered by PrestaShop™
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>[{shop_name}] Stock cover</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table style="font-family:Verdana,sans-serif; font-size:11px; color:#374953; width: 550px;">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<a href="{shop_url}" title="{shop_name}"><img alt="{shop_name}" src="{shop_logo}" style="border:none;" ></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left" style="background-color:#DB3484; color:#FFF; font-size: 12px; font-weight:bold; padding: 0.5em 1em;">{product} is almost out of stock.</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
The stock cover is now less than the specified minimum of <strong>{warning_coverage}</strong>.<br /><br />
|
||||||
|
<strong>Current stock cover: <span style="color:#DB3484;">{current_coverage}</span></strong><br /><br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="font-size:10px; border-top: 1px solid #D9DADE;">
|
||||||
|
<a href="{shop_url}" style="color:#DB3484; font-weight:bold; text-decoration:none;">{shop_name}</a> powered with <a href="http://www.prestashop.com/" style="text-decoration:none; color:#374953;">PrestaShop™</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Hi,
|
||||||
|
|
||||||
|
The product {product} is almost out of stock.
|
||||||
|
The stock cover is now less than the specified minimum of {warning_coverage}.
|
||||||
|
Current stock cover : {current_coverage}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{shop_url} powered by PrestaShop™
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>[{shop_name}] Stock cover</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table style="font-family:Verdana,sans-serif; font-size:11px; color:#374953; width: 550px;">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<a href="{shop_url}" title="{shop_name}"><img alt="{shop_name}" src="{shop_logo}" style="border:none;" ></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left" style="background-color:#DB3484; color:#FFF; font-size: 12px; font-weight:bold; padding: 0.5em 1em;">{product} is almost out of stock.</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
The stock cover is now less than the specified minimum of <strong>{warning_coverage}</strong>.<br /><br />
|
||||||
|
<strong>Current stock cover: <span style="color:#DB3484;">{current_coverage}</span></strong><br /><br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="font-size:10px; border-top: 1px solid #D9DADE;">
|
||||||
|
<a href="{shop_url}" style="color:#DB3484; font-weight:bold; text-decoration:none;">{shop_name}</a> powered with <a href="http://www.prestashop.com/" style="text-decoration:none; color:#374953;">PrestaShop™</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Hi,
|
||||||
|
|
||||||
|
The product {product} is almost out of stock.
|
||||||
|
The stock cover is now less than the specified minimum of {warning_coverage}.
|
||||||
|
Current stock cover : {current_coverage}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{shop_url} powered by PrestaShop™
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>[{shop_name}] Couverture de stock</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table style="font-family: Verdana,sans-serif; font-size: 11px; color: #374953; width: 550px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="left"><a title="{shop_name}" href="{shop_url}"><img style="border: none;" src="{shop_logo}" alt="{shop_name}" /></a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color: #db3484; color: #fff; font-size: 12px; font-weight: bold; padding: 0.5em 1em;" align="left">{product} est en rupture de stock</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left">En effet, la couverture est maintenant inférieure à <strong>{warning_coverage}</strong>.<br /><br /> <strong>Couverture actuelle : <span style="color: #db3484;">{current_coverage}</span></strong><br /><br /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="font-size: 10px; border-top: 1px solid #D9DADE;" align="center"><a style="color: #db3484; font-weight: bold; text-decoration: none;" href="{shop_url}">{shop_name}</a> propulsé avec <a style="text-decoration: none; color: #374953;" href="http://www.prestashop.com/">PrestaShop™</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Le produit {product} est bientôt en rupture de stock.
|
||||||
|
En effet, la couverture de stock est maintenant inférieur à {warning_coverage}.
|
||||||
|
Couverture actuelle : {current_coverage}
|
||||||
|
|
||||||
|
|
||||||
|
{shop_url} réalisé avec PrestaShop™
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>[{shop_name}] Stock cover</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table style="font-family:Verdana,sans-serif; font-size:11px; color:#374953; width: 550px;">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<a href="{shop_url}" title="{shop_name}"><img alt="{shop_name}" src="{shop_logo}" style="border:none;" ></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left" style="background-color:#DB3484; color:#FFF; font-size: 12px; font-weight:bold; padding: 0.5em 1em;">{product} is almost out of stock.</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
The stock cover is now less than the specified minimum of <strong>{warning_coverage}</strong>.<br /><br />
|
||||||
|
<strong>Current stock cover: <span style="color:#DB3484;">{current_coverage}</span></strong><br /><br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="font-size:10px; border-top: 1px solid #D9DADE;">
|
||||||
|
<a href="{shop_url}" style="color:#DB3484; font-weight:bold; text-decoration:none;">{shop_name}</a> powered with <a href="http://www.prestashop.com/" style="text-decoration:none; color:#374953;">PrestaShop™</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Hi,
|
||||||
|
|
||||||
|
The product {product} is almost out of stock.
|
||||||
|
The stock cover is now less than the specified minimum of {warning_coverage}.
|
||||||
|
Current stock cover : {current_coverage}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{shop_url} powered by PrestaShop™
|
||||||
Reference in New Issue
Block a user