Version Notes
If you have ideas for improvements or find bugs, please send them to Ronan Capitaine or Jean-Sébastien Hederer at www.asperience.fr, with ASPerience Productextend as part of the subject line.
Download this release
Release Info
Developer | Magento Core Team |
Extension | Asperience_Productextend |
Version | 0.1.2 |
Comparing to | |
See all releases |
Code changes from version 0.1.1 to 0.1.2
- app/code/local/Asperience/Productextend/Model/Observer.php +85 -58
- app/code/local/Asperience/Productextend/etc/config.xml +2 -0
- app/code/local/Asperience/Productextend/etc/system.xml +25 -7
- app/locale/en_US/template/email/asperience_product_alert.html +3 -3
- app/locale/fr_FR/Asperience_Productextend.csv +10 -7
- app/locale/fr_FR/template/email/asperience_product_alert.html +2 -3
- package.xml +6 -5
app/code/local/Asperience/Productextend/Model/Observer.php
CHANGED
@@ -13,6 +13,8 @@ class Asperience_Productextend_Model_Observer
|
|
13 |
const XML_PATH_EMAIL_SENDER = 'catalog/productextend/sender_email_identity';
|
14 |
const XML_PATH_EMAIL_TEMPLATE = 'catalog/productextend/email_price_template';
|
15 |
|
|
|
|
|
16 |
const XML_PATH_ALLOW_NEW = 'catalog/productextend/allow_new';
|
17 |
const XML_PATH_ALLOW_PRICE = 'catalog/productextend/allow_price';
|
18 |
const XML_PATH_ALLOW_SPE_PRICE = 'catalog/productextend/allow_price_special';
|
@@ -20,10 +22,20 @@ class Asperience_Productextend_Model_Observer
|
|
20 |
|
21 |
|
22 |
protected $_oldProduct = array();
|
|
|
23 |
protected $_isNew = False;
|
24 |
protected $_isNewPrice = False;
|
25 |
protected $_isNewPriceSpecial = False;
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
protected function _sendMail($product)
|
28 |
{
|
29 |
if($product) {
|
@@ -33,46 +45,49 @@ class Asperience_Productextend_Model_Observer
|
|
33 |
|
34 |
//Préparation des données du mail
|
35 |
$dataMail = array(
|
36 |
-
'name'
|
37 |
-
'sku'
|
38 |
-
'type'
|
39 |
-
'user'
|
40 |
-
'date'
|
|
|
|
|
41 |
);
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
if(!$product->isGrouped()){
|
47 |
-
$dataMail['
|
|
|
48 |
if($this->_isNewPriceSpecial){
|
49 |
-
$dataMail['
|
|
|
50 |
}
|
51 |
}
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
54 |
//Si le prix du produit existant a changé
|
55 |
if($this->_isNewPrice){
|
56 |
-
$dataMail['
|
57 |
-
$dataMail['
|
58 |
-
$dataMail['
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
$dataMail['
|
63 |
-
$dataMail['
|
64 |
-
$dataMail['
|
65 |
-
}elseif($this->_isNewPrice && $this->_isNewPriceSpecial){
|
66 |
-
$dataMail['title'] = Mage::helper('productextend')->__('Special and Current price change :');
|
67 |
-
$dataMail['price'] = Mage::helper('core')->currency($this->_oldProduct['price']);
|
68 |
-
$dataMail['new_price'] = " -> ".Mage::helper('core')->currency($product->getPrice());
|
69 |
-
$dataMail['special_price'] = Mage::helper('core')->currency($this->_oldProduct['special_price']);
|
70 |
-
$dataMail['new_special_price'] = " -> ".Mage::helper('core')->currency($product->getSpecialPrice());
|
71 |
-
}else{
|
72 |
-
throw new Exception();
|
73 |
}
|
|
|
|
|
74 |
}
|
75 |
-
|
76 |
$postObject = new Varien_Object();
|
77 |
$postObject->setData($dataMail);
|
78 |
|
@@ -101,7 +116,7 @@ class Asperience_Productextend_Model_Observer
|
|
101 |
$translate->setTranslateInline(true);
|
102 |
|
103 |
}catch (Exception $e) {
|
104 |
-
Mage::getSingleton('core/session')->addError(
|
105 |
}
|
106 |
}
|
107 |
}
|
@@ -110,50 +125,62 @@ class Asperience_Productextend_Model_Observer
|
|
110 |
{
|
111 |
$product = $observer->getEvent()->getProduct();
|
112 |
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
-
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
//s'il y a une promo: mise en base de données
|
132 |
if($this->_isNewPriceSpecial && Mage::getStoreConfig(self::XML_PATH_ALLOW_SAVE)){
|
133 |
Mage::getModel('productextend/promotion')->savePromo($product);
|
134 |
}
|
135 |
-
|
136 |
-
//S'il y a un nouveau produit ou un changement de prix: envoie de mail
|
137 |
-
if($this->_isNew ||
|
138 |
-
$this->_isNewPrice && Mage::getStoreConfig(self::XML_PATH_ALLOW_PRICE)||
|
139 |
-
$this->_isNewPriceSpecial && Mage::getStoreConfig(self::XML_PATH_ALLOW_SPE_PRICE)){
|
140 |
-
$this->_sendMail($product);
|
141 |
-
}
|
142 |
}
|
143 |
|
144 |
public function beforeSave($observer)
|
145 |
{
|
146 |
$product = $observer->getEvent()->getProduct();
|
147 |
$productId = $product->getId();
|
148 |
-
|
|
|
149 |
if($productId){
|
150 |
$product = Mage::getModel('catalog/product')
|
151 |
->load($productId);
|
152 |
$this->_oldProduct = array(
|
153 |
'price' => $product->getPrice(),
|
154 |
'special_price' => $product->getSpecialPrice(),
|
155 |
-
'special_date' => $product->getSpecialFromDate()
|
|
|
156 |
);
|
|
|
157 |
} elseif(Mage::getStoreConfig(self::XML_PATH_ALLOW_NEW)){
|
158 |
$this->_isNew = True;
|
159 |
}
|
13 |
const XML_PATH_EMAIL_SENDER = 'catalog/productextend/sender_email_identity';
|
14 |
const XML_PATH_EMAIL_TEMPLATE = 'catalog/productextend/email_price_template';
|
15 |
|
16 |
+
const XML_PATH_ALLOW_INACTIVE = 'catalog/productextend/allow_inactive';
|
17 |
+
const XML_PATH_ALLOW_STATUS = 'catalog/productextend/allow_status';
|
18 |
const XML_PATH_ALLOW_NEW = 'catalog/productextend/allow_new';
|
19 |
const XML_PATH_ALLOW_PRICE = 'catalog/productextend/allow_price';
|
20 |
const XML_PATH_ALLOW_SPE_PRICE = 'catalog/productextend/allow_price_special';
|
22 |
|
23 |
|
24 |
protected $_oldProduct = array();
|
25 |
+
protected $_changeStatus = False;
|
26 |
protected $_isNew = False;
|
27 |
protected $_isNewPrice = False;
|
28 |
protected $_isNewPriceSpecial = False;
|
29 |
|
30 |
+
public function formatPrice($price)
|
31 |
+
{
|
32 |
+
return Mage::helper('sales')->formatPrice($price);
|
33 |
+
}
|
34 |
+
|
35 |
+
public function __($data){
|
36 |
+
return Mage::helper('productextend')->__($data);
|
37 |
+
}
|
38 |
+
|
39 |
protected function _sendMail($product)
|
40 |
{
|
41 |
if($product) {
|
45 |
|
46 |
//Préparation des données du mail
|
47 |
$dataMail = array(
|
48 |
+
'name' => $product->getName(),
|
49 |
+
'sku' => $product->getSku(),
|
50 |
+
'type' => $product->getTypeId(),
|
51 |
+
'user' => Mage::getSingleton('admin/session')->getUser()->getUsername(),
|
52 |
+
'date' => Mage::helper('core')->formatDate(null, 'full'),
|
53 |
+
'comment' => '',
|
54 |
+
'title' => $this->__('Product Modification :')
|
55 |
);
|
56 |
+
|
57 |
+
//S'il y a un nouveau produit
|
58 |
+
if($this->_isNew){
|
59 |
+
$dataMail['title'] = $this->__('New product :');
|
60 |
if(!$product->isGrouped()){
|
61 |
+
$dataMail['comment'] .= $this->__('Price : ');
|
62 |
+
$dataMail['comment'] .= $this->formatPrice($product->getPrice());
|
63 |
if($this->_isNewPriceSpecial){
|
64 |
+
$dataMail['comment'] .= '<br />'.$this->__('Special Price : ');
|
65 |
+
$dataMail['comment'] .= $this->formatPrice($product->getSpecialPrice());
|
66 |
}
|
67 |
}
|
68 |
+
}elseif($this->_changeStatus || $this->_isNewPrice || $this->_isNewPriceSpecial){
|
69 |
+
//Si le statut du produit change
|
70 |
+
if($this->_changeStatus){
|
71 |
+
$dataMail['comment'] .= $this->__('Product Status Change : ');
|
72 |
+
$dataMail['comment'] .= Mage::getSingleton('catalog/product_status')->getOptionText($this->_oldProduct['status']);
|
73 |
+
$dataMail['comment'] .= ' -> '.Mage::getSingleton('catalog/product_status')->getOptionText($product->getStatus()).'<br />';
|
74 |
+
}
|
75 |
//Si le prix du produit existant a changé
|
76 |
if($this->_isNewPrice){
|
77 |
+
$dataMail['comment'] .= $this->__('Price : ');
|
78 |
+
$dataMail['comment'] .= $this->formatPrice($this->_oldProduct['price']);
|
79 |
+
$dataMail['comment'] .= ' -> '.$this->formatPrice($product->getPrice()).'<br />';
|
80 |
+
}
|
81 |
+
//Si le prix spécial du produit existant a changé
|
82 |
+
if($this->_isNewPriceSpecial){
|
83 |
+
$dataMail['comment'] .= $this->__('Special Price : ');
|
84 |
+
$dataMail['comment'] .= $this->formatPrice($this->_oldProduct['special_price']);
|
85 |
+
$dataMail['comment'] .= ' -> '.$this->formatPrice($product->getSpecialPrice());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
}
|
87 |
+
}else{
|
88 |
+
throw new Exception();
|
89 |
}
|
90 |
+
|
91 |
$postObject = new Varien_Object();
|
92 |
$postObject->setData($dataMail);
|
93 |
|
116 |
$translate->setTranslateInline(true);
|
117 |
|
118 |
}catch (Exception $e) {
|
119 |
+
Mage::getSingleton('core/session')->addError($this->__('An error arose during the sending of emails.'));
|
120 |
}
|
121 |
}
|
122 |
}
|
125 |
{
|
126 |
$product = $observer->getEvent()->getProduct();
|
127 |
|
128 |
+
//Si le produit est actif
|
129 |
+
if($product->getStatus()==1 || self::XML_PATH_ALLOW_INACTIVE){
|
130 |
+
|
131 |
+
//Si le produit est nouveau
|
132 |
+
if($this->_isNew){
|
133 |
+
//Si le nouveau produit est une promotion
|
134 |
+
if(!$product->isGrouped() && $product->getSpecialPrice()){
|
135 |
+
$this->_isNewPriceSpecial = True;
|
136 |
+
}
|
137 |
+
}else {
|
138 |
+
//Si le produit change de statut
|
139 |
+
if($this->_oldProduct['status'] != $product->getStatus()){
|
140 |
+
$this->_changeStatus = True;
|
141 |
+
}
|
142 |
+
//Si le prix du produit existant à changé
|
143 |
+
if($product->getPrice() != $this->_oldProduct['price']){
|
144 |
+
$this->_isNewPrice = True;
|
145 |
+
}
|
146 |
+
//Si le prix spécial du produit existant est nouveau ou changé
|
147 |
+
if($product->getSpecialPrice() && ($product->getSpecialPrice() != $this->_oldProduct['special_price'] ||
|
148 |
+
$product->getSpecialFromDate() != $this->_oldProduct['special_date'])){
|
149 |
+
$this->_isNewPriceSpecial = True;
|
150 |
+
}
|
151 |
}
|
152 |
+
|
153 |
+
//S'il y a un nouveau produit ou un changement de prix: envoie de mail
|
154 |
+
if($this->_isNew ||
|
155 |
+
$this->_changeStatus && Mage::getStoreConfig(self::XML_PATH_ALLOW_STATUS)||
|
156 |
+
$this->_isNewPrice && Mage::getStoreConfig(self::XML_PATH_ALLOW_PRICE)||
|
157 |
+
$this->_isNewPriceSpecial && Mage::getStoreConfig(self::XML_PATH_ALLOW_SPE_PRICE)){
|
158 |
+
$this->_sendMail($product);
|
159 |
+
}
|
160 |
+
}
|
161 |
+
|
162 |
//s'il y a une promo: mise en base de données
|
163 |
if($this->_isNewPriceSpecial && Mage::getStoreConfig(self::XML_PATH_ALLOW_SAVE)){
|
164 |
Mage::getModel('productextend/promotion')->savePromo($product);
|
165 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
}
|
167 |
|
168 |
public function beforeSave($observer)
|
169 |
{
|
170 |
$product = $observer->getEvent()->getProduct();
|
171 |
$productId = $product->getId();
|
172 |
+
|
173 |
+
//Le produit existe
|
174 |
if($productId){
|
175 |
$product = Mage::getModel('catalog/product')
|
176 |
->load($productId);
|
177 |
$this->_oldProduct = array(
|
178 |
'price' => $product->getPrice(),
|
179 |
'special_price' => $product->getSpecialPrice(),
|
180 |
+
'special_date' => $product->getSpecialFromDate(),
|
181 |
+
'status' => $product->getStatus()
|
182 |
);
|
183 |
+
//Le produit est nouveau
|
184 |
} elseif(Mage::getStoreConfig(self::XML_PATH_ALLOW_NEW)){
|
185 |
$this->_isNew = True;
|
186 |
}
|
app/code/local/Asperience/Productextend/etc/config.xml
CHANGED
@@ -175,6 +175,8 @@
|
|
175 |
<active>1</active>
|
176 |
</general>
|
177 |
<productextend>
|
|
|
|
|
178 |
<allow_new><![CDATA[1]]></allow_new>
|
179 |
<allow_price><![CDATA[1]]></allow_price>
|
180 |
<allow_price_special><![CDATA[1]]></allow_price_special>
|
175 |
<active>1</active>
|
176 |
</general>
|
177 |
<productextend>
|
178 |
+
<allow_inactive><![CDATA[1]]></allow_inactive>
|
179 |
+
<allow_status><![CDATA[1]]></allow_status>
|
180 |
<allow_new><![CDATA[1]]></allow_new>
|
181 |
<allow_price><![CDATA[1]]></allow_price>
|
182 |
<allow_price_special><![CDATA[1]]></allow_price_special>
|
app/code/local/Asperience/Productextend/etc/system.xml
CHANGED
@@ -19,11 +19,29 @@
|
|
19 |
<show_in_website>1</show_in_website>
|
20 |
<show_in_store>0</show_in_store>
|
21 |
<fields>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
<allow_new translate="label">
|
23 |
<label>Allow alert when there is a new product</label>
|
24 |
<frontend_type>select</frontend_type>
|
25 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
26 |
-
<sort_order>
|
27 |
<show_in_default>1</show_in_default>
|
28 |
<show_in_website>1</show_in_website>
|
29 |
<show_in_store>1</show_in_store>
|
@@ -32,7 +50,7 @@
|
|
32 |
<label>Allow alert when product price changes</label>
|
33 |
<frontend_type>select</frontend_type>
|
34 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
35 |
-
<sort_order>
|
36 |
<show_in_default>1</show_in_default>
|
37 |
<show_in_website>1</show_in_website>
|
38 |
<show_in_store>1</show_in_store>
|
@@ -41,7 +59,7 @@
|
|
41 |
<label>Allow alert when product special price changes</label>
|
42 |
<frontend_type>select</frontend_type>
|
43 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
44 |
-
<sort_order>
|
45 |
<show_in_default>1</show_in_default>
|
46 |
<show_in_website>1</show_in_website>
|
47 |
<show_in_store>1</show_in_store>
|
@@ -50,7 +68,7 @@
|
|
50 |
<label>Save products in promotions history</label>
|
51 |
<frontend_type>select</frontend_type>
|
52 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
53 |
-
<sort_order>
|
54 |
<show_in_default>1</show_in_default>
|
55 |
<show_in_website>1</show_in_website>
|
56 |
<show_in_store>1</show_in_store>
|
@@ -58,7 +76,7 @@
|
|
58 |
<recipient_email translate="label">
|
59 |
<label>Send Emails To</label>
|
60 |
<frontend_type>text</frontend_type>
|
61 |
-
<sort_order>
|
62 |
<show_in_default>1</show_in_default>
|
63 |
<show_in_website>1</show_in_website>
|
64 |
<show_in_store>1</show_in_store>
|
@@ -68,7 +86,7 @@
|
|
68 |
<label>Price alert Email Template</label>
|
69 |
<frontend_type>select</frontend_type>
|
70 |
<source_model>adminhtml/system_config_source_email_template</source_model>
|
71 |
-
<sort_order>
|
72 |
<show_in_default>1</show_in_default>
|
73 |
<show_in_website>1</show_in_website>
|
74 |
<show_in_store>0</show_in_store>
|
@@ -77,7 +95,7 @@
|
|
77 |
<label>Alert Email Sender</label>
|
78 |
<frontend_type>select</frontend_type>
|
79 |
<source_model>adminhtml/system_config_source_email_identity</source_model>
|
80 |
-
<sort_order>
|
81 |
<show_in_default>1</show_in_default>
|
82 |
<show_in_website>1</show_in_website>
|
83 |
<show_in_store>0</show_in_store>
|
19 |
<show_in_website>1</show_in_website>
|
20 |
<show_in_store>0</show_in_store>
|
21 |
<fields>
|
22 |
+
<allow_inactive translate="label">
|
23 |
+
<label>Allow alerts when the product is inactive</label>
|
24 |
+
<frontend_type>select</frontend_type>
|
25 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
26 |
+
<sort_order>1</sort_order>
|
27 |
+
<show_in_default>1</show_in_default>
|
28 |
+
<show_in_website>1</show_in_website>
|
29 |
+
<show_in_store>1</show_in_store>
|
30 |
+
</allow_inactive>
|
31 |
+
<allow_status translate="label">
|
32 |
+
<label>Allow alert when product status changes</label>
|
33 |
+
<frontend_type>select</frontend_type>
|
34 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
35 |
+
<sort_order>2</sort_order>
|
36 |
+
<show_in_default>1</show_in_default>
|
37 |
+
<show_in_website>1</show_in_website>
|
38 |
+
<show_in_store>1</show_in_store>
|
39 |
+
</allow_status>
|
40 |
<allow_new translate="label">
|
41 |
<label>Allow alert when there is a new product</label>
|
42 |
<frontend_type>select</frontend_type>
|
43 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
44 |
+
<sort_order>3</sort_order>
|
45 |
<show_in_default>1</show_in_default>
|
46 |
<show_in_website>1</show_in_website>
|
47 |
<show_in_store>1</show_in_store>
|
50 |
<label>Allow alert when product price changes</label>
|
51 |
<frontend_type>select</frontend_type>
|
52 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
53 |
+
<sort_order>4</sort_order>
|
54 |
<show_in_default>1</show_in_default>
|
55 |
<show_in_website>1</show_in_website>
|
56 |
<show_in_store>1</show_in_store>
|
59 |
<label>Allow alert when product special price changes</label>
|
60 |
<frontend_type>select</frontend_type>
|
61 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
62 |
+
<sort_order>5</sort_order>
|
63 |
<show_in_default>1</show_in_default>
|
64 |
<show_in_website>1</show_in_website>
|
65 |
<show_in_store>1</show_in_store>
|
68 |
<label>Save products in promotions history</label>
|
69 |
<frontend_type>select</frontend_type>
|
70 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
71 |
+
<sort_order>6</sort_order>
|
72 |
<show_in_default>1</show_in_default>
|
73 |
<show_in_website>1</show_in_website>
|
74 |
<show_in_store>1</show_in_store>
|
76 |
<recipient_email translate="label">
|
77 |
<label>Send Emails To</label>
|
78 |
<frontend_type>text</frontend_type>
|
79 |
+
<sort_order>7</sort_order>
|
80 |
<show_in_default>1</show_in_default>
|
81 |
<show_in_website>1</show_in_website>
|
82 |
<show_in_store>1</show_in_store>
|
86 |
<label>Price alert Email Template</label>
|
87 |
<frontend_type>select</frontend_type>
|
88 |
<source_model>adminhtml/system_config_source_email_template</source_model>
|
89 |
+
<sort_order>8</sort_order>
|
90 |
<show_in_default>1</show_in_default>
|
91 |
<show_in_website>1</show_in_website>
|
92 |
<show_in_store>0</show_in_store>
|
95 |
<label>Alert Email Sender</label>
|
96 |
<frontend_type>select</frontend_type>
|
97 |
<source_model>adminhtml/system_config_source_email_identity</source_model>
|
98 |
+
<sort_order>9</sort_order>
|
99 |
<show_in_default>1</show_in_default>
|
100 |
<show_in_website>1</show_in_website>
|
101 |
<show_in_store>0</show_in_store>
|
app/locale/en_US/template/email/asperience_product_alert.html
CHANGED
@@ -13,9 +13,9 @@
|
|
13 |
<p style="padding-left: 30px;">Product name : {{var data.name}}</p>
|
14 |
<p style="padding-left: 30px;">SKU : {{var data.sku}}</p>
|
15 |
<p style="padding-left: 30px;">Admin user : {{var data.user}}</p>
|
16 |
-
<p style="padding-left: 30px;">
|
17 |
-
<p style="padding-left: 30px;">Special Price : {{var data.special_price}} {{var data.new_special_price}}</p>
|
18 |
<p style="padding-left: 30px;">Date : {{var data.date}}</p>
|
19 |
</div>
|
20 |
</span>
|
21 |
-
</p>
|
|
13 |
<p style="padding-left: 30px;">Product name : {{var data.name}}</p>
|
14 |
<p style="padding-left: 30px;">SKU : {{var data.sku}}</p>
|
15 |
<p style="padding-left: 30px;">Admin user : {{var data.user}}</p>
|
16 |
+
<p style="padding-left: 30px;">{{var data.comment}}</p>
|
|
|
17 |
<p style="padding-left: 30px;">Date : {{var data.date}}</p>
|
18 |
</div>
|
19 |
</span>
|
20 |
+
</p>
|
21 |
+
|
app/locale/fr_FR/Asperience_Productextend.csv
CHANGED
@@ -2,11 +2,14 @@
|
|
2 |
"Product Alerts in internal","Alertes du produit en interne"
|
3 |
"Deleted product","Produit supprimé"
|
4 |
"An error arose during the sending of emails.","Une erreur est survenue lors de l'envoi d'emails."
|
5 |
-
"
|
6 |
-
"
|
7 |
-
"
|
8 |
-
"Allow alert when
|
9 |
-
"Allow alert when product special price changes", "Autoriser l'alerte quand le prix spécial du produit change"
|
10 |
"Save products in promotions history","Enregistrer les promotions dans l'historique"
|
11 |
-
"
|
12 |
-
"
|
|
|
|
|
|
|
|
2 |
"Product Alerts in internal","Alertes du produit en interne"
|
3 |
"Deleted product","Produit supprimé"
|
4 |
"An error arose during the sending of emails.","Une erreur est survenue lors de l'envoi d'emails."
|
5 |
+
"Allow alert when there is a new product","Autoriser l'alerte quand il y a un nouveau produit"
|
6 |
+
"Allow alert when product special price changes","Autoriser l'alerte quand le prix spécial du produit change"
|
7 |
+
"Allow alerts when the product is inactive","Autoriser les alertes quand le produit est désactivé"
|
8 |
+
"Allow alert when product status changes","Autoriser l'alerte quand le statut du produit change"
|
|
|
9 |
"Save products in promotions history","Enregistrer les promotions dans l'historique"
|
10 |
+
"New product :","Nouveau produit :"
|
11 |
+
"Product Modification :","Modification du produit :"
|
12 |
+
"Product Status Change : ","Changement de Statut : "
|
13 |
+
"Price : ","Prix : "
|
14 |
+
"Special Price : ","Prix spécial : "
|
15 |
+
"This product is not listed in the promotions history.","Ce produit n'est pas répertorié dans l'historique des promotions."
|
app/locale/fr_FR/template/email/asperience_product_alert.html
CHANGED
@@ -12,9 +12,8 @@
|
|
12 |
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial; margin: 8px;">
|
13 |
<p style="padding-left: 30px;">Nom du produit : {{var data.name}}</p>
|
14 |
<p style="padding-left: 30px;">Référence : {{var data.sku}}</p>
|
15 |
-
<p style="padding-left: 30px;">
|
16 |
-
<p style="padding-left: 30px;">
|
17 |
-
<p style="padding-left: 30px;">Prix spécial : {{var data.special_price}} {{var data.new_special_price}}</p>
|
18 |
<p style="padding-left: 30px;">Date : {{var data.date}}</p>
|
19 |
</div>
|
20 |
</span>
|
12 |
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; background-position: initial initial; margin: 8px;">
|
13 |
<p style="padding-left: 30px;">Nom du produit : {{var data.name}}</p>
|
14 |
<p style="padding-left: 30px;">Référence : {{var data.sku}}</p>
|
15 |
+
<p style="padding-left: 30px;">Utilisateur : {{var data.user}}</p>
|
16 |
+
<p style="padding-left: 30px;">{{var data.comment}}</p>
|
|
|
17 |
<p style="padding-left: 30px;">Date : {{var data.date}}</p>
|
18 |
</div>
|
19 |
</span>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Asperience_Productextend</name>
|
4 |
-
<version>0.1.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
@@ -10,15 +10,16 @@
|
|
10 |
<description>This module allows to send alerts during modifications on products. Indeed, an email is sent in internal when:
|
11 |
- A new product is created
|
12 |
- Product price is changed
|
|
|
13 |
- Product special price is changed
|
14 |
|
15 |
This module is developed by the ASPerience French company.
|
16 |
http://www.asperience.fr</description>
|
17 |
-
<notes>If you have ideas for improvements or find bugs, please send them to Ronan Capitaine or Jean-Sébastien Hederer at www.asperience.fr, with ASPerience
|
18 |
<authors><author><name>Jean-Sébastien Hederer</name><user>auto-converted</user><email>hedererjs@asperience.fr</email></author><author><name>Ronan Capitaine</name><user>auto-converted</user><email>capitainer@asperience.fr</email></author></authors>
|
19 |
-
<date>2010-
|
20 |
-
<time>
|
21 |
-
<contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="productextend.xml" hash="e0a9d36ca38f943ff3946517bc3a9dc0"/></dir><dir name="template"><dir name="productextend"><dir name="catalog"><dir name="product"><dir name="edit"><dir name="price"><file name="promotion.phtml" hash="8f63bea1ed6a6942604a1a69886d75df"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Asperience_Productextend.xml" hash="e15facf94881f12d9e64657ec9615850"/></dir></dir></dir></target><target name="magelocal"><dir name="Asperience"><dir name="Productextend"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Edit"><dir name="Tab"><dir name="Price"><file name="Promotion.php" hash="4feaa043b0afadb736789fb79e3f867f"/></dir><file name="Attributes.php" hash="149bc00f31d03695d7a36691e3193c19"/></dir></dir></dir></dir><dir name="Promotion"><dir name="Grid"><dir name="Renderer"><file name="Products.php" hash="ae59c7cd384c82fda09baa2fb5174913"/></dir></dir><file name="Grid.php" hash="8023efdaae78b25e19ff432d658d6ed0"/></dir><file name="Promotion.php" hash="0823551962e067c77f98137b92220766"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="PromotionController.php" hash="b371ace2eb96bb8a5135aea4032211b9"/></dir></dir><dir name="etc"><file name="config.xml" hash="
|
22 |
<compatible/>
|
23 |
<dependencies/>
|
24 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Asperience_Productextend</name>
|
4 |
+
<version>0.1.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
10 |
<description>This module allows to send alerts during modifications on products. Indeed, an email is sent in internal when:
|
11 |
- A new product is created
|
12 |
- Product price is changed
|
13 |
+
- Product status is changed
|
14 |
- Product special price is changed
|
15 |
|
16 |
This module is developed by the ASPerience French company.
|
17 |
http://www.asperience.fr</description>
|
18 |
+
<notes>If you have ideas for improvements or find bugs, please send them to Ronan Capitaine or Jean-Sébastien Hederer at www.asperience.fr, with ASPerience Productextend as part of the subject line.</notes>
|
19 |
<authors><author><name>Jean-Sébastien Hederer</name><user>auto-converted</user><email>hedererjs@asperience.fr</email></author><author><name>Ronan Capitaine</name><user>auto-converted</user><email>capitainer@asperience.fr</email></author></authors>
|
20 |
+
<date>2010-05-26</date>
|
21 |
+
<time>10:04:16</time>
|
22 |
+
<contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="productextend.xml" hash="e0a9d36ca38f943ff3946517bc3a9dc0"/></dir><dir name="template"><dir name="productextend"><dir name="catalog"><dir name="product"><dir name="edit"><dir name="price"><file name="promotion.phtml" hash="8f63bea1ed6a6942604a1a69886d75df"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Asperience_Productextend.xml" hash="e15facf94881f12d9e64657ec9615850"/></dir></dir></dir></target><target name="magelocal"><dir name="Asperience"><dir name="Productextend"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Edit"><dir name="Tab"><dir name="Price"><file name="Promotion.php" hash="4feaa043b0afadb736789fb79e3f867f"/></dir><file name="Attributes.php" hash="149bc00f31d03695d7a36691e3193c19"/></dir></dir></dir></dir><dir name="Promotion"><dir name="Grid"><dir name="Renderer"><file name="Products.php" hash="ae59c7cd384c82fda09baa2fb5174913"/></dir></dir><file name="Grid.php" hash="8023efdaae78b25e19ff432d658d6ed0"/></dir><file name="Promotion.php" hash="0823551962e067c77f98137b92220766"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="PromotionController.php" hash="b371ace2eb96bb8a5135aea4032211b9"/></dir></dir><dir name="etc"><file name="config.xml" hash="4437261f3c76e4275ed7caa6930ba768"/><file name="system.xml" hash="1c1a5e9b5881cd74b9c5f667c94499d1"/></dir><dir name="Helper"><file name="Data.php" hash="7a4ab078a15b8576710888b8323e9c79"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Promotion"><file name="Collection.php" hash="b53b2dd050281bc911f6b6c2038e1219"/></dir><file name="Promotion.php" hash="a734f2dd5e568ba6f3b0a58234b6edc8"/></dir><file name="Observer.php" hash="a219d34e83f6d3fff03507dfa36b2a2e"/><file name="Promotion.php" hash="0869da74086b4a818b49e5578e1a659f"/></dir><dir name="sql"><dir name="productextend_setup"><file name="mysql4-install-0.1.0.php" hash="1f4685ed186c53e1530567ce1732bf5c"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="e72704ad932a3a63f134551fadb77d15"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><file name="asperience_product_alert.html" hash="7703bd13f66d22b2a46f8308b02a791b"/></dir></dir></dir><dir name="fr_FR"><dir name="template"><dir name="email"><file name="asperience_product_alert.html" hash="af405ef11aab0cd5795d0736533007c1"/></dir></dir><file name="Asperience_Productextend.csv" hash="c44ca9dd7aeb4dca59edbe698de7909e"/></dir></target></contents>
|
23 |
<compatible/>
|
24 |
<dependencies/>
|
25 |
</package>
|