ürüne fiyat teklifi ve ürün siparişi


25

Magento'da, bir ürün özelliğine bir öğeyi teklif etme ve ardından sipariş vermek için otomatik olarak ısrar etmenin doğru yolu nedir?

Küçük bir yapılandırma XML'si kadar basit mi yoksa etkinlikleri kaydetmeden önce inceleyen manuel bir işlem mi?

Yanıtlar:


21

Bunun bir yolu gözlemci ve dönüştürücü kullanmak olacaktır.

gözlemci, niteliği üründen alıntıya ('test' adı verilen bir öznitelik kullanarak) almaktır ve dönüştürücü bu sırayı alıntıdan sırasına kadar alır.

konfigürasyonunuzda:

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

gözlemcinizde:

public function setTestAttribute(Varien_Event_Observer $observer) {

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

1
Güzel bitti !!!.
Philwinkle

6
Gelecekteki çalışanlar için bir uyarı: bunu test etmeden önce önbellek klasörünüzü el ile silin. Bu cevabın birçok varyasyonunu test ederek, endeksleri ve önbellekleri arka uçtan temizleyerek saatler geçirdim. Ne yaparsam yap, özel özellikler db'ye kaydedilmedi, quote_item'in unvanını değiştirdi ancak iyi çalıştı. / Var / cache ... 'yi silerek önbelleği elle temizleyene kadar ... Crazy!
Maurice

Müşteri siparişi detay sayfasında sku'nun yanında, arka paneldeki bu özel özelliği de istiyorum. Nazikçe önerin, nasıl başarılı olunur?
inrsaurabh

21

Bu, gözlemciler ve config.xml bilgilerinizi birleştirerek yapılır. Config.xml, teklif öğesindeki özel bir özellik tanımının sağlanmasını yönetir ve bir gözlemci, bir teklife eklendiğinde ürün niteliğini teklife kaydetmeyi işleyecektir.

Oradan, dönüşüm idare edecek fieldset tanımını çağırmak için config.xml kullanmak quote_itemiçin order_item.

Tam açıklama: Aşağıdaki içerik Atwix'e aittir. Cevabın altındaki bağlantı.

İlk başta, sales->quote->item->product_attributesdüğüme özel öznitelik eklemelisiniz :

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

Bu, bir sonraki adımımız olan üründen alıntı ürününe kopyalayacağımız için niteliği erişilebilir kılar. Bu görev için gözlemci kullanılır ve etkinlik çağrılır 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>

Gözlemci:

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

O - hakkında biz bakım gereken son şey dönüştürme gelen niteliğini quote_itemiçin order_item. Ve bu XML ile yapılabilir:

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

Kaynak: Atwix (kim kazanır): http://www.atwix.com/magento/custom-product-attribute-quote-order-item/


2
+1. Kendimi + 1'ledim gibi hissediyorum. Veeryery benzer bir şey göndermek üzereyken, bir mesaj belirdi: 'Bu sorunun yeni bir cevabı var'. yani +1 hızlı yazdığınız için :)
Marius

Hahaha - bu gerçekten Atwix.
Philwinkle

@ philwinkle, Yukarıdakiler iyi çalışıyor, ancak özel niteliklerinizin adete bağlı ürün puanları olduğunu varsayalım. Eğer A eşyası 50 puan ve 2 adet ise, toplam puan 50 * 2 = 100 olmalıdır. Alıntı öğesinin 100yerine değeri nasıl ayarlarım 50? Öznitelik değeri güncellenirse, bu güncellenen değeri nasıl
kaydederim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.