diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/maintenance/views | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/maintenance/views')
| -rw-r--r-- | addons/maintenance/views/mail_activity_views.xml | 16 | ||||
| -rw-r--r-- | addons/maintenance/views/maintenance_templates.xml | 8 | ||||
| -rw-r--r-- | addons/maintenance/views/maintenance_views.xml | 1068 |
3 files changed, 1092 insertions, 0 deletions
diff --git a/addons/maintenance/views/mail_activity_views.xml b/addons/maintenance/views/mail_activity_views.xml new file mode 100644 index 00000000..4ca8addc --- /dev/null +++ b/addons/maintenance/views/mail_activity_views.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<odoo> + <!-- Activity types config --> + <record id="mail_activity_type_action_config_maintenance" model="ir.actions.act_window"> + <field name="name">Activity Types</field> + <field name="res_model">mail.activity.type</field> + <field name="view_mode">tree,form</field> + <field name="domain">['|', ('res_model_id', '=', False), ('res_model_id.model', '=', 'maintenance.request')]</field> + <field name="context">{'default_res_model': 'maintenance.request'}</field> + </record> + <menuitem id="maintenance_menu_config_activity_type" + action="mail_activity_type_action_config_maintenance" + parent="menu_maintenance_configuration" + sequence="20" + groups="base.group_no_one"/> +</odoo>
\ No newline at end of file diff --git a/addons/maintenance/views/maintenance_templates.xml b/addons/maintenance/views/maintenance_templates.xml new file mode 100644 index 00000000..b6ca68f3 --- /dev/null +++ b/addons/maintenance/views/maintenance_templates.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <template id="assets_backend" name="maintenance assets" inherit_id="web.assets_backend"> + <xpath expr="." position="inside"> + <link rel="stylesheet" type="text/scss" href="/maintenance/static/src/scss/maintenance_team_dashboard.scss"/> + </xpath> + </template> +</odoo> diff --git a/addons/maintenance/views/maintenance_views.xml b/addons/maintenance/views/maintenance_views.xml new file mode 100644 index 00000000..8cf92ada --- /dev/null +++ b/addons/maintenance/views/maintenance_views.xml @@ -0,0 +1,1068 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <!-- equiment.request : views --> + <record id="hr_equipment_request_view_search" model="ir.ui.view"> + <field name="name">equipment.request.search</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <search string="Maintenance Request Search"> + <field name="name" string="Request"/> + <field name="category_id"/> + <field name="user_id"/> + <field name="equipment_id"/> + <field name="owner_user_id"/> + <field name="stage_id"/> + <field name="maintenance_team_id"/> + <filter string="My Maintenances" name="my_maintenances" domain="[('user_id', '=', uid)]"/> + <separator/> + <filter string="To Do" name="todo" domain="[('stage_id.done', '=', False)]"/> + <separator/> + <filter string="Blocked" name="kanban_state_block" domain="[('kanban_state', '=', 'blocked')]"/> + <filter string="Ready" name="done" domain="[('kanban_state', '=', 'done')]"/> + <separator/> + <filter string="High-priority" name="high_priority" domain="[('priority', '=', '3')]"/> + <separator/> + <filter string="Unscheduled" name="unscheduled" domain="[('schedule_date', '=', False)]"/> + <separator/> + <filter name="filter_request_date" date="request_date"/> + <filter name="filter_schedule_date" date="schedule_date"/> + <filter name="filter_close_date" date="close_date"/> + <separator/> + <filter string="Unread Messages" name="message_needaction" domain="[('message_needaction', '=', True)]"/> + <separator/> + <filter invisible="1" string="Late Activities" name="activities_overdue" + domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]" + help="Show all records which has next action date is before today"/> + <filter invisible="1" string="Today Activities" name="activities_today" + domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/> + <filter invisible="1" string="Future Activities" name="activities_upcoming_all" + domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/> + <separator/> + <filter string="Archived" name="inactive" domain="[('archive', '=', True)]"/> + <group expand='0' string='Group by...'> + <filter string='Assigned to' name="assigned" domain="[]" context="{'group_by': 'user_id'}"/> + <filter string='Category' name="category" domain="[]" context="{'group_by' : 'category_id'}"/> + <filter string='Stage' name="stages" domain="[]" context="{'group_by' : 'stage_id'}"/> + <filter string='Created By' name='created_by' domain="[]" context="{'group_by': 'owner_user_id'}"/> + </group> + </search> + </field> + </record> + + <record id="hr_equipment_request_view_form" model="ir.ui.view"> + <field name="name">equipment.request.form</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <form string="Maintenance Request"> + <header> + <button string="Cancel" name="archive_equipment_request" type="object" attrs="{'invisible': [('archive', '=', True)]}"/> + <button string="Reopen Request" name="reset_equipment_request" type="object" attrs="{'invisible': [('archive', '=', False)]}"/> + <field name="stage_id" widget="statusbar" options="{'clickable': '1'}" attrs="{'invisible': [('archive', '=', True)]}"/> + </header> + <sheet> + <div attrs="{'invisible': [('archive', '=', False)]}"> + <span class="badge badge-warning float-right">Canceled</span> + </div> + <div class="oe_right"> + <field name="kanban_state" class="oe_inline" widget="state_selection"/> + </div> + <div class="oe_title"> + <label for="name" class="oe_edit_only" string="Title"/> + <h1> + <field name="name" placeholder="Maintenance Request"/> + </h1> + </div> + <group> + <group> + <field name="owner_user_id" string="Requested By" invisible="1"/> + <field name="equipment_id" context="{'default_company_id':company_id, 'default_category_id':category_id}"/> + <field name="category_id" groups="maintenance.group_equipment_manager" context="{'default_company_id':company_id}" attrs="{'invisible': [('equipment_id', '=', False)]}"/> + <field name="request_date" readonly="True"/> + <field name="done" invisible="1"/> + <field name="close_date" attrs="{'invisible': [('done', '!=', True)]}" readonly="True"/> + <field name="archive" invisible="1"/> + <field name="maintenance_type" widget="radio"/> + </group> + <group> + <field name="maintenance_team_id" options="{'no_create': True, 'no_open': True}"/> + <field name="user_id" string="Responsible"/> + <field name="schedule_date"/> + <label for="duration"/> + <div> + <field name="duration" + widget="float_time" + class="oe_inline"/> <span class="ml8">hours</span> + </div> + <field name="priority" widget="priority"/> + <field name="email_cc" string="Email cc" groups="base.group_no_one"/> + <field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/> + </group> + </group> + <field name='description' placeholder="Internal Notes"/> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids"/> + <field name="activity_ids"/> + <field name="message_ids"/> + </div> + </form> + </field> + </record> + + <record id="hr_equipment_request_view_kanban" model="ir.ui.view"> + <field name="name">equipment.request.kanban</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <kanban default_group_by="stage_id" sample="1"> + <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="activity_ids" /> + <field name="activity_state" /> + <progressbar field="kanban_state" colors='{"done": "success", "blocked": "danger"}'/> + <templates> + <t t-name="kanban-tooltip"> + <ul class="oe_kanban_tooltip"> + <li t-if="record.category_id.raw_value"><b>Category:</b> <t t-esc="record.category_id.value"/></li> + <li t-if="record.user_id.raw_value"><b>Request to:</b> <t t-esc="record.user_id.value"/></li> + </ul> + </t> + <t t-name="kanban-box"> + <div t-attf-class="{{!selection_mode ? 'oe_kanban_color_' + kanban_getcolor(record.color.raw_value) : ''}} oe_kanban_card oe_kanban_global_click oe_semantic_html_override"> + <div class="o_dropdown_kanban dropdown"> + + <a role="button" class="dropdown-toggle o-no-caret btn" data-toggle="dropdown" data-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu"> + <span class="fa fa-ellipsis-v"/> + </a> + <div class="dropdown-menu" role="menu"> + <t t-if="widget.editable"><a role="menuitem" type="edit" class="dropdown-item">Edit...</a></t> + <t t-if="widget.deletable"><a role="menuitem" type="delete" class="dropdown-item">Delete</a></t> + <ul class="oe_kanban_colorpicker" data-field="color"/> + </div> + </div> + <div class="oe_kanban_content" tooltip="kanban-tooltip"> + <div class="o_kanban_record_top"> + <b class="o_kanban_record_title"><field name="name"/></b> + </div> + <div class="o_kanban_record_body"> + <span name="owner_user_id" t-if="record.owner_user_id.raw_value">Requested by : <field name="owner_user_id"/><br/></span> + <span class="oe_grey" t-if="record.equipment_id.raw_value"><field name="equipment_id"/><br/></span> + <span t-if="record.category_id.raw_value"><field name="category_id"/></span> + </div> + <div class="o_kanban_record_bottom"> + <div class="oe_kanban_bottom_left"> + <field name="priority" widget="priority"/> + <div class="o_kanban_inline_block ml4 mr4"> + <field name="activity_ids" widget="kanban_activity" /> + </div> + </div> + <div class="oe_kanban_bottom_right"> + <field name="kanban_state" widget="state_selection"/> + <field name="user_id" widget="many2one_avatar_user"/> + </div> + </div> + </div> + <div class="oe_clear"></div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <record id="hr_equipment_request_view_tree" model="ir.ui.view"> + <field name="name">equipment.request.tree</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <tree string="maintenance Request" multi_edit="1" sample="1"> + <field name="message_needaction" invisible="1"/> + <field name="name"/> + <field name="request_date" groups="base.group_no_one"/> + <field name="owner_user_id"/> + <field name="user_id"/> + <field name="category_id" readonly="1" groups="maintenance.group_equipment_manager"/> + <field name="stage_id"/> + <field name="company_id" readonly="1" groups="base.group_multi_company"/> + <field name="activity_exception_decoration" widget="activity_exception"/> + </tree> + </field> + </record> + + <record id="hr_equipment_request_view_graph" model="ir.ui.view"> + <field name="name">equipment.request.graph</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <graph string="maintenance Request" sample="1"> + <field name="user_id"/> + <field name="stage_id"/> + </graph> + </field> + </record> + + <record id="hr_equipment_request_view_pivot" model="ir.ui.view"> + <field name="name">equipment.request.pivot</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <pivot string="maintenance Request" sample="1"> + <field name="user_id"/> + <field name="stage_id"/> + <field name="color" invisible="1"/> + </pivot> + </field> + </record> + + + <record id="hr_equipment_view_calendar" model="ir.ui.view"> + <field name="name">equipment.request.calendar</field> + <field name="model">maintenance.request</field> + <field name="arch" type="xml"> + <calendar date_start="schedule_date" date_delay="duration" color="user_id" event_limit="5"> + <field name="user_id" filters="1"/> + <field name="priority"/> + <field name="maintenance_type"/> + </calendar> + </field> + </record> + + <!-- equiment.request : actions --> + <record id="hr_equipment_request_action" model="ir.actions.act_window"> + <field name="name">Maintenance Requests</field> + <field name="res_model">maintenance.request</field> + <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> + <field name="view_id" ref="hr_equipment_request_view_kanban"/> + <field name="context">{'default_user_id': uid}</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new maintenance request + </p><p> + Follow the process of the request and communicate with the collaborator. + </p> + </field> + </record> + + <record id="hr_equipment_request_action_link" model="ir.actions.act_window"> + <field name="name">Maintenance Requests</field> + <field name="res_model">maintenance.request</field> + <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> + <field name="search_view_id" ref="hr_equipment_request_view_search"/> + <field name="view_id" ref="hr_equipment_request_view_kanban"/> + <field name="context">{ + 'search_default_category_id': [active_id], + 'default_category_id': active_id, + }</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new maintenance request + </p><p> + Follow the process of the request and communicate with the collaborator. + </p> + </field> + </record> + + <record id="hr_equipment_request_action_from_equipment" model="ir.actions.act_window"> + <field name="name">Maintenance Requests</field> + <field name="res_model">maintenance.request</field> + <field name="binding_model_id" ref="maintenance.model_maintenance_equipment"/> + <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> + <field name="context">{ + 'default_equipment_id': active_id, + }</field> + <field name="domain">[('equipment_id', '=', active_id)]</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new maintenance request + </p><p> + Follow the process of the request and communicate with the collaborator. + </p> + </field> + </record> + + <record id="hr_equipment_todo_request_action_from_dashboard" model="ir.actions.act_window"> + <field name="name">Maintenance Requests</field> + <field name="res_model">maintenance.request</field> + <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> + <field name="context">{ + 'default_maintenance_team_id': active_id, + }</field> + <field name="domain">[('maintenance_team_id', '=', active_id), ('maintenance_type', 'in', context.get('maintenance_type', ['preventive', 'corrective']))]</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new maintenance request + </p><p> + Follow the process of the request and communicate with the collaborator. + </p> + </field> + </record> + + <record id="hr_equipment_request_action_cal" model="ir.actions.act_window"> + <field name="name">Maintenance Requests</field> + <field name="res_model">maintenance.request</field> + <field name="view_mode">calendar,kanban,tree,form,pivot,graph</field> + <field name="view_id" ref="hr_equipment_view_calendar"/> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new maintenance request + </p><p> + Follow the process of the request and communicate with the collaborator. + </p> + </field> + </record> + + <record id="maintenance_request_action_reports" model="ir.actions.act_window"> + <field name="name">Maintenance Requests</field> + <field name="res_model">maintenance.request</field> + <field name="view_mode">graph,pivot,kanban,tree,form,calendar</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new maintenance request + </p><p> + Follow the process of the request and communicate with the collaborator. + </p> + </field> + </record> + + <!-- equiment : views --> + <record id="hr_equipment_view_form" model="ir.ui.view"> + <field name="name">equipment.form</field> + <field name="model">maintenance.equipment</field> + <field name="arch" type="xml"> + <form string="Equipments"> + <sheet> + <div class="oe_button_box" name="button_box"> + <button name="%(hr_equipment_request_action_from_equipment)d" + type="action" + class="oe_stat_button" + context="{'default_company_id': company_id}" + icon="fa-wrench"> + <field string="Maintenance" name="maintenance_count" widget="statinfo"/> + </button> + </div> + <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> + <div class="oe_title"> + <label for="name" class="oe_edit_only"/> + <h1><field name="name" string="Name" placeholder="Equipment Name"/></h1> + </div> + <group> + <group> + <field name="active" invisible="1"/> + <field name="category_id" options="{"no_open": True}" context="{'default_company_id':company_id}"/> + <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/> + <field name="owner_user_id" string="Owner"/> + </group> + <group> + <field name="maintenance_team_id" attrs="{'required': [('period', '!=', 0)]}" context="{'default_company_id':company_id}"/> + <field name="technician_user_id" domain="[('share', '=', False)]"/> + <field name="assign_date" groups="base.group_no_one"/> + <field name="scrap_date" groups="base.group_no_one"/> + <field name="location" string="Used in location"/> + </group> + </group> + <notebook> + <page string="Description" name="description"> + <field name="note"/> + </page> + <page string="Product Information" name="product_information"> + <group> + <group> + <field name="partner_id"/> + <field name="partner_ref"/> + <field name="model"/> + <field name="serial_no"/> + </group><group> + <field name="effective_date"/> + <field name="cost" groups="maintenance.group_equipment_manager"/> + <field name="warranty_date"/> + </group> + </group> + </page> + <page string="Maintenance" name="maintenance"> + <group> + <group name="maintenance"> + <field name="next_action_date" class="oe_read_only" string="Next Preventive Maintenance"/> + <label for="period" string="Preventive Maintenance Frequency"/> + <div class="o_row"> + <field name="period"/> days + </div> + <label for="maintenance_duration" string="Maintenance Duration"/> + <div class="o_row"> + <field name="maintenance_duration"/> hours + </div> + </group> + </group> + </page> + </notebook> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids"/> + <field name="activity_ids"/> + <field name="message_ids"/> + </div> + </form> + </field> + </record> + + <record id="hr_equipment_view_kanban" model="ir.ui.view"> + <field name="name">equipment.kanban</field> + <field name="model">maintenance.equipment</field> + <field name="arch" type="xml"> + <kanban sample="1"> + <field name="name"/> + <field name="color"/> + <field name="technician_user_id"/> + <field name="owner_user_id"/> + <field name="category_id"/> + <field name="serial_no"/> + <field name="model"/> + <field name="maintenance_ids"/> + <field name="maintenance_open_count"/> + <field name="next_action_date"/> + <field name="activity_ids" /> + <field name="activity_state" /> + <progressbar field="activity_state" colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/> + <templates> + <t t-name="kanban-tooltip"> + <ul class="oe_kanban_tooltip"> + <li t-if="record.serial_no.raw_value"><b>Serial Number:</b> <t t-esc="record.serial_no.value"/></li> + <li t-if="record.model.raw_value"><b>Model Number:</b> <t t-esc="record.model.value"/></li> + </ul> + </t> + <t t-name="kanban-box"> + <div t-attf-class="{{!selection_mode ? 'oe_kanban_color_' + kanban_getcolor(record.color.raw_value) : ''}} oe_kanban_card oe_kanban_global_click"> + <div class="o_dropdown_kanban dropdown" t-if="!selection_mode"> + + <a role="button" class="dropdown-toggle o-no-caret btn" data-toggle="dropdown" data-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu"> + <span class="fa fa-ellipsis-v"/> + </a> + <div class="dropdown-menu" role="menu"> + <t t-if="widget.editable"><a role="menuitem" type="edit" class="dropdown-item">Edit...</a></t> + <t t-if="widget.deletable"><a role="menuitem" type="delete" class="dropdown-item">Delete</a></t> + <div role="separator" class="dropdown-divider"></div> + <div role="separator" class="dropdown-header">Record Colour</div> + <ul class="oe_kanban_colorpicker" data-field="color"/> + </div> + </div> + <div class="oe_kanban_content" tooltip="kanban-tooltip"> + <div class="o_kanban_record_top"> + <b class="o_kanban_record_title"><field name="name"/><small><span t-if="record.model.raw_value"> (<field name="model"/>)</span></small></b> + </div> + <div class="o_kanban_record_body"> + <div t-if="record.serial_no.raw_value"><field name="serial_no"/></div> + </div> + <div class="o_kanban_record_bottom"> + <div class="oe_kanban_bottom_left"> + <div class="badge badge-danger" t-if="!selection_mode and record.maintenance_open_count.raw_value" > + <t t-raw="record.maintenance_open_count.raw_value"/> Request + </div> + <div class="badge badge-secondary" t-if="!selection_mode and record.next_action_date.raw_value" > + <t t-raw="moment(record.next_action_date.raw_value).format('MMMM Do')"/> + </div> + </div> + <div class="oe_kanban_bottom_right"> + <div class="o_kanban_inline_block" t-if="!selection_mode"> + <field name="activity_ids" widget="kanban_activity" /> + </div> + <field name="owner_user_id" widget="many2one_avatar_user"/> + </div> + </div> + </div> + <div class="oe_clear"></div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <record id="hr_equipment_view_tree" model="ir.ui.view"> + <field name="name">equipment.tree</field> + <field name="model">maintenance.equipment</field> + <field name="arch" type="xml"> + <tree string="Assign To User" sample="1"> + <field name="message_needaction" invisible="1"/> + <field name="name"/> + <!-- <field name="active" invisible="1"/> --> + <field name="owner_user_id" string="Owner"/> + <field name="assign_date" groups="base.group_no_one"/> + <field name="serial_no"/> + <field name="technician_user_id"/> + <field name="category_id"/> + <field name="partner_id" invisible="1"/> + <field name="company_id" groups="base.group_multi_company"/> + <field name="activity_exception_decoration" widget="activity_exception"/> + </tree> + </field> + </record> + + <record id="hr_equipment_view_search" model="ir.ui.view"> + <field name="name">equipment.search</field> + <field name="model">maintenance.equipment</field> + <field name="arch" type="xml"> + <search string="Search"> + <field string="Equipment" name="name" filter_domain="[ + '|', '|', '|', + ('name', 'ilike', self), ('model', 'ilike', self), ('serial_no', 'ilike', self), ('partner_ref', 'ilike', self)]"/> + <field string="Category" name="category_id"/> + <field name="owner_user_id"/> + <filter string="My Equipments" name="my" domain="[('owner_user_id', '=', uid)]"/> + <filter string="Assigned" name="assigned" domain="[('owner_user_id', '!=', False)]"/> + <filter string="Unassigned" name="available" domain="[('owner_user_id', '=', False)]"/> + <separator/> + <filter string="Under Maintenance" name="under_maintenance" domain="[('maintenance_open_count', '>', 0)]"/> + <separator/> + <filter string="Unread Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/> + <separator/> + <filter invisible="1" string="Late Activities" name="activities_overdue" + domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]" + help="Show all records which has next action date is before today"/> + <filter invisible="1" string="Today Activities" name="activities_today" + domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/> + <filter invisible="1" string="Future Activities" name="activities_upcoming_all" + domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/> + <separator/> + <filter string="Archived" name="inactive" domain="[('active','=',False)]"/> + <group expand='0' string='Group by...'> + <filter string='Technician' name="technicians" domain="[]" context="{'group_by': 'technician_user_id'}"/> + <filter string='Category' name="category" domain="[]" context="{'group_by': 'category_id'}"/> + <filter string='Owner' name="owner" domain="[]" context="{'group_by': 'owner_user_id'}"/> + <filter string='Vendor' name="vendor" domain="[]" context="{'group_by': 'partner_id'}"/> + </group> + </search> + </field> + </record> + + <record id="hr_equipment_action" model="ir.actions.act_window"> + <field name="name">Equipments</field> + <field name="res_model">maintenance.equipment</field> + <field name="view_mode">kanban,tree,form</field> + <field name="view_id" ref="hr_equipment_view_kanban"/> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new equipment + </p><p> + Track equipments and link it to an employee or department. + You will be able to manage allocations, issues and maintenance of your equipment. + </p> + </field> + </record> + + <!-- equiment : actions --> + <record id="hr_equipment_action_from_category_form" model="ir.actions.act_window"> + <field name="name">Equipments</field> + <field name="res_model">maintenance.equipment</field> + <field name="view_mode">kanban,tree,form</field> + <field name="search_view_id" ref="hr_equipment_view_search"/> + <field name="view_id" ref="hr_equipment_view_kanban"/> + <field name="context">{ + 'search_default_category_id': [active_id], + 'default_category_id': active_id, + }</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new equipment + </p><p> + Track equipments and link it to an employee or department. + You will be able to manage allocations, issues and maintenance of your equipment. + </p> + </field> + </record> + + <!-- equipment.category : views --> + <record id="hr_equipment_category_view_form" model="ir.ui.view"> + <field name="name">equipment.category.form</field> + <field name="model">maintenance.equipment.category</field> + <field name="arch" type="xml"> + <form string="Equipment Categories"> + <sheet> + <div class="oe_button_box" name="button_box"> + <button name="%(hr_equipment_action_from_category_form)d" + class="oe_stat_button" + icon="fa-cubes" + type="action"> + <field string="Equipment" name="equipment_count" widget="statinfo"/> + </button> + <button name="%(hr_equipment_request_action_link)d" + type="action" + class="oe_stat_button" + icon="fa-wrench"> + <field string="Maintenance" name="maintenance_count" widget="statinfo"/> + </button> + </div> + <div class="oe_title"> + <label for="name" class="oe_edit_only" string="Category Name"/> + <h1> + <field name="name"/> + </h1> + </div> + <group> + <field name="technician_user_id" class="oe_inline" domain="[('share', '=', False)]"/> + <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}" class="oe_inline"/> + </group> + <group name="group_alias" attrs="{'invisible': [('alias_domain', '=', False)]}" groups="base.group_no_one"> + <label for="alias_name" string="Email Alias"/> + <div name="alias_def"> + <field name="alias_id" class="oe_read_only oe_inline" string="Email Alias" required="0"/> + <div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;"> + <field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/> + </div> + </div> + </group> + <field name="note" nolabel="1"/> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids"/> + <field name="message_ids"/> + </div> + </form> + </field> + </record> + + <record id="hr_equipment_category_view_tree" model="ir.ui.view"> + <field name="name">equipment.category.tree</field> + <field name="model">maintenance.equipment.category</field> + <field name="arch" type="xml"> + <tree string="Assign To User"> + <field name="name" string="Name"/> + <field name="technician_user_id"/> + <field name="company_id" groups="base.group_multi_company"/> + </tree> + </field> + </record> + + <record id="hr_equipment_category_view_search" model="ir.ui.view"> + <field name="name">equipment.category.search</field> + <field name="model">maintenance.equipment.category</field> + <field name="arch" type="xml"> + <search string="Search"> + <field name="name" string="Category Name" filter_domain="[('name','ilike',self)]"/> + <group expand='0' string='Group by...'> + <filter string='Responsible' name="responsible" domain="[]" context="{'group_by' : 'technician_user_id'}"/> + </group> + </search> + </field> + </record> + + <record id="view_maintenance_equipment_category_kanban" model="ir.ui.view"> + <field name="name">maintenance.equipment.category.kanban</field> + <field name="model">maintenance.equipment.category</field> + <field name="arch" type="xml"> + <kanban> + <field name="name"/> + <field name="technician_user_id"/> + <templates> + <t t-name="kanban-box"> + <div t-attf-class="oe_kanban_global_click"> + <div class="mb4"> + <strong><field name="name"/></strong> + </div> + <div class="row mt4"> + <div class="col-6"> + <span class="badge badge-pill"> + <strong>Equipments:</strong> <field name="equipment_count"/> + </span> + </div> + <div class="col-6 text-right"> + <span class="badge badge-pill"> + <strong>Maintenance:</strong> <field name="maintenance_count"/> + </span> + <field name="technician_user_id" widget="many2one_avatar_user"/> + </div> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <!-- equipment.category : actions --> + <record id="hr_equipment_category_action" model="ir.actions.act_window"> + <field name="name">Equipment Categories</field> + <field name="res_model">maintenance.equipment.category</field> + <field name="view_mode">tree,kanban,form</field> + <field name="view_id" ref="hr_equipment_category_view_tree"/> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new equipment category + </p> + </field> + </record> + + <!-- equipment.stage : views --> + <record id="hr_equipment_stage_view_search" model="ir.ui.view"> + <field name="name">equipment.stage.search</field> + <field name="model">maintenance.stage</field> + <field name="arch" type="xml"> + <search string="Maintenance Request Stages"> + <field name="name" string="Maintenance Request Stages"/> + </search> + </field> + </record> + + <record id="hr_equipment_stage_view_tree" model="ir.ui.view"> + <field name="name">equipment.stage.tree</field> + <field name="model">maintenance.stage</field> + <field name="arch" type="xml"> + <tree string="Maintenance Request Stage" editable="top"> + <field name="sequence" widget="handle"/> + <field name="name"/> + <field name="fold"/> + <field name="done"/> + </tree> + </field> + </record> + <record id="hr_equipment_stage_view_kanban" model="ir.ui.view"> + <field name="name">equipment.stage.kanban</field> + <field name="model">maintenance.stage</field> + <field name="arch" type="xml"> + <kanban class="o_kanban_mobile"> + <templates> + <t t-name="kanban-box"> + <div t-attf-class="oe_kanban_global_click"> + <div> + <strong><field name="name"/></strong> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <!-- equipment.stages : actions --> + <record id="hr_equipment_stage_action" model="ir.actions.act_window"> + <field name="name">Stages</field> + <field name="res_model">maintenance.stage</field> + <field name="view_mode">tree,kanban,form</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new stage in the maintenance request + </p> + </field> + </record> + + <!-- maintenance.team: views --> + <record id="maintenance_team_view_form" model="ir.ui.view"> + <field name="name">maintenance.team.form</field> + <field name="model">maintenance.team</field> + <field name="arch" type="xml"> + <form string="Maintenance Team"> + <sheet> + <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> + <div class="oe_title"> + <label for="name" class="oe_edit_only" string="Team Name"/> + <h1> + <field name="name"/> + </h1> + </div> + <group> + <group> + <field name="active" invisible="1"/> + <field name="member_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create': True}" domain="[('share', '=', False)]"/> + </group> + <group> + <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="maintenance_team_view_tree" model="ir.ui.view"> + <field name="name">maintenance.team.tree</field> + <field name="model">maintenance.team</field> + <field name="arch" type="xml"> + <tree string="Maintenance Team" editable="bottom"> + <field name="name"/> + <field name="member_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create': True}" domain="[('share', '=', False)]"/> + <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/> + </tree> + </field> + </record> + + <record id="maintenance_team_view_kanban" model="ir.ui.view"> + <field name="name">maintenance.team.kanban</field> + <field name="model">maintenance.team</field> + <field name="arch" type="xml"> + <kanban class="o_kanban_mobile"> + <templates> + <t t-name="kanban-box"> + <div t-attf-class="oe_kanban_global_click"> + <div> + <strong><field name="name"/></strong> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <record id="maintenance_team_kanban" model="ir.ui.view"> + <field name="name">maintenance.team.kanban</field> + <field name="model">maintenance.team</field> + <field name="arch" type="xml"> + <kanban class="oe_background_grey o_kanban_dashboard o_maintenance_team_kanban" create="0"> + <field name="name"/> + <field name="color"/> + <field name="todo_request_ids"/> + <field name="todo_request_count"/> + <field name="todo_request_count_date"/> + <field name="todo_request_count_high_priority"/> + <field name="todo_request_count_block"/> + <field name="todo_request_count_unscheduled"/> + <templates> + <t t-name="kanban-box"> + <div t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''}"> + <div t-attf-class="o_kanban_card_header"> + <div class="o_kanban_card_header_title"> + <div class="o_primary"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action"> + <field name="name"/> + </a></div> + </div> + <div class="o_kanban_manage_button_section"> + <a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a> + </div> + </div> + <div class="container o_kanban_card_content"> + <div class="row"> + <div class="col-6 o_kanban_primary_left"> + <button class="btn btn-primary" name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_todo': 1}"> + <t t-esc="record.todo_request_count.value"/> To Do + </button> + </div> + <div class="col-6 o_kanban_primary_right"> + <div t-if="record.todo_request_count_date.raw_value > 0"> + <a name="%(hr_equipment_request_action_cal)d" type="action"> + <t t-esc="record.todo_request_count_date.value"/> + Scheduled + </a> + </div> + <div t-if="record.todo_request_count_high_priority.raw_value > 0"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_high_priority': 1}"> + <t t-esc="record.todo_request_count_high_priority.value"/> + Top Priorities + </a> + </div> + <div t-if="record.todo_request_count_block.raw_value > 0"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_kanban_state_block': 1}"> + <t t-esc="record.todo_request_count_block.value"/> + Blocked + </a> + </div> + <div t-if="record.todo_request_count_unscheduled.raw_value > 0"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_unscheduled': 1}"> + <t t-esc="record.todo_request_count_unscheduled.value"/> + Unscheduled + </a> + </div> + </div> + </div> + </div><div class="container o_kanban_card_manage_pane dropdown-menu" role="menu"> + <div class="row"> + <div class="col-6 o_kanban_card_manage_section o_kanban_manage_view"> + <div role="menuitem" class="o_kanban_card_manage_title"> + <span>Requests</span> + </div> + <div role="menuitem"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action"> + All + </a> + </div> + <div role="menuitem"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_todo': 1}"> + To Do + </a> + </div> + <div role="menuitem"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_progress': 1}"> + In Progress + </a> + </div> + <div role="menuitem"> + <a name="%(hr_equipment_todo_request_action_from_dashboard)d" type="action" context="{'search_default_done': 1}"> + Done + </a> + </div> + </div> + <div class="col-6 o_kanban_card_manage_section o_kanban_manage_new"> + <div role="menuitem" class="o_kanban_card_manage_title"> + <span>Reporting</span> + </div> + <div role="menuitem"> + <a name="%(maintenance_request_action_reports)d" type="action" context="{'search_default_maintenance_team_id': active_id}"> + Maintenance Requests + </a> + </div> + </div> + </div> + <div t-if="widget.editable" class="o_kanban_card_manage_settings row"> + <div class="col-8" role="menuitem" aria-haspopup="true"> + <ul role="menu" class="oe_kanban_colorpicker" data-field="color"/> + </div> + <div role="menuitem" class="col-4"> + <a type="edit" class="dropdown-item">Configuration</a> + </div> + </div> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <record id="maintenance_team_view_search" model="ir.ui.view"> + <field name="name">maintenance.team.search</field> + <field name="model">maintenance.team</field> + <field name="arch" type="xml"> + <search string="Search"> + <field string="Team" name="name"/> + <filter string="Archived" domain="[('active', '=', False)]" name="inactive"/> + </search> + </field> + </record> + + <!-- equipment.team : actions --> + <record id="maintenance_team_action_settings" model="ir.actions.act_window"> + <field name="name">Teams</field> + <field name="res_model">maintenance.team</field> + <field name="view_mode">tree,kanban,form</field> + <field name="search_view_id" ref="maintenance_team_view_search"/> + <field name="view_ids" eval="[(5, 0, 0), + (0, 0, {'view_mode': 'tree', 'view_id': ref('maintenance_team_view_tree')}), + (0, 0, {'view_mode': 'kanban', 'view_id': ref('maintenance_team_view_kanban')})]"/> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a team in the maintenance request + </p> + </field> + </record> + + <record id="maintenance_dashboard_action" model="ir.actions.act_window"> + <field name="name">Maintenance Teams</field> + <field name="res_model">maintenance.team</field> + <field name="view_mode">kanban,form</field> + <field name="view_id" ref="maintenance_team_kanban"/> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add a new stage in the maintenance request + </p> + </field> + </record> + + + <!-- Menu items hierachy --> + <menuitem + id="menu_maintenance_title" + name="Maintenance" + web_icon="maintenance,static/description/icon.png" + sequence="110"/> + + <menuitem + id="menu_m_dashboard" + name="Dashboard" + parent="menu_maintenance_title" + groups="group_equipment_manager,base.group_user" + action="maintenance_dashboard_action" + sequence="0"/> + + <menuitem + id="menu_m_request" + name="Maintenance" + parent="menu_maintenance_title" + groups="group_equipment_manager,base.group_user" + sequence="1"/> + + <menuitem + id="menu_m_request_form" + name="Maintenance Requests" + parent="menu_m_request" + action="hr_equipment_request_action" + groups="group_equipment_manager,base.group_user" + sequence="1"/> + + <menuitem + id="menu_m_request_calendar" + name="Maintenance Calendar" + parent="menu_m_request" + action="hr_equipment_request_action_cal" + groups="group_equipment_manager,base.group_user" + sequence="2"/> + + <menuitem + id="menu_equipment_form" + name="Equipments" + parent="menu_maintenance_title" + action="hr_equipment_action" + groups="group_equipment_manager,base.group_user" + sequence="2"/> + + <menuitem + id="menu_m_reports" + name="Reporting" + parent="menu_maintenance_title" + groups="group_equipment_manager,base.group_user" + sequence="3"/> + + <menuitem + id="menu_m_reports_oee" + name="Overall Equipment Effectiveness (OEE)" + parent="menu_m_reports" + groups="group_equipment_manager,base.group_user" + sequence="1"/> + + <menuitem + id="menu_m_reports_losses" + name="Losses Analysis" + parent="menu_m_reports" + groups="group_equipment_manager,base.group_user" + sequence="2"/> + + <menuitem + id="maintenance_reporting" + name="Reporting" + parent="menu_maintenance_title" + sequence="20"/> + <menuitem + id="maintenance_request_reporting" + action="maintenance_request_action_reports" + parent="maintenance_reporting"/> + + <menuitem + id="menu_maintenance_configuration" + name="Configuration" + parent="menu_maintenance_title" + groups="group_equipment_manager" + sequence="100"/> + + <menuitem + id="menu_maintenance_teams" + name="Maintenance Teams" + parent="menu_maintenance_configuration" + action="maintenance_team_action_settings" + groups="group_equipment_manager" + sequence="1"/> + + <menuitem + id="menu_maintenance_cat" + name="Equipment Categories" + parent="menu_maintenance_configuration" + action="hr_equipment_category_action" + sequence="2"/> + + <menuitem + id="menu_maintenance_stage_configuration" + name="Maintenance Stages" + parent="menu_maintenance_configuration" + action="hr_equipment_stage_action" + groups="base.group_no_one" + sequence="3" /> +</odoo> |
