初始条件:
有关促销的更多信息:
适用于所有产品,所有群组均有效并已应用,适用'原始价格的百分比',启用子产品折扣 - >是的,停止进一步处理规则 - >否
预期结果:
50美元档案的产品价格: 80 $ (80%来自100 $)
实际结果:
50美元文件的产品价格: 90美元(最初50美元的80%,以及可下载文件的全价)。
结论:
促销不适用于可下载文件的额外价格。
问题(S):
答案 0 :(得分:1)
链接/可下载文件不是产品实体(因此它没有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;
}
}
我已经测试过它,并确认它按预期工作:)
尝试一下,让我知道你的想法:)
如果您将使用购物车价格规则,还有另一种方法可以实现这一点,我将在稍后发布。
答案 1 :(得分:-1)
Magento,目录和购物车价格规则中有两种类型的定价规则。产品目录规则在产品添加到购物车之前制定,而购物车价格规则在购物车中应用。
您应将此促销设置为购物车价格规则。