Escludere il prodotto associato del prodotto configurabile dalla regola del prezzo di catalogo


8

Sto cercando di escludere il semplice prodotto associato del prodotto configurabile dalla regola del prezzo di catalogo. Il motivo alla base di tutto ciò che ho già aggiunto -prezzo nella sezione di configurazione degli attributi super e non voglio più offrire sconti a questo particolare prodotto .

Ho cercato di escludere il prodotto da salvare nella catalogrule_producttabella, ma ho scoperto che questa tabella non salva il prodotto associato, salva l'ID prodotto configurabile e calcola il prezzo utilizzandolo.

Inoltre ho provato a risolvere alcune condizioni in configurable.php ma non ho ancora fortuna ..

Non voglio usare alcun modo sporco per farlo. Per favore, dimmi qual è il modo intelligente per farlo.


1
L'impostazione dell'opzione: "Abilita sconti su sottoprodotti" su "No" nella regola del catalogo> Azione aiuta?
Rakesh Shewale,

No, non funziona.
Jitendra,

Risposte:


2

Magento non lo supporta per impostazione predefinita. Invece, abbiamo ignorato Mage_SalesRule_Model_Validator e abbiamo creato una riscrittura delle regole di vendita. In questo controlliamo per vedere se il prodotto associato corrisponde alla regola di vendita.

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

È possibile utilizzare la sezione Attributi prodotti super per aumentare il prezzo predefinito di un prodotto associato. Il prezzo del prodotto associato continuerà ad apparire nel Pannello di amministrazione. Dal negozio, l'articolo avrà un valore zero a meno che non si inserisca un nuovo prezzo come importo fisso o come percentuale del prezzo predefinito del prodotto configurabile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.