跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. 在client上面实现自动计算总值的功能

在client上面实现自动计算总值的功能

已定时 已固定 已锁定 已移动 Odoo 新手求助
6 帖子 2 发布者 4.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • P 离线
    P 离线
    popkar77
    写于 最后由 编辑
    #1

    client上面有四个空格
    [attach]206[/attach]
    我想根据填入前面三个值自动计算出他的体积。
    看了openobject-developer 里面介绍On_change好像有相关的资料,但是看不明白他的使用方法?
    请问大家有其他的实现方法吗?
    谢谢:)

    1 条回复 最后回复
    0
    • O 离线
      O 离线
      oldrev
      写于 最后由 编辑
      #2

      放一个按钮来触发事件,参考 tiny_purchase 模块

      1 条回复 最后回复
      0
      • P 离线
        P 离线
        popkar77
        写于 最后由 编辑
        #3

        我看了这个模块里它里面有Puchase_order里面有个按钮就是Compute,他可以计算pruduct的总值。
        然后我就看addon里面找到了关于他的代码
        puchase.py[code]
        class purchase_order(osv.osv):
        def _calc_amount(self, cr, uid, ids, prop, unknow_none, unknow_dict):
        res = {}
        for order in self.browse(cr, uid, ids):
        res[order.id] = 0
        for oline in order.order_line:
        res[order.id] += oline.price_unit * oline.product_qty
        return res
        [/code]puchase_view.xml

        <button name="button_dummy" states="draft" string="Compute" type="object"/>
        

        但是并不明白他们到底参数是怎么传输,还有就是他们怎么关联呢?
        [code]def _calc_amount(self, cr, uid, ids, prop, unknow_none, unknow_dict):
        [/code]
        具体就是这里的cr,uid,ids,prop,unknow_none,unknow_dict是代表什么意思呢

        我在“openobject-developer.pdf”里面看到了有关于这个的“10.7.1 On Change”里面提到了context,但是看不明白是怎么使用的

        谢谢大家

        [[i] 本帖最后由 popkar77 于 2009-7-8 11:22 编辑 [/i]]

        1 条回复 最后回复
        0
        • O 离线
          O 离线
          oldrev
          写于 最后由 编辑
          #4

          我说的是 tiny_purchase 模块,不是 addon.purchase,tiny_purchase 要简单直观得多
          一切都是在服务器端计算的,button 只是触发一个状态刷新,类似于 Web 页面你按下了 F5[code]
          <field name="product_id" on_change="onchange_compute_price(product_id, quantity)"/>
          [/code]传入参数是由 view.xml 传入的,前几个参数是固定的:[code]
          def onchange_compute_price(self, cr, uid, ids, product_id, quantity):
          if not product_id:
          return {}
          price = self.pool.get('tiny_purchase.product').read(cr, uid, [product_id], ['price'])[0]['price']
          return {'value':{'price': price * quantity,}}

          [/code]

          1 条回复 最后回复
          0
          • P 离线
            P 离线
            popkar77
            写于 最后由 编辑
            #5

            根据tiny_purchase 做好了。
            原来on_change是马上就执行,果然不用button也可以。
            谢谢oldrev:lol

            1 条回复 最后回复
            0

            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 标签
            • 热门
            • 用户
            • 群组