Odoo Help


field are not saved and set its value back

on 4/24/16, 7:50 AM 1,880 views


I have problem a problem with this class

jobStates= [('active', 'Active')
            ('contract_end', 'End of Contract'),
                   ('fired', 'Fired'),
                   ('passed_away', 'Passed Away'),
 ('promoted', 'Promoted'),
 ('resigned', 'Resigned'),
 ('retired', 'Retired')]
class HrEmployeeJobHistory(models.Model):
    _name = 'hr.job.history'
    _description = 'Employee Job History'
    job_id = fields.Many2one('hr.job', string='Job', required=True)    
    employee_id = fields.Many2one('hr.employee', string='Employee', required=True)
    start_date = fields.Date('Start Date', required=True)
    end_date = fields.Date('End Date')
    state = fields.Selection(jobStates, 'Status', default='active', required=True)
    done = fields.Boolean('Done', default=False, compute='_compute_done', store=True)
    def _compute_done(self):
        self.done = False if self.state=="active" else True

and its view

<record model="ir.ui.view" id="view_hr_employee_qualification_form"> 
    <field name="name">hr.employee.qualification.form.inherit</field>
    <field name="model">hr.employee</field>
    <field name="inherit_id" ref="hr.view_employee_form"/>
    <field name="arch" type="xml"> <notebook position="inside">
    <page string="Job History">
    <field name="job_history_ids">
    <tree editable="top" delete="0">
    <field name="job_id" options="{'no_open': True} attrs="{'readonly':[('done','=',True)]}" />
    <field name="start_date" attrs="{'readonly':[('done','=',True)]}"/>
    <field name="end_date" attrs="{'readonly':[('done','=',True)], 'required':[('state','!=','active')]}"/>
<field name="state" attrs="{'readonly':[('done','=',True)]}" /> <field name="done" invisible="1"/>

The idea is control editing record by using done field (True= not editable). If state field set to (not active) that means it is done and record is supposed to be un-editable.

Creating a record goes fine. But once I change state to other selection (not active) and hit save. The changes are not saved and state goes back to active. If I remove 

<field name="state" attrs="{'readonly':[('done','=',True)]}" />

and put

<field name="state"  />

saving data works but I loose control editable. I tried @api.onchange and @api.model def write. Same problem.

Can you help on this?

On 4/24/16, 12:42 PM

I tried to to stay away from words: active (changed to working) and state (changed to status). But it is the same problem. The problem has to do with 

<field name="state"  attrs="{'readonly':[('done','=',True)]}"/> if attrs is removed, saving problem is solved. Maybe it is a loop back problem between state and done fileds. 

Thanks anyway


I solved it:

It seemed that some wrong with tree and

def _compute_done(self):         
    self.done = False if self.state=="active" else True

I am not sure what is it. But maybe tree (multi) to self(one) in this function. i tried @api.multi. This did not work either. So I removed the compute function and do this

def write(self, vals):
    if self.state == 'active' and self.end_date:
        raise exceptions.Warning(_('Cannot set an end date to a job in working status'))
        vals['done'] = False if self.state=="active" else True
        return super(HrEmployeeJobHistory, self).write(vals)

This did it. I hope this function is complete. Do I need insure one function or other things to take care of. Or anyone has a better solution. I appreciate your answers.



Ray Carnes

--Ray Carnes--
| 9 7 9
Keyport, United States
--Ray Carnes--

Senior ERP Analyst

OpenERP 6.1, 7.0; Odoo 8.0, 9.0, 10.0 and 11.0.

Completed Odoo Functional and Technical Training.

Functional Areas:

  • CRM/Sales

  • Inventory

  • Manufacturing

  • Accounting

  • Purchasing

Major Skills:

  • Business Process Reengineering

  • Efficiency Consulting

  • User Needs and GAP Analysis;

  • Functional and Technical Design;

  • Prototyping and Proof of Concepts;

  • Requirements Specifications;

  • Agile Implementation;

  • Data Migration;

  • Configuration & Customization (UI and code);

  • Integration - Odoo and non Odoo Applications and Services;

  • Training and Knowledge Transfer;

  • Go Live Support;

  • Helpdesk;

  • Version Upgrades and Migration.

  • Accounting Expert.

I have over 20 years of experience empowering and enabling users with enterprise information systems that make a real and measurable difference in their ability to proactively manage their businesses and organizations. 

I am a skilled Communicator and I only take the serious things seriously!

Ray Carnes
On 4/24/16, 10:58 AM

Odoo has a few field names that are reserved for pre-defined behaviors.

name, active, sequence, state, parent_id, parent_left, parent_right.

You should not use these fields - choose other names.


About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 4/24/16, 7:50 AM
Seen: 1880 times
Last updated: 4/25/16, 3:45 AM