Browse Source

Feb 28 : [ADD] Initial Commit 'base_machine_repair_management'

pull/267/merge
RisvanaCybro 1 year ago
parent
commit
f105edf17f
  1. 47
      base_machine_repair_management/README.rst
  2. 26
      base_machine_repair_management/__init__.py
  3. 66
      base_machine_repair_management/__manifest__.py
  4. 24
      base_machine_repair_management/controllers/__init__.py
  5. 98
      base_machine_repair_management/controllers/base_machine_repair_management.py
  6. 111
      base_machine_repair_management/controllers/portal.py
  7. 18
      base_machine_repair_management/data/ir_actions_server.xml
  8. 21
      base_machine_repair_management/data/ir_sequence_data.xml
  9. 34
      base_machine_repair_management/data/mail_data.xml
  10. 6
      base_machine_repair_management/doc/RELEASE_NOTES.md
  11. 31
      base_machine_repair_management/models/__init__.py
  12. 91
      base_machine_repair_management/models/machine_diagnosis.py
  13. 264
      base_machine_repair_management/models/machine_repair.py
  14. 34
      base_machine_repair_management/models/machine_service_type.py
  15. 33
      base_machine_repair_management/models/machine_services.py
  16. 49
      base_machine_repair_management/models/machine_workorder.py
  17. 33
      base_machine_repair_management/models/product.py
  18. 55
      base_machine_repair_management/models/repair_team.py
  19. 39
      base_machine_repair_management/models/res_partner.py
  20. 31
      base_machine_repair_management/models/sale_order.py
  21. 23
      base_machine_repair_management/report/__init__.py
  22. 46
      base_machine_repair_management/report/machine_repair_report.py
  23. 16
      base_machine_repair_management/report/machine_repair_report.xml
  24. 177
      base_machine_repair_management/report/repair_report_templates.xml
  25. 21
      base_machine_repair_management/security/base_machine_repair_management_groups.xml
  26. 11
      base_machine_repair_management/security/ir.model.access.csv
  27. BIN
      base_machine_repair_management/static/description/assets/icons/check.png
  28. BIN
      base_machine_repair_management/static/description/assets/icons/chevron.png
  29. BIN
      base_machine_repair_management/static/description/assets/icons/cogs.png
  30. BIN
      base_machine_repair_management/static/description/assets/icons/consultation.png
  31. BIN
      base_machine_repair_management/static/description/assets/icons/ecom-black.png
  32. BIN
      base_machine_repair_management/static/description/assets/icons/education-black.png
  33. BIN
      base_machine_repair_management/static/description/assets/icons/hotel-black.png
  34. BIN
      base_machine_repair_management/static/description/assets/icons/license.png
  35. BIN
      base_machine_repair_management/static/description/assets/icons/lifebuoy.png
  36. BIN
      base_machine_repair_management/static/description/assets/icons/logo.png
  37. BIN
      base_machine_repair_management/static/description/assets/icons/manufacturing-black.png
  38. BIN
      base_machine_repair_management/static/description/assets/icons/pos-black.png
  39. BIN
      base_machine_repair_management/static/description/assets/icons/puzzle.png
  40. BIN
      base_machine_repair_management/static/description/assets/icons/restaurant-black.png
  41. BIN
      base_machine_repair_management/static/description/assets/icons/service-black.png
  42. BIN
      base_machine_repair_management/static/description/assets/icons/trading-black.png
  43. BIN
      base_machine_repair_management/static/description/assets/icons/training.png
  44. BIN
      base_machine_repair_management/static/description/assets/icons/update.png
  45. BIN
      base_machine_repair_management/static/description/assets/icons/user.png
  46. BIN
      base_machine_repair_management/static/description/assets/icons/wrench.png
  47. BIN
      base_machine_repair_management/static/description/assets/misc/categories.png
  48. BIN
      base_machine_repair_management/static/description/assets/misc/check-box.png
  49. BIN
      base_machine_repair_management/static/description/assets/misc/compass.png
  50. BIN
      base_machine_repair_management/static/description/assets/misc/corporate.png
  51. BIN
      base_machine_repair_management/static/description/assets/misc/customer-support.png
  52. BIN
      base_machine_repair_management/static/description/assets/misc/cybrosys-logo.png
  53. BIN
      base_machine_repair_management/static/description/assets/misc/features.png
  54. BIN
      base_machine_repair_management/static/description/assets/misc/logo.png
  55. BIN
      base_machine_repair_management/static/description/assets/misc/pictures.png
  56. BIN
      base_machine_repair_management/static/description/assets/misc/pie-chart.png
  57. BIN
      base_machine_repair_management/static/description/assets/misc/right-arrow.png
  58. BIN
      base_machine_repair_management/static/description/assets/misc/star.png
  59. BIN
      base_machine_repair_management/static/description/assets/misc/support.png
  60. BIN
      base_machine_repair_management/static/description/assets/misc/whatsapp.png
  61. BIN
      base_machine_repair_management/static/description/assets/modules/3.png
  62. BIN
      base_machine_repair_management/static/description/assets/modules/4.jpg
  63. BIN
      base_machine_repair_management/static/description/assets/modules/banner.png
  64. BIN
      base_machine_repair_management/static/description/assets/modules/crm.png
  65. BIN
      base_machine_repair_management/static/description/assets/modules/employee.png
  66. BIN
      base_machine_repair_management/static/description/assets/modules/hr.png
  67. BIN
      base_machine_repair_management/static/description/assets/modules/sales.png
  68. BIN
      base_machine_repair_management/static/description/assets/screenshots/1.png
  69. BIN
      base_machine_repair_management/static/description/assets/screenshots/hero.gif
  70. BIN
      base_machine_repair_management/static/description/assets/screenshots/img10.png
  71. BIN
      base_machine_repair_management/static/description/assets/screenshots/img11.png
  72. BIN
      base_machine_repair_management/static/description/assets/screenshots/img12.png
  73. BIN
      base_machine_repair_management/static/description/assets/screenshots/img13.png
  74. BIN
      base_machine_repair_management/static/description/assets/screenshots/img14.png
  75. BIN
      base_machine_repair_management/static/description/assets/screenshots/img2.png
  76. BIN
      base_machine_repair_management/static/description/assets/screenshots/img3.png
  77. BIN
      base_machine_repair_management/static/description/assets/screenshots/img4.png
  78. BIN
      base_machine_repair_management/static/description/assets/screenshots/img5.png
  79. BIN
      base_machine_repair_management/static/description/assets/screenshots/img6.png
  80. BIN
      base_machine_repair_management/static/description/assets/screenshots/img7.png
  81. BIN
      base_machine_repair_management/static/description/assets/screenshots/img8.png
  82. BIN
      base_machine_repair_management/static/description/assets/screenshots/img9.png
  83. BIN
      base_machine_repair_management/static/description/banner.png
  84. BIN
      base_machine_repair_management/static/description/icon.png
  85. 729
      base_machine_repair_management/static/description/index.html
  86. 70
      base_machine_repair_management/views/base_machine_repair_management_menus.xml
  87. 231
      base_machine_repair_management/views/customer_portal_templates.xml
  88. 107
      base_machine_repair_management/views/customer_review_templates.xml
  89. 91
      base_machine_repair_management/views/machine_diagnosis_views.xml
  90. 187
      base_machine_repair_management/views/machine_repair_views.xml
  91. 26
      base_machine_repair_management/views/machine_service_type_views.xml
  92. 26
      base_machine_repair_management/views/machine_service_views.xml
  93. 64
      base_machine_repair_management/views/machine_workorder_views.xml
  94. 45
      base_machine_repair_management/views/product_views.xml
  95. 51
      base_machine_repair_management/views/repair_teams_views.xml
  96. 21
      base_machine_repair_management/views/res_partner_views.xml
  97. 14
      base_machine_repair_management/views/sale_order_views.xml
  98. 422
      base_machine_repair_management/views/website_repair_templates.xml
  99. 23
      base_machine_repair_management/wizard/__init__.py
  100. 47
      base_machine_repair_management/wizard/repair_report_wizards.py

