Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

Openerp中的小数精度问题



  •     我需要变单价的精度。我到product.product表中偷看标价的定义:<br />[code]'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."),[/code]<br />对get_Precision的参数:Product Price莫名其妙。于是在开发群中得到joshua,shelly,ccdos,冰之星辰,东莞周等前辈的建议,发现oe单独开了一个模块来控制小数的精度:decimal_precision模块。在该模块中的py文件中,我找到了函数get_precision的定义:<br />[code]<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[/code]<br />也明白了为什么默认精度是2位:(有源码就是幸福)<br />[code]_defaults = {<br />        'digits': 2,<br />    }[/code]<br /><br />另外:用户界面的操作是:设置-数据库-小数精度<br /><br />ps.每一个在群里得到自己问题答案的人,都有义务发相关帖,以帮助更多人。



  •     我需要变单价的精度。我到product.product表中偷看标价的定义:<br />[code]'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."),[/code]<br />对get_Precision的参数:Product Price莫名其妙。于是在开发群中得到joshua,shelly,ccdos,冰之星辰,东莞周等前辈的建议,发现oe单独开了一个模块来控制小数的精度:decimal_precision模块。在该模块中的py文件中,我找到了函数get_precision的定义:<br />[code]<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[/code]<br />也明白了为什么默认精度是2位:(有源码就是幸福)<br />[code]_defaults = {<br />        'digits': 2,<br />    }[/code]<br /><br />另外:用户界面的操作是:设置-数据库-小数精度<br /><br />ps.每一个在群里得到自己问题答案的人,都有义务发相关帖,以帮助更多人。



  • 这里的name叫application,真是贪大啊<br /><br />谢谢分享



  • 谢谢分享



  • 为什么我的用户界面设置进去没有数据库选项的



  • 设置-会计-凭证簿分录小数精度<br />倒是可以调整,但似乎不影响单价。单价还是两位。<br /><br />求前辈解惑!谢谢。



  • [quote author=xuzan link=topic=11922.msg29115#msg29115 date=1412897574]<br />为什么我的用户界面设置进去没有数据库选项的<br />[/quote]<br /><br />需要打开用户的“技术特性”设置。<br />[url=https://www.odoo.com/forum/help-1/question/how-to-change-products-cost-decimal-precision-1299]https://www.odoo.com/forum/help-1/question/how-to-change-products-cost-decimal-precision-1299[/url]


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待