所以,這是我在網站上的第一篇文章,但我從過去的網站獲得了相當多的知識,並期待進一步學習。我絕對是一個新手,因爲我已經自學成才與Magento合作,所以我很抱歉這篇文章有任何不正確的地方。公司名稱訂單網格列
我正在研究Magento 1.8.1,主題包含在內。涉及的多個擴展也是完全自定義的。
問題:我一直在嘗試讓公司名稱出現在銷售訂單網格上一段時間,並且有一些運氣。
首先,我抄: /core/Mage/Adminhtml/Block/Sales/Order/Grid.php 至 - /local/Mage/Adminhtml/Block/Sales/Order/Grid.php
然後我在_prepareCollection()的代碼更新爲這樣:
protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->getSelect()->join(
array('addressTable' => 'sales_flat_order_address'),'main_table.entity_id = addressTable.parent_id AND addressTable.address_type = "billing"',array('billing_company'=>'company'));
$this->setCollection($collection);
return parent::_prepareCollection();
}
雖然加入以下_prepareColumns:
$this->addColumn('company', array(
'header' => Mage::helper('sales')->__('Bill to Company'),
'index' => 'billing_company',
));
好,迄今爲止好。所有事情都應該如此,直到我決定擁有Ship to Company以及因爲我們的大多數客戶爲其他公司購買而真的很高興。
要做到這一點,我沒有問題,就像我以前一樣添加列:
$this->addColumn('company', array(
'header' => Mage::helper('sales')->__('Ship to Company'),
'index' => 'shipping_company',
));
列添加沒有問題,除了它在我把它(shipping_name前)這個地方是不是,這是隻是添加沒有數據的列。
現在要添加數據,我會在_prepareCollection下添加另一個集合,因爲發貨信息與表格中的結算信息位於不同的行上?像這樣?:
$collection->getSelect()->join(
array('addressTable' => 'sales_flat_order_address'),'main_table.entity_id = addressTable.parent_id AND addressTable.address_type = "shipping"',array('shipping_company'=>'company'));
但當我嘗試這個,我得到一個錯誤:You cannot define a correlation name 'addressTable' more than once
我得到相當多的兩列之間的衝突也是如此。例如,當我沒有在_prepareColumns下評論的「發運至」公司時,它會顯示Bill to Company專欄應列入的「發往公司」列。列中也沒有數據。只要我評論Ship to Company Bill to Company出現並且具有正確的數據。
基本上,我只需要獲取「公司專欄」以及「公司專欄」的Bill。最好在適當的名稱旁邊。
任何答案或幫助將不勝感激。
我已經將公司欄添加到客戶網格並創建新訂單客戶網格,而且沒有任何問題。
謝謝
**編輯 **
嗯,我只是理解了它居然所以我想我的解決方案張貼到我的其他問題,以查看如果需要的話:
這是我更新的本地/法師/ Adminhtml /座/銷售/訂單/ Grid.php代碼:
protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->getSelect()->join(array('addressTable' => 'sales_flat_order_address'),'main_table.entity_id = addressTable.parent_id AND addressTable.address_type = "billing"',array('billing_company'=>'company'));
$collection->getSelect()->join(array('shipping'=>'sales_flat_order_address'),'main_table.entity_id=shipping.parent_id and shipping.address_type="shipping"',array('shipping_company'=>'company'));
$this->setCollection($collection);
return parent::_prepareCollection();
}
要讓列放置在Ship to Name旁邊,我必須使用addColumnAfter作爲Ship to Company,因爲它將它放置在最右側。
$this->addColumn('company', array(
'header' => Mage::helper('sales')->__('Bill to Company'),
'index' => 'billing_company',
'filter index' => 'billing_company'
));
$this->addColumnAfter('shipping_company', array(
'header' => Mage::helper('sales')->__('Ship to Company'),
'index' => 'shipping_company',
'filter index' => 'shipping_company'
),
'billing_name'
);
瞧,一切工作都是應該的!
謝謝你的回答。然而這並不奏效。首先,我不是在尋找郵政編碼,而是在郵寄並輸入公司名稱。 Ship to Company現在正在完美地工作,除了某種原因,它將它放在最右邊,而不是靠近Ship to Name?另外,當我將此代碼合併到公司數據時,我的賬單不起作用。 – rltegantvoort
我還在訂單網格上方獲得以下信息:SELECT'main_table'。*,'billing'.'company','shipping'.'company' as'shipping_company' FROM'sales_flat_order_grid' as'main_table' INNER JOIN'sales_flat_order_address' AS'billing' ON main_table.entity_id = billing.parent_id and billing.address_type =「billing」INNER JOIN'sales_flat_order_order_'' as'shipping' ON main_table.entity_id = shipping.parent_id and shipping.address_type =「shipping」 – rltegantvoort
我修改了它現在檢查 –