Magento - 发票中的小数点/ be

时间:2010-08-24 15:09:59

标签: php magento decimal-point

我的商店最多需要4个小数点。到目前为止,我采取了一些措施,他们在前面工作得很好。后端产品。仅在销售/发票价格中,税金和总计仍然四舍五入到小数点后两位。

我编辑/覆盖了以下文件:

\应用\代码\本地\法师\ Adminhtml \块\目录\产品\编辑\标签\选项\ Option.php
在第283行的某处,我在return number_format($value, 2, null, '');

中更改了return number_format($value, 4, null, '');

\应用\代码\本地\法师\ Adminhtml \块\目录\产品\助手\表格\ Price.php
与Option.php相同

\应用\代码\本地\法师\核心\型号\ Store.php
将函数roundPrice()第740行的输出更改为return round($price, 4);

\应用\代码\本地\法师\目录\模型\ Currency.php
函数format()在第197行中将formatPrecision从2更改为4。

\ lib中\ Zend的\ Currency.php
$_options['precision']从2更改为4

\应用\设计\ adminhtml \默认\默认\模板\目录\产品\编辑\价格\ tier.phtml
echo sprintf('%.2f', $_item['price']);已更改为sprintf('%.4f', $_item['price'])

我调查了一些核心文件,比如invoice.php或adminhtml文件,如果有舍入的话。但我找不到任何有用的东西。

使用的扩展名:( Magento 1.4.1.0)
Asperience_DeleteAllOrders
Flagbit_ChangeAttributeSet
Mxperts_Invoice
de_DE语言包

谢谢,greetz Rito

magento round issue

(图片中的德语对不起)

3 个答案:

答案 0 :(得分:1)

我的第一个建议是打开前端和后端提示(System>Config>Advanced>Developer),这样你就可以看到哪个块和哪个phtml视图负责呈现2位小数的内容。如果您安装Developer Toolbar extension,您会发现更容易。

查看您的屏幕截图,我认为它来自管理员销售订单视图,因此app/design/adminhtml/default/default/template/sales/order/create/totals下的phtml文件和Blocks = Mage_Adminhtml_Block_Sales_Order_Create_Totals_Default是一个值得关注的好地方。 formatPrice函数似乎使用了已覆盖的Store.php和一些Currency文件。

我怀疑@ greg0ire是正确的,这个将采取一些远程调试来追踪。您的$options['precision']可能会被某处覆盖,因此您需要在执行时查看它的值。

祝你好运, JD

P.S。我假设您已清除并禁用缓存...请注意,在System>Cache Management GUI中清除了的adminhtml缓存,您必须手动删除var/cache中的文件。

答案 1 :(得分:0)

“总计”是一个很好的暗示,对乔纳森日来说是

以下是四位小数点的销售/发票解决方案。

\应用\代码\本地\法师\ Adminhtml \块\ SALES \项目\ Abstract.php
更改以下代码:
第292行:function displayPrices()更改为return $this->displayRoundedPrices($basePrice, $price, 4, $strong, $separator);
第305行:$precision=2$precision

\应用\代码\本地\法师\ SALES \模型\ Order.php 1358行:

public function formatPrice($price, $addBrackets = false)
    {
        return $this->formatPricePrecision($price, 4, $addBrackets);
    }

我知道它很脏,但效果很好:)。

答案 2 :(得分:0)

在magento 1.5.1中找到了一种不同的简单方法

得到代码/ core / Mage / Directory / Model / Currency.php

更改行号194.

公共函数格式($ price,$ options = array(),$ includeContainer = true,$ addBrackets = false)      {         返回$ this-> formatPrecision($ price,0,$ options,$ includeContainer,$ addBrackets);      }

0 - 表示价格的精确点。