1

I've added the following to a magento site I'm working on, it basically adds the logged in username to any comments made to an order.

http://www.atwix.com/magento/adding-senders-name-order-comments/

What I need to do now is add something to log which user created the order in the admin or to display the message 'Ordered Online' on each order page.

Any help would be appreciated.

Chesney
  • 11
  • 1
  • 5

1 Answers1

1

Create an observer for sales_order_place_after

<events>
    <sales_order_place_after>
        <observers>
            <orderenteredby>
                <type>singleton</type>
                <class>orderenteredby/observer</class>
                <method>implementOrderMethod</method>
            </orderenteredby>
        </observers>
    </sales_order_place_after>

In Observer.php

class MagePal_OrderEnteredBy_Model_Observer 
{

    public function implementOrderMethod($event)
    {
        $_order = $event->getOrder();

        if($this->_isAdmin()){
            $_user = Mage::getSingleton('admin/session');
            $firstname = $_user->getUser()->getFirstname();
            $lastname = $_user->getUser()->getLastname();
            $enterBy = "Order entered by {$firstname} {$lastname}";  
        }
        else{
            $enterBy = 'Ordered Online';
        }
        $_order->addStatusHistoryComment($enterBy)
               ->setIsVisibleOnFront(false)
               ->setIsCustomerNotified(false);

        return $this;
    }

    protected function _isAdmin(){
        if(Mage::app()->getStore()->isAdmin()){
            return true;
        }

        if(Mage::getDesign()->getArea() == 'adminhtml'){
            return true;
        }

        return false;
    }
}

For more info on how to create an observer see Change Magento default status for duplicated products

Community
  • 1
  • 1
MagePal Extensions
  • 17,646
  • 2
  • 47
  • 62