Как решить много полей дерева? - PullRequest
0 голосов
/ 11 марта 2019

Я использую odoo 8 и разрабатываю собственный модуль для добавления списка продуктов, которые мы используем на мой взгляд (корректирующее обслуживание). Проблема в том, что, когда я добавляю модуль, он добавляет только дерево и не дает мне права выбирать продукт из списка «product.product». Пожалуйста, помогите мне решить мою проблему

Ps: я пытался добавить то же дерево в другом представлении, и это работает, вот мой код

enter image description here

piece.py

  class Piece_defectueuse(osv.osv):
  _name = 'mro.order.parts.line'
  _description = 'Maintenance Planned Parts'
_columns = {
    'name': fields.char('Description', size=64),
    'parts_id': fields.many2one('product.product', 'Article', required=True),
    'parts_qty': fields.float('Quantité', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
    'parts_uom': fields.many2one('product.uom', 'Unit of Measure', required=True),
    'maintenance_id': fields.many2one('cmms.intervention', 'Maintenance Order', select=True),
    'maintenance_CM': fields.many2one('cmms.cm', 'Maintenance intervention', select=True),
}

_defaults = {
    'parts_qty': lambda *a: 1.0,
}

def onchange_parts(self, cr, uid, ids, parts_id):
    """
    onchange handler of parts_id.
    """
    parts = self.pool.get('product.product').browse(cr, uid, parts_id)
    return {'value': {'parts_uom': parts.uom_id.id}}

def unlink(self, cr, uid, ids, context=None):
    self.write(cr, uid, ids, {'maintenance_id': False})
    return True

def create(self, cr, uid, values, context=None):
    ids = self.search(cr, uid, [('maintenance_id','=',values['maintenance_id']),('parts_id','=',values['parts_id'])])
    if len(ids)>0:
        values['parts_qty'] = self.browse(cr, uid, ids[0]).parts_qty + values['parts_qty']
        self.write(cr, uid, ids[0], values, context=context)
        return ids[0]
    ids = self.search(cr, uid, [('maintenance_id','=',False)])
    if len(ids)>0:
        self.write(cr, uid, ids[0], values, context=context)
        return ids[0]
    return super(Piece_defectueuse, self).create(cr, uid, values, context=context)

CM.py

 class Cmms_CM(osv.osv):
_inherit = 'cmms.cm'
_columns = {
    'parts_lines': fields.one2many('mro.order.parts.line', 'maintenance_CM', 'Planned parts', readonly=True),
}

CM_view.xml

 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
 <data>
    <record id="cmms_cm_form_stock" model="ir.ui.view">
        <field name="name">cmms.cm.form.stock</field>
        <field name="model">cmms.cm</field>
        <field name="inherit_id" ref="cmms.view_cm_form"/>
        <field name="arch" type="xml">
            <separator string="Notes" position="before">

                             <group string="Piéces défectueuse">
                                    <field name="parts_lines" nolabel="1">
                                        <tree string="Planned Parts" editable="bottom">
                                            <field name="parts_id" on_change="onchange_parts(parts_id)"/>
                                            <field name="parts_qty"/>
                                            <field name="parts_uom" groups="product.group_uom"/>
                                            <field name="name"/>
                                        </tree>
                                    </field>
                                </group>



            </separator>

        </field>
    </record>
...