@ -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>`__ |
@ -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 |
@ -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, |
||||
|
} |
@ -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 |
@ -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') |
@ -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) |
@ -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> |
@ -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> |
@ -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> |
@ -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 |
@ -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 |
@ -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 ,}" |
||||
|
} |
@ -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") |
@ -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") |
@ -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") |
@ -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") |
@ -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.") |
@ -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") |
@ -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}" |
||||
|
} |
@ -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") |
@ -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 |
@ -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, |
||||
|
} |
@ -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> |
@ -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> |
@ -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> |
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 271 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 177 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 252 KiB |
After Width: | Height: | Size: 181 KiB |
After Width: | Height: | Size: 252 KiB |
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 2.5 KiB |
@ -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 & 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 --> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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 |
@ -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) |