Excluir el producto asociado del producto configurable de la regla de precios del catálogo

8

Estoy tratando de excluir el producto simple asociado del producto configurable de la regla del precio del catálogo. La razón detrás de esto es todo lo que ya he agregado -precio en la sección de configuración de súper atributo y no quiero dar más descuento a este producto en particular .

Intenté excluir el producto para guardar en la catalogrule_producttabla, pero descubrí que esta tabla no guarda el producto asociado, guarda la identificación del producto configurable y calculo el precio al usarla.

También he tratado de encontrar alguna condición en configurable.php pero aún no tuve suerte.

No quiero usar ninguna forma sucia de hacer esto. Por favor, dime cuál es la forma inteligente de hacer esto ...

Jitendra
fuente
1
¿Establece la opción: "Habilitar descuentos para subproductos" en "No" en la regla del catálogo> ¿Ayuda la acción?
Rakesh Shewale
No, no está funcionando.
Jitendra

Respuestas:

2

Magento no es compatible con esto por defecto. En su lugar, anulamos Mage_SalesRule_Model_Validator y creamos una reescritura de salesrule. En eso, verificamos si el producto asociado coincide con la regla de ventas.

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

Puede usar la sección Atributos de Súper Productos para aumentar el precio predeterminado de un producto asociado. El precio del producto asociado seguirá apareciendo en el panel de administración. Desde la tienda, el artículo tendrá un valor cero a menos que ingrese un nuevo precio como una cantidad fija o como un porcentaje del precio predeterminado del producto Configurable.

Sourav
fuente