I am trying to send an email when order is canceled. I followed this tutorial:
Here is my code i need help setting it up becouse now it is not working:
Local.xml:
1.0.0
<global>
<models>
<cancelemail>
<class>Ylli_Cancelemail_Model</class>
</cancelemail>
</models>
<events>
<sales_order_save_commit_after>
<observers>
<Ylli_Cancelemail_Model_Observer>
<type>singleton</type>
<class>Ylli_Cancelemail_Model_Observer</class>
<method>invoicedStatusChange</method>
</Ylli_Cancelemail_Model_Observer>
</observers>
</sales_order_save_commit_after>
</events>
<template>
<email>
<custom_order_tpl module="Ylli_Cancelemail">
<label>Status Mail Invoice</label>
<file>statusmail_canceled.html</file>
<type>html</type>
</custom_order_tpl>
</email>
</template>
</global>
Observer.php
class Ylli_Cancelemail_Model_Observer {
public function invoicedStatusChange($event)
{
$order = $event->getOrder();
var_dump($order);
Mage::log('worked', null, 'cancelemail.log');
$orderStatus = $order->getStatus();
if ($order->getState() == Mage_Sales_Model_Order::STATE_CANCELED)
$this->_sendStatusMail($order);
}
private function _sendStatusMail($order)
{
$emailTemplate = Mage::getModel('core/email_template');
$emailTemplate->loadDefault('custom_order_tpl');
$emailTemplate->setTemplateSubject('Your order was holded');
// Get General email address (Admin->Configuration->General->Store Email Addresses)
$salesData['email'] = Mage::getStoreConfig('trans_email/ident_general/email');
$salesData['name'] = Mage::getStoreConfig('trans_email/ident_general/name');
$emailTemplate->setSenderName($salesData['name']);
$emailTemplate->setSenderEmail($salesData['email']);
$emailTemplateVariables['username'] = $order->getCustomerFirstname() . ' ' . $order->getCustomerLastname();
$emailTemplateVariables['order_id'] = $order->getIncrementId();
$emailTemplateVariables['store_name'] = $order->getStoreName();
$emailTemplateVariables['store_url'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$emailTemplate->send($order->getCustomerEmail(), $order->getStoreName(), $emailTemplateVariables);
}
Any help is appreciated. thanks in advace
Best Answer
I want to have a cms page where I will list all products that have special_offer dropdown attribute with yes value. I found something here but this is work only with the Yes/No attribute. I need to use dropdown attribute because I want to use this attribute in the layered navigation too.
So how I can display dropdown special_offer attribute where options are Yes and No?
This is the public function where the products are sorted:
There issue with
fetch data from event
.you can get your passingevent data
using$observer->getEvent()->getData('data_object')
for getting the data of event data.According magento,**_save_commit_after event on
dispatch
on below code at class Mage_Core_Model_AbstractAccording to this event it pass data using
$this->_getEventData()
for getting data you need to use$observer->getEvent()->getData('data_object')
at Observer file.For getting old data use
getOrigData()
Example:
and for getting current change data
getData()
Example:
This is provide current change data in array format;
Previous data: print in log file:
Current change data:
Full Module:
Thank you