Loại trừ sản phẩm liên kết của sản phẩm có thể cấu hình khỏi quy tắc giá danh mục


8

Tôi đang cố gắng loại trừ sản phẩm đơn giản có liên quan của sản phẩm có thể định cấu hình khỏi quy tắc giá của danh mục. Lý do đằng sau để làm tất cả những gì tôi đã thêm -price trong phần cấu hình siêu thuộc tính và tôi không muốn giảm giá nữa cho sản phẩm cụ thể này .

Tôi đã cố gắng loại trừ sản phẩm để lưu trong catalogrule_productbảng nhưng tôi thấy rằng bảng này không lưu sản phẩm được liên kết, nó lưu id sản phẩm có thể định cấu hình và tính giá sử dụng.

Ngoài ra tôi đã cố gắng đưa ra một số điều kiện trong configureable.php nhưng không có may mắn nào ..

Tôi không muốn sử dụng bất kỳ cách bẩn thỉu nào để làm điều này. Xin vui lòng cho tôi biết cách thông minh để làm điều này là gì ..


1
Việc đặt tùy chọn: "Kích hoạt chiết khấu cho các sản phẩm phụ" thành "Không" trong quy tắc Danh mục> Hành động có giúp ích không?
Rakesh Shewale

Không, nó không hoạt động.
Jitendra

Câu trả lời:


2

Magento không hỗ trợ điều này theo mặc định. Thay vào đó, chúng tôi đã vượt qua Mage_SalesRule_Model_Validator và tạo ra một bản viết lại doanh số. Trong đó chúng tôi kiểm tra xem sản phẩm được liên kết có phù hợp với quy tắc bán hàng hay không.

ứng dụng / mã / cục bộ / 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>

ứng dụng / mã / cục bộ / 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

Bạn có thể sử dụng phần Thuộc tính siêu sản phẩm để tăng giá mặc định của sản phẩm được liên kết. Giá của sản phẩm được liên kết sẽ tiếp tục xuất hiện trong bảng Quản trị. Từ cửa hàng, mặt hàng sẽ có giá trị bằng 0 trừ khi bạn nhập giá mới dưới dạng số tiền cố định hoặc theo tỷ lệ phần trăm của giá mặc định của sản phẩm Có thể định cấu hình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.