Skip to content

Commit

Permalink
[8.0.1.3.0] hr_attendance_overtime_request
Browse files Browse the repository at this point in the history
* Default method for employee_id
* Add my overtime request
* Adjusting copy method on overtime request
* Add track_visibility
* Add default filter on (1) My Overtime Request, and (2) Overtime Request menu
* Add loging mechanism
  • Loading branch information
andhit-r committed Jun 5, 2018
1 parent 474d45a commit 3637c96
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 12 deletions.
2 changes: 1 addition & 1 deletion hr_attendance_overtime_request/__openerp__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Attendance Overtime Request",
"version": "8.0.1.2.0",
"version": "8.0.1.3.0",
"category": "Human Resources",
"website": "https://opensynergy-indonesia.com",
"author": "OpenSynergy Indonesia",
Expand Down
98 changes: 91 additions & 7 deletions hr_attendance_overtime_request/models/hr_overtime_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ class HrOvertimeRequest(models.Model):
def _default_company_id(self):
return self.env.user.company_id.id

@api.model
def _default_employee_id(self):
employees = self.env.user.employee_ids
if len(employees) > 0:
employee = employees[0]
return employee.id

@api.multi
@api.depends(
"date_start", "date_end")
Expand Down Expand Up @@ -61,6 +68,7 @@ def _compute_policy(self):
required=True,
default="/",
readonly=True,
copy=False,
states={
"draft": [
("readonly", False),
Expand All @@ -78,6 +86,8 @@ def _compute_policy(self):
comodel_name="hr.employee",
required=True,
readonly=True,
default=_default_employee_id,
track_visibility="onchange",
states={
"draft": [
("readonly", False),
Expand All @@ -88,11 +98,15 @@ def _compute_policy(self):
string="Department",
comodel_name="hr.department",
readonly=False,
copy=False,
track_visibility="onchange",
)
manager_id = fields.Many2one(
string="Manager",
comodel_name="hr.employee",
readonly=False,
copy=False,
track_visibility="onchange",
)
date_start = fields.Datetime(
string="Date Start",
Expand All @@ -103,6 +117,7 @@ def _compute_policy(self):
("readonly", False),
],
},
track_visibility="onchange",
)
date_end = fields.Datetime(
string="Date End",
Expand All @@ -113,6 +128,7 @@ def _compute_policy(self):
("readonly", False),
],
},
track_visibility="onchange",
)
overtime_hour = fields.Float(
string="Overtime Hour",
Expand All @@ -126,6 +142,7 @@ def _compute_policy(self):
string="State",
required=True,
readonly=True,
track_visibility="onchange",
selection=[
("draft", "Draft"),
("confirm", "Waiting for Approval"),
Expand Down Expand Up @@ -159,6 +176,39 @@ def _compute_policy(self):
store=False,
readonly=True,
)
confirmed_date = fields.Datetime(
string="Confirmation Date",
readonly=True,
copy=False,
)
confirmed_user_id = fields.Many2one(
string="Confirmation By",
comodel_name="res.users",
readonly=True,
copy=False,
)
validated_date = fields.Datetime(
string="Validation Date",
readonly=True,
copy=False,
)
validated_user_id = fields.Many2one(
string="Validation By",
comodel_name="res.users",
readonly=True,
copy=False,
)
cancelled_date = fields.Datetime(
string="Cancellation Date",
readonly=True,
copy=False,
)
cancelled_user_id = fields.Many2one(
string="Cancellation By",
comodel_name="res.users",
readonly=True,
copy=False,
)

@api.multi
def action_confirm(self):
Expand All @@ -185,6 +235,8 @@ def _prepare_confirm_data(self):
self.ensure_one()
result = {
"state": "confirm",
"confirmed_user_id": self.env.user.id,
"confirmed_date": fields.Datetime.now(),
}
return result

Expand All @@ -193,6 +245,8 @@ def _prepare_valid_data(self):
self.ensure_one()
result = {
"state": "valid",
"validated_user_id": self.env.user.id,
"validated_date": fields.Datetime.now(),
}
return result

Expand All @@ -201,6 +255,8 @@ def _prepare_cancel_data(self):
self.ensure_one()
result = {
"state": "cancel",
"cancelled_user_id": self.env.user.id,
"cancelled_date": fields.Datetime.now(),
}
return result

Expand All @@ -209,6 +265,12 @@ def _prepare_restart_data(self):
self.ensure_one()
result = {
"state": "draft",
"confirmed_user_id": False,
"confirmed_date": False,
"validated_user_id": False,
"validated_date": False,
"cancelled_user_id": False,
"cancelled_date": False,
}
return result

Expand Down Expand Up @@ -242,6 +304,16 @@ def create(self, values):
new_values = self._prepare_create_data(values)
return super(HrOvertimeRequest, self).create(new_values)

@api.multi
def copy(self, default):
self.ensure_one()
_super = super(HrOvertimeRequest, self)
default.update({
"department_id": self._get_department_id().id,
"manager_id": self._get_manager_id().id,
})
return _super.copy(default)

@api.multi
def unlink(self):
_super = super(HrOvertimeRequest, self)
Expand All @@ -268,18 +340,30 @@ def _check_availability(self):
("state", "=", "valid"),
("date_start", "<=", self.date_end),
("date_end", ">=", self.date_start),
]
]
if obj_overtime.search_count(criteria) > 0:
raise UserError(_("Employe already has an overtime request"))