47
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 <https://cybrosys.com/>`__
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 <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

26
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models
from . import controllers
from . import report
from . import wizard

66
base_machine_repair_management/__manifest__.py

@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'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,
}

24
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import base_machine_repair_management
from . import portal

98
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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')

111
base_machine_repair_management/controllers/portal.py

@ -0,0 +1,111 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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/<int: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/<int:repair_id>'], 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)

18
base_machine_repair_management/data/ir_actions_server.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Scheduled action for repair request report-->
<record id="action_machine_repair_report" model="ir.actions.server">
<field name="name">Repair Request Report</field>
<field name="model_id"
ref="base_machine_repair_management.model_machine_repair"/>
<field name="binding_model_id"
ref="base_machine_repair_management.model_machine_repair"/>
<field name="binding_view_types">form</field>
<field name="state">code</field>
<field name="code">
action = records.action_print_repair_request_report()
</field>
</record>
</data>
</odoo>

21
base_machine_repair_management/data/ir_sequence_data.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This is for the sequence of machine diagnosis records-->
<record id="diagnosis_seq" model="ir.sequence">
<field name="name">Repair Sequence</field>
<field name="code">machine.diagnosis</field>
<field name="prefix">DGS/</field>
<field name="padding">3</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
</record>
<!-- This is used for the sequence for machine repair-->
<record id="repair_seq" model="ir.sequence">
<field name="name">Repair Sequence</field>
<field name="code">machine.repair</field>
<field name="prefix">MRP/</field>
<field name="padding">3</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
</record>
</odoo>

34
base_machine_repair_management/data/mail_data.xml

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!--Email template -->
<record id="repair_request_close_email_template" model="mail.template">
<field name="name">Repair Request Closed: Send by email</field>
<field name="model_id"
ref="base_machine_repair_management.model_machine_repair"/>
<field name="email_from">{{ object.customer_id.email }}</field>
<field name="email_to">{{ object.email }}</field>
<field name="subject">Machine Repair Request Closing (Ref {{
object.repair_seq }})
</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
<t t-out="object.customer_id"/>
<br/>
<br/>
Here is your repair request with reference
<t t-out="object.repair_seq"/>
is closed on
<t t-out="object.closing_date"/>
<br/>
<br/>
<br/>
<br/>
Do not hesitate to contact us if you have any questions.
</p>
</div>
</field>
</record>
</data>
</odoo>

6
base_machine_repair_management/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <base_machine_repair_management>
#### 12.02.2024
#### Version 16.0.1.0.0
#### ADD
- Initial commit for Machine Repair Management

31
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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

91
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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 ,}"
}

264
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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")

34
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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")

33
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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")

49
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
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")

33
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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.")

55
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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")

39
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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}"
}

31
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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")

23
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import machine_repair_report

46
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(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
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,
}

16
base_machine_repair_management/report/machine_repair_report.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Which is used to create the machine repair report action-->
<record id="action_repair_report" model="ir.actions.report">
<field name="name">Machine Repair Report</field>
<field name="model">machine.repair</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">base_machine_repair_management.machine_repair_report</field>
<field name="report_file">base_machine_repair_management.machine_repair_report</field>
<field name="print_report_name">'Machine Repair Report - %s' %
(object.name)
</field>
<field name="binding_type">report</field>
<field name="attachment_use">True</field>
</record>
</odoo>

177
base_machine_repair_management/report/repair_report_templates.xml

