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%)
- 这是可下载文件的理想行为吗?还是这是一只虫子
- 关于如何修改代码(最终创建模块)以使其按预期工作,有什么提示吗?(仅仅是提示,即扩展什么)
您应该将此促销设置为购物车价格规则链接/可下载文件,而不是其产品实体(因此它没有价格索引表,也不被视为产品) 在产品中应用促销有两种方法
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;
}
}