[ADD][SPLIT] maintenance: hr part
maintenance is not dependant on hr anymore. A new module hr_maintenance is added that adds hr-related fields (employee owner, ...). This way maintenance is a stand alone application.
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import models
|
||||
@@ -0,0 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
{
|
||||
'name': 'HR - Equipments',
|
||||
'version': '1.0',
|
||||
'sequence': 125,
|
||||
'description': """
|
||||
Bridge between HR and Maintenance.""",
|
||||
'depends': ['hr', 'maintenance'],
|
||||
'summary': 'Equipments, Assets, Internal Hardware, Allocation Tracking',
|
||||
'data': [
|
||||
'views/maintenance_views.xml',
|
||||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'auto-install': True,
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import equipment
|
||||
@@ -0,0 +1,117 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import api, fields, models, tools
|
||||
|
||||
|
||||
class HrEquipment(models.Model):
|
||||
_inherit = 'hr.equipment'
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='Assigned to Employee', track_visibility='onchange')
|
||||
department_id = fields.Many2one('hr.department', string='Assigned to Department', track_visibility='onchange')
|
||||
equipment_assign_to = fields.Selection(
|
||||
[('department', 'Department'), ('employee', 'Employee')],
|
||||
string='Used By',
|
||||
required=True,
|
||||
default='employee')
|
||||
|
||||
@api.onchange('equipment_assign_to')
|
||||
def _onchange_equipment_assign_to(self):
|
||||
if self.equipment_assign_to == 'employee':
|
||||
self.department_id = False
|
||||
if self.equipment_assign_to == 'department':
|
||||
self.employee_id = False
|
||||
self.assign_date = fields.Date.context_today(self)
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
equipment = super(HrEquipment, self).create(vals)
|
||||
# subscribe employee or department manager when equipment assign to him.
|
||||
user_ids = []
|
||||
if equipment.employee_id and equipment.employee_id.user_id:
|
||||
user_ids.append(equipment.employee_id.user_id.id)
|
||||
if equipment.department_id and equipment.department_id.manager_id and equipment.department_id.manager_id.user_id:
|
||||
user_ids.append(equipment.department_id.manager_id.user_id.id)
|
||||
if user_ids:
|
||||
equipment.message_subscribe_users(user_ids=user_ids)
|
||||
return equipment
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
user_ids = []
|
||||
# subscribe employee or department manager when equipment assign to employee or department.
|
||||
if vals.get('employee_id'):
|
||||
user_id = self.env['hr.employee'].browse(vals['employee_id'])['user_id']
|
||||
if user_id:
|
||||
user_ids.append(user_id.id)
|
||||
if vals.get('department_id'):
|
||||
department = self.env['hr.department'].browse(vals['department_id'])
|
||||
if department and department.manager_id and department.manager_id.user_id:
|
||||
user_ids.append(department.manager_id.user_id.id)
|
||||
if user_ids:
|
||||
self.message_subscribe_users(user_ids=user_ids)
|
||||
return super(HrEquipment, self).write(vals)
|
||||
|
||||
@api.multi
|
||||
def _track_subtype(self, init_values):
|
||||
self.ensure_one()
|
||||
if ('employee_id' in init_values and self.employee_id) or ('department_id' in init_values and self.department_id):
|
||||
return 'maintenance.mt_mat_assign'
|
||||
return super(HrEquipment, self)._track_subtype(init_values)
|
||||
|
||||
|
||||
class HrEquipmentRequest(models.Model):
|
||||
_inherit = 'hr.equipment.request'
|
||||
|
||||
@api.returns('self')
|
||||
def _default_employee_get(self):
|
||||
return self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='Employee', default=_default_employee_get)
|
||||
department_id = fields.Many2one('hr.department', string='Department')
|
||||
|
||||
@api.onchange('employee_id', 'department_id')
|
||||
def onchange_department_or_employee_id(self):
|
||||
domain = []
|
||||
if self.department_id:
|
||||
domain = [('department_id', '=', self.department_id.id)]
|
||||
if self.employee_id and self.department_id:
|
||||
domain = ['|'] + domain
|
||||
if self.employee_id:
|
||||
domain = domain + ['|', ('employee_id', '=', self.employee_id.id), ('employee_id', '=', None)]
|
||||
equipment = self.env['hr.equipment'].search(domain, limit=2)
|
||||
if len(equipment) == 1:
|
||||
self.equipment_id = equipment
|
||||
return {'domain': {'equipment_id': domain}}
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
result = super(HrEquipmentRequest, self).create(vals)
|
||||
if result.employee_id.user_id:
|
||||
result.message_subscribe_users(user_ids=[result.employee_id.user_id.id])
|
||||
return result
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
# Overridden to reset the kanban_state to normal whenever
|
||||
# the stage (stage_id) of the Maintenance Request changes.
|
||||
if vals.get('employee_id'):
|
||||
employee = self.env['hr.employee'].browse(vals['employee_id'])
|
||||
if employee and employee.user_id:
|
||||
self.message_subscribe_users(user_ids=[employee.user_id.id])
|
||||
return super(HrEquipmentRequest, self).write(vals)
|
||||
|
||||
@api.model
|
||||
def message_new(self, msg, custom_values=None):
|
||||
""" Overrides mail_thread message_new that is called by the mailgateway
|
||||
through message_process.
|
||||
This override updates the document according to the email.
|
||||
"""
|
||||
if custom_values is None:
|
||||
custom_values = {}
|
||||
email = tools.email_split(msg.get('from')) and tools.email_split(msg.get('from'))[0] or False
|
||||
user = self.env['res.users'].search([('login', '=', email)], limit=1)
|
||||
if user:
|
||||
employee = self.env['hr.employee'].search([('user_id', '=', user.id)], limit=1)
|
||||
if employee:
|
||||
custom_values['employee_id'] = employee and employee[0].id
|
||||
return super(HrEquipmentRequest, self).message_new(msg, custom_values=custom_values)
|
||||
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<!-- equiment.request : views -->
|
||||
<record id="hr_equipment_request_view_search_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.request.view.search.inherit.hr</field>
|
||||
<field name="model">hr.equipment.request</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_request_view_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="field[@name='user_id']" position="after">
|
||||
<field name="employee_id"/>
|
||||
</xpath>
|
||||
<xpath expr="//filter[@name='my_requests']" position="replace">
|
||||
<filter string="My Requests" name="my_requests" domain="['|', ('employee_id.user_id', '=', uid), ('department_id.manager_id.user_id', '=', uid)]"/>
|
||||
</xpath>
|
||||
<xpath expr="//filter[@name='created_by']" position="replace">
|
||||
<filter string='Created By' name='created_by' domain="[]" context="{'group_by': 'employee_id'}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_request_view_form_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.request.view.form.inherit.hr</field>
|
||||
<field name="model">hr.equipment.request</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_request_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='owner_user_id']" position="replace">
|
||||
<field name="employee_id" string="Created By"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_request_view_kanban_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.request.view.kanban.inherit.hr</field>
|
||||
<field name="model">hr.equipment.request</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_request_view_kanban"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//span[@name='owner_user_id']" position="replace">
|
||||
<span t-if="record.employee_id.raw_value"><field name="employee_id"/><br/></span>
|
||||
<span t-if="record.department_id.raw_value"><field name="department_id"/><br/></span>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_request_view_tree_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.request.view.tree.inherit.hr</field>
|
||||
<field name="model">hr.equipment.request</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_request_view_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='owner_user_id']" position="replace">
|
||||
<field name="employee_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- equiment : views -->
|
||||
<record id="hr_equipment_view_form_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.view.form.inherit.hr</field>
|
||||
<field name="model">hr.equipment</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='owner_user_id']" position="replace">
|
||||
<field name="equipment_assign_to" widget="radio"/>
|
||||
<field name="employee_id" string="Employee" attrs="{'invisible': ['|', ('equipment_assign_to', '=', 'department'), ('equipment_assign_to', '=', False)]}"/>
|
||||
<field name="department_id" string="Department" attrs="{'invisible': ['|', ('equipment_assign_to', '=', 'employee'), ('equipment_assign_to', '=', False)]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_view_kanban_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.view.kanban.inherit.hr</field>
|
||||
<field name="model">hr.equipment</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_view_kanban"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='user_id']" position="after">
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
</xpath>
|
||||
<xpath expr="//img[@t-att-title='record.owner_user_id.value']" position='replace'>
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" width="27" height="27" class="oe_kanban_avatar"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_view_tree_inherit_hr" model="ir.ui.view">
|
||||
<field name="name">hr.equipment.view.tree.inherit.hr</field>
|
||||
<field name="model">hr.equipment</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_view_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='owner_user_id']" position="replace">
|
||||
<field name="employee_id" string="Employee"/>
|
||||
<field name="department_id" string="Department"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -7,7 +7,7 @@
|
||||
'category': 'Human Resources',
|
||||
'description': """
|
||||
Track employees' equipment and manage maintenance requests.""",
|
||||
'depends': ['hr'],
|
||||
'depends': ['mail'],
|
||||
'summary': 'Equipments, Assets, Internal Hardware, Allocation Tracking',
|
||||
'data': [
|
||||
'security/maintenance.xml',
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<record id="hr_equipment_monitor1" model="hr.equipment">
|
||||
<field name="name">Samsung Monitor 15"</field>
|
||||
<field name="category_id" ref="hr_equipment_monitor"/>
|
||||
<field name="employee_id" ref="hr.employee_al"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-%m-10')"/>
|
||||
<field name="serial_no">MT/122/11112222</field>
|
||||
@@ -26,7 +26,7 @@
|
||||
<record id="hr_equipment_monitor4" model="hr.equipment">
|
||||
<field name="name">Samsung Monitor 15"</field>
|
||||
<field name="category_id" ref="hr_equipment_monitor"/>
|
||||
<field name="employee_id" ref="hr.employee_stw"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-01-01')"/>
|
||||
<field name="serial_no">MT/125/22778837</field>
|
||||
@@ -35,7 +35,7 @@
|
||||
<record id="hr_equipment_monitor6" model="hr.equipment">
|
||||
<field name="name">Samsung Monitor 15"</field>
|
||||
<field name="category_id" ref="hr_equipment_monitor"/>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
<field name="owner_user_id" ref="base.user_demo"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-02-01')"/>
|
||||
<field name="serial_no">MT/127/18291018</field>
|
||||
@@ -45,7 +45,7 @@
|
||||
<record id="hr_equipment_computer3" model="hr.equipment">
|
||||
<field name="name">Acer Laptop</field>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="employee_id" ref="hr.employee_jve"/>
|
||||
<field name="owner_user_id" ref="base.user_demo"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-03-08')"/>
|
||||
<field name="serial_no">LP/203/19281928</field>
|
||||
@@ -54,7 +54,7 @@
|
||||
<record id="hr_equipment_computer5" model="hr.equipment">
|
||||
<field name="name">Acer Laptop</field>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="employee_id" ref="hr.employee_jgo"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-04-08')"/>
|
||||
<field name="serial_no">LP/205/12928291</field>
|
||||
@@ -63,7 +63,7 @@
|
||||
<record id="hr_equipment_computer9" model="hr.equipment">
|
||||
<field name="name">HP Laptop</field>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="employee_id" ref="hr.employee_vad"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-%m-11')"/>
|
||||
<field name="serial_no">LP/303/28292090</field>
|
||||
@@ -72,7 +72,7 @@
|
||||
<record id="hr_equipment_computer11" model="hr.equipment">
|
||||
<field name="name">HP Laptop</field>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="employee_id" ref="hr.employee_jth"/>
|
||||
<field name="owner_user_id" ref="base.user_demo"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="assign_date" eval="time.strftime('%Y-05-01')"/>
|
||||
<field name="serial_no">LP/305/17281718</field>
|
||||
@@ -89,7 +89,7 @@
|
||||
<record id="m_request_3" model="hr.equipment.request">
|
||||
<field name="name">Resolution is bad</field>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="equipment_id" ref="hr_equipment_monitor6"/>
|
||||
<field name="category_id" ref="hr_equipment_monitor"/>
|
||||
<field name="color">7</field>
|
||||
@@ -98,7 +98,7 @@
|
||||
<record id="m_request_4" model="hr.equipment.request">
|
||||
<field name="name">Some keys are not working</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="equipment_id" ref="hr_equipment_computer3"/>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="stage_id" ref="stage_0"/>
|
||||
@@ -106,7 +106,7 @@
|
||||
<record id="m_request_6" model="hr.equipment.request">
|
||||
<field name="name">Motherboard failed</field>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="employee_id" ref="hr.employee_jgo"/>
|
||||
<field name="owner_user_id" ref="base.user_root"/>
|
||||
<field name="equipment_id" ref="hr_equipment_computer5"/>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="stage_id" ref="stage_4"/>
|
||||
@@ -114,7 +114,7 @@
|
||||
<record id="m_request_7" model="hr.equipment.request">
|
||||
<field name="name">Battery drains fast</field>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="employee_id" ref="hr.employee_vad"/>
|
||||
<field name="owner_user_id" ref="base.user_demo"/>
|
||||
<field name="equipment_id" ref="hr_equipment_computer9"/>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="stage_id" ref="stage_1"/>
|
||||
@@ -122,7 +122,7 @@
|
||||
<record id="m_request_8" model="hr.equipment.request">
|
||||
<field name="name">Touchpad not working</field>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="employee_id" ref="hr.employee_jth"/>
|
||||
<field name="owner_user_id" ref="base.user_demo"/>
|
||||
<field name="equipment_id" ref="hr_equipment_computer11"/>
|
||||
<field name="category_id" ref="hr_equipment_computer"/>
|
||||
<field name="stage_id" ref="stage_1"/>
|
||||
|
||||
@@ -81,7 +81,7 @@ class HrEquipment(models.Model):
|
||||
@api.multi
|
||||
def _track_subtype(self, init_values):
|
||||
self.ensure_one()
|
||||
if ('employee_id' in init_values and self.employee_id) or ('department_id' in init_values and self.department_id):
|
||||
if 'owner_user_id' in init_values and self.owner_user_id:
|
||||
return 'maintenance.mt_mat_assign'
|
||||
return super(HrEquipment, self)._track_subtype(init_values)
|
||||
|
||||
@@ -108,8 +108,7 @@ class HrEquipment(models.Model):
|
||||
name = fields.Char('Asset Name', required=True, translate=True)
|
||||
active = fields.Boolean(default=True)
|
||||
user_id = fields.Many2one('res.users', string='Technician', track_visibility='onchange')
|
||||
employee_id = fields.Many2one('hr.employee', string='Assigned to Employee', track_visibility='onchange')
|
||||
department_id = fields.Many2one('hr.department', string='Assigned to Department', track_visibility='onchange')
|
||||
owner_user_id = fields.Many2one('res.users', string='Owner', track_visibility='onchange')
|
||||
category_id = fields.Many2one('hr.equipment.category', string='Asset Category', track_visibility='onchange')
|
||||
partner_id = fields.Many2one('res.partner', string='Vendor', domain="[('supplier', '=', 1)]")
|
||||
partner_ref = fields.Char('Vendor Reference')
|
||||
@@ -122,11 +121,6 @@ class HrEquipment(models.Model):
|
||||
warranty = fields.Date('Warranty')
|
||||
color = fields.Integer('Color Index')
|
||||
scrap_date = fields.Date('Scrap Date')
|
||||
equipment_assign_to = fields.Selection(
|
||||
[('department', 'Department'), ('employee', 'Employee')],
|
||||
string='Used By',
|
||||
required=True,
|
||||
default='employee')
|
||||
maintenance_ids = fields.One2many('hr.equipment.request', 'equipment_id')
|
||||
maintenance_count = fields.Integer(compute='_compute_maintenance_count', string="Maintenance", store=True)
|
||||
maintenance_open_count = fields.Integer(compute='_compute_maintenance_count', string="Current Maintenance", store=True)
|
||||
@@ -137,15 +131,6 @@ class HrEquipment(models.Model):
|
||||
self.maintenance_count = len(self.maintenance_ids)
|
||||
self.maintenance_open_count = len(self.maintenance_ids.filtered(lambda x: not x.stage_id.done))
|
||||
|
||||
|
||||
@api.onchange('equipment_assign_to')
|
||||
def _onchange_equipment_assign_to(self):
|
||||
if self.equipment_assign_to == 'employee':
|
||||
self.department_id = False
|
||||
if self.equipment_assign_to == 'department':
|
||||
self.employee_id = False
|
||||
self.assign_date = fields.Date.context_today(self)
|
||||
|
||||
@api.onchange('category_id')
|
||||
def _onchange_category_id(self):
|
||||
self.user_id = self.category_id.user_id
|
||||
@@ -157,30 +142,14 @@ class HrEquipment(models.Model):
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
equipment = super(HrEquipment, self).create(vals)
|
||||
# subscribe employee or department manager when equipment assign to him.
|
||||
user_ids = []
|
||||
if equipment.employee_id and equipment.employee_id.user_id:
|
||||
user_ids.append(equipment.employee_id.user_id.id)
|
||||
if equipment.department_id and equipment.department_id.manager_id and equipment.department_id.manager_id.user_id:
|
||||
user_ids.append(equipment.department_id.manager_id.user_id.id)
|
||||
if user_ids:
|
||||
equipment.message_subscribe_users(user_ids=user_ids)
|
||||
if equipment.owner_user_id:
|
||||
equipment.message_subscribe_users(user_ids=equipment.owner_user_id.id)
|
||||
return equipment
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
user_ids = []
|
||||
# subscribe employee or department manager when equipment assign to employee or department.
|
||||
if vals.get('employee_id'):
|
||||
user_id = self.env['hr.employee'].browse(vals['employee_id'])['user_id']
|
||||
if user_id:
|
||||
user_ids.append(user_id.id)
|
||||
if vals.get('department_id'):
|
||||
department = self.env['hr.department'].browse(vals['department_id'])
|
||||
if department and department.manager_id and department.manager_id.user_id:
|
||||
user_ids.append(department.manager_id.user_id.id)
|
||||
if user_ids:
|
||||
self.message_subscribe_users(user_ids=user_ids)
|
||||
if vals.get('owner_user_id'):
|
||||
self.message_subscribe_users(user_ids=[vals['owner_user_id']])
|
||||
return super(HrEquipment, self).write(vals)
|
||||
|
||||
@api.multi
|
||||
@@ -215,10 +184,6 @@ class HrEquipmentRequest(models.Model):
|
||||
_description = 'Maintenance Requests'
|
||||
_order = "id desc"
|
||||
|
||||
@api.returns('self')
|
||||
def _default_employee_get(self):
|
||||
return self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
|
||||
|
||||
@api.returns('self')
|
||||
def _default_stage(self):
|
||||
return self.env['hr.equipment.stage'].search([], limit=1)
|
||||
@@ -235,8 +200,7 @@ class HrEquipmentRequest(models.Model):
|
||||
name = fields.Char('Subjects', required=True)
|
||||
description = fields.Text('Description')
|
||||
request_date = fields.Date('Request Date', track_visibility='onchange', default=fields.Date.context_today)
|
||||
employee_id = fields.Many2one('hr.employee', string='Employee', default=_default_employee_get)
|
||||
department_id = fields.Many2one('hr.department', string='Department')
|
||||
owner_user_id = fields.Many2one('res.users', string='Created by', default=lambda s: s.env.uid)
|
||||
category_id = fields.Many2one('hr.equipment.category', string='Category')
|
||||
equipment_id = fields.Many2one('hr.equipment', string='Asset', select=True)
|
||||
user_id = fields.Many2one('res.users', string='Assigned to', track_visibility='onchange')
|
||||
@@ -248,7 +212,6 @@ class HrEquipmentRequest(models.Model):
|
||||
string='Kanban State', required=True, default='normal', track_visibility='onchange')
|
||||
active = fields.Boolean(default=True, help="Set active to false to hide the maintenance request without deleting it.")
|
||||
|
||||
|
||||
@api.multi
|
||||
def archive_equipment_request(self):
|
||||
self.write({'active': False})
|
||||
@@ -259,20 +222,6 @@ class HrEquipmentRequest(models.Model):
|
||||
first_stage_obj = self.env['hr.equipment.stage'].search([], order="sequence asc", limit=1)
|
||||
self.write({'active': True, 'stage_id': first_stage_obj.id})
|
||||
|
||||
@api.onchange('employee_id', 'department_id')
|
||||
def onchange_department_or_employee_id(self):
|
||||
domain = []
|
||||
if self.department_id:
|
||||
domain = [('department_id', '=', self.department_id.id)]
|
||||
if self.employee_id and self.department_id:
|
||||
domain = ['|'] + domain
|
||||
if self.employee_id:
|
||||
domain = domain + ['|', ('employee_id', '=', self.employee_id.id), ('employee_id', '=', None)]
|
||||
equipment = self.env['hr.equipment'].search(domain, limit=2)
|
||||
if len(equipment) == 1:
|
||||
self.equipment_id = equipment
|
||||
return {'domain': {'equipment_id': domain}}
|
||||
|
||||
@api.onchange('equipment_id')
|
||||
def onchange_equipment_id(self):
|
||||
self.user_id = self.equipment_id.user_id if self.equipment_id.user_id else self.equipment_id.category_id.user_id
|
||||
@@ -287,10 +236,10 @@ class HrEquipmentRequest(models.Model):
|
||||
def create(self, vals):
|
||||
# context: no_log, because subtype already handle this
|
||||
self = self.with_context(mail_create_nolog=True)
|
||||
result = super(HrEquipmentRequest, self).create(vals)
|
||||
if result.employee_id.user_id:
|
||||
result.message_subscribe_users(user_ids=[result.employee_id.user_id.id])
|
||||
return result
|
||||
request = super(HrEquipmentRequest, self).create(vals)
|
||||
if request.owner_user_id:
|
||||
request.message_subscribe_users(user_ids=[request.owner_user_id.id])
|
||||
return request
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
@@ -298,10 +247,8 @@ class HrEquipmentRequest(models.Model):
|
||||
# the stage (stage_id) of the Maintenance Request changes.
|
||||
if vals and 'kanban_state' not in vals and 'stage_id' in vals:
|
||||
vals['kanban_state'] = 'normal'
|
||||
if vals.get('employee_id'):
|
||||
employee = self.env['hr.employee'].browse(vals['employee_id'])
|
||||
if employee and employee.user_id:
|
||||
self.message_subscribe_users(user_ids=[employee.user_id.id])
|
||||
if vals.get('owner_user_id'):
|
||||
self.message_subscribe_users(user_ids=[vals['owner_user_id']])
|
||||
return super(HrEquipmentRequest, self).write(vals)
|
||||
|
||||
@api.multi
|
||||
@@ -330,19 +277,3 @@ class HrEquipmentRequest(models.Model):
|
||||
_group_by_full = {
|
||||
'stage_id': _read_group_stage_ids
|
||||
}
|
||||
|
||||
@api.model
|
||||
def message_new(self, msg, custom_values=None):
|
||||
""" Overrides mail_thread message_new that is called by the mailgateway
|
||||
through message_process.
|
||||
This override updates the document according to the email.
|
||||
"""
|
||||
if custom_values is None:
|
||||
custom_values = {}
|
||||
email = tools.email_split(msg.get('from')) and tools.email_split(msg.get('from'))[0] or False
|
||||
user = self.env['res.users'].search([('login', '=', email)], limit=1)
|
||||
if user:
|
||||
employee = self.env['hr.employee'].search([('user_id', '=', user.id)], limit=1)
|
||||
if employee:
|
||||
custom_values['employee_id'] = employee and employee[0].id
|
||||
return super(HrEquipmentRequest, self).message_new(msg, custom_values=custom_values)
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
<field name="category_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="owner_user_id"/>
|
||||
<field name="stage_id"/>
|
||||
<separator/>
|
||||
<filter string="My Requests" domain="['|', ('employee_id.user_id', '=', uid), ('department_id.manager_id.user_id', '=', uid)]"/>
|
||||
<filter string="My Requests" name="my_requests" domain="[('owner_user_id', '=', uid)]"/>
|
||||
<separator/>
|
||||
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/>
|
||||
<separator/>
|
||||
@@ -23,7 +23,7 @@
|
||||
<filter string='Users' domain="[]" context="{'group_by': 'user_id'}"/>
|
||||
<filter string='Category' domain="[]" context="{'group_by' : 'category_id'}"/>
|
||||
<filter string='Stages' domain="[]" context="{'group_by' : 'stage_id'}"/>
|
||||
<filter string='Employee' domain="[]" context="{'group_by': 'employee_id'}"/>
|
||||
<filter string='Created By' name='created_by' domain="[]" context="{'group_by': 'owner_user_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -54,7 +54,7 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_id" string="Sender"/>
|
||||
<field name="owner_user_id" string="Requested By"/>
|
||||
<field name="equipment_id" context="{'default_category_id':category_id}"/>
|
||||
<field name="category_id" groups="base.group_hr_manager"/>
|
||||
<field name="request_date" groups="base.group_no_one"/>
|
||||
@@ -83,7 +83,9 @@
|
||||
<field name="stage_id"/>
|
||||
<field name="color"/>
|
||||
<field name="priority"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="owner_user_id"/>
|
||||
<field name="category_id"/>
|
||||
<field name="kanban_state"/>
|
||||
<field name="message_needaction_counter"/>
|
||||
@@ -110,8 +112,7 @@
|
||||
<div class="oe_kanban_content" tooltip="kanban-tooltip">
|
||||
<div>
|
||||
<b><field name="name"/></b> <br/>
|
||||
<span t-if="record.employee_id.raw_value"><field name="employee_id"/><br/></span>
|
||||
<span t-if="record.department_id.raw_value"><field name="department_id"/><br/></span>
|
||||
<span name="owner_user_id" t-if="record.owner_user_id.raw_value"><field name="owner_user_id"/><br/></span>
|
||||
<span class="oe_grey" t-if="record.equipment_id.raw_value"><field name="equipment_id"/><br/></span>
|
||||
</div>
|
||||
<div class="oe_kanban_footer_left" style="margin-top:2px;">
|
||||
@@ -121,7 +122,7 @@
|
||||
<span t-if="record.category_id.raw_value"><field name="category_id"/></span>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.owner_user_id.raw_value)" t-att-title="record.owner_user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<div class="pull-left" groups="base.group_user">
|
||||
<field name="kanban_state" widget="kanban_state_selection"/>
|
||||
<field name="priority" widget="priority"/>
|
||||
@@ -145,7 +146,7 @@
|
||||
<field name="name"/>
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="request_date" groups="base.group_no_one"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="owner_user_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="category_id" groups="base.group_hr_manager"/>
|
||||
<field name="stage_id"/>
|
||||
@@ -226,9 +227,7 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="equipment_assign_to" widget="radio"/>
|
||||
<field name="employee_id" string="Employee" attrs="{'invisible': ['|', ('equipment_assign_to', '=', 'department'), ('equipment_assign_to', '=', False)]}"/>
|
||||
<field name="department_id" string="Department" attrs="{'invisible': ['|', ('equipment_assign_to', '=', 'employee'), ('equipment_assign_to', '=', False)]}"/>
|
||||
<field name="owner_user_id" string="Owner"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="user_id"/>
|
||||
@@ -271,6 +270,7 @@
|
||||
<field name="name"/>
|
||||
<field name="color"/>
|
||||
<field name="user_id"/>
|
||||
<field name="owner_user_id"/>
|
||||
<field name="category_id"/>
|
||||
<field name="serial_no"/>
|
||||
<field name="model"/>
|
||||
@@ -300,12 +300,11 @@
|
||||
<div><b><field name="name"/><span t-if="record.model.raw_value"> (<field name="model"/>)</span></b></div>
|
||||
<div class="mt4">
|
||||
<div t-if="record.serial_no.raw_value"><field name="serial_no"/></div>
|
||||
<div t-if="!record.employee_id.raw_value and !record.department_id.raw_value">Unassigned</div>
|
||||
<div t-if="record.employee_id.raw_value"><field name="employee_id"/></div>
|
||||
<div t-if="record.department_id.raw_value"><field name="department_id"/></div>
|
||||
<div t-if="!record.owner_user_id.raw_value">Unassigned</div>
|
||||
<div t-if="record.owner_user_id.raw_value"><field name="owner_user_id"/></div>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<img t-att-src="kanban_image('hr.employee', 'image_small', record.employee_id.raw_value)" t-att-title="record.employee_id.value" width="27" height="27" class="oe_kanban_avatar"/>
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.owner_user_id.raw_value)" t-att-title="record.owner_user_id.value" width="27" height="27" class="oe_kanban_avatar"/>
|
||||
</div>
|
||||
<div class="oe_kanban_footer_left mt4 label label-danger" t-if="record.maintenance_open_count.raw_value" >
|
||||
<t t-raw="record.maintenance_open_count.raw_value"/> Request
|
||||
@@ -327,8 +326,7 @@
|
||||
<field name="message_needaction" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="employee_id" string="Employee"/>
|
||||
<field name="department_id" string="Department"/>
|
||||
<field name="owner_user_id" string="Owner"/>
|
||||
<field name="assign_date" groups="base.group_no_one"/>
|
||||
<field name="serial_no"/>
|
||||
<field name="user_id"/>
|
||||
@@ -345,14 +343,13 @@
|
||||
<search string="Search">
|
||||
<field name="name" filter_domain="['|','|','|',('name','ilike',self),('model','ilike',self),('serial_no','ilike',self),('partner_ref', 'ilike', self)]"/>
|
||||
<field name="category_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="owner_user_id"/>
|
||||
<filter string="Under Maintenance" domain="[('maintenance_open_count', '>', 0)]"/>
|
||||
<separator/>
|
||||
<filter string="Assigned" domain="['|', ('employee_id', '!=', False), ('department_id', '!=', False)]"/>
|
||||
<filter string="Available" domain="[('employee_id', '=', False), ('department_id', '=', False)]"/>
|
||||
<filter string="Assigned" name="assigned" domain="[('owner_user_id', '!=', False)]"/>
|
||||
<filter string="Available" name="available" domain="[('owner_user_id', '=', False)]"/>
|
||||
<separator/>
|
||||
<filter string="My Equipments" domain="[('employee_id.user_id', '=', uid)]"/>
|
||||
<filter string="My Equipments" name="my" domain="[('owner_user_id', '=', uid)]"/>
|
||||
<separator/>
|
||||
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/>
|
||||
<separator/>
|
||||
@@ -360,9 +357,7 @@
|
||||
<group expand='0' string='Group by...'>
|
||||
<filter string='Users' domain="[]" context="{'group_by': 'user_id'}"/>
|
||||
<filter string='Category' domain="[]" context="{'group_by': 'category_id'}"/>
|
||||
<filter string='Assigned to' help="Assigned to Employees and Departments" domain="[]" context="{'group_by': 'equipment_assign_to'}"/>
|
||||
<filter string='Department' help="Assigned to Departments" domain="[]" context="{'group_by': 'department_id'}"/>
|
||||
<filter string='Employee' help="Assigned to Employees" domain="[]" context="{'group_by': 'employee_id'}"/>
|
||||
<filter string='Owner' domain="[]" context="{'group_by': 'owner_user_id'}"/>
|
||||
<filter string='Vendor' domain="[]" context="{'group_by': 'partner_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
|
||||
Reference in New Issue
Block a user