@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- This is the machine report template-->
<template id="machine_repair_report">
<t t-call="web.external_layout">
<t t-call="web.html_container">
<div class="page">
<div class="oe_structure"/>
<div class="text-center">
<h2>Machine Repair Report</h2>
</div>
<t t-if="repair_requests">
<t t-foreach="repair_requests" t-as="repair">
<div>
<div>
<span>Customer Name:</span>
<t t-esc="repair.customer_id.name"/>
<br/>
<span>Customer Email:</span>
<t t-esc="repair.customer_email"/>
<br/>
<span>Phone:</span>
<t t-esc="repair.phone"/>
<br/>
</div>
<br/>
</div>
<h3>
<u>Machine Details</u>
</h3>
<table class="table table-sm o_main_table mt-4">
<thead>
<tr>
<th name="th_description">
Machine Name
</th>
<t t-if="repair.machine_cate">
<th name="th_quantity"
class="text-end">
Machine Category
</th>
</t>
<th name="th_description">
Color
</th>
<th name="th_description">
Brand
</th>
<th name="th_description">
Model
</th>
<th name="th_description">
Manufacturing Year
</th>
<th name="th_description">
Priority
</th>
<th name="th_description">
Warranty
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span t-field="repair.machine_id.name"/>
</td>
<td>
<t t-esc="repair.machine_cate.name"/>
</td>
<td>
<t t-esc="repair.color"/>
</td>
<td>
<t t-esc="repair.machine_brand"/>
</td>
<td>
<t t-esc="repair.machine_model"/>
</td>
<td>
<t t-esc="repair.manufacturing_year"/>
</td>
<td>
<t t-esc="repair.priority"/>
</td>
<td>
<t t-esc="repair.warrenty"/>
</td>
</tr>
</tbody>
</table>
<h3>
<u>Other Information</u>
</h3>
<div>
<u>
<span>Request Date:</span>
<t t-esc="repair.repir_req_date"/>
<br/>
<span>Repair Date:</span>
<t t-esc="repair.closing_date"/>
<br/>
<span>Is Repaired:</span>
<t t-esc="repair.is_repaired"/>
<br/>
<span>Repairing Duration:</span>
<t t-esc="repair.repairing_duration"/>
<br/>
</u>
</div>
<br/>
<br/>
<h3>
<u>Time Sheets</u>
</h3>
<div>
<table class="table table-sm o_main_table mt-4">
<thead>
<tr>
<th name="th_description">
Date
</th>
<t>
<th name="th_quantity"
class="text-end">
User
</th>
</t>
<th name="th_description">
Project
</th>
<th name="th_description">
Description
</th>
<th name="th_description">
Model
</th>
<th name="th_description">
Duration
</th>
</tr>
</thead>
<tbody>
<t t-foreach="repair.timesheet_id" t-as="time">
<tr>
<td>
<span t-field="time.date"/>
</td>
<td>
<t t-esc="time.user_id.name"/>
</td>
<td>
<t t-esc="time.project_id.name"/>
</td>
<td>
<t t-esc="time.description"/>
</td>
<td>
<t t-esc="time.hours"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</t>
<t t-else="">
<h3>
<u>There is no repair request...</u>
</h3>
</t>
</div>
</t>
</t>
</template>
</odoo>

21
base_machine_repair_management/security/base_machine_repair_management_groups.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This is used for creating user groups-->
<record model="ir.module.category" id="base_machine_repair_module_management">
<field name="name">Machine</field>
<field name="description">Machine Repair</field>
<field name="sequence">10</field>
</record>
<record id="repair_user_access" model="res.groups">
<field name="name">Repair User/Technician</field>
<field name="category_id" ref="base_machine_repair_module_management"/>
</record>
<record id="repair_manager_access" model="res.groups">
<field name="name">Repair Manager</field>
<field name="category_id" ref="base_machine_repair_module_management"/>
</record>
<record id="repair_sales_users_access" model="res.groups">
<field name="name">Sales Persons</field>
<field name="category_id" ref="base_machine_repair_module_management"/>
</record>
</odoo>

11
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access.access_machine_repair_user access.machine.repair.user model_machine_repair base.group_user 1 1 1 1
3 access.access_repair_teams_user access.repair.teams.user model_repair_teams base.group_user 1 1 1 1
4 access.access_team_members_user access.team.members model_team_members base.group_user 1 1 1 1
5 access.access_machine_service_user access.machine.service.user model_machine_service base.group_user 1 1 1 1
6 access.access_machine_service_type_user access.machine.service.type.user model_machine_service_type base.group_user 1 1 1 1
7 access.access_repair_timesheet_user access.repair.timesheet.user model_repair_timesheet base.group_user 1 1 1 1
8 access.access_machine_consume_user access.machine.consume.user model_machine_consume base.group_user 1 1 1 1
9 access.access_machine_diagnosis_user access.machine.diagnosis.user model_machine_diagnosis base.group_user 1 1 1 1
10 access.access_machine_workorder_user access.machine.workorder.user model_machine_workorder base.group_user 1 1 1 1
11 access.access_repair_report_wizard_user access.repair.report.wizards.user model_repair_report_wizards base.group_user 1 1 1 1

BIN
base_machine_repair_management/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
base_machine_repair_management/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
base_machine_repair_management/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
base_machine_repair_management/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
base_machine_repair_management/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
base_machine_repair_management/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
base_machine_repair_management/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
base_machine_repair_management/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
base_machine_repair_management/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
base_machine_repair_management/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
base_machine_repair_management/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
base_machine_repair_management/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
base_machine_repair_management/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
base_machine_repair_management/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
base_machine_repair_management/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
base_machine_repair_management/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
base_machine_repair_management/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
base_machine_repair_management/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
base_machine_repair_management/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
base_machine_repair_management/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
base_machine_repair_management/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
base_machine_repair_management/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
base_machine_repair_management/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
base_machine_repair_management/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
base_machine_repair_management/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
base_machine_repair_management/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
base_machine_repair_management/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
base_machine_repair_management/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
base_machine_repair_management/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
base_machine_repair_management/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
base_machine_repair_management/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
base_machine_repair_management/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
base_machine_repair_management/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
base_machine_repair_management/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
base_machine_repair_management/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
base_machine_repair_management/static/description/assets/modules/4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
base_machine_repair_management/static/description/assets/modules/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
base_machine_repair_management/static/description/assets/modules/crm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
base_machine_repair_management/static/description/assets/modules/employee.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
base_machine_repair_management/static/description/assets/modules/hr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
base_machine_repair_management/static/description/assets/modules/sales.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

BIN
base_machine_repair_management/static/description/assets/screenshots/img9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
base_machine_repair_management/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
base_machine_repair_management/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

729
base_machine_repair_management/static/description/index.html

