Reputation: 2921
Hello Magento Experts,
I developed a Magento Extension
which is working fine on Version 1.6 and 1.7
, but when i installed it on Version 1.5
, it is giving me an error :
Fatal error: Call to a member function getData() on a non-object in /home/broadcas/public_html/app/code/community/Gwb/Magecrmsync/controllers/Adminhtml/OrdersController.php on line 18
Below is my OrderController.php
Code.
<?php
class Gwb_Magecrmsync_Adminhtml_OrdersController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$model = Mage::getModel('sales/order');
$collection = $model->getCollection()
->addFieldToFilter('status', array("in" => array('complete','closed','pending','holded','payment_review','pending_payment','pending_paypal','processing')));
$data = array();
$orderArr = array();
// getting order details
$records = 0;
foreach($collection as $order)
{
$data[$records]['order_data']['shipping_address'] = $order->getShippingAddress()->getData(); // get shipping details
$data[$records]['order_data']['billing_address'] = $order->getBillingAddress()->getData(); // get billing details
$data[$records]['order_data']['order_total'] = $order->getGrandTotal(); // get total amount
$data[$records]['order_data']['shipping_amount'] = $order->getShippingAmount();
$data[$records]['order_data']['order_details'] = $order->toArray();
$records++;
}
// getting order details
}
}
Can anyone please guide me what am i doing wrong which doesn't work in Version 1.5
.
Any help would be appreciated.
Thanks
Upvotes: 0
Views: 7861
Reputation: 1021
Check my answer. You should check $order->getShippingAddress()
is object or not. because if product is virtual. The shipping address will be set.
class Gwb_Magecrmsync_Adminhtml_OrdersController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$model = Mage::getModel('sales/order');
$collection = $model->getCollection()
->addFieldToFilter('status', array("in" => array('complete','closed','pending','holded','payment_review','pending_payment','pending_paypal','processing')));
$data = array();
$orderArr = array();
// getting order details
$records = 0;
foreach($collection as $order)
{
if(is_object($order->getShippingAddress()))
{
$data[$records]['order_data']['shipping_address'] = $order->getShippingAddress()->getData(); // get shipping details
}
else
{
$data[$records]['order_data']['shipping_address'] = array(); // no shipping details
}
if(is_object($order->getBillingAddress()))
{
$data[$records]['order_data']['billing_address'] = $order->getBillingAddress()->getData(); // get billing details
}
else
{
$data[$records]['order_data']['billing_address'] = array(); // no billing details
}
$data[$records]['order_data']['order_total'] = $order->getGrandTotal(); // get total amount
$data[$records]['order_data']['shipping_amount'] = $order->getShippingAmount();
$data[$records]['order_data']['order_details'] = $order->toArray();
$records++;
}
// getting order details
}
}
Upvotes: 1