Initial commit: Vertical Industry packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:52 +02:00
commit d5567a0017
766 changed files with 733028 additions and 0 deletions

View file

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models

View file

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
{
'name': 'Maintenance',
'version': '1.0',
'sequence': 100,
'category': 'Manufacturing/Maintenance',
'description': """
Track equipments and maintenance requests""",
'depends': ['mail'],
'summary': 'Track equipment and manage maintenance requests',
'website': 'https://www.odoo.com/app/maintenance',
'data': [
'security/maintenance.xml',
'security/ir.model.access.csv',
'data/maintenance_data.xml',
'data/mail_alias_data.xml',
'data/mail_activity_type_data.xml',
'data/mail_message_subtype_data.xml',
'views/maintenance_views.xml',
'views/mail_activity_views.xml',
'data/maintenance_cron.xml',
],
'demo': ['data/maintenance_demo.xml'],
'installable': True,
'application': True,
'assets': {
'web.assets_backend': [
'maintenance/static/src/**/*',
],
},
'license': 'LGPL-3',
}

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Maintenance-specific activities, for automatic generation mainly -->
<record id="mail_act_maintenance_request" model="mail.activity.type">
<field name="name">Maintenance Request</field>
<field name="icon">fa-wrench</field>
<field name="res_model">maintenance.request</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- email alias for maintenance requests -->
<record id="mail_alias_equipment" model="mail.alias">
<field name="alias_name">helpdesk</field>
<field name="alias_model_id" ref="model_maintenance_request"/>
<field name="alias_user_id" ref="base.user_admin"/>
</record>
</data>
</odoo>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Maintenance Request-related subtypes for messaging / Chatter -->
<record id="mt_req_created" model="mail.message.subtype">
<field name="name">Request Created</field>
<field name="res_model">maintenance.request</field>
<field name="default" eval="False"/>
<field name="hidden" eval="True"/>
<field name="description">Maintenance Request created</field>
</record>
<record id="mt_req_status" model="mail.message.subtype">
<field name="name">Status Changed</field>
<field name="res_model">maintenance.request</field>
<field name="default" eval="True"/>
<field name="description">Status changed</field>
</record>
<!-- Equipment-related subtypes for messaging / Chatter -->
<record id="mt_mat_assign" model="mail.message.subtype">
<field name="name">Equipment Assigned</field>
<field name="res_model">maintenance.equipment</field>
<field name="description">Equipment Assigned</field>
</record>
<!-- Equipment Category-related subtypes for messaging / Chatter -->
<record id="mt_cat_req_created" model="mail.message.subtype">
<field name="name">Maintenance Request Created</field>
<field name="res_model">maintenance.equipment.category</field>
<field name="default" eval="True"/>
<field name="parent_id" ref="mt_req_created"/>
<field name="relation_field">category_id</field>
</record>
<record id="mt_cat_mat_assign" model="mail.message.subtype">
<field name="name">Equipment Assigned</field>
<field name="res_model">maintenance.equipment.category</field>
<field name="default" eval="True"/>
<field name="parent_id" ref="mt_mat_assign"/>
<field name="relation_field">category_id</field>
</record>
<record id="equipment_team_maintenance" model="maintenance.team">
<field name="name">Internal Maintenance</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding='UTF-8'?>
<odoo>
<record model="ir.cron" id="maintenance_requests_cron">
<field name="name">Maintenance: generate preventive maintenance requests</field>
<field name="model_id" ref="model_maintenance_equipment"/>
<field name="state">code</field>
<field name="code">model._cron_generate_requests()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>
</odoo>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Standard stages for Maintenance Request -->
<record id="stage_0" model="maintenance.stage">
<field name="name">New Request</field>
<field name="sequence" eval="1" />
<field name="fold" eval="False" />
</record>
<record id="stage_1" model="maintenance.stage">
<field name="name">In Progress</field>
<field name="sequence" eval="2" />
<field name="fold" eval="False" />
</record>
<record id="stage_3" model="maintenance.stage">
<field name="name">Repaired</field>
<field name="sequence" eval="3" />
<field name="fold" eval="True" />
<field name="done" eval="True" />
</record>
<record id="stage_4" model="maintenance.stage">
<field name="name">Scrap</field>
<field name="sequence" eval="4" />
<field name="fold" eval="True" />
<field name="done" eval="True" />
</record>
</data>
</odoo>