@ -0,0 +1,729 @@
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="./assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Machine Repair Management For Community</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Machine Repair Management System Is An Application Which Is Used To
Maintain The Machine Repairs. </p>
<!-- END OF APP HERO -->
<img src="./assets/screenshots/hero.gif"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/compass.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="./assets/misc/right-arrow.png" width="36"
height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View features of this module</span>
</div>
<img src="./assets/misc/right-arrow.png" width="36"
height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View screenshots for this module</span>
</div>
<img src="./assets/misc/right-arrow.png" width="36"
height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
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.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/features.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Your customer can send machine repair requests from your website.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Your customer can send machine repair requests from your website.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Customers can view and check the status of all machine request from their portal.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">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.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">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.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Allow you to set the machine repair-related images on the
machine repair form.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User to print a PDF of machine repair request report.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> The machine request manager can close machine repair tickets
and send bills to customers (Billing from Quotation created
from Diagnosis).</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Customers can give feedback and rating of machine repair
request jobs done.</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/pictures.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machine Repair Teams Form View.</h4>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Creating Repairing Teams And the Team Members.</p>
<img src="./assets/screenshots/img4.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machine Service Type Configuration.</h4>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Configure service type that are available for a
machine.</p>
<img src="./assets/screenshots/img5.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage Access Rights By Specifying The User Groups. </h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Different users has different access, It can manage through the access rights.
</p>
<img src="./assets/screenshots/img6.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Diagnosis From Machine Repairs Form View. </h4>
<img src="./assets/screenshots/img14.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Quotation From The Work Order That Created From The Repair
Request. </h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
We can create a quotation for the machine repairs.
</p>
<img src="./assets/screenshots/img13.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machines List.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Machines(Products) that are repaired and maintained are listed
here as list view.
</p>
<img src="./assets/screenshots/img7.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machines Kanban View.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Machines(Products) that are repaired and maintained are listed
here as kanban view.
</p>
<img src="./assets/screenshots/img8.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machine Parts view.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Machine parts(Products) that are used in tha machines are listed
here as list view. </p>
<img src="./assets/screenshots/img9.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
identifying Machine And Machine Parts.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
You can identify the machine and machine parts according to the fields. </p>
<img src="./assets/screenshots/1.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machine Repair Request From Website.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Customer can request for repair from website.
</p>
<img src="./assets/screenshots/img12.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Machine Requests repairs.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Customer machine repair request form.
</p>
<img src="./assets/screenshots/img10.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Customer Review Website.</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Customer can send machine repair's review from website.
</p>
<img src="./assets/screenshots/img11.png" class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/geoip_website_redirect/#" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/3.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/website_repeat_sale/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/4.jpg">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_zk_attendance/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/hr.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/crm_dashboard/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/crm.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/sale_report_advanced/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/sales.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/product_brand_sale/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/banner.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/consultation.png"
class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="./assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px"
width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="./assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="./assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="./assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="./assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->

70
base_machine_repair_management/views/base_machine_repair_management_menus.xml

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<menuitem
id="menu_repair_root"
name="Machine Repair"
/>
<menuitem id="menu_machine_repair"
name="Machine Repair"
parent="menu_repair_root"
sequence="1"
/>
<menuitem id="menu_machines_repairs"
name="Repairs"
parent="menu_machine_repair"
action="action_machine_repairs"
sequence="2"/>
<menuitem id="menu_machines_diagnosis"
name="Diagnosis"
parent="menu_machine_repair"
action="action_machine_diagnosis"
sequence="3"/>
<menuitem id="menu_machines_workorders"
name="WorkOrders"
parent="menu_machine_repair"
action="action_machine_workorder"
sequence="4"/>
<menuitem id="menu_machine_machine"
name="Machines"
parent="menu_repair_root"
sequence="2"
/>
<menuitem id="menu_machines"
name="Machines"
parent="menu_machine_machine"
action="action_machine"
sequence="1"/>
<menuitem id="menu_machines_parts"
name="Machine Parts"
parent="menu_machine_machine"
action="action_machine_parts"
sequence="2"/>
<menuitem id="menu_machine_repair_report"
name="Report"
parent="menu_repair_root"
sequence="3"/>
<menuitem id="menu_machine_report"
name="Repair Report"
parent="menu_machine_repair_report"
action="repair_report_wizards_action"
sequence="1"/>
<menuitem id="menu_machine_configuration"
name="Configuration"
parent="menu_repair_root"
sequence="4"/>
<menuitem id="menu_machines_service"
name="Service"
parent="menu_machine_configuration"
action="action_machine_service"
sequence="1"/>
<menuitem id="menu_machines_service_types"
name="Service Type"
parent="menu_machine_configuration"
action="action_machine_service_type"
sequence="2"/>
<menuitem id="menu_machines_repair_teams"
name="Machine Repair Teams"
parent="menu_machine_configuration"
action="action_repair_teams"
sequence="3"/>
</odoo>

