2012-10-17 16 views
9

में ऑर्डर करने के लिए एक नई विशेषता जोड़ना मैं आदेश में एक विशेषता जोड़ना चाहता हूं जो ग्राहक को दिखाई नहीं देगी। मैं बस डेटाबेस में इसका उपयोग करना चाहता हूं और प्रत्येक ऑर्डर के लिए एक विशिष्ट मान संग्रहीत करना चाहता हूं। मैं इस मूल्य के अनुसार आदेश मुद्रित करना चाहता हूं। तो मैं Magento में ऑर्डर विशेषता कैसे जोड़ सकता हूं। विशेषता सिर्फ आदेश की स्थिति की तरह है। आगे अगर मैं व्यवस्थापक/बिक्री/आदेश में उस विशेषता को दिखाना चाहता हूं तो मैं यह कैसे कर सकता हूं?Magento

+0

@MJG: आपकी समस्या हल हो रहा है? – Rathinam

उत्तर

16

मान लीजिए कि आप अपने आदेश में my_custom_input_field जोड़ना चाहते हैं और अपने व्यवस्थापक को एक ऑर्डर पृष्ठ बनाना चाहते हैं (फ्रंटेंड में फ़ील्ड जोड़ने के लिए आपको केवल सामने वाले टेम्पलेट में इनपुट फ़ील्ड जोड़ने की आवश्यकता है और पर्यवेक्षक को दोबारा जांचना होगा)

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

<?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/sql/customorderstatus_setup/mysql4-install-1.1 में

। 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(); 

/app/code/local/MageIgniter/CustomOrderStatus/Model/Observer.php में

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; 
    } 
} 

(आप कोर डिफ़ॉल्ट में परिवर्तन करने से बचना चाहिए - आप इस के आसपास रास्ते पर कुछ शोध करना चाहिए)

/app/design/adminhtml/default/default/template/sales/order/view/info.phtml में

<?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; ?> 

/ऐप्स/डिजाइन/adminhtml/डिफ़ॉल्ट/डिफ़ॉल्ट/टेम्पलेट/बिक्री/आदेश में/बनाने /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

कोड साझा करने के लिए धन्यवाद। मैं कम तकनीकी लोगों के लिए बैक ऑफिस से एकल क्लिक के साथ अतिरिक्त चेकआउट फ़ील्ड जोड़ने के लिए यहां एक विस्तार का उल्लेख करना चाहता हूं। http://www.fmeextensions.com/magento-additional-checkout-attributes-fields.html –

+0

तालिका sales_flat_order_grid में कस्टम कॉलम में आप कैसे जोड़/लिखते हैं? – user2963379

+0

@ user2963379 ... अगर आप sales_flat_order –

0

जोड़ना कस्टम ऑर्डर करने के लिए जिम्मेदार बताते हैं कई चरण होते हैं (दृश्यपटल बदलने value="<?php echo Mage...>" जोड़ने के लिए)। सबसे पहले, आपको billing.phtml फ़ाइल में एक टेक्स्ट फ़ील्ड जोड़ने की आवश्यकता है। फिर आपको उस क्षेत्र को कोट और ऑर्डर टेबल में जोड़ना होगा और ऑब्जर्वर कक्षाएं बनाना होगा। custom.xm एल और order.phtml जैसी कुछ और फ़ाइलें उस विशेषता को प्रदर्शित करने के लिए संपादित करने की आवश्यकता है।

पूरा ट्यूटोरियल के लिए, देखें