2010-12-06 14 views
13

adresindeki bir siparişle ekstra veri kaydetme Sipariş sayfasına, bir sütun eklemek için sales_flat_order_grid'a bir sütun eklemem gerekiyor. Her ikisi de mümkündür, ancak yeni sütuma kaydedilecek bir değer eklemeyi bilmiyorum.Magento

Yeni bir özellik kaydetmem gerekiyor mu?
Değer, teklifte mevcut değil, bu yüzden değer dönüştürülecek olmadığından, config/global/fieldsets/sales_convert_quote altında kayıt olmam gerekmez.

Magento Enterprise Kullanımı 1.8.

cevap

23

bkz bu tablolarda

için daha fazla alan eklemek anlamına gelir sanırım buldum şimdi.

sales_flat_order_grid Öncelikle ben "ana" tablosunu (sales_flat_order) ve ana tablo + "_grid" (sales_flat_order_grid) hem denetler çalıştı izi takip ederek, Mage_Sales_Model_Mysql4_Order_Abstract::updateGridRecords() güncellenir, onların kolonların Intersect alır ve bundan bir sorgu oluşturur. Dolayısıyla, ızgara tablosunda ihtiyacınız olan herhangi bir sütun da ana tabloda bulunmalıdır. EAV tarzı bir varlık değildir, bu nedenle özelliklerin oluşturulmasına gerek yoktur.
İşte benim kurulum komut dosyasıdır:

<?php 

/* @var $this Nexxt_Booth_Model_Entity_Setup */ 
$installer = $this; 

$installer->getConnection()->addColumn($installer->getTable('sales_flat_order'), 'box_num', 'varchar(255)'); 
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order_grid'), 'box_num', 'varchar(255)'); 

Sonraki, ben yönetici tüm düzen tablolarda gösterilmesi fazladan sütun gerekiyordu. Bunu yapmak için her ilgili bloğu geçersiz kıldım.

<?php 

class My_Module_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid 

    protected function _prepareColumns() 
    { 
     $this->addColumn('box_num', array(
      'header' => $this->__('Box #'), 
      'index'  => 'box_num', 
      'width'  => '100px' 
     )); 
     $this->addColumnsOrder('box_num', 'shipping_name'); 
     return parent::_prepareColumns(); 
    } 

} 
My/Module/Block/Adminhtml/Customer/Edit/Tab/Orders.php yılında Benzer

ve My/Module/Block/Adminhtml/Customer/Edit/Tab/View/Orders.php ben bu işlevi eklendi:

protected function _prepareColumns() 
    { 
     $this->addColumn('box_num', array(
      'header' => $this->__('Box #'), 
      'index'  => 'box_num', 
      'width'  => '100px' 
     )); 
     $this->addColumnsOrder('box_num', (Mage::app()->isSingleStoreMode() ? 'grand_total' : 'store_id')); 
     return parent::_prepareColumns(); 
    } 
Nihayet

, bitirmek için, olay sales_convert_quote_to_order I My/Module/Block/Adminhtml/Sales/Order/Grid.php yılında

<?xml version="1.0"?> 
<config> 
    .... 

    <global> 
     <blocks> 
      <adminhtml> 
       <rewrite> 
        <customer_edit_tab_view_orders> 
        <!-- Recent 5 orders on customer page --> 
         My_Module_Block_Adminhtml_Customer_Edit_Tab_View_Orders 
        </customer_edit_tab_view_orders> 
        <customer_edit_tab_orders> 
        <!-- All orders on customer tab --> 
         My_Module_Block_Adminhtml_Customer_Edit_Tab_Orders 
        </customer_edit_tab_orders> 
        <sales_order_grid> 
        <!-- All orders in Sales menu --> 
         My_Module_Block_Adminhtml_Sales_Order_Grid 
        </sales_order_grid> 
       </rewrite> 
      </adminhtml> 
     </blocks> 
    </global> 
</config> 

aşağıdaki yapılmış yeni alanı doldurdu. Bu bit, verilerin kaydedilmesinden önce bir noktada verileri eklediğiniz sürece önemli değildir.

$order->setBoxNum('DATA GOES HERE'); 
+0

ben tam olarak aynı şeyi yapmaya çalışıyorum, ben yeni bir sütun yaptık sales_flat_order_grid olarak barcode_no ve Grid.php kullanarak magento siparişleri ızgarasında bu sütunu gösterdim.Şimdi barcode_no değerini magento arka ucundan sales_flat_order_grid tablosuna nasıl kaydedebilirim? –

+0

@ShujaatShaikh hangi sorunla karşılaşıyorsunuz? – clockworkgeek

+0

Hayır, nerede bir tuturucu bulabilirim, phento veritabanına özel bir değerin nasıl ekleneceğini açıklayan magento admin arka ucundan. Herhangi bir yazı büyük yardım olurdu! –

1

Nitelikler eklemek zorundasınız, bunu yapmanın en iyi yolu uzantı güncellemeniz veya kurulum komut dosyası aracılığıyla gerçekleştirmektir. çok hatasının - - düzen ve alıntı düz tablo yapılarına dayanmaktadır gibi gerçekten de deneme yanılma bir sürü sonra ALTER TABLE in Magento setup script without using SQL

0

Ayrıca, hem (düz olduğu için gerçekten bir sütundur at) yeni "özelliğini" eklemek için bunu kullanabilirsiniz, sales_flat ve sales_flat_ _grid

$installer->addAttribute('order', 'box_num', array(
'label' => 'Box Number', 
'type'  => 'varchar', 
'grid'  => true  // this is important 
)); 

senin yükleyici olmalıdır : Izgara anahtarını kullanmak için Mage_Sales_Model_Entity_Setup.

Ve sales_flat_order_grid için sales_flat_order bir mevcut columnd ekliyorsanız, o zaman sales_flat_order_grid tablosunu yeniden senkronize gerekir hatırlayın:

In Magento, how do I populate a new column in sales_order_grid with data from sales_flat_order?

+0

Benim durumumda bunun için 'Mage_Sales_Model_Resource_Setup' sınıfını kullanmalıydım. 'Mage_Sales_Model_Entity_Setup' sınıfı ile öznitelikleri oluşturma hiçbir şey yapmıyor gibiydi (yeni db sütunları oluşturulmadı, ancak hatalar da yok.) – Eric