diff --git a/base_machine_repair_management/README.rst b/base_machine_repair_management/README.rst new file mode 100755 index 000000000..996974b4e --- /dev/null +++ b/base_machine_repair_management/README.rst @@ -0,0 +1,47 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +Machine Repair Management +========================= +* Machine Repair Management system is an application which is used to maintain the repairs of machine. It is also allow users to take machine requests through website and these requests are created in the backend .Also we can manage the job order,machine diagnosis and maintained the team. + +Configuration +============= +* No additional configurations needed + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: (V16) Gayathri V ,Contacts: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if +your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/base_machine_repair_management/__init__.py b/base_machine_repair_management/__init__.py new file mode 100644 index 000000000..e0ea04d24 --- /dev/null +++ b/base_machine_repair_management/__init__.py @@ -0,0 +1,26 @@ +"""base_machine_repair_management""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models +from . import controllers +from . import report +from . import wizard diff --git a/base_machine_repair_management/__manifest__.py b/base_machine_repair_management/__manifest__.py new file mode 100644 index 000000000..8c10f3e40 --- /dev/null +++ b/base_machine_repair_management/__manifest__.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'Machine Repair Management', + 'version': '16.0.1.0.0', + 'category': 'Sales,Website ,Human Resources ,Project', + 'summary': """Machine repair management is used manage the repair + requests ,machine diagnosis work orders and reports for repairing etc""", + 'description': """Machine Repair Management system is an application which is + used to maintain the repairs of machine. It is also allow users to take + machine requests through website and these requests are created in the + backend .Also we can manage the job order,machine diagnosis and maintained + the team.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['website', 'hr', 'project', 'sale', 'contacts'], + 'data': [ + 'security/ir.model.access.csv', + 'security/base_machine_repair_management_groups.xml', + 'data/ir_sequence_data.xml', + 'data/mail_data.xml', + 'data/ir_actions_server.xml', + 'report/repair_report_templates.xml', + 'report/machine_repair_report.xml', + 'views/customer_portal_templates.xml', + 'views/customer_review_templates.xml', + 'views/machine_diagnosis_views.xml', + 'views/machine_repair_views.xml', + 'views/machine_service_type_views.xml', + 'views/machine_service_views.xml', + 'views/machine_workorder_views.xml', + 'views/product_views.xml', + 'views/repair_teams_views.xml', + 'views/res_partner_views.xml', + 'views/sale_order_views.xml', + 'views/website_repair_templates.xml', + 'wizard/repair_report_wizards_views.xml', + 'views/base_machine_repair_management_menus.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/base_machine_repair_management/controllers/__init__.py b/base_machine_repair_management/controllers/__init__.py new file mode 100644 index 000000000..65b7698b5 --- /dev/null +++ b/base_machine_repair_management/controllers/__init__.py @@ -0,0 +1,24 @@ +"""Base machine repair management""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import base_machine_repair_management +from . import portal diff --git a/base_machine_repair_management/controllers/base_machine_repair_management.py b/base_machine_repair_management/controllers/base_machine_repair_management.py new file mode 100644 index 000000000..0045cc71b --- /dev/null +++ b/base_machine_repair_management/controllers/base_machine_repair_management.py @@ -0,0 +1,98 @@ +"""Machine Repair management""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import http +from odoo.http import request + + +class RepairRequest(http.Controller): + """This is used for manage the repair requests""" + + @http.route(['/repair'], type='http', auth="public", website=True) + def get_request(self): + """This is used to get the repair request form""" + vals = ({ + 'machine': request.env['product.product'].sudo().search( + [('is_machine', '=', True)]), + 'service': request.env['machine.service'].sudo().search([]), + 'customer_id': request.env['res.partner'].search( + []), + }) + return request.render( + "base_machine_repair_management.repair_request_form", vals) + + @http.route('/create/repair_request', methods=['POST', 'GET'], type='http', + auth="public", website=True, csrf=False) + def submit_form_request(self, **POST): + """This is used to redirect the submitted response page""" + if POST.get('customer_id') not in request.env[ + 'res.partner'].sudo().search([]).ids: + customer = request.env['res.partner'].sudo().create({ + 'name': POST.get('customer_id'), + 'email': POST.get('email'), + 'phone': POST.get('phone') + }) + POST.update({'customer_id': customer.id, 'name': 'Repair from Website'}) + if POST: + request.env['machine.repair'].sudo().create(POST) + return request.redirect('/contactus-thank-you') + + @http.route(['/review'], type='http', auth="public", website=True) + def get_customer_review(self): + """This is used to redirect the review form""" + comments = ({ + 'customer_rating': request.env['machine.repair'].search( + [('customer_id', '!=', False), ('customer_rating', '!=', False), + ('customer_comments', '!=', False)]) + }) + return request.render( + "base_machine_repair_management.repair_review_form", comments) + + @http.route('/create/repair_reviews', methods=['POST', 'GET'], type='http', + auth="public", website=True, csrf=False) + def submit_form(self, **POST): + """This is used to submit the user reviews""" + user = request.env.user.name + if POST: + vals = request.env['machine.repair'].sudo().search( + [('customer_id', '=', user)]) + if POST.get('good') == 'on': + vals.write({ + 'customer_rating': 'Good', + 'customer_comments': POST['repair_review_comment'] + }) + elif POST.get('poor') == 'on': + vals.write({ + 'customer_rating': 'Poor', + 'customer_comments': POST['repair_review_comment'] + }) + elif POST.get('average') == 'on': + vals.write({ + 'customer_rating': 'Average', + 'customer_comments': POST['repair_review_comment'] + }) + elif POST.get('excellent') == 'on': + vals.sudo().write({ + 'customer_rating': 'Excellent', + 'customer_comments': POST['repair_review_comment'] + }) + return request.redirect('/contactus-thank-you') diff --git a/base_machine_repair_management/controllers/portal.py b/base_machine_repair_management/controllers/portal.py new file mode 100644 index 000000000..450b6cc23 --- /dev/null +++ b/base_machine_repair_management/controllers/portal.py @@ -0,0 +1,111 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import http, _ +from odoo.exceptions import AccessError, MissingError +from odoo.http import request +from odoo.addons.portal.controllers.portal import CustomerPortal +from odoo.addons.portal.controllers.portal import pager as portal_pager + + +class PortalRepair(CustomerPortal): + """Portal for customers""" + + def _prepare_home_portal_values(self, counters): + """This is used to prepare the portal values""" + values = super()._prepare_home_portal_values(counters) + if 'repair_count' in counters: + repair_count = request.env['machine.repair'].search_count( + self._get_repair_domain()) \ + if request.env['machine.repair'].check_access_rights('read', + raise_exception=False) else 0 + values['repair_count'] = repair_count + return values + + def _repair_get_page_view_values(self, repair, access_token, **kwargs): + """This is used to view the repair page""" + values = { + 'page_name': 'repair', + 'repair': repair, + } + return self._get_page_view_values(repair, access_token, values, + 'my_repair_history', False, **kwargs) + + def _get_repair_domain(self): + """This used add the domain for the page view""" + user = request.env.user.name + return [('state', 'in', ['new', 'closed']), + ('customer_id', '=', user)] + + @http.route(['/my/repair', '/my/repair/page/'], type='http', + auth="user", website=True) + def portal_my_repair(self, page=1, date_begin=None, date_end=None, + sort=None): + """This is used to view the all repairs""" + values = self._prepare_portal_layout_values() + machine_repair = request.env['machine.repair'].search([]) + domain = self._get_repair_domain() + searchbar_sorting = { + 'state': {'label': _('Status'), 'repair': 'state'}, + } + if not sort: + sort = 'state' + repair_count = machine_repair.search_count(domain) + pager = portal_pager( + url="/my/repair", + url_args={'date_begin': date_begin, 'date_end': date_end, + 'sort': sort}, + total=repair_count, + page=page, + step=self._items_per_page + ) + repair = machine_repair.search(domain, + limit=self._items_per_page, + offset=pager['offset']) + request.session['my_repair_history'] = repair.ids[:100] + values.update({ + 'date': date_begin, + 'machine_repair': repair_count, + 'repair': machine_repair, + 'page_name': 'repair', + 'pager': pager, + 'default_url': '/my/repair', + 'searchbar_sorting': searchbar_sorting, + 'sort': sort, + + }) + return request.render( + "base_machine_repair_management.portal_my_repair_request", values) + + @http.route(['/my/repair/'], type='http', auth="public", + website=True) + def portal_my_repair_detail(self, repair_id, access_token=None, + **kw): + """This is used to view a specified view of a repair""" + try: + repair_sudo = self._document_check_access('machine.repair', + repair_id, access_token) + except (AccessError, MissingError): + return request.redirect('/my') + values = self._repair_get_page_view_values(repair_sudo, access_token, + **kw) + return request.render( + "base_machine_repair_management.portal_repair_page", values) diff --git a/base_machine_repair_management/data/ir_actions_server.xml b/base_machine_repair_management/data/ir_actions_server.xml new file mode 100644 index 000000000..bc2ca6dda --- /dev/null +++ b/base_machine_repair_management/data/ir_actions_server.xml @@ -0,0 +1,18 @@ + + + + + + Repair Request Report + + + form + code + + action = records.action_print_repair_request_report() + + + + diff --git a/base_machine_repair_management/data/ir_sequence_data.xml b/base_machine_repair_management/data/ir_sequence_data.xml new file mode 100644 index 000000000..2777f33bb --- /dev/null +++ b/base_machine_repair_management/data/ir_sequence_data.xml @@ -0,0 +1,21 @@ + + + + + Repair Sequence + machine.diagnosis + DGS/ + 3 + 1 + 1 + + + + Repair Sequence + machine.repair + MRP/ + 3 + 1 + 1 + + diff --git a/base_machine_repair_management/data/mail_data.xml b/base_machine_repair_management/data/mail_data.xml new file mode 100644 index 000000000..d378afa55 --- /dev/null +++ b/base_machine_repair_management/data/mail_data.xml @@ -0,0 +1,34 @@ + + + + + + Repair Request Closed: Send by email + + {{ object.customer_id.email }} + {{ object.email }} + Machine Repair Request Closing (Ref {{ + object.repair_seq }}) + + +
+

+ +
+
+ Here is your repair request with reference + + is closed on + +
+
+
+
+ Do not hesitate to contact us if you have any questions. +

+
+
+
+
+
diff --git a/base_machine_repair_management/doc/RELEASE_NOTES.md b/base_machine_repair_management/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..347798dbf --- /dev/null +++ b/base_machine_repair_management/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 12.02.2024 +#### Version 16.0.1.0.0 +#### ADD +- Initial commit for Machine Repair Management diff --git a/base_machine_repair_management/models/__init__.py b/base_machine_repair_management/models/__init__.py new file mode 100644 index 000000000..d1470f138 --- /dev/null +++ b/base_machine_repair_management/models/__init__.py @@ -0,0 +1,31 @@ +"""Machine Repair management""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import machine_diagnosis +from . import machine_repair +from . import machine_services +from . import machine_service_type +from . import machine_workorder +from . import product +from . import res_partner +from . import repair_team +from . import sale_order diff --git a/base_machine_repair_management/models/machine_diagnosis.py b/base_machine_repair_management/models/machine_diagnosis.py new file mode 100644 index 000000000..879de8747 --- /dev/null +++ b/base_machine_repair_management/models/machine_diagnosis.py @@ -0,0 +1,91 @@ +"""Machine Diagnosis""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models + + +class MachineDiagnosis(models.Model): + """The class is used for the machine diagnosis""" + _name = 'machine.diagnosis' + _description = "Machine Diagnosis" + _rec_name = 'diagnosis_seq' + + project_id = fields.Many2one('project.project', string='Project', + help="The project name") + customer_id = fields.Many2one('res.partner', string="Customer", + help="the customer for the project", + required=True, ) + deadline = fields.Date(string='DeadLine', help="Deadline for the project", + required=True, ) + diagnosis_seq = fields.Char(string='Diagnosis Sequence', required=True, + copy=False, + help="Sequence number for diagnosis", + readonly=True, index=True, + default=lambda self: 'New') + note = fields.Html(string="Note", help="Extra note for the project") + notes = fields.Html(string="Notes", help="Notes for thr project") + part_ids = fields.One2many('machine.consume', + 'dia_estimate_id', + help="machine consumption", string="Parts") + timesheet_ids = fields.One2many('repair.timesheet', + 'diagnosis_id', + string="TimeSheet", + help='Timesheet for the machine repair') + seq = fields.Char(string='Sequence', help="Sequence") + assigning_date = fields.Date(string="Date", help="Assigning Date") + machine_repair_ref_id = fields.Many2one('machine.repair', + string="Reference", + help="Machine repair reference") + + @api.model + def create(self, vals): + """Sequence generator""" + if vals.get('diagnosis_seq', 'New') == 'New': + vals['diagnosis_seq'] = self.env['ir.sequence'].next_by_code( + 'machine.diagnosis') or 'New' + result = super().create(vals) + return result + + def create_quotation(self): + """This function is used to create quotation from machine diagnosis""" + quotation = self.env['sale.order'].create({ + 'partner_id': self.customer_id.id, + 'date_order': self.deadline, + 'machine_diag_ref': self.diagnosis_seq, + }) + quotation.order_line = [(5, 0, 0)] + val = self.part_ids.mapped('machine_id') + for rec in val: + vals = { + 'product_id': rec.id, + 'name': rec.default_code, + 'price_unit': rec.list_price, + } + quotation.order_line = [(0, 0, vals)] + return { + 'res_model': 'sale.order', + 'type': 'ir.actions.act_window', + 'res_id': quotation.id, + 'view_mode': 'form', + 'target': 'current', + 'context': "{'create': False ,}" + } diff --git a/base_machine_repair_management/models/machine_repair.py b/base_machine_repair_management/models/machine_repair.py new file mode 100644 index 000000000..b09c8524c --- /dev/null +++ b/base_machine_repair_management/models/machine_repair.py @@ -0,0 +1,264 @@ +"""Machine Repair""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models +from odoo.exceptions import ValidationError + + +class MachineRepair(models.Model): + """This is used for the machine repair management""" + _name = 'machine.repair' + _description = "Machine Repair" + _rec_name = "repair_seq" + + name = fields.Char(string='Name', help="Name of the repair") + repair_seq = fields.Char(string='Repair Sequence', required=True, + copy=False, help="Repair sequence", + readonly=True, index=True, + default=lambda self: 'New') + customer_id = fields.Many2one('res.partner', string="Customer", + help="Name of the customer") + customer_email = fields.Char(string='Customer E-mail', + related="customer_id.email", + help="Email of the customer") + phone = fields.Char(string='Phone', help="Customer phone number", + related="customer_id.phone") + repairing_reason = fields.Char(string='Repairing Reason', + help="Reason for the repairing") + machine_brand = fields.Char(string='Machine brand', + help="Brand of the machine") + machine_model = fields.Char(string="Model", help="Model of the Machine") + manufacturing_year = fields.Date(string='Manufacturing Year', + help="Manufacturing date of the machine") + priority = fields.Selection( + [('low', 'Low'), ('high', 'High'), ('middle', 'Middle')], + string="Priority", help="Priority for repairing", required=True) + repair_detail = fields.Text(string='Repair Reason In Detail', + help="Repairing Details", required=True) + technician_id = fields.Many2one('hr.employee', string="Technician", + help="The technician for the repair") + technician_member_ids = fields.Many2many('hr.employee', + string="Technical member") + email = fields.Char('Email', related='technician_id.work_email', + help="Technician Email") + company_id = fields.Many2one('res.company', string="Company", + help="Company Of technician") + project = fields.Many2one('project.project', string="Project", + help="Project of that repairing") + department = fields.Many2one('hr.department', string="Department", + help="Department of the technician") + repir_req_date = fields.Date(string='Repair Date', + help="Repair requesting date") + closing_date = fields.Date(string='Closing Date', + help="The repair closing date") + repairing_duration = fields.Float(string="Repairing Duration", + help="The duration of the repairing") + is_repaired = fields.Boolean(string='Is Repaired', + help="Which is used to identify the order is " + "repaired or not") + machine_id = fields.Many2one('product.product', string="Machine", + help="Machine name", + domain=[('is_machine', '=', True)]) + machine_cate = fields.Many2one('product.category', + string='Machine Category', + help="the category of the machine") + color = fields.Char(string='Color', help="Color of the machine") + damage = fields.Char(string='Damage', help="Damage of machine") + warrenty = fields.Boolean(string='Warranty', help="Warranty of the machine") + Warrenty_exp_date = fields.Date(string="Warranty Expiration Date", + help="The Machine Warranty Expiration date") + authority_name = fields.Char(string='Authority Name', + help="The Authority of the technician") + service = fields.Many2one('machine.service', string="Service", + help="The service for the machine") + customer_rating = fields.Char(string='Customer Rating', + help="Customer Review") + customer_comments = fields.Char(string='Customer Comments', + help="Comments of the customer") + extra_info = fields.Html(string="Information", help="Extra Information") + repair_team_id = fields.Many2one('repair.teams', string="Repair team", + help="The team of repairing") + nature_of_service = fields.Many2one('machine.service', + string="Nature of Service", + help="The nature of the machine service") + repair_type = fields.Many2many('machine.service.type', + string="Repair Types", + help="The type of the repairs") + problem = fields.Char(string='Problem', help="Problem of the machine") + note = fields.Html(string='Note', help="Note for the repairing") + state = fields.Selection(string='Status', required=True, readonly=True, + copy=False, selection=[('new', 'New'), + ('assigned', 'Assigned'), + ('closed', 'Closed'), + ('send', 'Mail Send'), + ('reopen', 'Re Opened'), + ], default='new', + help="stages of machine repair request") + image1 = fields.Binary(string='Image 1', help="Machine images") + image2 = fields.Binary(string='Image 2', help="Machine images") + image3 = fields.Binary(string='Image 3', help="Machine images") + image4 = fields.Binary(string='Image 4', help="Machine images") + image5 = fields.Binary(string='Image 5', help="Machine images") + timesheet_id = fields.One2many('repair.timesheet', 'inverse_id', + string="Timesheet", + help="Timesheet for the machine repairing") + consume_part_id = fields.One2many('machine.consume', 'consume_id', + string="Consumer Parts", + help="Machine consumption") + is_visible_diagnosis = fields.Boolean(string="Diagnosis Visibility", + help="When the button want to " + "display") + is_visible_workorder = fields.Boolean(string="WorkOrder Visibility", + help="When the button want to " + "display") + + @api.model + def create(self, vals): + """Sequence generator""" + if vals.get('repair_seq', 'New') == 'New' or vals.get('repair_seq', + '') == '': + vals['repair_seq'] = self.env['ir.sequence'].next_by_code( + 'machine.repair') or 'New' + result = super().create(vals) + return result + + @api.onchange('repair_team_id') + def onchange_repair_team(self): + val = self.env['repair.teams'].search( + [('id', '=', self.repair_team_id.id)]).mapped('member_ids').mapped( + 'member_id').ids + self.technician_member_ids = val + + def create_diagnosis(self): + """This is used to create the diagnosis""" + group = self.env.ref( + 'base_machine_repair_management.repair_sales_users_access').name + if group in self.env.user.groups_id.mapped('name'): + self.is_visible_diagnosis = True + self.env['machine.diagnosis'].create({ + 'project_id': self.project.id, + 'customer_id': self.customer_id.id, + 'deadline': self.closing_date, + }) + return { + 'res_model': 'machine.diagnosis', + 'type': 'ir.actions.act_window', + 'res_id': self.id, + 'view_mode': 'form', + 'target': 'current', + 'context': "{'create': False ,}" + } + + def action_create_work_order(self): + """Creating job order from repair request""" + group = self.env.ref('base_machine_repair_management.repair_sales_users_access').name + if group in self.env.user.groups_id.mapped('name'): + self.is_visible_workorder = True + self.env['machine.workorder'].create({ + 'customer_id': self.customer_id.id, + 'date': self.repir_req_date, + 'priority': self.priority, + }) + return { + 'res_model': 'machine.workorder', + 'type': 'ir.actions.act_window', + 'res_id': self.id, + 'view_mode': 'form', + 'target': 'current', + 'context': "{'create': False ,}" + } + + def reopen(self): + """Reopen the repair""" + self.state = 'reopen' + + def close_repairing(self): + """Repair closed""" + self.state = 'closed' + + def assign_teams(self): + """Assigning repair to teams""" + if self.repair_team_id: + val = self.env['repair.teams'].search( + [('id', '=', self.repair_team_id.id)]) + val.write({ + 'repair_work_id': self.id, + }) + self.state = 'assigned' + else: + self.state = 'new' + raise ValidationError("There Is No Repair Team Is Specified") + + def send_email(self): + """Sending mails to customers by informing closing the repair request""" + template_id = self.env.ref( + 'base_machine_repair_management.repair_request_close_email_template').id + self.env['mail.template'].browse(template_id).send_mail(self.id, + force_send=True) + self.state = "send" + + def action_print_repair_request_report(self): + """Which returns the report action""" + return self.env.ref( + "base_machine_repair_management.action_repair_report").report_action( + self) + + +class MachineConsume(models.Model): + """This is the class for machine consume""" + _name = 'machine.consume' + _description = "Machine Consume" + _rec_name = "consume_id" + + consume_id = fields.Many2one('machine.repair', string="Consumer", + help="Consumer of the repair") + machine_id = fields.Many2one('product.product', string='Machine', + help="Machine for consume", + domain=[('is_machine', '=', True)]) + qty = fields.Float(string='Quantity', help="Quantity of the machine") + uom = fields.Many2one('uom.uom', string="Uom", help="Machine uom") + dia_estimate_id = fields.Many2one('machine.diagnosis', + string="Machine Diagnosis", + help="Diagnosis of machine") + hour = fields.Float(string='Duration', help="Duration for the machine") + + +class RepairTimesheet(models.Model): + """This is used for thr timesheet of repair management""" + _name = 'repair.timesheet' + _description = "Timesheet Of The Repair" + _rec_name = 'user_id' + + inverse_id = fields.Many2one('machine.repair', string="Machine Repair", + help="Inverse field of the models " + "'machine.repair'") + date = fields.Date(string='Date', help="Time sheet creation date") + user_id = fields.Many2one('res.users', string="User", + help="Time sheet for the user") + project_id = fields.Many2one('project.project', string="Project", + help="Project for the user") + description = fields.Char(string='Description', + help="Description for the user's timesheet") + hours = fields.Float(string='Duration', help="Duration of the Work") + diagnosis_id = fields.Many2one('machine.diagnosis', + string="Diagnosis", + help="Machine diagnosis") diff --git a/base_machine_repair_management/models/machine_service_type.py b/base_machine_repair_management/models/machine_service_type.py new file mode 100644 index 000000000..a9195c14a --- /dev/null +++ b/base_machine_repair_management/models/machine_service_type.py @@ -0,0 +1,34 @@ +"""Machine Service Type""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class MachineServiceType(models.Model): + """This class is used for the service type for the machine""" + _name = 'machine.service.type' + _description = "Machine Service Type" + _rec_name = "service_type_name" + + service_type_name = fields.Char(string='Name', + help="Name of the service type") + code = fields.Char(string='Code', help="Code for the service type") diff --git a/base_machine_repair_management/models/machine_services.py b/base_machine_repair_management/models/machine_services.py new file mode 100644 index 000000000..050a65251 --- /dev/null +++ b/base_machine_repair_management/models/machine_services.py @@ -0,0 +1,33 @@ +"""Machine service""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class MachineService(models.Model): + """This is used to add the machine service""" + _name = 'machine.service' + _description = 'Machine Service' + + name = fields.Char(string='Name', help="Machine Service") + service_type = fields.Many2one('machine.service.type', + string="Machine Service Type") diff --git a/base_machine_repair_management/models/machine_workorder.py b/base_machine_repair_management/models/machine_workorder.py new file mode 100644 index 000000000..412f33d29 --- /dev/null +++ b/base_machine_repair_management/models/machine_workorder.py @@ -0,0 +1,49 @@ +"""Machine Work order""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +################################################################################ +from odoo import fields, models + + +class MachineWorkOrder(models.Model): + """This is used for the machine work order""" + _name = 'machine.workorder' + _description = "Machine Work Order" + _rec_name = "work_order_id" + + work_order_id = fields.Many2one('machine.service', string="Work Order", + help="Work order name for machine") + customer_id = fields.Many2one('res.partner', string="Customer", + help="Customer for the work order") + date = fields.Date(string="Date", help="Work order date") + priority = fields.Selection( + [('low', 'Low'), ('high', 'High'), ('middle', 'Middle')], + string="Priority", help="Work Order Priority") + scheduled_date = fields.Date(string='Scheduled Date', + help="scheduled date of work order") + planned_end_date = fields.Date(string='Planned End date', + help="Work order end date") + duration = fields.Float(string='Duration', help="Wok order duration") + start_date = fields.Date(string='Start Date', + help="Start date of work order") + end_date = fields.Date(string='End Date', help="End date of the work order") + hours_worked = fields.Float(string="Hours Spent", + help="Total hours spent for work order") diff --git a/base_machine_repair_management/models/product.py b/base_machine_repair_management/models/product.py new file mode 100644 index 000000000..ad346ce3b --- /dev/null +++ b/base_machine_repair_management/models/product.py @@ -0,0 +1,33 @@ +"""Products as machines and machine parts""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class Product(models.Model): + _inherit = 'product.product' + + is_machine = fields.Boolean(string="Is Machine", default=False, + help="which is used to identify the machines.") + is_machine_parts = fields.Boolean(string="Is Machine Part", default=False, + help="which is used to identify the " + "machine parts.") diff --git a/base_machine_repair_management/models/repair_team.py b/base_machine_repair_management/models/repair_team.py new file mode 100644 index 000000000..b27e57f83 --- /dev/null +++ b/base_machine_repair_management/models/repair_team.py @@ -0,0 +1,55 @@ +"""Repair Team""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class RepairTeam(models.Model): + """This is used to set the repair team""" + _name = 'repair.teams' + _description = 'Repair Teams' + _rec_name = "team_name" + + team_name = fields.Char(string='Name', help="Name of the Team") + team_lead_id = fields.Many2one('hr.employee', + string="Team Lead", + help="Team lead of the team") + repair_work_id = fields.Many2one('machine.repair', + string='Repair Reference', + help='Reference of the machine repair') + member_ids = fields.One2many('team.members', + 'inverse_id', string="Members", + help="Team members pof the repair team") + + +class TeamMembers(models.Model): + """This is used for the team members of repair team""" + _name = 'team.members' + _description = 'Team Members' + _rec_name = 'member_id' + + inverse_id = fields.Many2one('repair.teams', string="Repair Teams", + help="Repair teams for machine") + member_id = fields.Many2one('hr.employee', string="Member", + help="member of the repair team") + login = fields.Char(related='member_id.work_email', string="Login", + help="Login details for member") diff --git a/base_machine_repair_management/models/res_partner.py b/base_machine_repair_management/models/res_partner.py new file mode 100644 index 000000000..0e2f9adbc --- /dev/null +++ b/base_machine_repair_management/models/res_partner.py @@ -0,0 +1,39 @@ +"""Partners""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models + + +class CustomerRepairRequests(models.Model): + """This is used to return the partner's repair requests""" + _inherit = 'res.partner' + + def action_repair_requests(self): + """It returns the repair requests for the customers""" + return { + 'type': 'ir.actions.act_window', + 'name': 'Machine Repair Requests', + 'view_mode': 'tree', + 'res_model': 'machine.repair', + 'domain': [('customer_id', '=', self.id)], + 'context': "{'create': False}" + } diff --git a/base_machine_repair_management/models/sale_order.py b/base_machine_repair_management/models/sale_order.py new file mode 100644 index 000000000..69a32df4b --- /dev/null +++ b/base_machine_repair_management/models/sale_order.py @@ -0,0 +1,31 @@ +"""Sale Order""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class SaleOrder(models.Model): + """Inheriting Sale order to add a new field""" + _inherit = 'sale.order' + + machine_diag_ref = fields.Char(string='Diagnosis Reference', + help="Reference for diagnosis") diff --git a/base_machine_repair_management/report/__init__.py b/base_machine_repair_management/report/__init__.py new file mode 100644 index 000000000..78d0213e6 --- /dev/null +++ b/base_machine_repair_management/report/__init__.py @@ -0,0 +1,23 @@ +"""Machine repair management""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import machine_repair_report diff --git a/base_machine_repair_management/report/machine_repair_report.py b/base_machine_repair_management/report/machine_repair_report.py new file mode 100644 index 000000000..0cf3539a7 --- /dev/null +++ b/base_machine_repair_management/report/machine_repair_report.py @@ -0,0 +1,46 @@ +"""Machine repair management""" +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Gayathri v (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models, fields + + +class MachineRepairReports(models.AbstractModel): + """This is used to return the report data""" + _name = 'report.base_machine_repair_management.machine_repair_report' + _description = 'Report for machine repair management' + + def _get_report_values(self, docids, data=None): + """This function is used to get the report data""" + if data['from_date'] and data['to_date']: + vals = self.env['machine.repair'].search( + [('repir_req_date', '>=', data['from_date']), + ('repir_req_date', '<=', data['to_date'])]) + else: + vals = self.env['machine.repair'].search([]) + return { + 'date': fields.Date.today(), + 'doc_ids': docids, + 'doc_model': 'machine.repair', + 'repair_requests': vals, + 'company': self.env.company, + 'data': data, + } diff --git a/base_machine_repair_management/report/machine_repair_report.xml b/base_machine_repair_management/report/machine_repair_report.xml new file mode 100644 index 000000000..4a8916147 --- /dev/null +++ b/base_machine_repair_management/report/machine_repair_report.xml @@ -0,0 +1,16 @@ + + + + + Machine Repair Report + machine.repair + qweb-pdf + base_machine_repair_management.machine_repair_report + base_machine_repair_management.machine_repair_report + 'Machine Repair Report - %s' % + (object.name) + + report + True + + diff --git a/base_machine_repair_management/report/repair_report_templates.xml b/base_machine_repair_management/report/repair_report_templates.xml new file mode 100644 index 000000000..5b3302a2c --- /dev/null +++ b/base_machine_repair_management/report/repair_report_templates.xml @@ -0,0 +1,177 @@ + + + + + diff --git a/base_machine_repair_management/security/base_machine_repair_management_groups.xml b/base_machine_repair_management/security/base_machine_repair_management_groups.xml new file mode 100644 index 000000000..905f33ae8 --- /dev/null +++ b/base_machine_repair_management/security/base_machine_repair_management_groups.xml @@ -0,0 +1,21 @@ + + + + + Machine + Machine Repair + 10 + + + Repair User/Technician + + + + Repair Manager + + + + Sales Persons + + + diff --git a/base_machine_repair_management/security/ir.model.access.csv b/base_machine_repair_management/security/ir.model.access.csv new file mode 100644 index 000000000..132f330a5 --- /dev/null +++ b/base_machine_repair_management/security/ir.model.access.csv @@ -0,0 +1,11 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access.access_machine_repair_user,access.machine.repair.user,model_machine_repair,base.group_user,1,1,1,1 +access.access_repair_teams_user,access.repair.teams.user,model_repair_teams,base.group_user,1,1,1,1 +access.access_team_members_user,access.team.members,model_team_members,base.group_user,1,1,1,1 +access.access_machine_service_user,access.machine.service.user,model_machine_service,base.group_user,1,1,1,1 +access.access_machine_service_type_user,access.machine.service.type.user,model_machine_service_type,base.group_user,1,1,1,1 +access.access_repair_timesheet_user,access.repair.timesheet.user,model_repair_timesheet,base.group_user,1,1,1,1 +access.access_machine_consume_user,access.machine.consume.user,model_machine_consume,base.group_user,1,1,1,1 +access.access_machine_diagnosis_user,access.machine.diagnosis.user,model_machine_diagnosis,base.group_user,1,1,1,1 +access.access_machine_workorder_user,access.machine.workorder.user,model_machine_workorder,base.group_user,1,1,1,1 +access.access_repair_report_wizard_user,access.repair.report.wizards.user,model_repair_report_wizards,base.group_user,1,1,1,1 diff --git a/base_machine_repair_management/static/description/assets/icons/check.png b/base_machine_repair_management/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/check.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/chevron.png b/base_machine_repair_management/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/chevron.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/cogs.png b/base_machine_repair_management/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/cogs.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/consultation.png b/base_machine_repair_management/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/consultation.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/ecom-black.png b/base_machine_repair_management/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/ecom-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/education-black.png b/base_machine_repair_management/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/education-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/hotel-black.png b/base_machine_repair_management/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/hotel-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/license.png b/base_machine_repair_management/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/license.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/lifebuoy.png b/base_machine_repair_management/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/lifebuoy.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/logo.png b/base_machine_repair_management/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/logo.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/manufacturing-black.png b/base_machine_repair_management/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/manufacturing-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/pos-black.png b/base_machine_repair_management/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/pos-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/puzzle.png b/base_machine_repair_management/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/puzzle.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/restaurant-black.png b/base_machine_repair_management/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/restaurant-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/service-black.png b/base_machine_repair_management/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/service-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/trading-black.png b/base_machine_repair_management/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/trading-black.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/training.png b/base_machine_repair_management/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/training.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/update.png b/base_machine_repair_management/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/update.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/user.png b/base_machine_repair_management/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/user.png differ diff --git a/base_machine_repair_management/static/description/assets/icons/wrench.png b/base_machine_repair_management/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/base_machine_repair_management/static/description/assets/icons/wrench.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/categories.png b/base_machine_repair_management/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/categories.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/check-box.png b/base_machine_repair_management/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/check-box.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/compass.png b/base_machine_repair_management/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/compass.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/corporate.png b/base_machine_repair_management/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/corporate.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/customer-support.png b/base_machine_repair_management/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/customer-support.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/cybrosys-logo.png b/base_machine_repair_management/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/cybrosys-logo.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/features.png b/base_machine_repair_management/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/features.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/logo.png b/base_machine_repair_management/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/logo.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/pictures.png b/base_machine_repair_management/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/pictures.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/pie-chart.png b/base_machine_repair_management/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/pie-chart.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/right-arrow.png b/base_machine_repair_management/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/right-arrow.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/star.png b/base_machine_repair_management/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/star.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/support.png b/base_machine_repair_management/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/support.png differ diff --git a/base_machine_repair_management/static/description/assets/misc/whatsapp.png b/base_machine_repair_management/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/misc/whatsapp.png differ diff --git a/base_machine_repair_management/static/description/assets/modules/3.png b/base_machine_repair_management/static/description/assets/modules/3.png new file mode 100644 index 000000000..e703ae21b Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/3.png differ diff --git a/base_machine_repair_management/static/description/assets/modules/4.jpg b/base_machine_repair_management/static/description/assets/modules/4.jpg new file mode 100644 index 000000000..ed175b076 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/4.jpg differ diff --git a/base_machine_repair_management/static/description/assets/modules/banner.png b/base_machine_repair_management/static/description/assets/modules/banner.png new file mode 100644 index 000000000..e339ff769 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/banner.png differ diff --git a/base_machine_repair_management/static/description/assets/modules/crm.png b/base_machine_repair_management/static/description/assets/modules/crm.png new file mode 100644 index 000000000..25ed3e0b6 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/crm.png differ diff --git a/base_machine_repair_management/static/description/assets/modules/employee.png b/base_machine_repair_management/static/description/assets/modules/employee.png new file mode 100644 index 000000000..c0aa245ce Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/employee.png differ diff --git a/base_machine_repair_management/static/description/assets/modules/hr.png b/base_machine_repair_management/static/description/assets/modules/hr.png new file mode 100644 index 000000000..ed11bd818 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/hr.png differ diff --git a/base_machine_repair_management/static/description/assets/modules/sales.png b/base_machine_repair_management/static/description/assets/modules/sales.png new file mode 100644 index 000000000..8658f1826 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/modules/sales.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/1.png b/base_machine_repair_management/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..81413add7 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/1.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/hero.gif b/base_machine_repair_management/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..ef71bc616 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/hero.gif differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img10.png b/base_machine_repair_management/static/description/assets/screenshots/img10.png new file mode 100644 index 000000000..b5cfddeb0 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img10.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img11.png b/base_machine_repair_management/static/description/assets/screenshots/img11.png new file mode 100644 index 000000000..539455d61 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img11.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img12.png b/base_machine_repair_management/static/description/assets/screenshots/img12.png new file mode 100644 index 000000000..91125691c Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img12.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img13.png b/base_machine_repair_management/static/description/assets/screenshots/img13.png new file mode 100644 index 000000000..5e9672c12 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img13.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img14.png b/base_machine_repair_management/static/description/assets/screenshots/img14.png new file mode 100644 index 000000000..e08c780b0 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img14.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img2.png b/base_machine_repair_management/static/description/assets/screenshots/img2.png new file mode 100644 index 000000000..b69ffd3b6 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img2.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img3.png b/base_machine_repair_management/static/description/assets/screenshots/img3.png new file mode 100644 index 000000000..d4e6e6d51 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img3.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img4.png b/base_machine_repair_management/static/description/assets/screenshots/img4.png new file mode 100644 index 000000000..a0ebae23d Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img4.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img5.png b/base_machine_repair_management/static/description/assets/screenshots/img5.png new file mode 100644 index 000000000..a156e2857 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img5.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img6.png b/base_machine_repair_management/static/description/assets/screenshots/img6.png new file mode 100644 index 000000000..953643047 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img6.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img7.png b/base_machine_repair_management/static/description/assets/screenshots/img7.png new file mode 100644 index 000000000..cd0cc63ff Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img7.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img8.png b/base_machine_repair_management/static/description/assets/screenshots/img8.png new file mode 100644 index 000000000..07ebdbcdf Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img8.png differ diff --git a/base_machine_repair_management/static/description/assets/screenshots/img9.png b/base_machine_repair_management/static/description/assets/screenshots/img9.png new file mode 100644 index 000000000..07ae0d888 Binary files /dev/null and b/base_machine_repair_management/static/description/assets/screenshots/img9.png differ diff --git a/base_machine_repair_management/static/description/banner.png b/base_machine_repair_management/static/description/banner.png new file mode 100644 index 000000000..a21fde8c1 Binary files /dev/null and b/base_machine_repair_management/static/description/banner.png differ diff --git a/base_machine_repair_management/static/description/icon.png b/base_machine_repair_management/static/description/icon.png new file mode 100644 index 000000000..9bc2df5c8 Binary files /dev/null and b/base_machine_repair_management/static/description/icon.png differ diff --git a/base_machine_repair_management/static/description/index.html b/base_machine_repair_management/static/description/index.html new file mode 100644 index 000000000..09e506897 --- /dev/null +++ b/base_machine_repair_management/static/description/index.html @@ -0,0 +1,729 @@ +
+ +
+ +
+
+ Community +
+
+
+ + + +

+ Machine Repair Management For Community

+

+ Machine Repair Management System Is An Application Which Is Used To + Maintain The Machine Repairs.

+ + + +
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ Machine Repair Management system is an application which is used to + maintain the repairs of machine. + It is also allow users to take machine requests through website and + these requests are created in the backend. + Also, we can manage the job order,machine diagnosis and maintained the + team. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Your customer can send machine repair requests from your website. +
+
+ + + Your customer can send machine repair requests from your website. +
+
+ + Customers can view and check the status of all machine request from their portal. +
+
+ + The system allows your user to do management of diagnosis of + machine repair requests and allows you to create sales + quotations and send them to your customer. +
+
+ + Machine repair team to create a job order/work order from + the Machine Repair Management system is an application which is used to + maintain the repairs of machine. + It is also allow users to take machine requests through website and + these requests are created in the backend + ,Also we can manage the job order,machine diagnosis and maintained the + team, repair requests. +
+
+ + Allow you to set the machine repair-related images on the + machine repair form. +
+
+ + User to print a PDF of machine repair request report. +
+
+ + The machine request manager can close machine repair tickets + and send bills to customers (Billing from Quotation created + from Diagnosis). +
+
+ + Customers can give feedback and rating of machine repair + request jobs done. +
+
+
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+ +
+

+ Machine Repair Teams Form View.

+

+ Creating Repairing Teams And the Team Members.

+ +
+
+

+ Machine Service Type Configuration.

+

+ Configure service type that are available for a + machine.

+ +
+ +
+

+ Manage Access Rights By Specifying The User Groups.

+

+ Different users has different access, It can manage through the access rights. +

+ +
+ +
+

+ Create Diagnosis From Machine Repairs Form View.

+ +
+ +
+

+ Create Quotation From The Work Order That Created From The Repair + Request.

+

+ We can create a quotation for the machine repairs. +

+ +
+ +
+

+ Machines List.

+

+ Machines(Products) that are repaired and maintained are listed + here as list view. +

+ +
+ +
+

+ Machines Kanban View.

+

+ Machines(Products) that are repaired and maintained are listed + here as kanban view. +

+ +
+
+

+ Machine Parts view.

+

+ Machine parts(Products) that are used in tha machines are listed + here as list view.

+ +
+
+

+ identifying Machine And Machine Parts.

+

+ You can identify the machine and machine parts according to the fields.

+ +
+
+

+ Machine Repair Request From Website.

+

+ Customer can request for repair from website. +

+ +
+ +
+

+ Machine Requests repairs.

+

+ Customer machine repair request form. +

+ +
+ +
+

+ Customer Review Website.

+

+ Customer can send machine repair's review from website. +

+ +
+
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/base_machine_repair_management/views/base_machine_repair_management_menus.xml b/base_machine_repair_management/views/base_machine_repair_management_menus.xml new file mode 100644 index 000000000..33268d44f --- /dev/null +++ b/base_machine_repair_management/views/base_machine_repair_management_menus.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + diff --git a/base_machine_repair_management/views/customer_portal_templates.xml b/base_machine_repair_management/views/customer_portal_templates.xml new file mode 100644 index 000000000..acafc90ca --- /dev/null +++ b/base_machine_repair_management/views/customer_portal_templates.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + diff --git a/base_machine_repair_management/views/customer_review_templates.xml b/base_machine_repair_management/views/customer_review_templates.xml new file mode 100644 index 000000000..af0d62639 --- /dev/null +++ b/base_machine_repair_management/views/customer_review_templates.xml @@ -0,0 +1,107 @@ + + + + + Repair Review + /review + + 40 + + +