0
votes

I am working on this Odoo assignment. I have to make a custom module in which the requirement is like this.

There is a form say "Notebook" it contains a field that comes from 'hr.employee' i.e. Many2one. Next thing this form will contain is a table which 3 columns (Quality, Score, Comment). Now Qualities must be a master table which contains many qualities name.

I have achieved this task in the way SalesOrder form works i.e. for a particular sales order there are multiple sales lines.

But I want all the qualities to be there on form with default score value of 0.

Here is the code

Please tell me the resolution

class qualities_fields(models.Model):

    _name = "ayda.qualities.fields"    
    _description = "Contains only Attributes"        
    @api.multi    
    def name_get(self):

        data = []        
        for rows in self:

            value = ''            
            value += rows.quality_name            
            data.append((rows.id, value))        
        return data        

    quality_name = fields.Char(string="Quality Name")

class qualities_data(models.Model):

    _name = "qualities.data"    
    _description = "All points mandatory to be filled"    
    quality_id = fields.Many2one('notebook', string="Quality IDs")    
    quality_name = fields.Many2one('qualities.fields', string="Quality Name")    
    score = fields.Integer(string="Score")    
    comment = fields.Char(string="Comment")

class notebook(models.Model):

    _name = "notebook"    
    _description = "Checking one2many of qualities"
    def createRecords(self):

        cr = self.pool.cursor()        
        quantity_fields = self.pool.get('qualities.fields').search(cr, self.env.uid, [])        
        quantity_lines = []        
        for field in quantity_fields:

            quality_data = {                        
                           'quality_id' : self.id,                        
                           'quality_name' : field.id,
                           'score' : 0,
                           'comment' : ''                    
                           } 
            quantity_lines.append(quality_data)        
        return quantity_lines
     name = fields.Many2one('hr.employee', string="Name")    
     qualities_line = fields.One2many('qualities.data', 'quality_id', string="Qualities Line", default=createRecords)
1

1 Answers

0
votes

There's an easier way to do this, on the field definition just set the default score to 0

score = fields.Integer(string="Score", default=0)

That way all scores would be zero when they're created