gpt4 book ai didi

Magento - 促销不适用于可下载文件的价格

转载 作者:行者123 更新时间:2023-12-01 06:35:00 27 4
gpt4 key购买 nike

初始条件:

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

  • 有关促销的更多信息:

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

    预期结果:

    带有 50 美元文件的产品价格: 80 美元 (80% 来自 100 美元)

    实际结果:

    带有 50 美元文件的产品价格: 90 美元 (最初 50 美元的 80%,以及可下载文件的全价)。

    结论:

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

    问题:
  • 这是可下载文件的期望行为吗?或者这是一个错误?
  • 关于如何修改代码(最终创建一个模块)以使其按预期工作的任何提示? (只是提示,即扩展什么)
  • 最佳答案

    链接/可下载文件不是产品实体(因此它没有 price_index 表并且不被视为产品)

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

  • 目录价格规则
  • 购物车价格规则

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

    创建模块并重写模型
    Mage_Downloadable_Model_Product_Type

    ======
    <global>
    <models>
    <downloadable>
    <rewrite>
    <product_type>Web_Eproduct_Model_Downloadable_Product_Type</product_type>
    </rewrite>
    </downloadable>
    </models>
    </global>

    和下面的代码即时计算每个链接的价格(即使您对同一产品应用了多个规则)
    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;
    }
    }

    我已经对其进行了测试并确认它可以按您的预期工作:)

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

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

    关于Magento - 促销不适用于可下载文件的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15921320/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com