Openerp中的小数精度问题
-
我需要变单价的精度。我到product.product表中偷看标价的定义:
'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Product Price'), help="Base price to compute the customer price. Sometimes called the catalog price."),
对get_Precision的参数:Product Price莫名其妙。于是在开发群中得到joshua,shelly,ccdos,冰之星辰,东莞周等前辈的建议,发现oe单独开了一个模块来控制小数的精度:decimal_precision模块。在该模块中的py文件中,我找到了函数get_precision的定义:<br /> def precision_get(self, cr, uid, application):<br /> cr.execute('select digits from decimal_precision where name=%s', (application,))<br /> res = cr.fetchone()<br /> return res[0] if res else 2<br /><br />def get_precision(application):<br /> def change_digit(cr):<br /> res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, application)<br /> return (16, res)<br /> return change_digit
也明白了为什么默认精度是2位:(有源码就是幸福)_defaults = {<br /> 'digits': 2,<br /> }
另外:用户界面的操作是:设置-数据库-小数精度
ps.每一个在群里得到自己问题答案的人,都有义务发相关帖,以帮助更多人。 -
[quote author=xuzan link=topic=11922.msg29115#msg29115 date=1412897574]
为什么我的用户界面设置进去没有数据库选项的
[/quote]
需要打开用户的“技术特性”设置。
https://www.odoo.com/forum/help-1/question/how-to-change-products-cost-decimal-precision-1299