Odoo Help

Welcome!

This community 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.

0

field are not saved and set its value back

By
AKRAM M ALFUSAYAL
on 4/24/16, 7:50 AM 553 views

Hello

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)
    
    @api.one
    @api.depends('state')
    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"/>
 </tree>
</field>
</page>

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?






0
AKRAM M ALFUSAYAL
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



Update

I solved it:

It seemed that some wrong with tree and

@api.one        
@api.depends('state')     
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

@api.multi
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'))
    else:
        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.

Thanks


0

Ray Carnes

--Ray Carnes--
15687
| 9 7 9
Greater Los Angeles, United States
--Ray Carnes--

Senior Odoo Analyst

OpenERP 6.1, 7.0 and Odoo 8.0, 9.0 (Since 2012)

Completed Functional and Technical Training.

Major Skills:

  • Needs Discovery and Requirements Analysis;

  • Function and Technical Specifications;

  • Project Planning;

  • Prototyping and Proof of concepts;

  • Data migration;

  • Configuration & Customization (UI and modules);

  • Integration - data, business logic and service levels;

  • Training and Knowledge transfer;

  • Go Live support;

  • Help desk;

  • Version Migration.

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. 

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.

https://www.odoo.com/documentation/9.0/reference/orm.html


Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

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