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>