0

I am using magento 1.8. I have requirement that need to save the order details in separate custom table. for this I need to execute saveorder method using observer event sales_order_place_after But when I am clicking place order, My observer function is not executing,

My config.xml file content

    <?xml version="1.0"?>
<config>
    <modules>
        <Npm_Commission>
            <version>0.1.0</version>
        </Npm_Commission>
    </modules>
    <global>
        <events>
            <sales_order_place_after>
                <observers>
                    <npm_commission>
                        <type>singleton</type>
                        <class>Npm_Commission_Model_Observer</class>
                        <method>calculate_commission</method>
                    </npm_commission>
                </observers>
            </sales_order_place_after>
        </events>
        <resources>
            <commission_setup>
                <setup>
                    <module>Npm_Commission</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </commission_setup>
            <commission_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </commission_write>
            <commission_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </commission_read>
        </resources>
        <models>
            <commission>
                <class>Npm_Commission_Model</class>
                <resourceModel>commission_mysql4</resourceModel>
            </commission>
            <commission_mysql4>
                <class>Npm_Commission_Model_Mysql4</class>
                <entities>
                    <commission>
                        <table>commission</table>
                    </commission>
                </entities>
            </commission_mysql4>
        </models>
    </global>
</config>

my observer method

<?php
class Npm_Commission_Model_Observer extends Varien_Event_Observer
{
    public function saveorder($observer)
    {
        die('sales_order_place_after');
        $params = Mage::app()->getFrontController()->getRequest()->getParams();
        echo "<pre>";print_r($params);die();
    }

If this information is not enough, add in comment for other part of code. And suggest any other idea for this issue, Or my faults in this code.

Thank you friends:)

  • it seems code you pasted is fine.please paste the whole code from your config.xml – Pradeep Sanku Jun 18 '14 at 14:04
  • What payment method do you use? Afaik there are a few events which don't fire with paypal – Fabian Blechschmidt Jun 18 '14 at 15:19
  • Yes, I used paypal only – Charlie Jun 18 '14 at 15:43
  • 1
    @Charlie method name should be saveorder and not calculate_commission in config.xml. I bet you would have already solved it :) – Kalpesh Sep 18 '14 at 0:04
1

There are small issue ,in closing backet of class Npm_Commission_Model_Observer and method name is wrong, should calculate_commission from saveorder as xml define

<?php
class Npm_Commission_Model_Observer extends Varien_Event_Observer
{
    public function saveorder($observer)
    {
        die('sales_order_place_after');
        $params = Mage::app()->getFrontController()->getRequest()->getParams();
        echo "<pre>";print_r($params);die();
    }
} /* it was missing */

Also

total code config.xml code is (path app/code/local/Npm/Commission/etc)

<?xml version="1.0"?>
    <config>
        <modules>
            <Npm_Commission>
                <version>0.1.0</version>
            </Npm_Commission>
        </modules>
        <global>

            <models>
                <commission>
                    <class>Npm_Commission_Model</class>
                    <resourceModel>commission_mysql4</resourceModel>
                </commission>
                <commission_mysql4>
                    <class>Npm_Commission_Model_Mysql4</class>
                    <entities>
                        <commission>
                            <table>commission</table>
                        </commission>
                    </entities>
                </commission_mysql4>
            </models>

            <events>
                <sales_order_place_after>
                    <observers>
                        <npm_commission>
                            <type>singleton</type>
                            <class>commission/observer</class>
                            <method>calculate_commission</method>
                        </npm_commission>
                    </observers>
                </sales_order_place_after>
            </events>
            <resources>
                <commission_setup>
                    <setup>
                        <module>Npm_Commission</module>
                    </setup>
                    <connection>
                        <use>core_setup</use>
                    </connection>
                </commission_setup>
                <commission_write>
                    <connection>
                        <use>core_write</use>
                    </connection>
                </commission_write>
                <commission_read>
                    <connection>
                        <use>core_read</use>
                    </connection>
                </commission_read>
            </resources>
        </global>
    </config>

Observer.php path app/code/local/Npm/Commission/Model

<?php
class Npm_Commission_Model_Observer extends Varien_Event_Observer
{
    public function calculate_commission($observer)
    {
        $order = $observer->getEvent()->getOrder();

        if (!$order) {
            return $this;
        }
        //die('sales_order_place_after');
         Mage::log('sales_order_place_after');
        //$params = $observer->getEvent()->getOrder;
         Mage::log(print_r($order->getData('increament_id'),true));
        //echo "<pre>";print_r($params);die();
    }
}

etc/modules files Npm_Commission.xml

<?xml version="1.0" ?>
<config>
    <modules>
        <Npm_Commission>
            <codePool>local</codePool>
            <active>true</active>
        </Npm_Commission>
    </modules>
</config>
| improve this answer | |
0

rather then you die you Mage::log('testing');

Follow the below code

<?php
class Npm_Commission_Model_Observer extends Varien_Event_Observer
{
    public function saveorder($observer)
    {
        Mage::log('sales_order_place_after');
        $params = Mage::app()->getFrontController()->getRequest()->getParams();
        Mage::log(print_r($params,true));
    }

Make you have enable log in Magento. system >> Configuration >> Developer >> Log.

To check your data var/log.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.