Add the notion of components to fsm_equipment.

This commit is contained in:
Marc Durepos 2024-08-22 15:10:47 -04:00
parent 7ad197e639
commit 629eb83d57
7 changed files with 98 additions and 21 deletions

View file

@ -19,7 +19,7 @@
#
{
"name": "FSM Equipment",
"version": "17.0.0.1.0",
"version": "17.0.0.1.1",
"summary": "Add the notion of client equipment for Field Service",
"category": "Services/Field Service",
"author": "Bemade Inc.",

View file

@ -1,3 +1,4 @@
from . import equipment_tag
from . import equipment
from . import res_partner
from . import equipment_component

View file

@ -43,7 +43,16 @@ class Equipment(models.Model):
string="Interventions",
)
active = fields.Boolean(default=True)
active = fields.Boolean(
default=True,
tracking=True,
)
equipment_component_ids = fields.One2many(
"fsm.equipment.component",
inverse_name="equipment_id",
tracking=True,
)
@api.model
def name_search(self, name="", args=None, operator="ilike", limit=100):

View file

@ -0,0 +1,34 @@
from odoo import models, fields, api
class EquipmentComponent(models.Model):
_name = "fsm.equipment.component"
_description = "Equipment Component"
sequence = fields.Integer()
name = fields.Char()
product_id = fields.Many2one(
"product.product",
ondelete="cascade",
)
purpose_id = fields.Many2one(
"fsm.equipment.component.purpose",
ondelete="restrict",
)
equipment_id = fields.Many2one(
"fsm.equipment",
ondelete="cascade",
)
note = fields.Text()
@api.onchange("product_id")
def onchange_product_id(self):
for rec in self:
rec.name = rec.product_id.display_name
class EquipmentComponentPurpose(models.Model):
_name = "fsm.equipment.component.purpose"
_description = "Component Purpose"
name = fields.Char(translate=True)

View file

@ -1,3 +1,6 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_fsm_equipment,fsm_equipment,model_fsm_equipment,base.group_user,1,1,1,1
access_fsm_equipment_tag,fsm_equipment_tag,model_fsm_equipment_tag,base.group_user,1,1,1,1
access_fsm_equipment_component,fsm_equipment_component,model_fsm_equipment_component,industry_fsm.group_fsm_user,1,1,1,1
access_fsm_equipment_component_purpose_user,access_fsm_equipment_component_purpose_user,model_fsm_equipment_component_purpose,industry_fsm.group_fsm_user,1,0,0,0
access_fsm_equipment_component_purpose_manager,access_fsm_equipment_component_purpose_manager,model_fsm_equipment_component_purpose,industry_fsm.group_fsm_manager,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_fsm_equipment fsm_equipment model_fsm_equipment base.group_user 1 1 1 1
3 access_fsm_equipment_tag fsm_equipment_tag model_fsm_equipment_tag base.group_user 1 1 1 1
4 access_fsm_equipment_component fsm_equipment_component model_fsm_equipment_component industry_fsm.group_fsm_user 1 1 1 1
5 access_fsm_equipment_component_purpose_user access_fsm_equipment_component_purpose_user model_fsm_equipment_component_purpose industry_fsm.group_fsm_user 1 0 0 0
6 access_fsm_equipment_component_purpose_manager access_fsm_equipment_component_purpose_manager model_fsm_equipment_component_purpose industry_fsm.group_fsm_manager 1 1 1 1

View file

@ -32,6 +32,17 @@
</group>
</group>
<notebook>
<page string="Components">
<field name="equipment_component_ids">
<tree editable="bottom">
<field name="sequence" widget="handle" />
<field name="name" />
<field name="product_id" />
<field name="purpose_id" />
<field name="note" />
</tree>
</field>
</page>
<page string="Interventions">
<field name="task_ids" groupby="root_ancestor" />
</page>
@ -49,6 +60,24 @@
<record id="equipment_view_tree" model="ir.ui.view">
<field name="name">fsm.equipment.tree</field>
<field name="model">fsm.equipment</field>
<field name="arch" type="xml">
<tree>
<field name="code" />
<field name="name" />
<field name="description" />
<field
name="tag_ids"
widget="many2many_tags"
options="{'no_open': False}"
/>
<field name="partner_id" />
</tree>
</field>
</record>
<record id="equipment_view_tree_editable" model="ir.ui.view">
<field name="name">fsm.equipment.tree.editable</field>
<field name="model">fsm.equipment</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="code" />
@ -60,6 +89,12 @@
options="{'no_open': False}"
/>
<field name="partner_id" />
<button
name="action_view_equipment"
type="object"
string="Details"
icon="fa-external-link"
/>
</tree>
</field>
</record>

View file

@ -7,23 +7,6 @@
<field name="context">{'default_partner_location_id': active_id}</field>
<field name="domain">[("partner_id", "=", active_id)]</field>
</record>
<record id="fsm_equipment_view_tree" model="ir.ui.view">
<field name="name">fsm.equipment.tree</field>
<field name="model">fsm.equipment</field>
<field name="arch" type="xml">
<tree>
<field name="code" />
<field name="name" />
<field name="location_notes" />
<button
name="action_view_equipment"
type="object"
string="Details"
icon="fa-external-link"
/>
</tree>
</field>
</record>
<record id="partner_equipment_location_view_form" model="ir.ui.view">
<field name="name">bemade_fsm.partner.equipment.location.form</field>
<field name="model">res.partner</field>
@ -31,14 +14,16 @@
<field name="arch" type="xml">
<xpath expr="//page[@name='internal_notes']" position="before">
<page name="equipment" string="Equipment">
<label for="equipment_ids" />
<field
name="equipment_ids"
context="{'tree_view_ref': 'fsm_equipment.fsm_equipment_view_tree'}"
context="{'tree_view_ref': 'fsm_equipment.fsm_equipment_view_tree_editable_no_partner'}"
readonly="False"
/>
<label for="owned_equipment_ids" />
<field
name="owned_equipment_ids"
context="{'tree_view_ref': 'fsm_equipment.fsm_equipment_view_tree'}"
context="{'tree_view_ref': 'fsm_equipment.equipment_view_tree'}"
readonly="True"
/>
</page>
@ -59,4 +44,14 @@
</div>
</field>
</record>
<record id="fsm_equipment_view_tree_editable_no_partner" model="ir.ui.view">
<field name="name">fsm.equipment.view.tree.editable.no.partner</field>
<field name="inherit_id" ref="fsm_equipment.equipment_view_tree_editable" />
<field name="model">fsm.equipment</field>
<field name="arch" type="xml">
<field name="partner_id" position="attributes">
<attribute name="column_invisible">True</attribute>
</field>
</field>
</record>
</odoo>