231
base_machine_repair_management/views/customer_portal_templates.xml

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<!-- Portal view for repair requests-->
<template id="portal_my_home_menu_repair"
name="Portal layout : repair menu entries"
inherit_id="portal.portal_breadcrumbs" priority="20">
<xpath expr="//ol[hasclass('o_portal_submenu')]" position="inside">
<li t-if="page_name == 'repair'"
t-attf-class="breadcrumb-item #{'active ' if not repair else ''}">
<a t-if="repair"
t-attf-href="/my/repair?{{ keep_query() }}">Machine
Repair Request
</a>
<t t-else="">Machine Repair Request</t>
</li>
</xpath>
</template>
<template id="portal_my_home_sale" name="Repair" customize_show="True"
inherit_id="portal.portal_my_home"
priority="20">
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
<t t-call="portal.portal_docs_entry">
<t t-set="title">Machine Repair Request</t>
<t t-set="url" t-value="'/my/repair'"/>
<t t-set="placeholder_count" t-value="'repair_count'"/>
</t>
</xpath>
</template>
<template id="portal_my_repair_request" name="My Repair Requests">
<t t-call="portal.portal_layout">
<t t-set="breadcrumbs_searchbar" t-value="True"/>
<t t-call="portal.portal_searchbar">
<t t-set="title">Repair Requests</t>
</t>
<t t-if="machine_repair == 0">
<p>There are currently no Repair Requests In your account.
</p>
</t>
<t t-if="machine_repair" t-call="portal.portal_table">
<thead>
<tr class="active">
<th>Reference</th>
<th>Repair Request</th>
<th class="d-none d-md-table-cell">Requested Date
</th>
<th>State</th>
</tr>
</thead>
<tbody>
<t t-foreach="repair" t-as="repair">
<tr>
<td>
<a t-attf-href="/my/repair/#{repair.id}?{{ keep_query() }}"
t-att-title="repair.name">
<t t-esc="repair.repair_seq"
t-if="repair.name != '/'"/>
<em t-else="">Draft Repair</em>
</a>
</td>
<td>
<span t-field="repair.name"/>
</td>
<td class="d-none d-md-table-cell">
<span t-field="repair.repir_req_date"/>
</td>
<td class="tx_date">
<span t-esc="repair.state"/>
</td>
</tr>
</t>
</tbody>
</t>
</t>
</template>
<!-- The repair request page-->
<template id="portal_repair_page" name="Repair Portal Template"
inherit_id="portal.portal_sidebar"
primary="True">
<xpath expr="//div[hasclass('o_portal_sidebar')]" position="inside">
<t t-set="o_portal_fullwidth_alert"
groups="sales_team.group_sale_salesman">
<t t-call="portal.portal_back_in_edit_mode">
<t t-set="url" t-value="'/my/repair/#'"/>
</t>
</t>
<div class="row mt16 o_portal_sale_sidebar">
<!-- Sidebar -->
<t t-call="portal.portal_record_sidebar">
<t t-set="classes"
t-value="'col-lg-auto d-print-none'"/>
<t t-set="title">
<h2 class="mb-0">
<h3>Your Details</h3>
<span class="s_website_form_label_content">
Customer
</span>
<span t-field="repair.customer_id"/>
</h2>
<h5 class="mb-0">
<span class="s_website_form_label_content">
Email
</span>
<span t-field="repair.customer_email"
data-id="email"/>
<br/>
<span class="s_website_form_label_content">
Phone
</span>
<span t-field="repair.phone" data-id="phone"/>
</h5>
</t>
</t>
<div id="repair_content"
class="col-12 col-lg justify-content-end">
<div t-attf-class="card #{'pb-5' if report_type == 'pdf' else ''}"
id="portal_sale_content">
<div t-call="base_machine_repair_management.repair_portal_content"/>
</div>
</div>
</div>
</xpath>
</template>
<template id="repair_portal_content" name="Repair Portal Content">
<t t-foreach="repair" t-as="repair">
<div style="font-size:15pt; margin-bottom:0pt;margin-top:0pt;"
align="center">
<div class="row">
<div>
<div id="repair_name"
t-attf-class="pb-2 pt-3 #{'card-header bg-white'
if report_type == 'pdf' else ''}">
<h3>
<b>Project Details</b>
</h3>
<h4 class="my-0">
<t t-esc="repair.repair_seq"/>
<t t-esc="repair.name"/>
</h4>
</div>
<div id="project-details" t-attf-class="pb-2 pt-3}">
<h4 class="my-0">
<t t-esc="repair.project.name"/>
<br/>
<t t-esc="repair.department.name"/>
</h4>
</div>
</div>
<br/>
<div>
<div id="repair_request"
t-attf-class="pb-2 pt-3 #{'card-header bg-white'
if report_type == 'pdf' else ''}">
<h3>
<b>Machine repair Request Details</b>
</h3>
<h4 class="my-0">
<t t-esc="repair.repir_req_date"/>
<t t-esc="repair.closing_date"/>
</h4>
</div>
<div id="request-details" t-attf-class="pb-2 pt-3}">
<h4 class="my-0">
<t t-esc="repair.priority"/>
<br/>
<t t-esc="repair.repair_detail"/>
<br/>
<t t-esc="repair.repairing_duration"/>
</h4>
</div>
</div>
</div>
<div class="row"
style="font-size:15pt; margin-bottom:0pt;margin-top:0pt;"
align="center">
<div id="repair_request"
t-attf-class="pb-2 pt-3 #{'card-header bg-white' if
report_type == 'pdf' else ''}">
<h3>
<b>Machine Details</b>
</h3>
<div>
<h4 class="my-0">
<t t-esc="repair.machine.name"/>
<br/>
<t t-esc="repair.machine_cate.name"/>
</h4>
</div>
<div id="request-details" t-attf-class="pb-2 pt-3}">
<h4 class="my-0">
<t t-esc="repair.color"/>
<br/>
<t t-esc="repair.machine_brand"/>
<br/>
<t t-esc="repair.machine_model"/>
<br/>
<t t-esc="manufacturing_year"/>
</h4>
</div>
</div>
<br/>
<br/>
<div id="repair_team"
t-attf-class="pb-2 pt-3 #{'card-header bg-white' if report_type == 'pdf' else ''}">
<h3>
<b>Team Details</b>
</h3>
<div>
<h4 class="my-0">
<t t-esc="repair.technician_id.name"/>
<t t-esc="repair.repair_team_id.team_name"/>
</h4>
</div>
<div id="request-details" t-attf-class="pb-2 pt-3}">
<h4 class="my-0">
<t t-esc="repair.color"/>
<br/>
<t t-esc="repair.machine_brand"/>
<br/>
<t t-esc="repair.machine_model"/>
<br/>
<t t-esc="manufacturing_year"/>
</h4>
</div>
</div>
</div>
</div>
</t>
</template>
</data>
</odoo>

107
base_machine_repair_management/views/customer_review_templates.xml

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--website menu for review for the repair-->
<record id="menu_repair_review" model="website.menu">
<field name="name">Repair Review</field>
<field name="url">/review</field>
<field name="parent_id" ref="website.main_menu"/>
<field name="sequence" type="int">40</field>
</record>
<!--Template for submitting reviews for the users-->
<template id="repair_review_form">
<t t-call="website.layout">
<br/>
<div id="review_form">
<section class="s_website_form" data-vcss="001"
data-snippet="s_website_form">
<div class="container">
<form id="review_form " method="post"
action="/create/repair_reviews">
<div>
<br/>
<br/>
<div class="col-12">
<h4 class="font-weight-bold text-center">
Submit Your Reviews Here....!
</h4>
</div>
<div>
<t t-esc="ss"/>
</div>
<div class="col-12">
<span class='fa fa-comments' role="img">
<h3><b>Comments</b></h3>
</span>
<t t-foreach="customer_rating" t-as="val">
<div>
<div class="row">
<div class="col-4">
<b>
<t t-esc="val.customer_id.name"/>
</b>
</div>
<div class="col-4">
<t t-esc="val.customer_comments"/>
</div>
<div>
<t t-esc="val.customer_rating"/>
</div>
</div>
</div>
</t>
</div>
<div>
<label>
<div class="col-12 text-center">
<input type="radio" name="poor"/>
<span>Poor</span>
</div>
</label>
<label>
<div class="col-12 text-center">
<input type="radio" name="average"/>
<span>Average</span>
</div>
</label>
<label>
<div class="col-12 text-center">
<input type="radio" name="good"/>
<span>Good</span>
</div>
</label>
<label>
<div class="col-12 text-center">
<input type="radio"
name="excellent"/>
<span>Excellent</span>
</div>
</label>
<br/>
<div class="col-6 text-left">
<h4>Add Your Comments Here...</h4>
</div>
<div>
<textarea id="model"
class="form-control s_website_form_input"
name="repair_review_comment"
required=""/>
</div>
<div data-name="Submit Button">
<div style="width: 200px;"
class="s_website_form_label"/>
<a t-attf-href="/contactus-thank-you">
<button type="submit"
class="btn btn-primary pull-left">
Submit
</button>
</a>
</div>
</div>
</div>
</form>
</div>
</section>
</div>
</t>
</template>
</odoo>

