Navigation

    Odoo 中文社区

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    • Users
    • Groups

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

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

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

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

    如何修改原class里的方法

    Odoo 开发与实施交流
    2
    4
    2508
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      llcai0598 last edited by

      按照Odoo的风格,理论上:
      Class A中的方法可以由继承A的ClassB中被修改  ?

      问题如下:

      在stock.py中的:

      [quote]
      class stock_picking(models.Model):
          _name = "stock.picking"
          _inherit = ['mail.thread']
          _description = "Transfer"
          _order = "priority desc, date asc, id desc"

          def _set_min_date(.....
      [/quote]

      有

      [quote]


          def create_lots_for_picking(self, cr, uid, ids, context=None):
              lot_obj = self.pool['stock.production.lot']
              opslot_obj = self.pool['stock.pack.operation.lot']
              to_unlink = []
              for picking in self.browse(cr, uid, ids, context=context):
                  for ops in picking.pack_operation_ids:
                      for opslot in ops.pack_lot_ids:
                          if not opslot.lot_id:
                              print '=============not find stock.production.lot, create lot:',opslot.lot_name,ops.product_id.id,opslot.lot_weight
                              lot_id = lot_obj.create(cr, uid, {'name': opslot.lot_name, 'product_id': ops.product_id.id}, context=context)
                           
                              opslot_obj.write(cr, uid, [opslot.id], {'lot_id':lot_id}, context=context)
                      #Unlink pack operations where qty = 0
                      to_unlink += [x.id for x in ops.pack_lot_ids if x.qty == 0.0]
              opslot_obj.unlink(cr, uid, to_unlink, context=context)

      [/quote]

      现在需要修改这个方法,新建模块后:

      [quote]

      class dy_stock_picking(models.Model):
          inherit = 'stock.picking'

          def create_lots_for_picking(self, cr, uid, ids, context=None):
              print 'dy.stock.picking==============='
              lot_obj = self.pool['stock.production.lot']
              opslot_obj = self.pool['stock.pack.operation.lot']
              to_unlink = []
              for picking in self.browse(cr, uid, ids, context=context):
                  for ops in picking.pack_operation_ids:
                      for opslot in ops.pack_lot_ids:
                          if not opslot.lot_id:
                              print 'dy.stock.picking=============not find stock.production.lot, create lot:',opslot.lot_name,ops.product_id.id
                              lot_id = lot_obj.create(cr, uid, {'name': opslot.lot_name, 'product_id': ops.product_id.id, 'lot_weight': opslot.lot_weight}, context=context)
                              opslot_obj.write(cr, uid, [opslot.id], {'lot_id':lot_id}, context=context)
                      #Unlink pack operations where qty = 0
                      to_unlink += [x.id for x in ops.pack_lot_ids if x.qty == 0.0]
              opslot_obj.unlink(cr, uid, to_unlink, context=context)

      [/quote]

      运行后发现,没有成功:
      [img [检测到链接无效,已移除] /img]
      还是调用了原来的方法
      什么原因?

      1 Reply Last reply Reply Quote 0
      • 天
        天津-随风 last edited by

        你把inherit = 'stock.picking' 修改成_inherit = 'stock.picking'试试

        1 Reply Last reply Reply Quote 0
        • L
          llcai0598 last edited by

          [quote author=青岛-随风 link=topic=17670.msg32443#msg32443 date=1468488224]
          你把inherit = 'stock.picking' 修改成_inherit = 'stock.picking'试试
          [/quote]


          你太对了,谢谢谢谢

          1 Reply Last reply Reply Quote 0
          • First post
            Last post