View file

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Maintenance teams -->
<record id="equipment_team_metrology" model="maintenance.team">
<field name="name">Metrology</field>
</record>
<record id="equipment_team_subcontractor" model="maintenance.team">
<field name="name">Subcontractor</field>
</record>
<!-- Equipment categories -->
<record id="equipment_computer" model="maintenance.equipment.category">
<field name="name">Computers</field>
</record>
<record id="equipment_software" model="maintenance.equipment.category">
<field name="name">Software</field>
</record>
<record id="equipment_printer" model="maintenance.equipment.category">
<field name="name">Printers</field>
</record>
<record id="equipment_monitor" model="maintenance.equipment.category">
<field name="name">Monitors</field>
<field name="technician_user_id" ref="base.user_admin"/>
<field name="color">3</field>
</record>
<record id="equipment_phone" model="maintenance.equipment.category">
<field name="name">Phones</field>
<field name="technician_user_id" ref="base.user_admin"/>
</record>
<!-- Equipments -->
<record id="equipment_monitor1" model="maintenance.equipment">
<field name="name">Samsung Monitor 15"</field>
<field name="category_id" ref="equipment_monitor"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="technician_user_id" ref="base.user_admin"/>
<field name="assign_date" eval="time.strftime('%Y-%m-10')"/>
<field name="serial_no">MT/122/11112222</field>
<field name="model">NP300E5X</field>
</record>
<record id="equipment_monitor4" model="maintenance.equipment">
<field name="name">Samsung Monitor 15"</field>
<field name="category_id" ref="equipment_monitor"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="technician_user_id" ref="base.user_admin"/>
<field name="assign_date" eval="time.strftime('%Y-01-01')"/>
<field name="serial_no">MT/125/22778837</field>
<field name="model">NP355E5X</field>
</record>
<record id="equipment_monitor6" model="maintenance.equipment">
<field name="name">Samsung Monitor 15"</field>
<field name="category_id" ref="equipment_monitor"/>
<field name="owner_user_id" ref="base.user_demo"/>
<field name="technician_user_id" ref="base.user_demo"/>
<field name="assign_date" eval="time.strftime('%Y-02-01')"/>
<field name="serial_no">MT/127/18291018</field>
<field name="model">NP355E5X</field>
<field name="color">3</field>
</record>
<record id="equipment_computer3" model="maintenance.equipment">
<field name="name">Acer Laptop</field>
<field name="category_id" ref="equipment_computer"/>
<field name="owner_user_id" ref="base.user_demo"/>
<field name="technician_user_id" ref="base.user_admin"/>
<field name="assign_date" eval="time.strftime('%Y-03-08')"/>
<field name="serial_no">LP/203/19281928</field>
<field name="model">NE56R</field>
</record>
<record id="equipment_computer5" model="maintenance.equipment">
<field name="name">Acer Laptop</field>
<field name="category_id" ref="equipment_computer"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="technician_user_id" ref="base.user_demo"/>
<field name="assign_date" eval="time.strftime('%Y-04-08')"/>
<field name="serial_no">LP/205/12928291</field>
<field name="model">V5131</field>
</record>
<record id="equipment_computer9" model="maintenance.equipment">
<field name="name">HP Laptop</field>
<field name="category_id" ref="equipment_computer"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="technician_user_id" ref="base.user_demo"/>
<field name="assign_date" eval="time.strftime('%Y-%m-11')"/>
<field name="serial_no">LP/303/28292090</field>
<field name="model">17-j059nr</field>
</record>
<record id="equipment_computer11" model="maintenance.equipment">
<field name="name">HP Laptop</field>
<field name="category_id" ref="equipment_computer"/>
<field name="owner_user_id" ref="base.user_demo"/>
<field name="technician_user_id" ref="base.user_demo"/>
<field name="assign_date" eval="time.strftime('%Y-05-01')"/>
<field name="serial_no">LP/305/17281718</field>
</record>
<record id="equipment_printer1" model="maintenance.equipment">
<field name="name">HP Inkjet printer</field>
<field name="category_id" ref="equipment_printer"/>
<field name="technician_user_id" ref="base.user_demo"/>
<field name="serial_no">PR/011/2928191889</field>
</record>
<!--Maintenance Request-->
<record id="m_request_3" model="maintenance.request">
<field name="name">Resolution is bad</field>
<field name="user_id" ref="base.user_demo"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="equipment_id" ref="equipment_monitor6"/>
<field name="color">7</field>
<field name="stage_id" ref="stage_3"/>
<field name="maintenance_team_id" ref="equipment_team_maintenance"/>
</record>
<record id="m_request_4" model="maintenance.request">
<field name="name">Some keys are not working</field>
<field name="user_id" ref="base.user_admin"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="equipment_id" ref="equipment_computer3"/>
<field name="stage_id" ref="stage_0"/>
<field name="maintenance_team_id" ref="equipment_team_maintenance"/>
</record>
<record id="m_request_6" model="maintenance.request">
<field name="name">Motherboard failed</field>
<field name="user_id" ref="base.user_demo"/>
<field name="owner_user_id" ref="base.user_admin"/>
<field name="equipment_id" ref="equipment_computer5"/>
<field name="stage_id" ref="stage_4"/>
<field name="maintenance_team_id" ref="equipment_team_maintenance"/>
</record>
<record id="m_request_7" model="maintenance.request">
<field name="name">Battery drains fast</field>
<field name="user_id" ref="base.user_demo"/>
<field name="owner_user_id" ref="base.user_demo"/>
<field name="equipment_id" ref="equipment_computer9"/>
<field name="stage_id" ref="stage_1"/>
<field name="maintenance_team_id" ref="equipment_team_maintenance"/>
</record>
<record id="m_request_8" model="maintenance.request">
<field name="name">Touchpad not working</field>
<field name="user_id" ref="base.user_demo"/>
<field name="owner_user_id" ref="base.user_demo"/>
<field name="equipment_id" ref="equipment_computer11"/>
<field name="stage_id" ref="stage_1"/>
<field name="maintenance_team_id" ref="equipment_team_maintenance"/>
</record>
</data>
</odoo>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,942 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_equipment
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:08+0000\n"
"PO-Revision-Date: 2016-01-15 10:12+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: French (Belgium) (http://www.transifex.com/odoo/odoo-9/"
"language/fr_BE/)\n"
"Language: fr_BE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
msgid "<b>Category:</b>"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "<b>Model Number:</b>"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
msgid "<b>Request to:</b>"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "<b>Serial Number:</b>"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_defaults
msgid ""
"A Python dictionary that will be evaluated to provide default values when "
"creating new records for this alias."
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer3
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer5
msgid "Acer Laptop"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_active
msgid "Active"
msgstr "Actif"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_id
msgid "Alias"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_contact
msgid "Alias Contact Security"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_alias_domain
msgid "Alias Domain"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_name
msgid "Alias Name"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_domain
msgid "Alias domain"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_model_id
msgid "Aliased Model"
msgstr ""
#. module: hr_equipment
#: sql_constraint:hr.equipment:0
msgid "Another asset already exists with this serial number!"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Apply"
msgstr "Applique"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_equipment_id
msgid "Asset"
msgstr ""
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment_category
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_id_5764
msgid "Asset Category"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_name
msgid "Asset Name"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_tree
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_tree
msgid "Assign To Employee"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_assign_date
msgid "Assigned Date"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_user_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_department_id
msgid "Assigned to Department"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to Departments"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_employee_id
msgid "Assigned to Employee"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to Employees"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to Employees and Departments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Available"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,kanban_state:0
msgid "Blocked"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Cancel"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_category_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Category"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_name
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
msgid "Category Name"
msgstr "Catégorie"
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action_from_category_form
msgid "Click to add a new Engine."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_category_action
msgid "Click to add a new equipment category."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action
msgid "Click to add a new equipment."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action_link
msgid "Click to add a new maintenance request."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_stage_action
msgid "Click to add a stage in the maintenance request."
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_close_date
msgid "Close Date"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_color
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_color
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_color
msgid "Color Index"
msgstr "Index de la couleur"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_note
msgid "Comments"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_computer
msgid "Computers"
msgstr ""
#. module: hr_equipment
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_configuration
msgid "Configuration"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.action_hr_equipment_configuration
msgid "Configure Equipments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Configure Equipments Settings"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_cost
msgid "Cost"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_create_uid
msgid "Created by"
msgstr "Créé par"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_create_date
msgid "Created on"
msgstr "Créé le"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_maintenance_open_count
msgid "Current Maintenance"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_defaults
msgid "Default Values"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Delete"
msgstr "Supprimer"
#. module: hr_equipment
#: selection:hr.equipment,equipment_assign_to:0
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_department_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_tree
msgid "Department"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_description
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Description"
msgstr "Description"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_display_name
msgid "Display Name"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Edit..."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
msgid "Email Alias"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_id
msgid ""
"Email alias for this equipment category. New emails will automatically "
"create new maintenance request for this equipment category."
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment,equipment_assign_to:0
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_employee_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_tree
msgid "Employee"
msgstr "Employé"
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_equipment_count
msgid "Equipment"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,description:hr_equipment.mt_mat_assign
#: model:mail.message.subtype,name:hr_equipment.mt_cat_mat_assign
#: model:mail.message.subtype,name:hr_equipment.mt_mat_assign
msgid "Equipment Assigned"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_category_action
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_cat
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
msgid "Equipment Categories"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Equipment Name"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_action
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_action_from_category_form
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_equipment_ids
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_title
#: model:ir.ui.menu,name:hr_equipment.menu_hr_equipment_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Equipments"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_fold
msgid "Folded in Maintenance Pipe"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_fold
msgid "Folded in Recruitment Pipe"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action_link
msgid ""
"Follow the process of the request and communicate with the collaborator."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Group by..."
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_printer1
msgid "HP Inkjet printer"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer11
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer9
msgid "HP Laptop"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "High"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_id
msgid "ID"
msgstr "ID"
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_parent_thread_id
msgid ""
"ID of the parent record holding the alias (example: project holding the task "
"creation alias)"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,kanban_state:0
#: model:hr.equipment.stage,name:hr_equipment.stage_1
msgid "In Progress"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Internal Note ......."
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_kanban_state
msgid "Kanban State"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage___last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_write_uid
msgid "Last Updated by"
msgstr "Derniere fois mis à jour par"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_write_date
msgid "Last Updated on"
msgstr "Dernière mis à jour le"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_location
msgid "Location"
msgstr "Endroit"
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "Low"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_maintenance_count
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_maintenance_count
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Maintenance"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Maintenance Request"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,name:hr_equipment.mt_cat_req_created
msgid "Maintenance Request Created"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_stage_view_tree
msgid "Maintenance Request Stage"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_stage_view_search
msgid "Maintenance Request Stages"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,description:hr_equipment.mt_req_created
msgid "Maintenance Request created"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_request_action
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_request_action_from_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_request_action_link
#: model:ir.model,name:hr_equipment.model_hr_equipment_request
#: model:ir.ui.menu,name:hr_equipment.menu_m_request_form
msgid "Maintenance Requests"
msgstr ""
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment_stage
msgid "Maintenance Stage"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Maintenance Subject"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_maintenance_ids
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_maintenance_ids
msgid "Maintenance ids"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_model
msgid "Model"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_monitor
msgid "Monitors"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "My Equipments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
msgid "My Requests"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_name
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_tree
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Name"
msgstr "Nom"
#. module: hr_equipment
#: model:hr.equipment.stage,name:hr_equipment.stage_0
msgid "New Request"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "Normal"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_note
msgid "Note"
msgstr "Note"
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_force_thread_id
msgid ""
"Optional ID of a thread (record) to which all incoming messages will be "
"attached, even if they did not reply to it. If set, this will disable the "
"creation of new records completely."
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_user_id
msgid "Owner"
msgstr "Propriétaire"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_parent_model_id
msgid "Parent Model"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_parent_thread_id
msgid "Parent Record Thread ID"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_parent_model_id
msgid ""
"Parent model holding the alias. The model holding the alias reference is not "
"necessarily the model given by alias_model_id (example: project "
"(parent_model) and task (model))"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_phone
msgid "Phones"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_contact
msgid ""
"Policy to post a message on the document using the mailgateway.\n"
"- everyone: everyone can post\n"
"- partners: only authenticated partners\n"
"- followers: only followers of the related document or members of following "
"channels\n"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_printer
msgid "Printers"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_priority
msgid "Priority"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Product Information"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,kanban_state:0
msgid "Ready for next stage"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_force_thread_id
msgid "Record Thread ID"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Repair Responsible"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.stage,name:hr_equipment.stage_3
msgid "Repaired"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Request"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,name:hr_equipment.mt_req_created
msgid "Request Created"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_request_date
msgid "Request Date"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_done
msgid "Request Done"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Requests Alias"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Reset Request"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_user_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
msgid "Responsible"
msgstr "Responsable"
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_monitor1
#: model:hr.equipment,name:hr_equipment.hr_equipment_monitor4
#: model:hr.equipment,name:hr_equipment.hr_equipment_monitor6
msgid "Samsung Monitor 15\""
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.stage,name:hr_equipment.stage_4
msgid "Scrap"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_scrap_date
msgid "Scrap Date"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Search"
msgstr "Rechercher"
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Sender"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_sequence
msgid "Sequence"
msgstr "Séquence"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_serial_no
msgid "Serial Number"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_request_active
msgid ""
"Set active to false to hide the maintenance request without deleting it."
msgstr ""
#. module: hr_equipment
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_global_settings
msgid "Settings"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_software
msgid "Software"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_stage_id
msgid "Stage"
msgstr "Etape"
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_stage_action
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_stage_configuration
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
msgid "Stages"
msgstr "Etapes"
#. module: hr_equipment
#: model:mail.message.subtype,name:hr_equipment.mt_req_status
msgid "Status Changed"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,description:hr_equipment.mt_req_status
msgid "Status changed"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Subject"
msgstr "Sujet"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_name
msgid "Subjects"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_user_id
msgid "Technician"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_model_id
msgid ""
"The model (Odoo Document Kind) to which this alias corresponds. Any incoming "
"email that does not reply to an existing record will cause the creation of a "
"new record of this model (e.g. a Project Task)"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_name
msgid ""
"The name of the email alias, e.g. 'jobs' if you want to catch emails for "
"<jobs@example.odoo.com>"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_user_id
msgid ""
"The owner of records created upon receiving emails on this alias. If this "
"field is not set the system will attempt to find the right owner based on "
"the sender (From) address, or will use the Administrator account if no "
"system user is found for that address."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action
msgid ""
"This application helps you to track equipments used by employees.\n"
" Create some laptop, printer or phone and link each equipment "
"to\n"
" an employee or departement. You will manage allocations, "
"issues\n"
" and maintenance of equipment."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action_from_category_form
msgid ""
"This application helps you to track equipments used by employees.\n"
" Create some laptop, printer or phone and link each equipment "
"to an employee or departement.\n"
" You will manage allocations, issues and maintenance of "
"equipment."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Track Equipments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Unassigned"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Under Maintenance"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Unread Messages"
msgstr "Messages non lus"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_equipment_alias_prefix
msgid "Use the following alias to report internal equipment issue"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_equipment_assign_to
msgid "Used By"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Users"
msgstr "Utilisateurs"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_partner_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Vendor"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_partner_ref
msgid "Vendor Reference"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "Very Low"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_warranty
msgid "Warranty"
msgstr ""
#. module: hr_equipment
#: code:addons/hr_equipment/models/hr_equipment.py:71
#, python-format
msgid ""
"You cannot delete an equipment category containing equipments or maintenance "
"requests."
msgstr ""
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment_config_settings
msgid "hr.equipment.config.settings"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_tree
msgid "maintenance Request"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
msgid "maintenance Request Search"
msgstr ""
#~ msgid "Date of the last message posted on the record."
#~ msgstr "Date du dernier message posté sur l'enregistrement."
#~ msgid "Followers"
#~ msgstr "Abonnés"
#~ msgid "If checked new messages require your attention."
#~ msgstr "Si coché, les nouveaux messages requierent votre attention. "
#~ msgid "Last Message Date"
#~ msgstr "Date du dernier message"
#~ msgid "Messages"
#~ msgstr "Messages"
#~ msgid "Messages and communication history"
#~ msgstr "Messages et historique des communications"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,923 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_equipment
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:08+0000\n"
"PO-Revision-Date: 2015-09-30 09:25+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Kazakh (http://www.transifex.com/odoo/odoo-9/language/kk/)\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
msgid "<b>Category:</b>"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "<b>Model Number:</b>"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
msgid "<b>Request to:</b>"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "<b>Serial Number:</b>"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_defaults
msgid ""
"A Python dictionary that will be evaluated to provide default values when "
"creating new records for this alias."
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer3
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer5
msgid "Acer Laptop"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_active
msgid "Active"
msgstr "Белсенді"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_id
msgid "Alias"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_contact
msgid "Alias Contact Security"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_alias_domain
msgid "Alias Domain"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_name
msgid "Alias Name"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_domain
msgid "Alias domain"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_model_id
msgid "Aliased Model"
msgstr ""
#. module: hr_equipment
#: sql_constraint:hr.equipment:0
msgid "Another asset already exists with this serial number!"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Apply"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_equipment_id
msgid "Asset"
msgstr "Белсенді"
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment_category
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_id_5764
msgid "Asset Category"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_name
msgid "Asset Name"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_tree
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_tree
msgid "Assign To Employee"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_assign_date
msgid "Assigned Date"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_user_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_department_id
msgid "Assigned to Department"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to Departments"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_employee_id
msgid "Assigned to Employee"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to Employees"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Assigned to Employees and Departments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Available"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,kanban_state:0
msgid "Blocked"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Cancel"
msgstr "Бас тарту"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_category_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Category"
msgstr "Санат"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_name
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
msgid "Category Name"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action_from_category_form
msgid "Click to add a new Engine."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_category_action
msgid "Click to add a new equipment category."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action
msgid "Click to add a new equipment."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action_link
msgid "Click to add a new maintenance request."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_stage_action
msgid "Click to add a stage in the maintenance request."
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_close_date
msgid "Close Date"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_color
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_color
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_color
msgid "Color Index"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_note
msgid "Comments"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_computer
msgid "Computers"
msgstr ""
#. module: hr_equipment
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_configuration
msgid "Configuration"
msgstr "Баптау"
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.action_hr_equipment_configuration
msgid "Configure Equipments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Configure Equipments Settings"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_cost
msgid "Cost"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_create_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_create_uid
msgid "Created by"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_create_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_create_date
msgid "Created on"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_maintenance_open_count
msgid "Current Maintenance"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_defaults
msgid "Default Values"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Delete"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment,equipment_assign_to:0
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_department_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_tree
msgid "Department"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_description
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Description"
msgstr "Сипаттамасы"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_display_name
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_display_name
msgid "Display Name"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Edit..."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
msgid "Email Alias"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_id
msgid ""
"Email alias for this equipment category. New emails will automatically "
"create new maintenance request for this equipment category."
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment,equipment_assign_to:0
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_employee_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_tree
msgid "Employee"
msgstr ""
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_equipment_count
msgid "Equipment"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,description:hr_equipment.mt_mat_assign
#: model:mail.message.subtype,name:hr_equipment.mt_cat_mat_assign
#: model:mail.message.subtype,name:hr_equipment.mt_mat_assign
msgid "Equipment Assigned"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_category_action
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_cat
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
msgid "Equipment Categories"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Equipment Name"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_action
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_action_from_category_form
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_equipment_ids
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_title
#: model:ir.ui.menu,name:hr_equipment.menu_hr_equipment_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Equipments"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_fold
msgid "Folded in Maintenance Pipe"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_fold
msgid "Folded in Recruitment Pipe"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_request_action_link
msgid ""
"Follow the process of the request and communicate with the collaborator."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Group by..."
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_printer1
msgid "HP Inkjet printer"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer11
#: model:hr.equipment,name:hr_equipment.hr_equipment_computer9
msgid "HP Laptop"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "High"
msgstr "Жоғары"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_id
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_id
msgid "ID"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_parent_thread_id
msgid ""
"ID of the parent record holding the alias (example: project holding the task "
"creation alias)"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,kanban_state:0
#: model:hr.equipment.stage,name:hr_equipment.stage_1
msgid "In Progress"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Internal Note ......."
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_kanban_state
msgid "Kanban State"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request___last_update
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage___last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_write_uid
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_write_date
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_location
msgid "Location"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "Low"
msgstr "Төмен"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_maintenance_count
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_maintenance_count
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_form
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Maintenance"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Maintenance Request"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,name:hr_equipment.mt_cat_req_created
msgid "Maintenance Request Created"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_stage_view_tree
msgid "Maintenance Request Stage"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_stage_view_search
msgid "Maintenance Request Stages"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,description:hr_equipment.mt_req_created
msgid "Maintenance Request created"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_request_action
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_request_action_from_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_request_action_link
#: model:ir.model,name:hr_equipment.model_hr_equipment_request
#: model:ir.ui.menu,name:hr_equipment.menu_m_request_form
msgid "Maintenance Requests"
msgstr ""
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment_stage
msgid "Maintenance Stage"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Maintenance Subject"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_maintenance_ids
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_maintenance_ids
msgid "Maintenance ids"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_model
msgid "Model"
msgstr "Түрі"
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_monitor
msgid "Monitors"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "My Equipments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
msgid "My Requests"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_name
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_tree
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Name"
msgstr "Атауы"
#. module: hr_equipment
#: model:hr.equipment.stage,name:hr_equipment.stage_0
msgid "New Request"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "Normal"
msgstr "Қәдімгі"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_note
msgid "Note"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_force_thread_id
msgid ""
"Optional ID of a thread (record) to which all incoming messages will be "
"attached, even if they did not reply to it. If set, this will disable the "
"creation of new records completely."
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_user_id
msgid "Owner"
msgstr "Иесі"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_parent_model_id
msgid "Parent Model"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_parent_thread_id
msgid "Parent Record Thread ID"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_parent_model_id
msgid ""
"Parent model holding the alias. The model holding the alias reference is not "
"necessarily the model given by alias_model_id (example: project "
"(parent_model) and task (model))"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_phone
msgid "Phones"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_contact
msgid ""
"Policy to post a message on the document using the mailgateway.\n"
"- everyone: everyone can post\n"
"- partners: only authenticated partners\n"
"- followers: only followers of the related document or members of following "
"channels\n"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_printer
msgid "Printers"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_priority
msgid "Priority"
msgstr "Маңыздылығы"
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_form
msgid "Product Information"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,kanban_state:0
msgid "Ready for next stage"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_alias_force_thread_id
msgid "Record Thread ID"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Repair Responsible"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.stage,name:hr_equipment.stage_3
msgid "Repaired"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Request"
msgstr "Сұрақ"
#. module: hr_equipment
#: model:mail.message.subtype,name:hr_equipment.mt_req_created
msgid "Request Created"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_request_date
msgid "Request Date"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_done
msgid "Request Done"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Requests Alias"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Reset Request"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_category_user_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
msgid "Responsible"
msgstr ""
#. module: hr_equipment
#: model:hr.equipment,name:hr_equipment.hr_equipment_monitor1
#: model:hr.equipment,name:hr_equipment.hr_equipment_monitor4
#: model:hr.equipment,name:hr_equipment.hr_equipment_monitor6
msgid "Samsung Monitor 15\""
msgstr ""
#. module: hr_equipment
#: model:hr.equipment.stage,name:hr_equipment.stage_4
msgid "Scrap"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_scrap_date
msgid "Scrap Date"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_category_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Search"
msgstr "Іздеу"
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Sender"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_stage_sequence
msgid "Sequence"
msgstr "Тізбек"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_serial_no
msgid "Serial Number"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_request_active
msgid ""
"Set active to false to hide the maintenance request without deleting it."
msgstr ""
#. module: hr_equipment
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_global_settings
msgid "Settings"
msgstr "Баптау"
#. module: hr_equipment
#: model:hr.equipment.category,name:hr_equipment.hr_equipment_software
msgid "Software"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_stage_id
msgid "Stage"
msgstr ""
#. module: hr_equipment
#: model:ir.actions.act_window,name:hr_equipment.hr_equipment_stage_action
#: model:ir.ui.menu,name:hr_equipment.menu_equipment_stage_configuration
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
msgid "Stages"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,name:hr_equipment.mt_req_status
msgid "Status Changed"
msgstr ""
#. module: hr_equipment
#: model:mail.message.subtype,description:hr_equipment.mt_req_status
msgid "Status changed"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_form
msgid "Subject"
msgstr "Нысаны"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_request_name
msgid "Subjects"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_user_id
msgid "Technician"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_model_id
msgid ""
"The model (Odoo Document Kind) to which this alias corresponds. Any incoming "
"email that does not reply to an existing record will cause the creation of a "
"new record of this model (e.g. a Project Task)"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_name
msgid ""
"The name of the email alias, e.g. 'jobs' if you want to catch emails for "
"<jobs@example.odoo.com>"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,help:hr_equipment.field_hr_equipment_category_alias_user_id
msgid ""
"The owner of records created upon receiving emails on this alias. If this "
"field is not set the system will attempt to find the right owner based on "
"the sender (From) address, or will use the Administrator account if no "
"system user is found for that address."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action
msgid ""
"This application helps you to track equipments used by employees.\n"
" Create some laptop, printer or phone and link each equipment "
"to\n"
" an employee or departement. You will manage allocations, "
"issues\n"
" and maintenance of equipment."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.actions.act_window,help:hr_equipment.hr_equipment_action_from_category_form
msgid ""
"This application helps you to track equipments used by employees.\n"
" Create some laptop, printer or phone and link each equipment "
"to an employee or departement.\n"
" You will manage allocations, issues and maintenance of "
"equipment."
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_config_settings_view_form
msgid "Track Equipments"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_kanban
msgid "Unassigned"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Under Maintenance"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_kanban
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Unread Messages"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_config_settings_equipment_alias_prefix
msgid "Use the following alias to report internal equipment issue"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_equipment_assign_to
msgid "Used By"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Users"
msgstr "Пайдаланушылар"
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_partner_id
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_view_search
msgid "Vendor"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_partner_ref
msgid "Vendor Reference"
msgstr ""
#. module: hr_equipment
#: selection:hr.equipment.request,priority:0
msgid "Very Low"
msgstr ""
#. module: hr_equipment
#: model:ir.model.fields,field_description:hr_equipment.field_hr_equipment_warranty
msgid "Warranty"
msgstr ""
#. module: hr_equipment
#: code:addons/hr_equipment/models/hr_equipment.py:71
#, python-format
msgid ""
"You cannot delete an equipment category containing equipments or maintenance "
"requests."
msgstr ""
#. module: hr_equipment
#: model:ir.model,name:hr_equipment.model_hr_equipment_config_settings
msgid "hr.equipment.config.settings"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_tree
msgid "maintenance Request"
msgstr ""
#. module: hr_equipment
#: model_terms:ir.ui.view,arch_db:hr_equipment.hr_equipment_request_view_search
msgid "maintenance Request Search"
msgstr ""

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import maintenance

