I have created custom EAV attribute for customer called branch which is select field customer need to select one branch which he/she belongs to and its working fine. Note: Customer can change the branch for each order he/she placed.
I have to store it in another table when customer place order with other customer attribute, so I used sales_order_place_after
observer method. I am using
$orderInfo = $observer->getEvent()->getOrder();
Where I can get all the information about order. I am getting all the information using this code.
$customerInfo = array(
'customer_id'=> $orderInfo->getCustomerId(),
'first_name' => $orderInfo->getBillingAddress()->getFirstname(),
'last_name' => $orderInfo->getBillingAddress()->getLastname(),
'phone' => $orderInfo->getBillingAddress()->getTelephone(),
'email' => $orderInfo->getCustomerEmail(),
'address' => $orderInfo->getBillingAddress()->getData('street'),
'zip_code' => $orderInfo->getBillingAddress()->getData('postcode'),
'city' => $orderInfo->getBillingAddress()->getCity(),
'region' => $orderInfo->getBillingAddress()->getRegion()
);
But I am not able to get my custom attribute, I used many ways to get it as follows.
1. Mage::log(print_r($orderInfo->getCustomerBranch(), true));
2. Mage::log(print_r($orderInfo->getBranch(), true));
3. Mage::log(print_r($orderInfo->getBillingAddress()->getData('branch'), true));
4. Mage::log(print_r($orderInfo->getBillingAddress()->getBranch(), true));
Here is the code I used to create custom attribute
install.php code
<?php
$installer = $this;
$installer->startSetup();
$setup = Mage::getModel('customer/entity_setup', 'core_setup');
$setup->addAttribute('customer', 'branch', array(
'type' => 'varchar',
'input' => 'select',
'label' => 'Branch',
'global' => 1,
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'default' => NULL,
'visible_on_front' => 1,
'source' => 'customerbranch/entity_branch',
));
if (version_compare(Mage::getVersion(), '1.6.0', '<='))
{
$customer = Mage::getModel('customer/customer');
$attrSetId = $customer->getResource()->getEntityType()->getDefaultAttributeSetId();
$setup->addAttributeToSet('customer', $attrSetId, 'General', 'branch');
}
if (version_compare(Mage::getVersion(), '1.4.2', '>='))
{
Mage::getSingleton('eav/config')
->getAttribute('customer', 'branch')
->setData('used_in_forms', array('adminhtml_customer','customer_account_create','customer_account_edit','checkout_register'))
->save();
}
$tablequote = $this->getTable('sales/quote');
$installer->run("
ALTER TABLE $tablequote ADD `customer_branch` varchar(255) NULL
");
$installer->endSetup();
Config.xml code
<global>
<resources>
<customerbranch_setup>
<setup>
<module>Npm_CustomerBranch</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</customerbranch_setup>
</resources>
<fieldsets>
<customer_branch>
<branch><create>1</create><update>1</update><name>1</name></branch>
</customer_branch>
</fieldsets>
<fieldsets>
<checkout_onepage_quote>
<customer_branch>
<to_customer>branch</to_customer>
</customer_branch>
</checkout_onepage_quote>
<customer_account>
<branch>
<to_quote>customer_branch</to_quote>
</branch>
</customer_account>
</fieldsets>
<fieldsets>
<checkout_onepage_billing>
<branch>
<to_customer>*</to_customer>
</branch>
</checkout_onepage_billing>
</fieldsets>
</global>
Nothing is working.:{ How can I get my attribute value in sales_order_place_after observer method?
Thanks in advance