2012-10-17 30 views
9

için yeni nitelik ekleme Yeni bir özellik eklemek için müşteriye görünmeyecek bir sipariş eklemek istiyorum. Sadece veritabanında kullanmak ve her sipariş için belirli bir değeri depolamak istiyorum. Siparişi bu değere göre yazdırmak istiyorum. Peki magento'da nasıl bir sipariş özelliği ekleyebilirim? Özellik, siparişin durumu gibidir. Üstelik bu özniteliği yönetici/satış/siparişlerde göstermek istersem bunu nasıl yapabilirim?Magento

+0

@MJG bakınız: Sorununuzu çözüldü mü? – Rathinam

cevap

16

Siparişinize my_custom_input_field eklemek ve yöneticinize bir alan eklemek istediğinizde, sipariş sayfası oluşturun (alanı ön tarafa eklemek için sadece giriş alanını ön şablona eklemeniz ve gözlemciyi iki kez kontrol etmeniz gerekir) /app/code/local/MageIgniter/CustomOrderStatus/sql/customorderstatus_setup/mysql4-install-1.1 yılında

<?xml version="1.0"?> 
<config> 
    <modules> 
     <MageIgniter_CustomOrderStatus> 
      <version>1.1</version> 
     </MageIgniter_CustomOrderStatus> 
    </modules> 

    <global> 
     <fieldsets> 
      <sales_convert_quote>       
       <my_custom_input_field><to_order>*</to_order></my_custom_input_field> 
      </sales_convert_quote> 

      <sales_convert_order>            
       <my_custom_input_field><to_quote>*</to_quote></my_custom_input_field> 
      </sales_convert_order> 
     </fieldsets> 
     <helpers> 
      <customorderstatus> 
       <class>MageIgniter_CustomOrderStatus_Helper</class> 
      </customorderstatus>    
     </helpers> 

     <models> 
      <customorderstatus> 
       <class>MageIgniter_CustomOrderStatus_Model</class> 
       <resourceModel>customorderstatus_mysql4</resourceModel> 
      </customorderstatus> 
     </models> 
     <resources> 
      <customorderstatus_setup> 
       <setup> 
        <module>MageIgniter_CustomOrderStatus</module> 
        <class>Mage_Sales_Model_Mysql4_Setup</class> 
       </setup> 
       <connection> 
        <use>core_setup</use> 
       </connection> 
      </customorderstatus_setup> 
      <customorderstatus_write> 
       <connection> 
        <use>core_write</use> 
       </connection> 
      </customorderstatus_write> 
      <customorderstatus_read> 
       <connection> 
        <use>core_read</use> 
       </connection> 
      </customorderstatus_read> 
     </resources> 

     <events> 
      <adminhtml_sales_order_create_process_data_before> 
       <observers> 
        <customorderstatus> 
         <type>singleton</type> 
         <class>customorderstatus/observer</class> 
         <method>saveCustomData</method> 
        </customorderstatus> 
       </observers> 
      </adminhtml_sales_order_create_process_data_before> 
     </events> 

     <blocks> 
      <customorderstatus> 
       <class>MageIgniter_CustomOrderStatus_Block</class> 
      </customorderstatus> 
     </blocks> 
    </global> 
</config> 

/app/code/local/MageIgniter/CustomOrderStatus/etc/config.xml

yılında

. php

<?php 
$installer = $this; 
$installer->startSetup(); 

$installer->addAttribute("order", "my_custom_input_field", array("type"=>"varchar")); 
$installer->addAttribute("quote", "my_custom_input_field", array("type"=>"varchar")); 
$installer->endSetup(); 
012 /app/code/local/MageIgniter/CustomOrderStatus/Model/Observer.php yılında

class MageIgniter_CustomOrderStatus_Model_Observer 
{ 
    public function saveCustomData($event) 
    { 
     $quote = $event->getSession()->getQuote(); 
     $quote->setData('my_custom_input_field', $event->getRequestModel()->getPost('my_custom_input_field')); 

     return $this; 
    } 
} 

(Sen çekirdek varsayılan değişiklik yapmak kaçınmalıdır - Bunu etrafında yolda biraz araştırma yapmak gerekir)

/app/design/adminhtml/default/default/template/sales/order/view/info.phtml olarak

<?php if($_order->getMyCustomInputField()): ?> 
<tr> 
    <td class="label"><label><?php echo Mage::helper('sales')->__('My Custom Input Field') ?></label></td> 
    <td class="value"><strong><?php echo $_order->getMyCustomInputField() ?></strong></td> 
</tr> 
<?php endif; ?> 

/app/tasarım/adminhtml/default/default/şablon/satış/amacıyla oluşturmak//form/account.phtml

<input id="my_custom_input_field" name="my_custom_input_field" value="<?php echo Mage::getSingleton('adminhtml/session_quote')->getQuote()->getMyCustomInputField() ?>" class="input-text" type="text"> 
+1

Bir kod paylaştığınız için teşekkür ederiz. Daha az teknik kişi için arka ofisden tek tıklamayla ekstra ödeme alanları eklemek için bir eklentiden bahsetmek istiyorum. http://www.fmeextensions.com/magento-additional-checkout-attributes-fields.html –

+0

Özel sütuna, ayrıca sales_flat_order_grid tablosuna nasıl yazıyorsunuz/yazıyorsunuz? – user2963379

+0

@ user2963379 ... sales_flat_order –

0

ekleme özel sipariş niteliklerini birden adımdan oluşur (value="<?php echo Mage...>" değiştirmek frontend eklemek). İlk olarak, billing.phtml dosyasına bir metin alanı eklemeniz gerekir. Ardından, bu alanı Alıntı ve Sıralama tablolarına eklemeniz ve Gözlemci sınıfları oluşturmanız gerekir. Bu özniteliği görüntülemek için custom.xm l ve order.phtml gibi birkaç dosya daha düzenlenmelidir.

tam eğitim için

,