उत्पाद की विशेषता आइटम और आदेश आइटम उद्धृत करने के लिए


25

उत्पाद की विशेषता के लिए Magento में सही तरीका क्या है कि किसी वस्तु को उद्धृत करने और फिर आइटम को ऑर्डर करने के लिए स्वचालित रूप से जारी रखा जाए?

क्या यह थोड़ा सा कॉन्फ़िगर XML के रूप में सरल है या यह एक मैनुअल प्रक्रिया है जो घटनाओं को सहेजने से पहले देख रही है और आगे?

जवाबों:


21

एक तरीका प्रेक्षक और एक कनवर्टर का उपयोग करना होगा।

पर्यवेक्षक को उत्पाद से उद्धरण के लिए विशेषता प्राप्त करना होगा (एक विशेषता जिसे 'परीक्षण' कहा जाता है), और कनवर्टर को उद्धरण से क्रम तक विशेषता प्राप्त होती है।

आपके विन्यास में:

<global>
    <fieldsets>
        <sales_convert_quote_item>
            <test>
                <to_order_item>*</to_order_item>
            </test>
        </sales_convert_quote_item>
    </fieldsets>

    <sales>
        <quote>
            <item>
                <product_attributes>
                    <test />
                </product_attributes>
            </item>
        </quote>
    </sales>

    <events>
        <sales_quote_item_set_product>
            <observers>
                <YOUR_MODULE>
                    <class>YOUR_MODULE/observer</class>
                    <method>setTestAttribute</method>
                </YOUR_MODULE>
            </observers>
        </sales_quote_item_set_product>
    </events>
</global>

आपके पर्यवेक्षक में:

public function setTestAttribute(Varien_Event_Observer $observer) {

    $item = $observer->getQuoteItem();
    $product = $observer->getProduct();
    $item->setTest($product->getTest());
    return $this;
}

1
अच्छी तरह से किया!!!।
philwinkle

6
भविष्य के गोगलर्स के लिए एक चेतावनी: यह परीक्षण करने से पहले अपने कैश फ़ोल्डर को मैन्युअल रूप से हटा दें। मैंने इस उत्तर पर कई बदलावों का परीक्षण करते हुए, बैकएंड के माध्यम से अनुक्रमित और कैश को साफ़ करने में कई घंटे बिताए। मैंने जो कुछ भी किया, कस्टम विशेषताओं को db में सहेजा नहीं गया, बोली के शीर्षक को बदलते हुए हालांकि ठीक काम किया। Unill मैंने कैश को मैन्युअल रूप से हटाकर / var / cache हटा दिया ... क्रेजी!
मौरिस

मैं बैकएंड पैनल में इस कस्टम विशेषता के साथ-साथ बिक्री आदेश विवरण पृष्ठ में sku के बगल में चाहता हूं। कृपया सुझाव दें, कैसे करें?
अणसौरभ

21

यह आपके पर्यवेक्षकों और config.xml के ज्ञान को मिलाकर किया जाता है। Config.xml उद्धरण आइटम पर एक कस्टम विशेषता परिभाषा के प्रावधान का प्रबंधन करेगा, और एक पर्यवेक्षक उत्पाद विशेषता को उद्धरण में जोड़ते समय उद्धरण में बचत करेगा।

वहाँ से, आप config.xml का उपयोग fieldset परिभाषा है, जिसमें से रूपांतरण संभाल लेंगे कॉल करने के लिए quote_itemकरने के लिए order_item

पूर्ण प्रकटीकरण: नीचे दी गई सामग्री अटविक्स की है। जवाब के नीचे लिंक करें।

सबसे पहले, आपको sales->quote->item->product_attributesनोड में कस्टम विशेषता जोड़ना चाहिए :

<sales>
    <quote>
        <item>
            <product_attributes>
                <custom_attribute />
            </product_attributes>
        </item>
    </quote>
</sales>

यह विशेषता सुलभ बनाता है जब हम इसे उत्पाद से उद्धरण आइटम में कॉपी करेंगे - जो कि हमारा अगला कदम है। इस कार्य के लिए पर्यवेक्षक का उपयोग किया जाता है, और घटना को बुलाया जाएगा sales_quote_item_set_product:

<sales_quote_item_set_product>
    <observers>
        <yourmodule_customattribute>
            <class>yourmodule_customattribute/observer</class>
            <method>salesQuoteItemSetCustomAttribute</method>
        </yourmodule_customattribute>
    </observers>
</sales_quote_item_set_product>

देखने वाला:

public function salesQuoteItemSetCustomAttribute($observer)
{
    $quoteItem = $observer->getQuoteItem();
    $product = $observer->getProduct();
    $quoteItem->setCustomAttribute($product->getCustomAttribute());
}

आखिरी चीज जिसकी हमें देखभाल करने की आवश्यकता है - वह है विशेषता को इसमें से परिवर्तितquote_item करना order_item। और यह XML के साथ किया जा सकता है:

<fieldsets>
    <sales_convert_quote_item>
        <custom_attribute>
            <to_order_item>*</to_order_item>
        </custom_attribute>
    </sales_convert_quote_item>
    <sales_convert_order_item>
        <custom_attribute>
            <to_quote_item>*</to_quote_item>
        </custom_attribute>
    </sales_convert_order_item>
</fieldsets>

स्रोत: अटविक्स (जो जीत से भरा है): http://www.atwix.com/magento/custom-product-attribute-quote-order-item/


2
+1। मुझे ऐसा लगता है कि मैंने खुद को +1 किया। जब मैं कुछ समान प्रस्तुत करने वाला था, तो एक संदेश आया: 'इस प्रश्न का नया उत्तर है'। इसलिए +1 आप तेजी से टाइप क्योंकि :)
मेरियस

Hahaha - यह Atwix है, वास्तव में।
दर्शन करें

@ एफिलविंक, उपरोक्त अच्छी तरह से काम करता है, लेकिन मान लें कि आपका कस्टम गुण उत्पाद बिंदुओं पर निर्भर करता है। यदि ठेस A में 50 अंक और 2 मात्रा है, तो कुल अंक 50 * 2 = 100 होना चाहिए। मैं उद्धरण आइटम के 100बजाय मूल्य कैसे निर्धारित करूं 50? यदि विशेषता मान अपडेट हो जाता है, तो मैं उस अद्यतन मान को कैसे
सहेजूं
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.