Magento – add custom order attribute to the order from in magento admin

attributesmagento

I've added a custom order attribute and updated the onepage checkout page.
Now I'm trying to add this attribute to the new order form in the admin.
I'm trying to extend Mage_Adminhtml_Block_Sales_Order_Create_Form_Account and add a new field in the _prepareForm() method similar to the way the Group and Email fields are added.

How do I get the order attribute?
I've tried several ways but nothing works.
This is how I'm creating the custom order attribute in the mysql-install file:

$attribute  = array(
        'type'          => 'int',
        'label'         => 'myattr',
        'visible'       => false,
        'required'      => false,
        'user_defined'  => false,
        'searchable'    => false,
        'filterable'    => false,
        'comparable'    => false,
);
$installer->addAttribute('order', 'myattr', $attribute);

and this is how I'm trying to get the attribute:

$res = Mage::getSingleton('core/resource');
$eav = Mage::getModel('eav/config');
$attr = $eav->getAttribute('sales/order', 'myattr');

or with this:

$entityType = Mage::getModel('eav/config')->getEntityType('order');
$entityTypeId = $entityType->getEntityTypeId();

$attribute = Mage::getResourceModel('eav/entity_attribute_collection')
                ->setCodeFilter('myattr')
                ->setEntityTypeFilter($entityTypeId)
                ->getFirstItem();

or this:

$order = Mage::getResourceSingleton('sales/order');
$myAttr = $order->getAttribute('myattr');

None of them work.

Best Answer

Have you verified that the attribute is being added to eav_attribute table in the database with the correct entity_type_id? (I think sales_order is 11 by default, but don't assume that)

At first glance, it looks like you should be using

$installer->addAttribute('sales/order', 'myattr', $attribute);

HTH, JD

Related Topic