Assoziiertes Produkt des konfigurierbaren Produkts von der Katalogpreisregel ausschließen


8

Ich versuche, das zugehörige einfache Produkt eines konfigurierbaren Produkts von der Katalogpreisregel auszuschließen. Der Grund dafür ist alles, was ich bereits hinzugefügt habe - Preis im Abschnitt zur Konfiguration von Superattributen, und ich möchte diesem bestimmten Produkt keinen Rabatt mehr gewähren .

Ich habe versucht, das Produkt auszuschließen, um es in der catalogrule_productTabelle zu speichern, aber ich habe festgestellt, dass diese Tabelle das zugehörige Produkt nicht speichert, sondern die konfigurierbare Produkt-ID speichert und den Preis damit berechnet.

Auch ich habe versucht, einige Bedingungen in configure.php herauszufinden, aber noch kein Glück ..

Ich möchte keinen schmutzigen Weg benutzen, um dies zu tun. Bitte sagen Sie mir, was der kluge Weg ist, dies zu tun.


1
Hilft es, die Option "Rabatte für Unterprodukte aktivieren" in "Katalogregel> Aktion" auf "Nein" zu setzen?
Rakesh Shewale

Nein, es funktioniert nicht.
Jitendra

Antworten:


2

Magento unterstützt dies standardmäßig nicht. Stattdessen haben wir Mage_SalesRule_Model_Validator überschrieben und eine Umschreibung der Verkaufsregel erstellt. Dabei prüfen wir, ob das zugehörige Produkt der Verkaufsregel entspricht.

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 / code / local / 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;
    }

1

Sie können den Abschnitt Superproduktattribute verwenden, um den Standardpreis eines zugeordneten Produkts zu erhöhen. Der Preis des zugehörigen Produkts wird weiterhin im Admin-Bereich angezeigt. Im Geschäft hat der Artikel den Wert Null, es sei denn, Sie geben einen neuen Preis entweder als festen Betrag oder als Prozentsatz des Standardpreises des konfigurierbaren Produkts ein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.