This question has been flagged
1642 Views

i'm using odoo 8 and i develop a custom module to add list of product that we use in my view (corrective maintenance). The problem is when i add the module it adds only the tree and it don't give me the right to select a product from the list of "product.product". Please help me to resolve my problem (i tried to add the same tree in other view and it works )

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>

Avatar
Discard