View file

@ -0,0 +1,450 @@
# -*- coding: utf-8 -*-
import ast
from datetime import date, datetime, timedelta
from odoo import api, fields, models, SUPERUSER_ID, _
from odoo.exceptions import UserError
from odoo.osv import expression
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
class MaintenanceStage(models.Model):
""" Model for case stages. This models the main stages of a Maintenance Request management flow. """
_name = 'maintenance.stage'
_description = 'Maintenance Stage'
_order = 'sequence, id'
name = fields.Char('Name', required=True, translate=True)
sequence = fields.Integer('Sequence', default=20)
fold = fields.Boolean('Folded in Maintenance Pipe')
done = fields.Boolean('Request Done')
class MaintenanceEquipmentCategory(models.Model):
_name = 'maintenance.equipment.category'
_inherit = ['mail.alias.mixin', 'mail.thread']
_description = 'Maintenance Equipment Category'
@api.depends('equipment_ids')
def _compute_fold(self):
# fix mutual dependency: 'fold' depends on 'equipment_count', which is
# computed with a read_group(), which retrieves 'fold'!
self.fold = False
for category in self:
category.fold = False if category.equipment_count else True
name = fields.Char('Category Name', required=True, translate=True)
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company)
technician_user_id = fields.Many2one('res.users', 'Responsible', tracking=True, default=lambda self: self.env.uid)
color = fields.Integer('Color Index')
note = fields.Html('Comments', translate=True)
equipment_ids = fields.One2many('maintenance.equipment', 'category_id', string='Equipments', copy=False)
equipment_count = fields.Integer(string="Equipment", compute='_compute_equipment_count')
maintenance_ids = fields.One2many('maintenance.request', 'category_id', copy=False)
maintenance_count = fields.Integer(string="Maintenance Count", compute='_compute_maintenance_count')
alias_id = fields.Many2one(
'mail.alias', 'Alias', ondelete='restrict', required=True,
help="Email alias for this equipment category. New emails will automatically "
"create a new equipment under this category.")
fold = fields.Boolean(string='Folded in Maintenance Pipe', compute='_compute_fold', store=True)
def _compute_equipment_count(self):
equipment_data = self.env['maintenance.equipment']._read_group([('category_id', 'in', self.ids)], ['category_id'], ['category_id'])
mapped_data = dict([(m['category_id'][0], m['category_id_count']) for m in equipment_data])
for category in self:
category.equipment_count = mapped_data.get(category.id, 0)
def _compute_maintenance_count(self):
maintenance_data = self.env['maintenance.request']._read_group([('category_id', 'in', self.ids)], ['category_id'], ['category_id'])
mapped_data = dict([(m['category_id'][0], m['category_id_count']) for m in maintenance_data])
for category in self:
category.maintenance_count = mapped_data.get(category.id, 0)
@api.ondelete(at_uninstall=False)
def _unlink_except_contains_maintenance_requests(self):
for category in self:
if category.equipment_ids or category.maintenance_ids:
raise UserError(_("You cannot delete an equipment category containing equipments or maintenance requests."))
def _alias_get_creation_values(self):
values = super(MaintenanceEquipmentCategory, self)._alias_get_creation_values()
values['alias_model_id'] = self.env['ir.model']._get('maintenance.request').id
if self.id:
values['alias_defaults'] = defaults = ast.literal_eval(self.alias_defaults or "{}")
defaults['category_id'] = self.id
return values
class MaintenanceEquipment(models.Model):
_name = 'maintenance.equipment'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = 'Maintenance Equipment'
_check_company_auto = True
def _track_subtype(self, init_values):
self.ensure_one()
if 'owner_user_id' in init_values and self.owner_user_id:
return self.env.ref('maintenance.mt_mat_assign')
return super(MaintenanceEquipment, self)._track_subtype(init_values)
def name_get(self):
result = []
for record in self:
if record.name and record.serial_no:
result.append((record.id, record.name + '/' + record.serial_no))
if record.name and not record.serial_no:
result.append((record.id, record.name))
return result
@api.model
def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None):
args = args or []
equipment_ids = []
if name and operator not in expression.NEGATIVE_TERM_OPERATORS and operator != '=':
equipment_ids = self._search([('name', '=', name)] + args, limit=limit, access_rights_uid=name_get_uid)
return equipment_ids or super()._name_search(name, args, operator, limit, name_get_uid)
name = fields.Char('Equipment Name', required=True, translate=True)
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company)
active = fields.Boolean(default=True)
technician_user_id = fields.Many2one('res.users', string='Technician', tracking=True)
owner_user_id = fields.Many2one('res.users', string='Owner', tracking=True)
category_id = fields.Many2one('maintenance.equipment.category', string='Equipment Category',
tracking=True, group_expand='_read_group_category_ids')
partner_id = fields.Many2one('res.partner', string='Vendor', check_company=True)
partner_ref = fields.Char('Vendor Reference')
location = fields.Char('Location')
model = fields.Char('Model')
serial_no = fields.Char('Serial Number', copy=False)
assign_date = fields.Date('Assigned Date', tracking=True)
effective_date = fields.Date('Effective Date', default=fields.Date.context_today, required=True, help="Date at which the equipment became effective. This date will be used to compute the Mean Time Between Failure.")
cost = fields.Float('Cost')
note = fields.Html('Note')
warranty_date = fields.Date('Warranty Expiration Date')
color = fields.Integer('Color Index')
scrap_date = fields.Date('Scrap Date')
maintenance_ids = fields.One2many('maintenance.request', 'equipment_id')
maintenance_count = fields.Integer(compute='_compute_maintenance_count', string="Maintenance Count", store=True)
maintenance_open_count = fields.Integer(compute='_compute_maintenance_count', string="Current Maintenance", store=True)
period = fields.Integer('Days between each preventive maintenance')
next_action_date = fields.Date(compute='_compute_next_maintenance', string='Date of the next preventive maintenance', store=True)
maintenance_team_id = fields.Many2one('maintenance.team', string='Maintenance Team', check_company=True, ondelete="restrict")
maintenance_duration = fields.Float(help="Maintenance Duration in hours.")
@api.depends('effective_date', 'period', 'maintenance_ids.request_date', 'maintenance_ids.close_date')
def _compute_next_maintenance(self):
date_now = fields.Date.context_today(self)
equipments = self.filtered(lambda x: x.period > 0)
for equipment in equipments:
next_maintenance_todo = self.env['maintenance.request'].search([
('equipment_id', '=', equipment.id),
('maintenance_type', '=', 'preventive'),
('stage_id.done', '!=', True),
('close_date', '=', False)], order="request_date asc", limit=1)
last_maintenance_done = self.env['maintenance.request'].search([
('equipment_id', '=', equipment.id),
('maintenance_type', '=', 'preventive'),
('stage_id.done', '=', True),
('close_date', '!=', False)], order="close_date desc", limit=1)
if next_maintenance_todo and last_maintenance_done:
next_date = next_maintenance_todo.request_date
date_gap = next_maintenance_todo.request_date - last_maintenance_done.close_date
# If the gap between the last_maintenance_done and the next_maintenance_todo one is bigger than 2 times the period and next request is in the future
# We use 2 times the period to avoid creation too closed request from a manually one created
if date_gap > timedelta(0) and date_gap > timedelta(days=equipment.period) * 2 and next_maintenance_todo.request_date > date_now:
# If the new date still in the past, we set it for today
if last_maintenance_done.close_date + timedelta(days=equipment.period) < date_now:
next_date = date_now
else:
next_date = last_maintenance_done.close_date + timedelta(days=equipment.period)
elif next_maintenance_todo:
next_date = next_maintenance_todo.request_date
date_gap = next_maintenance_todo.request_date - date_now
# If next maintenance to do is in the future, and in more than 2 times the period, we insert an new request
# We use 2 times the period to avoid creation too closed request from a manually one created
if date_gap > timedelta(0) and date_gap > timedelta(days=equipment.period) * 2:
next_date = date_now + timedelta(days=equipment.period)
elif last_maintenance_done:
next_date = last_maintenance_done.close_date + timedelta(days=equipment.period)
# If when we add the period to the last maintenance done and we still in past, we plan it for today
if next_date < date_now:
next_date = date_now
else:
next_date = equipment.effective_date + timedelta(days=equipment.period)
equipment.next_action_date = next_date
(self - equipments).next_action_date = False
@api.depends('maintenance_ids.stage_id.done')
def _compute_maintenance_count(self):
for equipment in self:
equipment.maintenance_count = len(equipment.maintenance_ids)
equipment.maintenance_open_count = len(equipment.maintenance_ids.filtered(lambda x: not x.stage_id.done))
@api.onchange('company_id')
def _onchange_company_id(self):
if self.company_id and self.maintenance_team_id:
if self.maintenance_team_id.company_id and not self.maintenance_team_id.company_id.id == self.company_id.id:
self.maintenance_team_id = False
@api.onchange('category_id')
def _onchange_category_id(self):
self.technician_user_id = self.category_id.technician_user_id
_sql_constraints = [
('serial_no', 'unique(serial_no)', "Another asset already exists with this serial number!"),
]
@api.model_create_multi
def create(self, vals_list):
equipments = super().create(vals_list)
for equipment in equipments:
if equipment.owner_user_id:
equipment.message_subscribe(partner_ids=[equipment.owner_user_id.partner_id.id])
return equipments
def write(self, vals):
if vals.get('owner_user_id'):
self.message_subscribe(partner_ids=self.env['res.users'].browse(vals['owner_user_id']).partner_id.ids)
return super(MaintenanceEquipment, self).write(vals)
@api.model
def _read_group_category_ids(self, categories, domain, order):
""" Read group customization in order to display all the categories in
the kanban view, even if they are empty.
"""
category_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
return categories.browse(category_ids)
def _prepare_maintenance_request_vals(self, date):
self.ensure_one()
return {
'name': _('Preventive Maintenance - %s', self.name),
'request_date': date,
'schedule_date': date,
'category_id': self.category_id.id,
'equipment_id': self.id,
'maintenance_type': 'preventive',
'owner_user_id': self.owner_user_id.id,
'user_id': self.technician_user_id.id,
'maintenance_team_id': self.maintenance_team_id.id,
'duration': self.maintenance_duration,
'company_id': self.company_id.id or self.env.company.id
}
def _create_new_request(self, date):
self.ensure_one()
vals = self._prepare_maintenance_request_vals(date)
maintenance_requests = self.env['maintenance.request'].create(vals)
return maintenance_requests
@api.model
def _cron_generate_requests(self):
"""
Generates maintenance request on the next_action_date or today if none exists
"""
for equipment in self.search([('period', '>', 0)]):
next_requests = self.env['maintenance.request'].search([('stage_id.done', '=', False),
('equipment_id', '=', equipment.id),
('maintenance_type', '=', 'preventive'),
('request_date', '=', equipment.next_action_date)])
if not next_requests:
equipment._create_new_request(equipment.next_action_date)
class MaintenanceRequest(models.Model):
_name = 'maintenance.request'
_inherit = ['mail.thread.cc', 'mail.activity.mixin']
_description = 'Maintenance Request'
_order = "id desc"
_check_company_auto = True
@api.returns('self')
def _default_stage(self):
return self.env['maintenance.stage'].search([], limit=1)
def _creation_subtype(self):
return self.env.ref('maintenance.mt_req_created')
def _track_subtype(self, init_values):
self.ensure_one()
if 'stage_id' in init_values:
return self.env.ref('maintenance.mt_req_status')
return super(MaintenanceRequest, self)._track_subtype(init_values)
def _get_default_team_id(self):
MT = self.env['maintenance.team']
team = MT.search([('company_id', '=', self.env.company.id)], limit=1)
if not team:
team = MT.search([], limit=1)
return team.id
name = fields.Char('Subjects', required=True)
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company)
description = fields.Html('Description')
request_date = fields.Date('Request Date', tracking=True, default=fields.Date.context_today,
help="Date requested for the maintenance to happen")
owner_user_id = fields.Many2one('res.users', string='Created by User', default=lambda s: s.env.uid)
category_id = fields.Many2one('maintenance.equipment.category', related='equipment_id.category_id', string='Category', store=True, readonly=True)
equipment_id = fields.Many2one('maintenance.equipment', string='Equipment',
ondelete='restrict', index=True, check_company=True)
user_id = fields.Many2one('res.users', string='Technician', tracking=True)
stage_id = fields.Many2one('maintenance.stage', string='Stage', ondelete='restrict', tracking=True,
group_expand='_read_group_stage_ids', default=_default_stage, copy=False)
priority = fields.Selection([('0', 'Very Low'), ('1', 'Low'), ('2', 'Normal'), ('3', 'High')], string='Priority')
color = fields.Integer('Color Index')
close_date = fields.Date('Close Date', help="Date the maintenance was finished. ")
kanban_state = fields.Selection([('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')],
string='Kanban State', required=True, default='normal', tracking=True)
# active = fields.Boolean(default=True, help="Set active to false to hide the maintenance request without deleting it.")
archive = fields.Boolean(default=False, help="Set archive to true to hide the maintenance request without deleting it.")
maintenance_type = fields.Selection([('corrective', 'Corrective'), ('preventive', 'Preventive')], string='Maintenance Type', default="corrective")
schedule_date = fields.Datetime('Scheduled Date', help="Date the maintenance team plans the maintenance. It should not differ much from the Request Date. ")
maintenance_team_id = fields.Many2one('maintenance.team', string='Team', required=True, default=_get_default_team_id, check_company=True)
duration = fields.Float(help="Duration in hours.")
done = fields.Boolean(related='stage_id.done')
def archive_equipment_request(self):
self.write({'archive': True})
def reset_equipment_request(self):
""" Reinsert the maintenance request into the maintenance pipe in the first stage"""
first_stage_obj = self.env['maintenance.stage'].search([], order="sequence asc", limit=1)
# self.write({'active': True, 'stage_id': first_stage_obj.id})
self.write({'archive': False, 'stage_id': first_stage_obj.id})
@api.onchange('company_id')
def _onchange_company_id(self):
if self.company_id and self.maintenance_team_id:
if self.maintenance_team_id.company_id and not self.maintenance_team_id.company_id.id == self.company_id.id:
self.maintenance_team_id = False
@api.onchange('equipment_id')
def onchange_equipment_id(self):
if self.equipment_id:
self.user_id = self.equipment_id.technician_user_id if self.equipment_id.technician_user_id else self.equipment_id.category_id.technician_user_id
self.category_id = self.equipment_id.category_id
if self.equipment_id.maintenance_team_id:
self.maintenance_team_id = self.equipment_id.maintenance_team_id.id
@api.onchange('category_id')
def onchange_category_id(self):
if not self.user_id or not self.equipment_id or (self.user_id and not self.equipment_id.technician_user_id):
self.user_id = self.category_id.technician_user_id
@api.model_create_multi
def create(self, vals_list):
# context: no_log, because subtype already handle this
maintenance_requests = super().create(vals_list)
for request in maintenance_requests:
if request.owner_user_id or request.user_id:
request._add_followers()
if request.equipment_id and not request.maintenance_team_id:
request.maintenance_team_id = request.equipment_id.maintenance_team_id
if request.close_date and not request.stage_id.done:
request.close_date = False
if not request.close_date and request.stage_id.done:
request.close_date = fields.Date.today()
maintenance_requests.activity_update()
return maintenance_requests
def write(self, vals):
# Overridden to reset the kanban_state to normal whenever
# 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'
res = super(MaintenanceRequest, self).write(vals)
if vals.get('owner_user_id') or vals.get('user_id'):
self._add_followers()
if 'stage_id' in vals:
self.filtered(lambda m: m.stage_id.done).write({'close_date': fields.Date.today()})
self.filtered(lambda m: not m.stage_id.done).write({'close_date': False})
self.activity_feedback(['maintenance.mail_act_maintenance_request'])
self.activity_update()
if vals.get('user_id') or vals.get('schedule_date'):
self.activity_update()
if vals.get('equipment_id'):
# need to change description of activity also so unlink old and create new activity
self.activity_unlink(['maintenance.mail_act_maintenance_request'])
self.activity_update()
return res
def activity_update(self):
""" Update maintenance activities based on current record set state.
It reschedule, unlink or create maintenance request activities. """
self.filtered(lambda request: not request.schedule_date).activity_unlink(['maintenance.mail_act_maintenance_request'])
for request in self.filtered(lambda request: request.schedule_date):
date_dl = fields.Datetime.from_string(request.schedule_date).date()
updated = request.activity_reschedule(
['maintenance.mail_act_maintenance_request'],
date_deadline=date_dl,
new_user_id=request.user_id.id or request.owner_user_id.id or self.env.uid)
if not updated:
if request.equipment_id:
note = _(
'Request planned for %s',
request.equipment_id._get_html_link()
)
else:
note = False
request.activity_schedule(
'maintenance.mail_act_maintenance_request',
fields.Datetime.from_string(request.schedule_date).date(),
note=note, user_id=request.user_id.id or request.owner_user_id.id or self.env.uid)
def _add_followers(self):
for request in self:
partner_ids = (request.owner_user_id.partner_id + request.user_id.partner_id).ids
request.message_subscribe(partner_ids=partner_ids)
@api.model
def _read_group_stage_ids(self, stages, domain, order):
""" Read group customization in order to display all the stages in the
kanban view, even if they are empty
"""
stage_ids = stages._search([], order=order, access_rights_uid=SUPERUSER_ID)
return stages.browse(stage_ids)
class MaintenanceTeam(models.Model):
_name = 'maintenance.team'
_description = 'Maintenance Teams'
name = fields.Char('Team Name', required=True, translate=True)
active = fields.Boolean(default=True)
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company)
member_ids = fields.Many2many(
'res.users', 'maintenance_team_users_rel', string="Team Members",
domain="[('company_ids', 'in', company_id)]")
color = fields.Integer("Color Index", default=0)
request_ids = fields.One2many('maintenance.request', 'maintenance_team_id', copy=False)
equipment_ids = fields.One2many('maintenance.equipment', 'maintenance_team_id', copy=False)
# For the dashboard only
todo_request_ids = fields.One2many('maintenance.request', string="Requests", copy=False, compute='_compute_todo_requests')
todo_request_count = fields.Integer(string="Number of Requests", compute='_compute_todo_requests')
todo_request_count_date = fields.Integer(string="Number of Requests Scheduled", compute='_compute_todo_requests')
todo_request_count_high_priority = fields.Integer(string="Number of Requests in High Priority", compute='_compute_todo_requests')
todo_request_count_block = fields.Integer(string="Number of Requests Blocked", compute='_compute_todo_requests')
todo_request_count_unscheduled = fields.Integer(string="Number of Requests Unscheduled", compute='_compute_todo_requests')
@api.depends('request_ids.stage_id.done')
def _compute_todo_requests(self):
for team in self:
team.todo_request_ids = self.env['maintenance.request'].search([('maintenance_team_id', '=', team.id), ('stage_id.done', '=', False)])
team.todo_request_count = len(team.todo_request_ids)
team.todo_request_count_date = self.env['maintenance.request'].search_count([('maintenance_team_id', '=', team.id), ('schedule_date', '!=', False)])
team.todo_request_count_high_priority = self.env['maintenance.request'].search_count([('maintenance_team_id', '=', team.id), ('priority', '=', '3')])
team.todo_request_count_block = self.env['maintenance.request'].search_count([('maintenance_team_id', '=', team.id), ('kanban_state', '=', 'blocked')])
team.todo_request_count_unscheduled = self.env['maintenance.request'].search_count([('maintenance_team_id', '=', team.id), ('schedule_date', '=', False)])
@api.depends('equipment_ids')
def _compute_equipment(self):
for team in self:
team.equipment_count = len(team.equipment_ids)

