我们运营基于Magento的电子商务网站。它正在运行Magento Enterprise 1.10。
我们在英国 - 所以我们希望显示包含税(VAT)的所有价格。我们的商店设置了包含增值税的价格,Magento在结账时反算增值税。
该网站使用内置的企业奖励积分功能,并为客户每消费1英镑提供10点积分。
显示奖励积分(目前在目录和购物篮中使用“echo $ this-> getRewardPoints()”功能)显示包含税的奖励积分(因此£15 = 150积分),但在结账时,使用显示项目潜在点数的相同功能计算项目上的奖励积分减去税收(因此15英镑= 120点)。
下订单时,奖励积分将添加到客户帐户减去税金。这显然让用户感到困惑。
作为一项临时措施,我已停止在
上显示错误的积分金额我们期待:
a)让Magento始终显示包含增值税的积分 - 并在下订单时添加正确的积分数(并保留积分 - 磅比) b)让Magento始终显示并添加不包括增值税的积分 - 因此我们会将点数 - 磅比率提高以补偿。
非常感谢任何帮助或指示。
答案 0 :(得分:2)
我有一个客户也需要这个,所以我写了一个自定义模块,它覆盖了仅在税前计算奖励的功能,以便它也可以计算价格+税。我刚刚在奖励配置区域添加了一个新选项,以允许计算包括是或否税。
不想完成描述如何创建自定义模块的过程(有足够的资源),但执行计算的实际函数在此文件中: 代码/核心/企业/回报/模型/动作/ OrderExtra.php
如果你想快速而又脏,请找到getPoints函数并将$ monetaryAmount计算更改为(如果有$ quote):
$monetaryAmount = $quote->getBaseGrandTotal() - $address->getBaseShippingAmount();
和(如果没有$ quote)
$monetaryAmount = $this->getEntity()->getBaseTotalPaid() - $this->getEntity()->getBaseShippingAmount();
希望有所帮助!
编辑:getPoints函数的实际代码应如下所示:
if ($this->_quote) {
$quote = $this->_quote;
// known issue: no support for multishipping quote
$address = $quote->getIsVirtual() ? $quote->getBillingAddress() : $quote->getShippingAddress();
// use only money customer spend - shipping & tax
$monetaryAmount = $quote->getBaseGrandTotal() - $address->getBaseShippingAmount();
// *****CALCULATE POINTS INCLUDING TAX
$monetaryAmount -= $address->getBaseTaxAmount();
// set points to 0 if calcualtion is negative
$monetaryAmount = $monetaryAmount < 0 ? 0 : $monetaryAmount;
} else {
// use only money customer spend - shipping
$monetaryAmount = $this->getEntity()->getBaseTotalPaid() - $this->getEntity()->getBaseShippingAmount();
// *****CALCULATE POINTS INCLUDING TAX
$monetaryAmount -= $this->getEntity()->getBaseTaxAmount();
}
答案 1 :(得分:1)
遇到同样的问题,然而发现更简单地删除运费税。
$monetaryAmount = $quote->getBaseGrandTotal()
- $address->getBaseShippingAmount()
- $address->getBaseShippingTaxAmount();
并更改为else函数。完美运作
$monetaryAmount = $this->getEntity()->getBaseTotalPaid()
- $this->getEntity()->getBaseShippingAmount()
- $this->getEntity()->getBaseShippingTaxAmount();