我有Paypal和Magento的1.7.0.2部分四舍五入问题 - 网站上的所有价格包括税和所得税为20%(增值税)制定。
我会去收银台,一切都是正确的:
然后我会点击下订单,并支付宝将是这样的,这是不正确,因为现在总计为1P少。 这似乎是由税收是如何四舍五入是原因。
在某些情况下,它工作正常,但在其他的税是不正确四舍五入。 我试图使在应用程序/代码/核心/法师/税/型号/ Calculation.php税务计算方法calcTaxAmount变化()
我说这这似乎解决它calcTaxAmount方法,但它造成的产品页面上的价格则是不正确的(1P以下)。
$amount = $this->roundUp($amount);
我敢肯定这是一个错误,但我的想法。 如果有人遇到在此之前,有一个解决方案,我很高兴听到这个消息。 任何帮助非常赞赏。
编辑:这是我的Magento的税收设置
Answer 1:
我想我已经找到了解决这个问题困扰着社会。
如果你的价格包括税收,税收的计算是错误。
这里的修复 - 在Mage_Tax_Model_Calculation :: calcTaxAmount():
更改条件:
if ($priceIncludeTax)...
至:
if ( ! $priceIncludeTax ) ...
所以,条件是这样的:
if ( ! $priceIncludeTax ) {
$amount = $price*(1-1/(1+$taxRate));
} else {
$amount = $price*$taxRate;
}
有关详细信息,请参阅我的意见: http://www.magentocommerce.com/boards/viewthread/247201/P45/
切记不要修改核心文件 - 在本地创建一个副本
Answer 2:
我的“固定”这个今天我的客户,但与解决方案不是真正的快乐。 但是,它的工作原理。
这是更好,如果你把这个文件拷贝到本地文件夹:应用程序/代码/核心/法师/贝宝/型号/原料药/ Nvp.php
我上线606添加了这个代码(仅适用于快速结账),所以它看起来是这样。
$request['SHIPPINGAMT'] = ($request['AMT'] - ($request['TAXAMT'] + $request['ITEMAMT']));
$response = $this->call(self::SET_EXPRESS_CHECKOUT, $request);
$this->_importFromResponse($this->_setExpressCheckoutResponse, $response);
而你需要在贝宝MOULE在后端转弯输送车线项目
如果有人知道一个更好的解决方案则正好覆盖shippingcost让我知道
Answer 3:
这个问题一直困扰着我(和它看起来的年龄Magento的社区),这要归功于ShopWorks推在正确的方向(包括他的代码片断,感谢队友!但是它会错误了,如果要回从快递车。结账时,$请求参数中添加了检查,以防止这种情况),我想出了以下修补程序(/劈):
在线Nvp.php 606将以下:
$totalValue = $request['TAXAMT'] + $request['ITEMAMT'];
$finalValue = $totalValue - $request['AMT'];
if($request['SHIPPINGAMT'] > 0) {
$request['SHIPPINGAMT'] = ($request['AMT'] - ($request['TAXAMT'] + $request['ITEMAMT']));
$totalValue = $request['TAXAMT'] + $request['ITEMAMT'] + $request['SHIPPINGAMT'];
$finalValue = $totalValue - $request['AMT'];
}
if($request['AMT'] != $totalValue) {
if($totalValue > $request['AMT']) {
$request['TAXAMT'] = $request['TAXAMT'] - $finalValue;
} elseif($totalValue < $request['AMT']) {
$request['TAXAMT'] = $request['TAXAMT'] + $finalValue;
} else {
$request['AMT'] = $request['TAXAMT'] + $request['ITEMAMT'];
}
}
此外,以下需要被也被放置在()函数调用(Nvp.php的线938)内:
$totalValue = $request['TAXAMT'] + $request['ITEMAMT'] + $request['SHIPPINGAMT'];
$finalValue = $totalValue - $request['AMT'];
if($request['AMT'] != $totalValue) {
if($totalValue > $request['AMT']) {
if($finalValue > 0) {
// its preferable that we change the tax amount over the grand total amount
$request['TAXAMT'] = $request['TAXAMT'] - $finalValue;
} else {
$request['AMT'] = $totalValue;
}
} elseif($totalValue < $request['AMT']) {
if($finalValue > 0) {
// its preferable that we change the tax amount over the grand total amount
$request['TAXAMT'] = $request['TAXAMT'] + $finalValue;
} else {
$request['AMT'] = $totalValue;
}
} else {
$request['AMT'] = $totalValue;
}
}
这是一个黑客,并把它当作这样的。 目前我的同事正在测试,但似乎暂时是好的,但也有利于通过价格来设定税的计算方法(我们的会计师是否喜欢这个安排,但是这是英国,我不知道,如果其他国家将在特定的税额计算方法皱眉)。
我操纵$请求[“AMT”]的原因是因为$最终值变量的偶尔的计算会产生-0.9999重复整数这是没有用的人,我的数学很烂所以如果有人想在这个改进,请这样做!
一如往常不覆盖在核心目录nvp.php,创建一个单独的重写模块或在app /本地/法师做到这一点。 第一种选择最好! :-)
Answer 4:
有一个“错误”在PayPal在Magento模块(至少在我的Magento 1.8.0); 它驻留在Mage_Paypal_Model_Cart
类。
为了验证该数额是正确的,方法_validate()
上线381概括了所有项目的价格从订单,加上运费和税,并将结果与订单的总价值进行比较(从订单方法得到getBaseGrandTotal()
)
但有时候,有量之间的差异0.009999999999999999(它必须来自不同的圆整方法,我不知道); 这样的项目是不是有效的,并且该方法getItems()
从管线146点返回false。
在我的情况下,这导致客户支付他们的订单不同数量和“欺诈嫌疑”标志。
我固定它通过改变从比较方法(线404):
if (sprintf('%.4F', $sum) == sprintf('%.4F', $referenceAmount)) {
$this->_areItemsValid = true;
}
至
$diff = abs(sprintf('%.4F', $sum) - sprintf('%.4F', $referenceAmount));
if ($diff < 0.01) {
$this->_areItemsValid = true;
}
我还是希望不会有超过0.009999999在未来的diff ...
希望这可以帮助。
Answer 5:
我使用CE1.7.0.2并一直停留在这个问题上天,尝试了几种解决方案,并最终降落在亚当·霍尔的修复/黑客。 理想看起来合理的我,所以我将其运用在我的网站,一切都很顺利,直到今天早上,我意识到,对税额进行调整,不会对我们的情况下工作。
我们在加利福尼亚州和卖东西都在美国,在加利福尼亚州的客户将被收取销售税,而其他外部环境不会。 所以,当税额为零,必须减去的差异,就会产生这显然将贝宝拒绝负税额。 因此,从纳税额减去差的时候,我增加了一个条件语句
if ($request['TAXAMT'] > 0) {
$request['TAXAMT'] = $request['TAXAMT'] - $finalValue;
} else {
$request['SHIPPINGAMT'] = $request['SHIPPINGAMT'] - $finalValue;
}
如果税额为零,我会调整发货量,而不是税额。 (当然,如果税收和运费都是免费的,这是不行的,但我不认为这会在实际业务发生的。)希望这能帮助那些谁具有相同的问题,因为我们的。
Answer 6:
我只是改变了运送车线项目“NO”,而上面的代码改变..和它的工作。
Magento的1.9.0.1
仅供参考 - 测试它是否适合你。
德米特罗
文章来源: Magento & Paypal tax rounding issue