View file

@ -0,0 +1,11 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_equipment_user,equipment.user,model_maintenance_equipment,base.group_user,1,0,0,0
access_equipment_admin_user,equipment.admin.user,model_maintenance_equipment,group_equipment_manager,1,1,1,1
access_maintenance_system_user,equipment.request system user,model_maintenance_request,base.group_user,1,1,1,1
access_equipment_category_user,equipment.category.user,model_maintenance_equipment_category,base.group_user,1,0,0,0
access_equipment_category_admin_user,equipment.category system user,model_maintenance_equipment_category,group_equipment_manager,1,1,1,1
access_maintenance_stage_user,maintenance.stage.user,model_maintenance_stage,base.group_user,1,0,0,0
access_maintenance_stage_admin_user,equipment.request.stage system user,model_maintenance_stage,group_equipment_manager,1,1,1,1
access_maintenance_team_user,maintenance.team.user,model_maintenance_team,base.group_user,1,0,0,0
access_maintenance_team_admin_user,maintenance.team.admin.user,model_maintenance_team,group_equipment_manager,1,1,1,1
access_mail_activity_type_equipment_manager,mail.activity.type.equipment.manager,mail.model_mail_activity_type,maintenance.group_equipment_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_equipment_user equipment.user model_maintenance_equipment base.group_user 1 0 0 0
3 access_equipment_admin_user equipment.admin.user model_maintenance_equipment group_equipment_manager 1 1 1 1
4 access_maintenance_system_user equipment.request system user model_maintenance_request base.group_user 1 1 1 1
5 access_equipment_category_user equipment.category.user model_maintenance_equipment_category base.group_user 1 0 0 0
6 access_equipment_category_admin_user equipment.category system user model_maintenance_equipment_category group_equipment_manager 1 1 1 1
7 access_maintenance_stage_user maintenance.stage.user model_maintenance_stage base.group_user 1 0 0 0
8 access_maintenance_stage_admin_user equipment.request.stage system user model_maintenance_stage group_equipment_manager 1 1 1 1
9 access_maintenance_team_user maintenance.team.user model_maintenance_team base.group_user 1 0 0 0
10 access_maintenance_team_admin_user maintenance.team.admin.user model_maintenance_team group_equipment_manager 1 1 1 1
11 access_mail_activity_type_equipment_manager mail.activity.type.equipment.manager mail.model_mail_activity_type maintenance.group_equipment_manager 1 1 1 1

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This group is only allowed to deal with equipment registration and maintenance -->
<record id="group_equipment_manager" model="res.groups">
<field name="name">Equipment Manager</field>
<field name="category_id" ref="base.module_category_manufacturing_maintenance"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
<field name="comment">The user will be able to manage equipments.</field>
</record>
<data noupdate="1">
<!-- Rules -->
<record id="equipment_request_rule_user" model="ir.rule">
<field name="name">Users are allowed to access their own maintenance requests</field>
<field name="model_id" ref="model_maintenance_request"/>
<field name="domain_force">['|', '|', ('owner_user_id', '=', user.id), ('message_partner_ids', 'in', [user.partner_id.id]), ('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="equipment_rule_user" model="ir.rule">
<field name="name">Users are allowed to access equipments they follow</field>
<field name="model_id" ref="model_maintenance_equipment"/>
<field name="domain_force">[('message_partner_ids', 'in', [user.partner_id.id])]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="equipment_request_rule_admin_user" model="ir.rule">
<field name="name">Administrator of maintenance requests</field>
<field name="model_id" ref="model_maintenance_request"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_equipment_manager'))]"/>
</record>
<record id="equipment_rule_admin_user" model="ir.rule">
<field name="name">Equipments administrator</field>
<field name="model_id" ref="model_maintenance_equipment"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_equipment_manager'))]"/>
</record>
<record id="maintenance_request_comp_rule" model="ir.rule">
<field name="name">Maintenance Request Multi-company rule</field>
<field name="model_id" ref="model_maintenance_request"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="maintenance_equipment_comp_rule" model="ir.rule">
<field name="name">Maintenance Equipment Multi-company rule</field>
<field name="model_id" ref="model_maintenance_equipment"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="maintenance_team_comp_rule" model="ir.rule">
<field name="name">Maintenance Team Multi-company rule</field>
<field name="model_id" ref="model_maintenance_team"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="maintenance_equipment_category_comp_rule" model="ir.rule">
<field name="name">Maintenance Equipment Category Multi-company rule</field>
<field name="model_id" ref="model_maintenance_equipment_category"/>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -0,0 +1 @@
<svg width="70" height="70" viewBox="0 0 70 70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>maintenance/static/description/icon</title><defs><path d="M4 0h61c4 0 5 1 5 5v60c0 4-1 5-5 5H4c-3 0-4-1-4-5V5c0-4 1-5 4-5z" id="a"/><linearGradient x1="100%" y1="0%" x2="0%" y2="98.616%" id="c"><stop stop-color="#797C79" offset="0%"/><stop stop-color="#545554" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g mask="url(#b)"><path fill="url(#c)" d="M0 0H70V70H0z"/><path d="M4 1h61c2.667 0 4.333.667 5 2V0H0v3c.667-1.333 2-2 4-2z" fill="#FFF" fill-opacity=".383"/><path d="M42.863 70H4c-2 0-4-.149-4-4.17V42.7L22 21l35 33.362L42.863 70z" fill="#393939" opacity=".324"/><path d="M4 69h61c2.667 0 4.333-1 5-3v4H0v-4c.667 2 2 3 4 3z" fill="#000" fill-opacity=".383"/><path d="M34.821 40.185l-9.488-9.488-3.163 3.163h-3.162c-1.487 1.054-3.02 2.372-4.602 3.953-1.02 1.53-1.81 2.88-2.372 4.05-.622-2.173-.173-4.424 1.346-6.755 1.116-1.36 2.465-3.093 4.046-5.202v-2.372l7.907-7.906c2.635.527 3.69-.528 3.163-3.163l3.162-3.163 6.326 5.535A38.251 38.251 0 0 1 34.82 22c-2.636-.528-3.953.527-3.953 3.162l-2.372 2.372 8.697 9.488 3.953-.79L56.96 52.045v3.163l-4.744 4.744h-3.163L34.03 44.138v-2.372l.791-1.58z" fill="#000" opacity=".3"/><path d="M34.821 38.185l-9.488-9.488-3.163 3.163h-3.162c-1.487 1.054-3.02 2.372-4.602 3.953-1.02 1.53-1.81 2.88-2.372 4.05-.622-2.173-.173-4.424 1.346-6.755 1.116-1.36 2.465-3.093 4.046-5.202v-2.372l7.907-7.906c2.635.527 3.69-.528 3.163-3.163l3.162-3.163 6.326 5.535A38.251 38.251 0 0 1 34.82 20c-2.636-.528-3.953.527-3.953 3.162l-2.372 2.372 8.697 9.488 3.953-.79L56.96 50.045v3.163l-4.744 4.744h-3.163L34.03 42.138v-2.372l.791-1.58z" fill="#FFF"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,3 @@
.o_kanban_renderer.o_maintenance_team_kanban {
--KanbanRecord-width: 420px;
}

View file

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import test_maintenance
from . import test_maintenance_multicompany

View file

@ -0,0 +1,134 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import time
from odoo.tests.common import TransactionCase
from dateutil import relativedelta
import datetime
class TestEquipment(TransactionCase):
""" Test used to check that when doing equipment/maintenance_request/equipment_category creation."""
def setUp(self):
super(TestEquipment, self).setUp()
self.equipment = self.env['maintenance.equipment']
self.maintenance_request = self.env['maintenance.request']
self.res_users = self.env['res.users']
self.maintenance_team = self.env['maintenance.team']
self.main_company = self.env.ref('base.main_company')
res_user = self.env.ref('base.group_user')
res_manager = self.env.ref('maintenance.group_equipment_manager')
self.user = self.res_users.create(dict(
name="Normal User/Employee",
company_id=self.main_company.id,
login="emp",
email="empuser@yourcompany.example.com",
groups_id=[(6, 0, [res_user.id])]
))
self.manager = self.res_users.create(dict(
name="Equipment Manager",
company_id=self.main_company.id,
login="hm",
email="eqmanager@yourcompany.example.com",
groups_id=[(6, 0, [res_manager.id])]
))
self.equipment_monitor = self.env['maintenance.equipment.category'].create({
'name': 'Monitors - Test',
})
def test_10_equipment_request_category(self):
# Create a new equipment
equipment_01 = self.equipment.with_user(self.manager).create({
'name': 'Samsung Monitor "15',
'category_id': self.equipment_monitor.id,
'technician_user_id': self.ref('base.user_root'),
'owner_user_id': self.user.id,
'assign_date': time.strftime('%Y-%m-%d'),
'serial_no': 'MT/127/18291015',
'model': 'NP355E5X',
'color': 3,
})
# Check that equipment is created or not
assert equipment_01, "Equipment not created"
# Create new maintenance request
maintenance_request_01 = self.maintenance_request.with_user(self.user).create({
'name': 'Resolution is bad',
'user_id': self.user.id,
'owner_user_id': self.user.id,
'equipment_id': equipment_01.id,
'color': 7,
'stage_id': self.ref('maintenance.stage_0'),
'maintenance_team_id': self.ref('maintenance.equipment_team_maintenance')
})
# I check that maintenance_request is created or not
assert maintenance_request_01, "Maintenance Request not created"
# I check that Initially maintenance request is in the "New Request" stage
self.assertEqual(maintenance_request_01.stage_id.id, self.ref('maintenance.stage_0'))
# I check that change the maintenance_request stage on click statusbar
maintenance_request_01.with_user(self.user).write({'stage_id': self.ref('maintenance.stage_1')})
# I check that maintenance request is in the "In Progress" stage
self.assertEqual(maintenance_request_01.stage_id.id, self.ref('maintenance.stage_1'))
def test_20_cron(self):
""" Check the cron creates the necessary preventive maintenance requests"""
equipment_cron = self.equipment.create({
'name': 'High Maintenance Monitor because of Color Calibration',
'category_id': self.equipment_monitor.id,
'technician_user_id': self.ref('base.user_root'),
'owner_user_id': self.user.id,
'assign_date': time.strftime('%Y-%m-%d'),
'period': 7,
'color': 3,
})
maintenance_request_cron = self.maintenance_request.create({
'name': 'Need a special calibration',
'user_id': self.user.id,
'request_date': (datetime.datetime.now() + relativedelta.relativedelta(days=7)).strftime('%Y-%m-%d'),
'maintenance_type': 'preventive',
'owner_user_id': self.user.id,
'equipment_id': equipment_cron.id,
'color': 7,
'stage_id': self.ref('maintenance.stage_0'),
'maintenance_team_id': self.ref('maintenance.equipment_team_maintenance')
})
self.env['maintenance.equipment']._cron_generate_requests()
# As it is generating the requests for one month in advance, we should have 4 requests in total
tot_requests = self.maintenance_request.search([('equipment_id', '=', equipment_cron.id)])
self.assertEqual(len(tot_requests), 1, 'The cron should have generated just 1 request for the High Maintenance Monitor.')
def test_21_cron(self):
""" Check the creation of maintenance requests by the cron"""
team_test = self.maintenance_team.create({
'name': 'team_test',
})
equipment = self.equipment.create({
'name': 'High Maintenance Monitor because of Color Calibration',
'category_id': self.equipment_monitor.id,
'technician_user_id': self.ref('base.user_root'),
'owner_user_id': self.user.id,
'assign_date': time.strftime('%Y-%m-%d'),
'period': 7,
'color': 3,
'maintenance_team_id': team_test.id,
'maintenance_duration': 3.0,
})
self.env['maintenance.equipment']._cron_generate_requests()
tot_requests = self.maintenance_request.search([('equipment_id', '=', equipment.id)])
self.assertEqual(len(tot_requests), 1, 'The cron should have generated just 1 request for the High Maintenance Monitor.')
self.assertEqual(tot_requests.maintenance_team_id.id, team_test.id, 'The maintenance team should be the same as equipment one')
self.assertEqual(tot_requests.duration, 3.0, 'Equipement maintenance duration is not the same as the request one')

View file

@ -0,0 +1,175 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import time
from odoo.tests.common import TransactionCase
from odoo.exceptions import AccessError
class TestEquipmentMulticompany(TransactionCase):
def test_00_equipment_multicompany_user(self):
"""Test Check maintenance with equipment manager and user in multi company environment"""
# Use full models
Equipment = self.env['maintenance.equipment']
MaintenanceRequest = self.env['maintenance.request']
Category = self.env['maintenance.equipment.category']
ResUsers = self.env['res.users']
ResCompany = self.env['res.company']
MaintenanceTeam = self.env['maintenance.team']
# Use full reference.
group_user = self.env.ref('base.group_user')
group_manager = self.env.ref('maintenance.group_equipment_manager')
# Company A
company_a = ResCompany.create({
'name': 'Company A',
'currency_id': self.env.ref('base.USD').id,
})
# Create one child company having parent company is 'Your company'
company_b = ResCompany.create({
'name': 'Company B',
'currency_id': self.env.ref('base.USD').id,
})
# Create equipment manager.
cids = [company_a.id, company_b.id]
equipment_manager = ResUsers.create({
'name': 'Equipment Manager',
'company_id': company_a.id,
'login': 'e_equipment_manager',
'email': 'eqmanager@yourcompany.example.com',
'groups_id': [(6, 0, [group_manager.id])],
'company_ids': [(6, 0, [company_a.id, company_b.id])]
})
# Create equipment user
user = ResUsers.create({
'name': 'Normal User/Employee',
'company_id': company_b.id,
'login': 'emp',
'email': 'empuser@yourcompany.example.com',
'groups_id': [(6, 0, [group_user.id])],
'company_ids': [(6, 0, [company_b.id])]
})
# create a maintenance team for company A user
team = MaintenanceTeam.with_user(equipment_manager).create({
'name': 'Metrology',
'company_id': company_a.id,
})
# create a maintenance team for company B user
teamb = MaintenanceTeam.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
'name': 'Subcontractor',
'company_id': company_b.id,
})
# User should not able to create equipment category.
with self.assertRaises(AccessError):
Category.with_user(user).create({
'name': 'Software',
'company_id': company_b.id,
'technician_user_id': user.id,
})
# create equipment category for equipment manager
category_1 = Category.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
'name': 'Monitors - Test',
'company_id': company_b.id,
'technician_user_id': equipment_manager.id,
})
# create equipment category for equipment manager
Category.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
'name': 'Computers - Test',
'company_id': company_b.id,
'technician_user_id': equipment_manager.id,
})
# create equipment category for equipment user
Category.with_user(equipment_manager).create({
'name': 'Phones - Test',
'company_id': company_a.id,
'technician_user_id': equipment_manager.id,
})
# Check category for user equipment_manager and user
self.assertEqual(Category.with_user(equipment_manager).with_context(allowed_company_ids=cids).search_count([]), 3)
self.assertEqual(Category.with_user(user).search_count([]), 2)
# User should not able to create equipment.
with self.assertRaises(AccessError):
Equipment.with_user(user).create({
'name': 'Samsung Monitor 15',
'category_id': category_1.id,
'assign_date': time.strftime('%Y-%m-%d'),
'company_id': company_b.id,
'owner_user_id': user.id,
})
Equipment.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
'name': 'Acer Laptop',
'category_id': category_1.id,
'assign_date': time.strftime('%Y-%m-%d'),
'company_id': company_b.id,
'owner_user_id': user.id,
})
# create an equipment for user
Equipment.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
'name': 'HP Laptop',
'category_id': category_1.id,
'assign_date': time.strftime('%Y-%m-%d'),
'company_id': company_b.id,
'owner_user_id': equipment_manager.id,
})
# Now there are total 2 equipments created and can view by equipment_manager user
self.assertEqual(Equipment.with_user(equipment_manager).with_context(allowed_company_ids=cids).search_count([]), 2)
# And there is total 1 equipment can be view by Normal User ( Which user is followers)
self.assertEqual(Equipment.with_user(user).search_count([]), 1)
# create an equipment team BY user
with self.assertRaises(AccessError):
MaintenanceTeam.with_user(user).create({
'name': 'Subcontractor',
'company_id': company_b.id,
})
# create an equipment category BY user
with self.assertRaises(AccessError):
Category.with_user(user).create({
'name': 'Computers',
'company_id': company_b.id,
'technician_user_id': user.id,
})
# create an maintenance stage BY user
with self.assertRaises(AccessError):
self.env['maintenance.stage'].with_user(user).create({
'name': 'identify corrective maintenance requirements',
})
# Create an maintenance request for ( User Follower ).
MaintenanceRequest.with_user(user).create({
'name': 'Some keys are not working',
'company_id': company_b.id,
'user_id': user.id,
'owner_user_id': user.id,
})
# Create an maintenance request for equipment_manager (Admin Follower)
MaintenanceRequest.with_user(equipment_manager).create({
'name': 'Battery drains fast',
'company_id': company_a.id,
'user_id': equipment_manager.id,
'owner_user_id': equipment_manager.id,
})
# Now here is total 1 maintenance request can be view by Normal User
self.assertEqual(MaintenanceRequest.with_user(equipment_manager).with_context(allowed_company_ids=cids).search_count([]), 2)
self.assertEqual(MaintenanceRequest.with_user(user).search_count([]), 1)

View file

@ -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', '=', False), ('res_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>

File diff suppressed because it is too large Load diff