i'm using odoo 11. i'm working on the attendance module i want to create an attendance modification request which be approuved by the manager (to create a new attendance or modify an attendance already existe) and the attendances automatically updated. the probleme is when i press approuve my request was approuved but the attendances were not updated (in the hr.attendance model). Any idea for help please ?? here is my code
regularization.py
class Regular(models.Model): _name = 'attendance.regular' _rec_name = 'employee' _description = 'Approval Request' _inherit = ['mail.thread', 'mail.activity.mixin'] def _get_employee_id(self): employee_rec = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1) return employee_rec.id reg_category = fields.Many2one('reg.categories', string='Regularization Category', required=True) from_date = fields.Datetime(string='Check in', required=False) to_date = fields.Datetime(string='Check out', required=False) reg_reason = fields.Text(string='Reason', required=False) employee = fields.Many2one('hr.employee', string="Employee", default=_get_employee_id, readonly=False, required=True) state_select = fields.Selection([('draft', 'Draft'), ('requested', 'Requested'), ('reject', 'Rejected'), ('approved', 'Approved') ], default='draft', track_visibility='onchange', string='State') attendance_id = fields.Many2one('hr.attendance', string='Attendance') @api.multi def submit_reg(self): self.ensure_one() self.sudo().write({ 'state_select': 'requested' }) return @api.multi def regular_approval(self): for record in self: if self.reg_category.type ==" Check in": record.attendance_id.check_in = record.from_date record.attendance_id.employee_id = record.employee.id elif self.reg_category.type ==" Check out": record.attendance_id.check_out = record.to_date record.attendance_id.employee_id = record.employee.id return self.write({ 'state_select': 'approved' })
regularization.xml
<?xml version="1.0" encoding="utf-8"?> <odoo> <data> <record id="attendance_regular11" model="ir.ui.view"> <field name="name">attend.regular</field> <field name="model">attendance.regular</field> <field name="arch" type="xml"> <form string="Regularization"> <header> <button name="submit_reg" string="Submit" type="object" class="btn-primary" attrs="{'invisible': [('state_select','not in','draft')]}"/> <button name="regular_approval" type="object" string="Approve" class="oe_highlight" groups="hr_attendance.group_hr_attendance_manager" attrs="{'invisible': [('state_select','not in','requested')]}"/> <button name="regular_rejection" type="object" string="Reject" class="oe_highlight" groups="hr_attendance.group_hr_attendance_manager" attrs="{'invisible': [('state_select','not in','requested')]}"/> <field name="state_select" widget="statusbar" statusbar_visible="draft,requested,approved"/> </header> <sheet> <group col="4" colspan="4"> <field name="reg_category"/> <field name="from_date" attrs="{'invisible':[('reg_category', '=',5)]}" /> <field name="reg_reason"/> <field name="to_date" attrs="{'invisible':[('reg_category', '=',4)]}"/> <field name="employee"/> </group> </sheet> <field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/> <field name="activity_ids" widget="mail_activity"/> <field name="message_ids" widget="mail_thread"/> </form> </field> </record>