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

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

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

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

OpenERP对象定义详解(连载中...)


  • 管理员

    关于field.function我有其他问题,例如<br />sale这个模块里面的<br />[code]<br />'amount_untaxed': fields.function(_amount_all, method=True, digits=(16, int(config['price_accuracy'])), string='Untaxed Amount',<br />            store = {<br />                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),<br />                'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),<br />            },<br />            multi='sums'),<br />[/code]<br />_get_order<br />[code]<br />    def _get_order(self, cr, uid, ids, context={}):<br />        result = {}<br />        for line in self.pool.get('sale.order.line').browse(cr, uid, ids, context=context):<br />            result[line.order_id.id] = True<br />        return result.keys()<br />[/code]<br />问题来了上面的代码是在sale.order里面的,他是根据sale.order.line的变化。而触发调不调用 _amount_all。但是_get_oeder里面的ids究竟是从何而来呢?是自动对应这个sale.order的sale.order.line吗?这里的_amount_all是任意一个sale.order.line变化就会触发,还是某个sale.order的sale.order.line变化才促发呢?



  • > 问题来了上面的代码是在sale.order里面的,他是根据sale.order.line的变化。而触发调不调用 _amount_all。但是_get_oeder里面的ids究竟是从何而来呢?是自动对应这个sale.order的sale.order.line 吗?这里的_amount_all是任意一个sale.order.line变化就会触发,还是某个sale.order的 sale.order.line变化才促发呢?<br /><br />这个问题太深入了,俺没深入调查源代码,只是凭经验回答。_get_order里面的ids从界面上来,是界面上当前Order的order.line的ids。因此,当前界面上的sale.order的任意一个 sale.order.line的变化,将会触发_amount_all的调用。



  • sale.order.line有个比较讨厌的地方就是,他有单独的menu。这样用户可能不在订单header界面进去而是直接修改订单行。<br /><br />估计这个store参数就是为了解决这个问题的



  • 写的真好~~



  • 原来楼主就是老肖



  • mark



  • 很好,mark



  • 很好,mark



  • 请问,text 可以显示长度吗??



  • 学习了


登录后回复
 

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