@api.multi
def _get_department_id(self):
self.ensure_one()
department_id = False
if self.employee_id:
department_id = self.employee_id.department_id
return department_id

@api.multi
def _get_manager_id(self):
self.ensure_one()
manager_id = False
if self.employee_id:
manager_id = self.employee_id.parent_id
return manager_id

@api.onchange("employee_id")
def onchange_department_id(self):
self.department_id = False
if self.employee_id:
self.department_id = self.employee_id.department_id
self.department_id = self._get_department_id()

@api.onchange("employee_id")
def onchange_manager_id(self):
self.manager_id = False
if self.employee_id:
self.manager_id = self.employee_id.parent_id
self.manager_id = self._get_manager_id()
43 changes: 39 additions & 4 deletions hr_attendance_overtime_request/views/hr_overtime_request_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
<group name="group_1" colspan="4" col="2">
<group name="group_1_1" colspan="1" col="2">
<field name="company_id" groups="base.group_multi_company"/>
<field name="employee_id"/>
<field name="employee_id"
invisible="context.get('hide_employee', 0)"/>
<field name="department_id" groups="base.group_system"/>
<field name="manager_id" groups="base.group_system"/>
</group>
Expand All @@ -47,6 +48,18 @@
<field name="restart_ok"/>
</group>
</page>
<page name="log" string="Log" groups="base.group_system">
<group name="group_log_1" colspan="4" col="3">
<field name="create_date" string="Creation"/>
<field name="create_uid" nolabel="1"/>
<field name="confirmed_date" string="Confirmation"/>
<field name="confirmed_user_id" nolabel="1"/>
<field name="validated_date" string="Validation"/>
<field name="validated_user_id" nolabel="1"/>
<field name="cancelled_date" string="Cancellation"/>
<field name="cancelled_user_id" nolabel="1"/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
Expand All @@ -64,7 +77,9 @@
<tree>
<field name="name"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="employee_id"/>
<field name="employee_id"
invisible="context.get('hide_employee', 0)"
/>
<field name="department_id" groups="base.group_system"/>
<field name="manager_id" groups="base.group_system"/>
<field name="date_start"/>
Expand All @@ -82,7 +97,9 @@
<search>
<field name="name"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="employee_id"/>
<field name="employee_id"
invisible="context.get('hide_employee', 0)"
/>
<field name="department_id" groups="base.group_system"/>
<field name="manager_id" groups="base.group_system"/>
<field name="date_start"/>
Expand Down Expand Up @@ -110,14 +127,32 @@
<field name="res_model">hr.overtime_request</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_filter_draft':1, 'search_default_filter_confirm':1}</field>
<field name="search_view_id" ref="hr_overtime_request_view_search"/>
</record>

<menuitem
id="hr_overtime_request_menu"
name="Overtime"
name="Overtime Request"
parent="hr_overtime_root_menu"
action="hr_overtime_request_action"
sequence="2"/>

<record id="hr_overtime_request_my_action" model="ir.actions.act_window">
<field name="name">My Overtime Request</field>
<field name="res_model">hr.overtime_request</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_filter_draft':1, 'search_default_filter_confirm':1, 'hide_employee':1}</field>
<field name="domain">[('employee_id.user_id.id','=',uid)]</field>
<field name="search_view_id" ref="hr_overtime_request_view_search"/>
</record>

<menuitem
id="hr_overtime_request_my_menu"
name="My Overtime Request"
parent="hr_overtime_root_menu"
action="hr_overtime_request_my_action"
sequence="1"/>


Expand Down

0 comments on commit 3637c96

Please sign in to comment.