91
base_machine_repair_management/views/machine_diagnosis_views.xml

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- The action for the machine diagnosis-->
<record id="action_machine_diagnosis" model="ir.actions.act_window">
<field name="name">Machine Diagnosis</field>
<field name="res_model">machine.diagnosis</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Machine Diagnosis
</p>
</field>
</record>
<!--The form view for the machine diagnosis-->
<record id="machine_diagnosis_view_tree" model="ir.ui.view">
<field name="name">machine.diagnosis.view.tree</field>
<field name="model">machine.diagnosis</field>
<field name="arch" type="xml">
<tree string="Diagnosis">
<field name="diagnosis_seq"/>
<field name="project_id"/>
</tree>
</field>
</record>
<record id="machine_diagnosis_view_form" model="ir.ui.view">
<field name="name">machine.diagnosis.view.form</field>
<field name="model">machine.diagnosis</field>
<field name="arch" type="xml">
<form string="Diagnosis">
<header>
<button type="object" name="create_quotation"
string="Create Quotation"
groups="base_machine_repair_management.repair_sales_users_access"/>
</header>
<sheet>
<div>
<h1>
<field name="diagnosis_seq"/>
</h1>
</div>
<group>
<group>
<field name="project_id"/>
<field name="deadline"/>
</group>
<group>
<field name="customer_id"/>
</group>
</group>
<notebook>
<page string="Description">
<field name="note"/>
</page>
<page string="TimeSheets">
<field name="timesheet_ids">
<tree editable="bottom">
<field name="date"/>
<field name="user_id"/>
<field name="description"/>
<field name="hours"/>
</tree>
</field>
</page>
<page string="Estimate Repair Time">
<field name="part_ids">
<tree editable="bottom">
<field name="machine_id"/>
<field name="qty"/>
<field name="uom"/>
<field name="hour"/>
</tree>
</field>
</page>
<page string="Extra Info">
<group>
<group>
<field name="seq"/>
<field name="assigning_date"/>
</group>
<group>
<field name="machine_repair_ref_id"/>
<field name="notes"/>
</group>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>

187
base_machine_repair_management/views/machine_repair_views.xml

@ -0,0 +1,187 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Action for machine repairs-->
<record id="action_machine_repairs" model="ir.actions.act_window">
<field name="name">Machine Repairs</field>
<field name="res_model">machine.repair</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Machine Repairs
</p>
</field>
</record>
<!--Tree view for the machine repairs-->
<record id="machine_repair_view_tree" model="ir.ui.view">
<field name="name">machine.repair.view.tree</field>
<field name="model">machine.repair</field>
<field name="arch" type="xml">
<tree string="Repair">
<field name="repair_seq"/>
<field name="name"/>
</tree>
</field>
</record>
<!--Form view for the machine repairs-->
<record id="machine_repair_view_form" model="ir.ui.view">
<field name="name">machine.repair.view.form</field>
<field name="model">machine.repair</field>
<field name="arch" type="xml">
<form string="Repair">
<header>
<button name="reopen" type="object" string="Reopen"
class="btn btn-primary" states="closed"/>
<button name="send_email" type="object" string="Send Email"
class="btn btn-primary"
states="closed"/>
<button name="assign_teams" type="object"
string="Assign To Teams" class="btn btn-primary"
states="new"/>
<button name="close_repairing" type="object" string="Close"
class="btn btn-primary"
states="assigned"/>
<button name="create_diagnosis" type="object"
string="Create Diagnosis" class="btn btn-primary"
groups="base_machine_repair_management.repair_sales_users_access"/>
<button name="action_create_work_order" type="object"
string="Create WorkOrder" class="btn btn-primary"
groups="base_machine_repair_management.repair_sales_users_access"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<div>
<h1>
<field name="repair_seq"/>
</h1>
</div>
<div class="oe_title">
<h1>
<field name="name"
placeholder="e.g. Cutter Machine repairing"/>
</h1>
</div>
<group>
<group>
<field name="technician_member_ids"
widget="many2many_tags" invisible="1"/>
<field name="company_id"/>
</group>
<group>
<field name="customer_id"/>
<field name="customer_email"/>
<field name="phone"/>
</group>
<group>
<field name="project"/>
<field name="department"/>
</group>
<group>
<field name="repair_team_id"/>
<field name="technician_id"
domain="[('id', 'in', technician_member_ids)]"/>
<field name="email"/>
<field name="priority"/>
</group>
<group>
<field name="repir_req_date"/>
<field name="is_repaired"/>
</group>
<group>
<field name="closing_date"/>
<field name="repairing_duration"/>
</group>
<div class="oe_title">
<h1>
Machine Information
</h1>
</div>
</group>
<group>
<group>
<field name="machine_cate"/>
<field name="machine_id"/>
<field name="machine_model"/>
<field name="machine_brand"/>
<field name="color"/>
<field name="manufacturing_year"/>
</group>
<group>
<field name="warrenty"/>
<field name="damage"/>
<field name="Warrenty_exp_date"
attrs="{'invisible':[('warrenty','!=',True)]}"/>
<field name="authority_name"
attrs="{'invisible':[('warrenty','!=',True)]}"/>
<field name="repair_detail"/>
</group>
</group>
<notebook>
<page string="TimeSheet">
<field name="timesheet_id">
<tree editable="bottom">
<field name="date"/>
<field name="user_id"/>
<field name="project_id"/>
<field name="description"/>
<field name="hours"/>
</tree>
</field>
</page>
<page string="Machine Consume Part">
<field name="consume_part_id">
<tree editable="bottom">
<field name="machine_id"/>
<field name="qty"/>
<field name="uom"/>
</tree>
</field>
</page>
<page string="General Information">
<group>
<group>
<field name="nature_of_service"/>
<field name="repair_type"
widget="many2many_tags"/>
</group>
<group>
<field name="problem"/>
</group>
<field name="note" placeholder="Extra info"/>
</group>
</page>
<page string="Customer Rating">
<group>
<group>
<field name="customer_rating"/>
<field name="customer_comments"/>
</group>
</group>
<field name="extra_info"/>
</page>
<page string="Machine Images">
<group>
<group>
<field name="image1" widget="image"
options='{"size": [50, 50]}'/>
<field name="image2" widget="image"
options='{"size": [50, 50]}'/>
</group>
<group>
<field name="image3" widget="image"
options='{"size": [50, 50]}'/>
<field name="image4" widget="image"
options='{"size": [50, 50]}'/>
</group>
<group>
<field name="image5" widget="image"
options='{"size": [50, 50]}'/>
</group>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>

