Align FSM modules with Odoo instructions requirements

This commit is contained in:
Ruslan Bakiev
2026-02-13 16:44:40 +07:00
parent fa145350ca
commit 86f87ec1c9
38 changed files with 505 additions and 181 deletions

View File

@@ -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,
}

View File

@@ -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})

View 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>

View File

@@ -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 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_repair_material_user repair.material user model_repair_material base.group_user dsrpt_repair_materials.group_dsrpt_repair_materials_user 1 1 1 1 0
3 access_repair_material_manager repair.material manager model_repair_material dsrpt_repair_materials.group_dsrpt_repair_materials_manager 1 1 1 1

View File

@@ -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>

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>