Align FSM modules with Odoo instructions requirements
This commit is contained in:
@@ -5,11 +5,15 @@
|
||||
"category": "Services",
|
||||
"author": "DisruptLab",
|
||||
"license": "LGPL-3",
|
||||
"depends": ["base"],
|
||||
"depends": ["base", "mail"],
|
||||
"data": [
|
||||
"security/groups.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"views/repair_fsm_zone_view_list.xml",
|
||||
"views/repair_fsm_zone_view_form.xml",
|
||||
"views/repair_fsm_zone_view_kanban.xml",
|
||||
"views/repair_fsm_zone_action_main.xml",
|
||||
"views/menu.xml",
|
||||
"views/fsm_zone_views.xml",
|
||||
],
|
||||
"installable": True,
|
||||
"application": True,
|
||||
|
||||
@@ -5,7 +5,30 @@ class RepairFsmZone(models.Model):
|
||||
_name = "repair.fsm.zone"
|
||||
_description = "FSM Zone"
|
||||
_order = "name"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
|
||||
name = fields.Char(required=True)
|
||||
code = fields.Char()
|
||||
active = fields.Boolean(default=True)
|
||||
name = fields.Char(required=True, tracking=True)
|
||||
code = fields.Char(tracking=True)
|
||||
state = fields.Selection(
|
||||
selection=[
|
||||
("draft", "Draft"),
|
||||
("active", "Active"),
|
||||
("archived", "Archived"),
|
||||
],
|
||||
default="draft",
|
||||
tracking=True,
|
||||
group_expand="_group_expand_states",
|
||||
)
|
||||
active = fields.Boolean(default=True, tracking=True)
|
||||
|
||||
def _group_expand_states(self, states, domain, order):
|
||||
return [key for key, _label in self._fields["state"].selection]
|
||||
|
||||
def action_set_active(self):
|
||||
self.write({"state": "active", "active": True})
|
||||
|
||||
def action_archive(self):
|
||||
self.write({"state": "archived", "active": False})
|
||||
|
||||
def action_reset_draft(self):
|
||||
self.write({"state": "draft", "active": True})
|
||||
|
||||
13
odoo/addons/dsrpt_repair_config/security/groups.xml
Normal file
13
odoo/addons/dsrpt_repair_config/security/groups.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="group_dsrpt_repair_config_user" model="res.groups">
|
||||
<field name="name">Repair Config User</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
</record>
|
||||
|
||||
<record id="group_dsrpt_repair_config_manager" model="res.groups">
|
||||
<field name="name">Repair Config Manager</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_dsrpt_repair_config_user'))]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,2 +1,3 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_repair_fsm_zone_user,repair.fsm.zone user,model_repair_fsm_zone,base.group_user,1,1,1,1
|
||||
access_repair_fsm_zone_user,repair.fsm.zone user,model_repair_fsm_zone,dsrpt_repair_config.group_dsrpt_repair_config_user,1,1,1,0
|
||||
access_repair_fsm_zone_manager,repair.fsm.zone manager,model_repair_fsm_zone,dsrpt_repair_config.group_dsrpt_repair_config_manager,1,1,1,1
|
||||
|
||||
|
@@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_fsm_zone_tree" model="ir.ui.view">
|
||||
<field name="name">repair.fsm.zone.tree</field>
|
||||
<field name="model">repair.fsm.zone</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="active"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_repair_fsm_zone_form" model="ir.ui.view">
|
||||
<field name="name">repair.fsm.zone.form</field>
|
||||
<field name="model">repair.fsm.zone</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_repair_fsm_zone" model="ir.actions.act_window">
|
||||
<field name="name">FSM Zones</field>
|
||||
<field name="res_model">repair.fsm.zone</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_repair_fsm_zone" name="FSM Zones" parent="dsrpt_repair_config.menu_repair_root" action="action_repair_fsm_zone" sequence="10"/>
|
||||
</odoo>
|
||||
@@ -1,5 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<menuitem id="menu_repair_root" name="Configuration" sequence="10"/>
|
||||
<record id="menu_repair_root" model="ir.ui.menu">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="sequence">10</field>
|
||||
</record>
|
||||
|
||||
<delete id="menu_repair_configuration" model="ir.ui.menu"/>
|
||||
|
||||
<record id="menu_repair_fsm_zone" model="ir.ui.menu">
|
||||
<field name="name">FSM Zones</field>
|
||||
<field name="parent_id" ref="dsrpt_repair_config.menu_repair_root"/>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_fsm_zone')"/>
|
||||
<field name="sequence">10</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="action_repair_fsm_zone" model="ir.actions.act_window">
|
||||
<field name="name">FSM Zones</field>
|
||||
<field name="res_model">repair.fsm.zone</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_fsm_zone_form" model="ir.ui.view">
|
||||
<field name="name">repair.fsm.zone.form</field>
|
||||
<field name="model">repair.fsm.zone</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="action_set_active" type="object" string="Set Active" class="btn-primary" invisible="state == 'active'"/>
|
||||
<button name="action_archive" type="object" string="Archive" invisible="state == 'archived'"/>
|
||||
<button name="action_reset_draft" type="object" string="Reset to Draft" invisible="state == 'draft'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,active,archived" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_fsm_zone_kanban" model="ir.ui.view">
|
||||
<field name="name">repair.fsm.zone.kanban</field>
|
||||
<field name="model">repair.fsm.zone</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="state">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="state"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_record_title">
|
||||
<strong><field name="name"/></strong>
|
||||
</div>
|
||||
<div>
|
||||
<field name="code"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_fsm_zone_list" model="ir.ui.view">
|
||||
<field name="name">repair.fsm.zone.list</field>
|
||||
<field name="model">repair.fsm.zone</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="code" optional="show"/>
|
||||
<field name="state" widget="badge" optional="show"/>
|
||||
<field name="active" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -5,10 +5,15 @@
|
||||
"category": "Services",
|
||||
"author": "DisruptLab",
|
||||
"license": "LGPL-3",
|
||||
"depends": ["base"],
|
||||
"depends": ["base", "mail"],
|
||||
"data": [
|
||||
"security/groups.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"views/material_views.xml",
|
||||
"views/repair_material_view_list.xml",
|
||||
"views/repair_material_view_form.xml",
|
||||
"views/repair_material_view_kanban.xml",
|
||||
"views/repair_material_action_main.xml",
|
||||
"views/menu.xml",
|
||||
],
|
||||
"installable": True,
|
||||
}
|
||||
|
||||
@@ -5,9 +5,32 @@ class RepairMaterial(models.Model):
|
||||
_name = "repair.material"
|
||||
_description = "Repair Material"
|
||||
_order = "name"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
|
||||
name = fields.Char(required=True)
|
||||
default_code = fields.Char(string="Code")
|
||||
uom_name = fields.Char(string="UoM", default="pcs")
|
||||
standard_cost = fields.Float(string="Cost")
|
||||
active = fields.Boolean(default=True)
|
||||
name = fields.Char(required=True, tracking=True)
|
||||
default_code = fields.Char(string="Code", tracking=True)
|
||||
uom_name = fields.Char(string="UoM", default="pcs", tracking=True)
|
||||
standard_cost = fields.Float(string="Cost", tracking=True)
|
||||
state = fields.Selection(
|
||||
selection=[
|
||||
("draft", "Draft"),
|
||||
("active", "Active"),
|
||||
("archived", "Archived"),
|
||||
],
|
||||
default="draft",
|
||||
tracking=True,
|
||||
group_expand="_group_expand_states",
|
||||
)
|
||||
active = fields.Boolean(default=True, tracking=True)
|
||||
|
||||
def _group_expand_states(self, states, domain, order):
|
||||
return [key for key, _label in self._fields["state"].selection]
|
||||
|
||||
def action_set_active(self):
|
||||
self.write({"state": "active", "active": True})
|
||||
|
||||
def action_archive(self):
|
||||
self.write({"state": "archived", "active": False})
|
||||
|
||||
def action_reset_draft(self):
|
||||
self.write({"state": "draft", "active": True})
|
||||
|
||||
13
odoo/addons/dsrpt_repair_materials/security/groups.xml
Normal file
13
odoo/addons/dsrpt_repair_materials/security/groups.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="group_dsrpt_repair_materials_user" model="res.groups">
|
||||
<field name="name">Repair Materials User</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
</record>
|
||||
|
||||
<record id="group_dsrpt_repair_materials_manager" model="res.groups">
|
||||
<field name="name">Repair Materials Manager</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_dsrpt_repair_materials_user'))]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,2 +1,3 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_repair_material_user,repair.material user,model_repair_material,base.group_user,1,1,1,1
|
||||
access_repair_material_user,repair.material user,model_repair_material,dsrpt_repair_materials.group_dsrpt_repair_materials_user,1,1,1,0
|
||||
access_repair_material_manager,repair.material manager,model_repair_material,dsrpt_repair_materials.group_dsrpt_repair_materials_manager,1,1,1,1
|
||||
|
||||
|
@@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_material_tree" model="ir.ui.view">
|
||||
<field name="name">repair.material.tree</field>
|
||||
<field name="model">repair.material</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="default_code"/>
|
||||
<field name="uom_name"/>
|
||||
<field name="standard_cost"/>
|
||||
<field name="active"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_repair_material_form" model="ir.ui.view">
|
||||
<field name="name">repair.material.form</field>
|
||||
<field name="model">repair.material</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="default_code"/>
|
||||
<field name="uom_name"/>
|
||||
<field name="standard_cost"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_repair_material" model="ir.actions.act_window">
|
||||
<field name="name">Materials</field>
|
||||
<field name="res_model">repair.material</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="menu_repair_materials" model="ir.ui.menu">
|
||||
<field name="name">Materials</field>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_material')"/>
|
||||
<field name="sequence">40</field>
|
||||
<field name="parent_id" eval="False"/>
|
||||
</record>
|
||||
</odoo>
|
||||
9
odoo/addons/dsrpt_repair_materials/views/menu.xml
Normal file
9
odoo/addons/dsrpt_repair_materials/views/menu.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="menu_repair_materials" model="ir.ui.menu">
|
||||
<field name="name">Materials</field>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_material')"/>
|
||||
<field name="sequence">40</field>
|
||||
<field name="parent_id" eval="False"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="action_repair_material" model="ir.actions.act_window">
|
||||
<field name="name">Materials</field>
|
||||
<field name="res_model">repair.material</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_material_form" model="ir.ui.view">
|
||||
<field name="name">repair.material.form</field>
|
||||
<field name="model">repair.material</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="action_set_active" type="object" string="Set Active" class="btn-primary" invisible="state == 'active'"/>
|
||||
<button name="action_archive" type="object" string="Archive" invisible="state == 'archived'"/>
|
||||
<button name="action_reset_draft" type="object" string="Reset to Draft" invisible="state == 'draft'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,active,archived" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="default_code"/>
|
||||
<field name="uom_name"/>
|
||||
<field name="standard_cost"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_material_kanban" model="ir.ui.view">
|
||||
<field name="name">repair.material.kanban</field>
|
||||
<field name="model">repair.material</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="state">
|
||||
<field name="name"/>
|
||||
<field name="default_code"/>
|
||||
<field name="standard_cost"/>
|
||||
<field name="state"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_record_title">
|
||||
<strong><field name="name"/></strong>
|
||||
</div>
|
||||
<div>
|
||||
<field name="default_code"/>
|
||||
</div>
|
||||
<div>
|
||||
Cost: <field name="standard_cost"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_material_list" model="ir.ui.view">
|
||||
<field name="name">repair.material.list</field>
|
||||
<field name="model">repair.material</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="default_code" optional="show"/>
|
||||
<field name="uom_name" optional="show"/>
|
||||
<field name="standard_cost" optional="show"/>
|
||||
<field name="state" widget="badge" optional="show"/>
|
||||
<field name="active" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -5,10 +5,15 @@
|
||||
"category": "Services",
|
||||
"author": "DisruptLab",
|
||||
"license": "LGPL-3",
|
||||
"depends": ["base", "dsrpt_repair_config"],
|
||||
"depends": ["base", "mail", "dsrpt_repair_config"],
|
||||
"data": [
|
||||
"security/groups.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"views/technician_views.xml",
|
||||
"views/repair_technician_view_list.xml",
|
||||
"views/repair_technician_view_form.xml",
|
||||
"views/repair_technician_view_kanban.xml",
|
||||
"views/repair_technician_action_main.xml",
|
||||
"views/menu.xml",
|
||||
],
|
||||
"installable": True,
|
||||
}
|
||||
|
||||
@@ -6,14 +6,37 @@ class RepairTechnician(models.Model):
|
||||
_name = "repair.technician"
|
||||
_description = "Repair Technician"
|
||||
_order = "name"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
|
||||
name = fields.Char(required=True)
|
||||
user_id = fields.Many2one("res.users", string="User")
|
||||
zone_ids = fields.Many2many("repair.fsm.zone", string="FSM Zones")
|
||||
active = fields.Boolean(default=True)
|
||||
name = fields.Char(required=True, tracking=True)
|
||||
user_id = fields.Many2one("res.users", string="User", tracking=True)
|
||||
zone_ids = fields.Many2many("repair.fsm.zone", string="FSM Zones", tracking=True)
|
||||
state = fields.Selection(
|
||||
selection=[
|
||||
("draft", "Draft"),
|
||||
("active", "Active"),
|
||||
("archived", "Archived"),
|
||||
],
|
||||
default="draft",
|
||||
tracking=True,
|
||||
group_expand="_group_expand_states",
|
||||
)
|
||||
active = fields.Boolean(default=True, tracking=True)
|
||||
schedule_ids = fields.One2many("repair.technician.schedule", "technician_id", string="Weekly Schedule")
|
||||
exception_ids = fields.One2many("repair.technician.exception", "technician_id", string="Exceptions")
|
||||
|
||||
def _group_expand_states(self, states, domain, order):
|
||||
return [key for key, _label in self._fields["state"].selection]
|
||||
|
||||
def action_set_active(self):
|
||||
self.write({"state": "active", "active": True})
|
||||
|
||||
def action_archive(self):
|
||||
self.write({"state": "archived", "active": False})
|
||||
|
||||
def action_reset_draft(self):
|
||||
self.write({"state": "draft", "active": True})
|
||||
|
||||
|
||||
class RepairTechnicianSchedule(models.Model):
|
||||
_name = "repair.technician.schedule"
|
||||
|
||||
13
odoo/addons/dsrpt_repair_technicians/security/groups.xml
Normal file
13
odoo/addons/dsrpt_repair_technicians/security/groups.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="group_dsrpt_repair_technicians_user" model="res.groups">
|
||||
<field name="name">Repair Technicians User</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
</record>
|
||||
|
||||
<record id="group_dsrpt_repair_technicians_manager" model="res.groups">
|
||||
<field name="name">Repair Technicians Manager</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_dsrpt_repair_technicians_user'))]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,4 +1,7 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_repair_technician_user,repair.technician user,model_repair_technician,base.group_user,1,1,1,1
|
||||
access_repair_technician_schedule_user,repair.technician.schedule user,model_repair_technician_schedule,base.group_user,1,1,1,1
|
||||
access_repair_technician_exception_user,repair.technician.exception user,model_repair_technician_exception,base.group_user,1,1,1,1
|
||||
access_repair_technician_user,repair.technician user,model_repair_technician,dsrpt_repair_technicians.group_dsrpt_repair_technicians_user,1,1,1,0
|
||||
access_repair_technician_manager,repair.technician manager,model_repair_technician,dsrpt_repair_technicians.group_dsrpt_repair_technicians_manager,1,1,1,1
|
||||
access_repair_technician_schedule_user,repair.technician.schedule user,model_repair_technician_schedule,dsrpt_repair_technicians.group_dsrpt_repair_technicians_user,1,1,1,0
|
||||
access_repair_technician_schedule_manager,repair.technician.schedule manager,model_repair_technician_schedule,dsrpt_repair_technicians.group_dsrpt_repair_technicians_manager,1,1,1,1
|
||||
access_repair_technician_exception_user,repair.technician.exception user,model_repair_technician_exception,dsrpt_repair_technicians.group_dsrpt_repair_technicians_user,1,1,1,0
|
||||
access_repair_technician_exception_manager,repair.technician.exception manager,model_repair_technician_exception,dsrpt_repair_technicians.group_dsrpt_repair_technicians_manager,1,1,1,1
|
||||
|
||||
|
9
odoo/addons/dsrpt_repair_technicians/views/menu.xml
Normal file
9
odoo/addons/dsrpt_repair_technicians/views/menu.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="menu_repair_technicians" model="ir.ui.menu">
|
||||
<field name="name">Technicians</field>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_technician')"/>
|
||||
<field name="sequence">30</field>
|
||||
<field name="parent_id" eval="False"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="action_repair_technician" model="ir.actions.act_window">
|
||||
<field name="name">Technicians</field>
|
||||
<field name="res_model">repair.technician</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,23 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_technician_tree" model="ir.ui.view">
|
||||
<field name="name">repair.technician.tree</field>
|
||||
<field name="model">repair.technician</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="zone_ids" widget="many2many_tags"/>
|
||||
<field name="active"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_repair_technician_form" model="ir.ui.view">
|
||||
<field name="name">repair.technician.form</field>
|
||||
<field name="model">repair.technician</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="action_set_active" type="object" string="Set Active" class="btn-primary" invisible="state == 'active'"/>
|
||||
<button name="action_archive" type="object" string="Archive" invisible="state == 'archived'"/>
|
||||
<button name="action_reset_draft" type="object" string="Reset to Draft" invisible="state == 'draft'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,active,archived" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
@@ -48,20 +41,8 @@
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_repair_technician" model="ir.actions.act_window">
|
||||
<field name="name">Technicians</field>
|
||||
<field name="res_model">repair.technician</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="menu_repair_technicians" model="ir.ui.menu">
|
||||
<field name="name">Technicians</field>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_technician')"/>
|
||||
<field name="sequence">30</field>
|
||||
<field name="parent_id" eval="False"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_technician_kanban" model="ir.ui.view">
|
||||
<field name="name">repair.technician.kanban</field>
|
||||
<field name="model">repair.technician</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="state">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="zone_ids"/>
|
||||
<field name="state"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_record_title">
|
||||
<strong><field name="name"/></strong>
|
||||
</div>
|
||||
<div>
|
||||
<field name="user_id"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="zone_ids" widget="many2many_tags"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_technician_list" model="ir.ui.view">
|
||||
<field name="name">repair.technician.list</field>
|
||||
<field name="model">repair.technician</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="user_id" optional="show"/>
|
||||
<field name="zone_ids" widget="many2many_tags" optional="show"/>
|
||||
<field name="state" widget="badge" optional="show"/>
|
||||
<field name="active" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -14,9 +14,14 @@
|
||||
"dsrpt_repair_materials",
|
||||
],
|
||||
"data": [
|
||||
"security/groups.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"data/sequence.xml",
|
||||
"views/work_order_views.xml",
|
||||
"views/repair_work_order_view_list.xml",
|
||||
"views/repair_work_order_view_form.xml",
|
||||
"views/repair_work_order_view_kanban.xml",
|
||||
"views/repair_work_order_action_main.xml",
|
||||
"views/menu.xml",
|
||||
],
|
||||
"installable": True,
|
||||
}
|
||||
|
||||
@@ -5,14 +5,14 @@ from odoo.exceptions import ValidationError
|
||||
class RepairWorkOrder(models.Model):
|
||||
_name = "repair.work.order"
|
||||
_description = "Repair Work Order"
|
||||
_inherit = ["mail.thread"]
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
_order = "id desc"
|
||||
|
||||
name = fields.Char(default="New", copy=False, readonly=True, tracking=True)
|
||||
contact_id = fields.Many2one("dsrpt.contact", required=True, tracking=True)
|
||||
zone_id = fields.Many2one("repair.fsm.zone", string="FSM Zone", tracking=True)
|
||||
description = fields.Text()
|
||||
requested_datetime = fields.Datetime(default=fields.Datetime.now)
|
||||
description = fields.Text(tracking=True)
|
||||
requested_datetime = fields.Datetime(default=fields.Datetime.now, tracking=True)
|
||||
scheduled_datetime = fields.Datetime(tracking=True)
|
||||
technician_id = fields.Many2one("repair.technician", tracking=True)
|
||||
assigned_user_id = fields.Many2one("res.users", related="technician_id.user_id", store=True)
|
||||
@@ -27,6 +27,7 @@ class RepairWorkOrder(models.Model):
|
||||
],
|
||||
default="draft",
|
||||
tracking=True,
|
||||
group_expand="_group_expand_states",
|
||||
)
|
||||
time_line_ids = fields.One2many("repair.work.order.time", "work_order_id", string="Time Logs")
|
||||
material_line_ids = fields.One2many("repair.work.order.material", "work_order_id", string="Material Logs")
|
||||
@@ -40,6 +41,9 @@ class RepairWorkOrder(models.Model):
|
||||
vals["name"] = self.env["ir.sequence"].next_by_code("repair.work.order") or "New"
|
||||
return super().create(vals_list)
|
||||
|
||||
def _group_expand_states(self, states, domain, order):
|
||||
return [key for key, _label in self._fields["state"].selection]
|
||||
|
||||
@api.depends("time_line_ids.hours", "material_line_ids.subtotal")
|
||||
def _compute_totals(self):
|
||||
for rec in self:
|
||||
|
||||
13
odoo/addons/dsrpt_repair_work_orders/security/groups.xml
Normal file
13
odoo/addons/dsrpt_repair_work_orders/security/groups.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="group_dsrpt_repair_work_orders_user" model="res.groups">
|
||||
<field name="name">Repair Work Orders User</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
</record>
|
||||
|
||||
<record id="group_dsrpt_repair_work_orders_manager" model="res.groups">
|
||||
<field name="name">Repair Work Orders Manager</field>
|
||||
<field name="category_id" ref="base.module_category_services"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_dsrpt_repair_work_orders_user'))]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,4 +1,7 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_repair_work_order_user,repair.work.order user,model_repair_work_order,base.group_user,1,1,1,1
|
||||
access_repair_work_order_time_user,repair.work.order.time user,model_repair_work_order_time,base.group_user,1,1,1,1
|
||||
access_repair_work_order_material_user,repair.work.order.material user,model_repair_work_order_material,base.group_user,1,1,1,1
|
||||
access_repair_work_order_user,repair.work.order user,model_repair_work_order,dsrpt_repair_work_orders.group_dsrpt_repair_work_orders_user,1,1,1,0
|
||||
access_repair_work_order_manager,repair.work.order manager,model_repair_work_order,dsrpt_repair_work_orders.group_dsrpt_repair_work_orders_manager,1,1,1,1
|
||||
access_repair_work_order_time_user,repair.work.order.time user,model_repair_work_order_time,dsrpt_repair_work_orders.group_dsrpt_repair_work_orders_user,1,1,1,0
|
||||
access_repair_work_order_time_manager,repair.work.order.time manager,model_repair_work_order_time,dsrpt_repair_work_orders.group_dsrpt_repair_work_orders_manager,1,1,1,1
|
||||
access_repair_work_order_material_user,repair.work.order.material user,model_repair_work_order_material,dsrpt_repair_work_orders.group_dsrpt_repair_work_orders_user,1,1,1,0
|
||||
access_repair_work_order_material_manager,repair.work.order.material manager,model_repair_work_order_material,dsrpt_repair_work_orders.group_dsrpt_repair_work_orders_manager,1,1,1,1
|
||||
|
||||
|
9
odoo/addons/dsrpt_repair_work_orders/views/menu.xml
Normal file
9
odoo/addons/dsrpt_repair_work_orders/views/menu.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="menu_repair_work_orders" model="ir.ui.menu">
|
||||
<field name="name">Work Orders</field>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_work_order')"/>
|
||||
<field name="sequence">20</field>
|
||||
<field name="parent_id" eval="False"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="action_repair_work_order" model="ir.actions.act_window">
|
||||
<field name="name">Work Orders</field>
|
||||
<field name="res_model">repair.work.order</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,35 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_work_order_tree" model="ir.ui.view">
|
||||
<field name="name">repair.work.order.tree</field>
|
||||
<field name="model">repair.work.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="contact_id"/>
|
||||
<field name="zone_id"/>
|
||||
<field name="scheduled_datetime"/>
|
||||
<field name="technician_id"/>
|
||||
<field name="state"/>
|
||||
<field name="total_time_hours"/>
|
||||
<field name="total_material_cost"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_repair_work_order_form" model="ir.ui.view">
|
||||
<field name="name">repair.work.order.form</field>
|
||||
<field name="model">repair.work.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="action_confirm" type="object" string="Confirm" invisible="state != 'draft'" class="btn-primary"/>
|
||||
<button name="action_assign_to_me" type="object" string="Assign to me" invisible="state not in ('confirmed','assigned')" class="btn-primary"/>
|
||||
<button name="action_confirm" type="object" string="Confirm" class="btn-primary" invisible="state != 'draft'"/>
|
||||
<button name="action_assign_to_me" type="object" string="Assign to me" class="btn-primary" invisible="state not in ('confirmed','assigned')"/>
|
||||
<button name="action_start" type="object" string="Start" invisible="state != 'assigned'"/>
|
||||
<button name="action_done" type="object" string="Done" invisible="state not in ('in_progress','assigned')" class="btn-primary"/>
|
||||
<button name="action_done" type="object" string="Done" class="btn-primary" invisible="state not in ('in_progress','assigned')"/>
|
||||
<button name="action_cancel" type="object" string="Cancel" invisible="state in ('done','cancelled')"/>
|
||||
<button name="action_reset_draft" type="object" string="Reset to Draft" invisible="state == 'draft'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirmed,assigned,in_progress,done,cancelled"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirmed,assigned,in_progress,done,cancelled" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
@@ -79,22 +62,4 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_repair_work_order" model="ir.actions.act_window">
|
||||
<field name="name">Work Orders</field>
|
||||
<field name="res_model">repair.work.order</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="menu_repair_work_orders" model="ir.ui.menu">
|
||||
<field name="name">Work Orders</field>
|
||||
<field name="action" eval="'ir.actions.act_window,%d' % ref('action_repair_work_order')"/>
|
||||
<field name="sequence">20</field>
|
||||
<field name="parent_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
<function model="ir.ui.menu" name="write">
|
||||
<value model="ir.ui.menu" search="[('id', '=', ref('menu_repair_work_orders'))]"/>
|
||||
<value eval="{'parent_id': False}"/>
|
||||
</function>
|
||||
</odoo>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_work_order_kanban" model="ir.ui.view">
|
||||
<field name="name">repair.work.order.kanban</field>
|
||||
<field name="model">repair.work.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="state">
|
||||
<field name="name"/>
|
||||
<field name="contact_id"/>
|
||||
<field name="scheduled_datetime"/>
|
||||
<field name="technician_id"/>
|
||||
<field name="state"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="o_kanban_record_title">
|
||||
<strong><field name="name"/></strong>
|
||||
</div>
|
||||
<div>
|
||||
<field name="contact_id"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="scheduled_datetime"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="technician_id"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="view_repair_work_order_list" model="ir.ui.view">
|
||||
<field name="name">repair.work.order.list</field>
|
||||
<field name="model">repair.work.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="contact_id" optional="show"/>
|
||||
<field name="zone_id" optional="show"/>
|
||||
<field name="scheduled_datetime" optional="show"/>
|
||||
<field name="technician_id" optional="show"/>
|
||||
<field name="state" widget="badge" optional="show"/>
|
||||
<field name="total_time_hours" optional="show"/>
|
||||
<field name="total_material_cost" optional="show"/>
|
||||
<field name="assigned_user_id" optional="hide"/>
|
||||
<field name="requested_datetime" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user