26
base_machine_repair_management/views/machine_service_type_views.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Action for the machine service types-->
<record id="action_machine_service_type" model="ir.actions.act_window">
<field name="name">Machine Service Type</field>
<field name="res_model">machine.service.type</field>
<field name="view_mode">tree</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Machine Service Type
</p>
</field>
</record>
<!--Tree view for machine service type-->
<record id="machine_service_type_view_tree" model="ir.ui.view">
<field name="name">machine.service.type.view.tree</field>
<field name="model">machine.service.type</field>
<field name="arch" type="xml">
<tree string="Service Type" editable="bottom" create="true"
delete="true">
<field name="service_type_name"/>
<field name="code"/>
</tree>
</field>
</record>
</odoo>

26
base_machine_repair_management/views/machine_service_views.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This is the action for machine service action-->
<record id="action_machine_service" model="ir.actions.act_window">
<field name="name">Nature Of Service</field>
<field name="res_model">machine.service</field>
<field name="view_mode">tree</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Machine Service
</p>
</field>
</record>
<!--Machine service tree view-->
<record id="machine_service_view_tree" model="ir.ui.view">
<field name="name">machine.service.view.tree</field>
<field name="model">machine.service</field>
<field name="arch" type="xml">
<tree string="Service" editable="bottom" create="true"
delete="true">
<field name="name"/>
<field name="service_type"/>
</tree>
</field>
</record>
</odoo>

64
base_machine_repair_management/views/machine_workorder_views.xml

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Machine work order action-->
<record id="action_machine_workorder" model="ir.actions.act_window">
<field name="name">Machine WorkOrder</field>
<field name="res_model">machine.workorder</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Machine WorkOrder
</p>
</field>
</record>
<!--Tree view for machine work order-->
<record id="machine_workorder_view_tree" model="ir.ui.view">
<field name="name">machine.workorder.view.tree</field>
<field name="model">machine.workorder</field>
<field name="arch" type="xml">
<tree string="WorkOrder">
<field name="work_order_id"/>
<field name="customer_id"/>
</tree>
</field>
</record>
<!--Form view for machine work order-->
<record id="machine_workorder_view_form" model="ir.ui.view">
<field name="name">machine.workorder.view.form</field>
<field name="model">machine.workorder</field>
<field name="arch" type="xml">
<form string="WorkOrder">
<sheet>
<group>
<group>
<field name="work_order_id"/>
<field name="customer_id"/>
</group>
<group>
<field name="date"/>
<field name="priority"/>
</group>
</group>
<notebook>
<page string="Information">
<group>
<group name="Planned Date">
<field name="scheduled_date"/>
<field name="planned_end_date"/>
</group>
</group>
<group>
<group name="Actual Repairing Date">
<field name="start_date"/>
<field name="end_date"/>
<field name="duration"/>
<field name="hours_worked"/>
</group>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>

45
base_machine_repair_management/views/product_views.xml

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Inheriting the product template to add the new field -->
<record id="product_normal_form_view" model="ir.ui.view">
<field name="name">
product.product.view.form.inherit.base.machine.repair.management
</field>
<field name="model">product.product</field>
<field name="inherit_id"
ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='detailed_type']" position="after">
<field name="is_machine"/>
<field name="is_machine_parts"/>
</xpath>
</field>
</record>
<!-- Machine views -->
<record id="action_machine" model="ir.actions.act_window">
<field name="name">Machines</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.product</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('is_machine','!=', False)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a machines
</p>
</field>
</record>
<!-- View for machine parts-->
<record id="action_machine_parts" model="ir.actions.act_window">
<field name="name">Machine Parts</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.product</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('is_machine_parts','!=', False)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Machine Parts
</p>
</field>
</record>
</odoo>

51
base_machine_repair_management/views/repair_teams_views.xml

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Action for repair teams-->
<record id="action_repair_teams" model="ir.actions.act_window">
<field name="name">Machine Repair Teams</field>
<field name="res_model">repair.teams</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Machine Repair Teams
</p>
</field>
</record>
<!--Tree view for repair teams-->
<record id="repair_team_view_tree" model="ir.ui.view">
<field name="name">repair.teams.view.tree</field>
<field name="model">repair.teams</field>
<field name="arch" type="xml">
<tree string="Teams">
<field name="team_name"/>
<field name="team_lead_id"/>
</tree>
</field>
</record>
<!--Form view for repair teams-->
<record id="=repair_team_view_form" model="ir.ui.view">
<field name="name">repair.teams.view.form</field>
<field name="model">repair.teams</field>
<field name="arch" type="xml">
<form string="Teams">
<sheet>
<group>
<field name="team_name"/>
<field name="team_lead_id"/>
<field name="repair_work_id"/>
</group>
<notebook>
<page name="page" string="Members">
<field name="member_ids">
<tree editable="bottom">
<field name="member_id"/>
<field name="login"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>

