Magento-don';不适用于可下载文件的价格

Magento-don';不适用于可下载文件的价格,magento,magento-1.7,Magento,Magento 1.7,初始条件: 已安装Magento 1.7(尚未尝试使用以前的版本) 一个(可下载)产品具有多个可下载文件,价格添加到默认产品中(假设产品价格50$+2个可下载文件,一个免费,另一个额外50$) 适用于所有产品的新促销(目录价格规则)(比如-20%) 有关促销的更多信息: 适用于所有产品、所有组,处于活动状态并已应用,应用“按原价百分比”,对子产品启用折扣->是,停止进一步处理规则->否 预期结果: 带有50$文件的产品价格:80$(100$起80%) 实际结果: 带有50$文件的产品价格:9

初始条件:

  • 已安装Magento 1.7(尚未尝试使用以前的版本)
  • 一个(可下载)产品具有多个可下载文件,价格添加到默认产品中(假设产品价格50$+2个可下载文件,一个免费,另一个额外50$
  • 适用于所有产品的新促销(目录价格规则)(比如-20%
有关促销的更多信息:

适用于所有产品、所有组,处于活动状态并已应用,应用“按原价百分比”,对子产品启用折扣->是,停止进一步处理规则->否

预期结果:

带有50$文件的产品价格:80$(100$起80%)

实际结果:

带有50$文件的产品价格:90$(初始50$的80%,可下载文件的完整价格)

结论:

此促销不适用于可下载文件的额外价格

问题:

  • 这是可下载文件的理想行为吗?还是这是一只虫子
  • 关于如何修改代码(最终创建模块)以使其按预期工作,有什么提示吗?(仅仅是提示,即扩展什么)

Magento中有两种价格规则,目录和购物车价格规则。目录规则是在产品添加到购物车之前对其制定的,而购物车价格规则则应用于购物车


您应该将此促销设置为购物车价格规则

链接/可下载文件,而不是其产品实体(因此它没有价格索引表,也不被视为产品)

在产品中应用促销有两种方法

  • 目录价格规则

  • 购物车价格规则

  • 正如您的问题所述,您使用了目录价格规则,我已使用目录价格规则解决了您的问题

    创建模块并重写模型

    Mage_Downloadable_Model_Product_Type
    
    ======

    <global>
        <models>
            <downloadable>
                <rewrite>
                    <product_type>Web_Eproduct_Model_Downloadable_Product_Type</product_type>
                </rewrite>
            </downloadable>
        </models>
    </global>
    
    我已经测试了它,并确认其工作符合您的预期:)

    试试看,让我知道你的想法:)


    如果您使用购物车价格规则,还有另一种方法可以实现这一点,我将稍后发布。

    虽然这是事实,但它并不能真正回答我的问题。在我的特殊情况下,我不得不使用“每种产品”规则。这是唯一的规则,我会尽快给你回复:)谢谢!如果可以的话,我会给你奖金(似乎23小时后,因为原来的奖金过期了)。还有一件事,你知道这是一个bug吗,或者这是预期的功能吗?我认为它作为链接产品设计的预期功能不同于目录产品。很高兴这个解决方案对你有效:)我稍后会发布其他购物车规则
    class Namespace_Modulename_Model_Downloadable_Product_Type extends Mage_Downloadable_Model_Product_Type {
        public function getLinks($product = null)
        {
            $product = $this->getProduct($product);
            $wId = Mage::app()->getWebsite()->getId();
            $gId = Mage::getSingleton('customer/session')->getCustomerGroupId();
            $catalogRules = Mage::getSingleton('catalogrule/resource_rule')->getRulesFromProduct('',$wId,$gId,$product->getId());
    
            /* @var Mage_Catalog_Model_Product $product */
            if (is_null($product->getDownloadableLinks())) {
                $_linkCollection = Mage::getModel('downloadable/link')->getCollection()
                    ->addProductToFilter($product->getId())
                    ->addTitleToResult($product->getStoreId())
                    ->addPriceToResult($product->getStore()->getWebsiteId());
                $linksCollectionById = array();
                foreach ($_linkCollection as $link) {
                    /* @var Mage_Downloadable_Model_Link $link */
    
                    $link->setProduct($product);
    
                    $link->setPrice($this->calcLinkPrice($catalogRules,$link->getPrice()));
                    $linksCollectionById[$link->getId()] = $link;
                }
                $product->setDownloadableLinks($linksCollectionById);
            }
            return $product->getDownloadableLinks();
        }
        public function calcLinkPrice(array $rules = array(),$productPrice = 0 )
        {
            foreach($rules as $ruleData)
            {
                $productPrice = Mage::helper('catalogrule')->calcPriceRule(
                    $ruleData['action_operator'],
                    $ruleData['action_amount'],
                    $productPrice);
            }
            return $productPrice;
        }
    }