Exclure le produit associé du produit configurable de la règle de prix catalogue

8

J'essaie d'exclure le produit simple associé de produit configurable de la règle de prix de catalogue.La raison derrière cela de faire tout ce que j'ai déjà ajouté -prix dans la section de configuration de super attribut et je ne veux plus accorder de remise à ce produit particulier .

J'ai essayé d'exclure le produit à enregistrer dans le catalogrule_producttableau, mais j'ai constaté que ce tableau ne sauvegardait pas le produit associé, il enregistrait l'ID de produit configurable et calculait le prix en l'utilisant.

J'ai aussi essayé de sortir une condition dans configurable.php mais pas de chance pour le moment ..

Je ne veux utiliser aucun moyen sale pour le faire. S'il vous plaît, dites-moi quelle est la façon intelligente de le faire ..

Jitendra
la source
1
La définition de l'option: "Activer les remises sur les sous-produits" sur "Non" dans la règle de catalogue> L'action est-elle utile?
Rakesh Shewale
Non, ça ne marche pas.
Jitendra

Réponses:

2

Magento ne prend pas en charge cela par défaut. Au lieu de cela, nous avons remplacé Mage_SalesRule_Model_Validator et créé une réécriture des règles de vente. En cela, nous vérifions si le produit associé correspond à la règle de vente.

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;
    }
Sarfaraz bheda
la source
1

Vous pouvez utiliser la section Attributs de super produits pour augmenter le prix par défaut d'un produit associé. Le prix du produit associé continuera à apparaître dans le panneau d'administration. Dans le magasin, l'article aura une valeur nulle, sauf si vous entrez un nouveau prix sous forme de montant fixe ou de pourcentage du prix par défaut du produit configurable.

Sourav
la source