21
base_machine_repair_management/views/res_partner_views.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- This is for the customer repair count smart button-->
<record id="view_partner_form" model="ir.ui.view">
<field name="name">
res.partner.view.form.inherit.base.machine.repair.management
</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<div class="oe_button_box" name="button_box">
<button name="action_repair_requests" type="object"
class="oe_stat_button" icon="fa fa-car">
<div class="o_stat_info">
<span class="o_stat_text">Repair Request</span>
</div>
</button>
</div>
</field>
</record>
</odoo>

14
base_machine_repair_management/views/sale_order_views.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Adding a new field to sale order form view-->
<record id="sale_order_view_form" model="ir.ui.view">
<field name="name">sale.order.view.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='fiscal_position_id']" position="after">
<field name="machine_diag_ref"/>
</xpath>
</field>
</record>
</odoo>

422
base_machine_repair_management/views/website_repair_templates.xml

@ -0,0 +1,422 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Website menu for repair-->
<record id="menu_repair" model="website.menu">
<field name="name">Repair</field>
<field name="url">/repair</field>
<field name="parent_id" ref="website.main_menu"/>
<field name="sequence" type="int">39</field>
</record>
<!--Template for website repair-->
<template id="repair_request_form">
<t t-call="website.layout">
<br/>
<div id="request_form">
<section class="s_website_form" data-vcss="001"
data-snippet="s_website_form">
<div class="container">
<form id="repair_form" method="post"
action="/create/repair_request">
<div>
<br/>
<div class="col-12 text-center">
<h4 class="font-weight-bold text-center">
Submit Your Machine/Equipment Requests
</h4>
</div>
<t t-if="env.user._is_internal()">
<div style="display:none;">
<div class="form-group col-12">
<h5 class="text-left">
Personal Details
</h5>
</div>
<br/>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Customer Name
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input type="text"
class="form-control"
name="customer_id"
data-value="env.user.id"
/>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Email
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input type="email"
class="form-control"
name="customer_email"
data-value="env.user.email"
/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Phone Number
</span>
</label>
<div class="col-sm">
<input type="tel"
class="form-control
s_website_form_input"
data-value="env.user.phone"
name="phone"/>
</div>
</div>
</div>
<br/>
</div>
</t>
<t t-if="not env.user._is_internal()">
<div class="form-group col-12">
<h5 class="text-left">
Personal Details
</h5>
</div>
<br/>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Customer Name
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input type="text"
class="form-control"
name="customer_id"
required=""/>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Email
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input type="email"
class="form-control"
name="customer_email"
required=""/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Phone Number
</span>
</label>
<div class="col-sm">
<input type="tel"
class="form-control
s_website_form_input"
name="phone"/>
</div>
</div>
</div>
<br/>
</t>
<div class="col-12">
<h5 class="text-left">
Machine/Equipment Repair Details
</h5>
</div>
<br/>
<div>
<div class="row s_col_no_resize
s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Reason For Repairing
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input id="reason" type="tel"
class="form-control
s_website_form_input"
name="repairing_reason"
required=""/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Machine Name
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<select name="machine_id"
id="machine_id"
class="form-control link-style">
<option value="">Machine
</option>
<t t-foreach="machine"
t-as="mic">
<option t-att-value="mic.id">
<t t-esc="mic.name"
t-att-value="mic.id"
required=""/>
</option>
</t>
</select>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Machine brand
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input id="brand" type="tel"
class="form-control
s_website_form_input"
name="machine_brand"
required=""/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Manufacturing Year
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input id="manufacturing_date"
type="date"
name="manufacturing_year"
class="form-control
o_website_form_input
o_website_form_date"
required=""/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label
col-sm-auto s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Service
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<select name="service"
id="service_id"
class="form-control link-style">
<option value="">Options...
</option>
<t t-foreach="service"
t-as="doc">
<option t-att-value="doc.id">
<t t-esc="doc.name"
t-att-value="doc.id"
required=""/>
</option>
</t>
</select>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label
col-sm-auto s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Machine Model
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<input id="model" type="tel"
class="form-control
s_website_form_input"
name="machine_model"
required=""/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label
col-sm-auto s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Priority
</span>
<span class="s_website_form_mark">
*
</span>
</label>
<div class="col-sm">
<select name="priority"
class="form-control link-style"
required="">
<option t-attf-value="low">Low
</option>
<option t-attf-value="high">
High
</option>
<option t-attf-value="middle">
Middle
</option>
</select>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Repair Reason in Detail
</span>
</label>
<div class="col-sm">
<textarea id="model"
class="form-control
s_website_form_input"
name="repair_detail"
required=""/>
</div>
</div>
</div>
<br/>
<div>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label
col-sm-auto s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
List Of Damages
</span>
</label>
<div class="col-sm">
<textarea id="model"
class="form-control
s_website_form_input"
name="repair_detail"
required=""/>
</div>
</div>
</div>
<br/>
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto
s_website_form_label"
style="width: 200px">
<span class="s_website_form_label_content">
Attach File
</span>
</label>
<input type="file" multiple="true"
t-ref="uploadFileInput"
/>
</div>
</div>
<br/>
<div class="form-group col-6 s_website_form_submit"
data-name="Submit Button">
<div style="width: 200px;"
class="s_website_form_label"/>
<a t-attf-href="/contactus-thank-you">
<button type="submit"
style="margin-left:1100px;width:30%;"
class="btn btn-primary pull-left">
Submit
</button>
</a>
</div>
</form>
</div>
</section>
</div>
</t>
</template>
</odoo>

23
base_machine_repair_management/wizard/__init__.py

@ -0,0 +1,23 @@
"""Base machine repair management"""
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import repair_report_wizards

47
base_machine_repair_management/wizard/repair_report_wizards.py

@ -0,0 +1,47 @@
"""Machine repair management"""
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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 <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class RepairSummary(models.TransientModel):
"""This is used for the repairs for the machines report"""
_name = 'repair.report.wizards'
_description = 'Repair Report Wizard'
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
readonly=True, help="Login Company")
from_date = fields.Date(string="Date From",
help="Start date of printing report")
to_date = fields.Date(string="Date To", help="End date of printing report")
def action_repair_report(self):
"""This function is used to return the wizard for printing the report"""
data = {
'company_id': self.company_id.id,
'from_date': self.from_date,
'to_date': self.to_date
}
return self.env.ref(
'base_machine_repair_management.action_repair_report').report_action(
self, data=data)

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save