Magento the widely known eCommerce store gives its users the facility to
group its customers. This feature comes in handy when details need to
be displayed to specific group related to some discount or offer valid
for a small number. However, the problem arises when the customers are
not aware of this subtle distinction and miss a chance to avail the
brownie points. This happens because Magneto is not having a default
feature to signal the customer regarding the group change.
To resolve this issue one can create a module by going through the following steps:
Step 1.
Create Module xml file app\etc\modules\Magcustom_Customergroup.xml
<?xml version="1.0"?>
<config>
<modules>
<Magcustom_Customergroup>
<active>true</active>
<codePool>community</codePool>
</Magcustom_Customergroup>
</modules>
</config>
Step2.
Create a Observer app\code\community\Magecustom\Customergroup\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<Magcustom_Customergroup>
<version>0.1.0</version>
</Magcustom_Customergroup>
<customergroup>
<class>Magcustom_Customergroup_Model</class>
</customergroup>
</modules>
<global>
<events>
<customer_save_after>
<observers>
<stockalert>
<type>singleton</type>
<class>Magcustom_Customergroup_Model_Observer</class>
<method>checkDisplay</method>
</stockalert>
</observers>
</customer_save_after>
</events>
</global>
</config>
Create a Observer app\code\community\Magecustom\Customergroup\Model\Observer.php
<?php
class Magcustom_Customergroup_Model_Observer
{
public function checkDisplay(Varien_Event_Observer $observer){
$customer=$observer->getEvent()->getCustomer();
Mage::log('My log entry'.$customer->getId(), null, 'Magento37890.log');
/* if customer is old customer */
if($customer->getId()){
if($customer->getOrigData('group_id')!= $customer->getData('group_id')){
$oldgroupname = Mage::getModel('customer/group')->load($customer->getOrigData('group_id'))->getCustomerGroupCode();
$groupname = Mage::getModel('customer/group')->load($customer->getData('group_id'))->getCustomerGroupCode();
$name= $customer->getName();
/* here you write your code to send whenever you have change the group */
$templateId = 2;
$sender = array(
'name' => Mage::getStoreConfig('trans_email/ident_support/name', Mage::app()->getStore()->getId()),
'email' => Mage::getStoreConfig('trans_email/ident_support/email', Mage::app()->getStore()->getId())
);
$vars = array(
'CustomerName' => $customer->getName(),
'CustomerEmail' => $customer->getEmail(),
'CustomerGroupname' => $groupname,
'CustomerOldGroupname' => $oldgroupname
);
$customerEmail=$customer->getEmail();
$customerName=$name;
Mage::getModel('core/email_template')->sendTransactional($templateId, $sender, $customerEmail, $customerName, $vars, $storeId);
}
}else{
/* New Customer */
}
}
}
Step 3.
Create a email template system-> Transactional Emails
Template Name : Custom Group Change Email
Template Subject : Group Change, {{var CustomerName}}!
Template Content:
{{template config_path="design/email/header"}}
{{inlinecss file="email-inline.css"}}
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="action-content">
<h1>Dear {{var CustomerName}},</h1>
<p> Your group has changed from <strong> {{var CustomerOldGroupname}}</strong> to <strong>{{var CustomerGroupname}}</strong>.</p>
<p>
If you have any questions, please feel free to contact us at
<a href="mailto:{{var store_email}}">{{var store_email}}</a>
{{depend store_phone}} or by phone at <a href="tel:{{var phone}}">{{var store_phone}}</a>{{/depend}}.
</p>
</td>
</tr>
</table>
{{template config_path="design/email/footer"}}
To resolve this issue one can create a module by going through the following steps:
Step 1.
Create Module xml file app\etc\modules\Magcustom_Customergroup.xml
<?xml version="1.0"?>
<config>
<modules>
<Magcustom_Customergroup>
<active>true</active>
<codePool>community</codePool>
</Magcustom_Customergroup>
</modules>
</config>
Step2.
Create a Observer app\code\community\Magecustom\Customergroup\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<Magcustom_Customergroup>
<version>0.1.0</version>
</Magcustom_Customergroup>
<customergroup>
<class>Magcustom_Customergroup_Model</class>
</customergroup>
</modules>
<global>
<events>
<customer_save_after>
<observers>
<stockalert>
<type>singleton</type>
<class>Magcustom_Customergroup_Model_Observer</class>
<method>checkDisplay</method>
</stockalert>
</observers>
</customer_save_after>
</events>
</global>
</config>
Create a Observer app\code\community\Magecustom\Customergroup\Model\Observer.php
<?php
class Magcustom_Customergroup_Model_Observer
{
public function checkDisplay(Varien_Event_Observer $observer){
$customer=$observer->getEvent()->getCustomer();
Mage::log('My log entry'.$customer->getId(), null, 'Magento37890.log');
/* if customer is old customer */
if($customer->getId()){
if($customer->getOrigData('group_id')!= $customer->getData('group_id')){
$oldgroupname = Mage::getModel('customer/group')->load($customer->getOrigData('group_id'))->getCustomerGroupCode();
$groupname = Mage::getModel('customer/group')->load($customer->getData('group_id'))->getCustomerGroupCode();
$name= $customer->getName();
/* here you write your code to send whenever you have change the group */
$templateId = 2;
$sender = array(
'name' => Mage::getStoreConfig('trans_email/ident_support/name', Mage::app()->getStore()->getId()),
'email' => Mage::getStoreConfig('trans_email/ident_support/email', Mage::app()->getStore()->getId())
);
$vars = array(
'CustomerName' => $customer->getName(),
'CustomerEmail' => $customer->getEmail(),
'CustomerGroupname' => $groupname,
'CustomerOldGroupname' => $oldgroupname
);
$customerEmail=$customer->getEmail();
$customerName=$name;
Mage::getModel('core/email_template')->sendTransactional($templateId, $sender, $customerEmail, $customerName, $vars, $storeId);
}
}else{
/* New Customer */
}
}
}
Step 3.
Create a email template system-> Transactional Emails
Template Name : Custom Group Change Email
Template Subject : Group Change, {{var CustomerName}}!
Template Content:
{{template config_path="design/email/header"}}
{{inlinecss file="email-inline.css"}}
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="action-content">
<h1>Dear {{var CustomerName}},</h1>
<p> Your group has changed from <strong> {{var CustomerOldGroupname}}</strong> to <strong>{{var CustomerGroupname}}</strong>.</p>
<p>
If you have any questions, please feel free to contact us at
<a href="mailto:{{var store_email}}">{{var store_email}}</a>
{{depend store_phone}} or by phone at <a href="tel:{{var phone}}">{{var store_phone}}</a>{{/depend}}.
</p>
</td>
</tr>
</table>
{{template config_path="design/email/footer"}}
No comments:
Post a Comment