Kecualikan produk rekanan produk yang dapat dikonfigurasi dari aturan harga katalog

8

Saya mencoba untuk mengecualikan produk sederhana terkait produk yang dapat dikonfigurasi dari aturan harga katalog. Alasan di balik melakukan semua ini yang telah saya tambahkan-harga di bagian konfigurasi atribut super dan saya tidak ingin memberikan diskon lagi untuk produk khusus ini .

Saya telah mencoba untuk mengecualikan produk untuk menyimpan dalam catalogrule_producttabel tetapi saya menemukan bahwa tabel ini tidak menyimpan produk terkait itu menghemat id produk yang dapat dikonfigurasi, dan menghitung harga menggunakannya.

Saya juga sudah mencoba beberapa kondisi di configurable.php tetapi belum berhasil ..

Saya tidak ingin menggunakan cara kotor untuk melakukan ini. Tolong beritahu saya apa cara cerdas untuk melakukan ini ..

Jitendra
sumber
1
Apakah mengatur opsi: "Aktifkan Diskon ke Subproduk" ke "Tidak" di aturan Katalog> Tindakan membantu?
Rakesh Shewale
Tidak, ini tidak bekerja.
Jitendra

Jawaban:

2

Magento tidak mendukung ini secara default. Sebagai gantinya, kami mengalahkan Mage_SalesRule_Model_Validator dan membuat penulisan ulang aturan penjualan. Dalam hal itu kami memeriksa untuk melihat apakah produk terkait cocok dengan aturan penjualan.

app / code / local / AAA / SalesRule / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <AAA_SalesRule>
            <version>0.1.0</version>
        </AAA_SalesRule>
    </modules>
    <global>
        <models>
            <aaa_salesrule>
                <class>AAA_SalesRule_Model</class>
            </aaa_salesrule>
            <salesrule>
                <rewrite>
                    <validator>AAA_SalesRule_Model_SalesRule_Validator</validator>
                </rewrite>
            </salesrule>
        </models>
    </global>
</config>

app / kode / lokal / AAA / SalesRule / Model / SalesRule / Validator.php

private function _hasChildInCart($product) {
        $quote = Mage::getSingleton('checkout/session')->getQuote();
        $childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);
        $childrenIds = $this->_getChildrenIds($childProducts);

        foreach ($quote->getAllItems() as $item) {
            if (in_array($item->getProductId(), $childrenIds)) {
                $registeredItem = Mage::registry('rule_config_product_' . $product->getId());
                if ($registeredItem != null && $registeredItem->getId() != $item->getId()) {
                    Mage::unregister('rule_config_product_' . $product->getId());
                }
                if ($registeredItem == null) {
                    Mage::register('rule_config_product_' . $product->getId(), $item);
                }
                return true;
            }
        }
        return false;
    }

    private function _getChildrenIds($childProducts) {
        $childrenIds = array();
        foreach ($childProducts as $child) {
            $childrenIds[] = $child->getId();
        }

        return $childrenIds;
    }
Sarfaraz bheda
sumber
1

Anda dapat menggunakan bagian Atribut Produk Super untuk meningkatkan harga default produk terkait. Harga produk terkait akan terus muncul di panel Admin. Dari toko, item tersebut akan memiliki nilai nol kecuali Anda memasukkan harga baru sebagai jumlah tetap atau sebagai persentase dari harga default produk yang Dapat Dikonfigurasi.

Sourav
sumber