Browse Source

Dec 26 : [ADD] Initial Commit 'fleet_vehicle_inspection_management'

pull/298/merge
RisvanaCybro 1 year ago
parent
commit
80c3d57a5e
  1. 47
      fleet_vehicle_inspection_management/README.rst
  2. 23
      fleet_vehicle_inspection_management/__init__.py
  3. 55
      fleet_vehicle_inspection_management/__manifest__.py
  4. 18
      fleet_vehicle_inspection_management/data/ir_cron_data.xml
  5. 15
      fleet_vehicle_inspection_management/data/ir_sequence_data.xml
  6. 56
      fleet_vehicle_inspection_management/data/mail_template_data.xml
  7. 6
      fleet_vehicle_inspection_management/doc/RELEASE_NOTES.md
  8. 29
      fleet_vehicle_inspection_management/models/__init__.py
  9. 41
      fleet_vehicle_inspection_management/models/fleet_sub_service_type.py
  10. 54
      fleet_vehicle_inspection_management/models/fleet_vehicle.py
  11. 39
      fleet_vehicle_inspection_management/models/fleet_vehicle_log_services.py
  12. 36
      fleet_vehicle_inspection_management/models/inspection_image.py
  13. 203
      fleet_vehicle_inspection_management/models/inspection_request.py
  14. 56
      fleet_vehicle_inspection_management/models/inspection_request_line.py
  15. 41
      fleet_vehicle_inspection_management/models/vehicle_inspection.py
  16. 44
      fleet_vehicle_inspection_management/models/vehicle_service_log.py
  17. 11
      fleet_vehicle_inspection_management/report/vehicle_service_log_reports.xml
  18. 114
      fleet_vehicle_inspection_management/report/vehicle_service_log_templates.xml
  19. 52
      fleet_vehicle_inspection_management/security/fleet_vehicle_inspection_management_security.xml
  20. 8
      fleet_vehicle_inspection_management/security/ir.model.access.csv
  21. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/check.png
  22. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/chevron.png
  23. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/cogs.png
  24. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/consultation.png
  25. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/ecom-black.png
  26. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/education-black.png
  27. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/hotel-black.png
  28. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/license.png
  29. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/lifebuoy.png
  30. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/manufacturing-black.png
  31. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/pos-black.png
  32. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/puzzle.png
  33. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/restaurant-black.png
  34. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/service-black.png
  35. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/trading-black.png
  36. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/training.png
  37. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/update.png
  38. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/user.png
  39. BIN
      fleet_vehicle_inspection_management/static/description/assets/icons/wrench.png
  40. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/categories.png
  41. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/check-box.png
  42. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/compass.png
  43. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/corporate.png
  44. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/customer-support.png
  45. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/cybrosys-logo.png
  46. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/features.png
  47. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/logo.png
  48. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/pictures.png
  49. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/pie-chart.png
  50. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/right-arrow.png
  51. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/star.png
  52. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/support.png
  53. BIN
      fleet_vehicle_inspection_management/static/description/assets/misc/whatsapp.png
  54. BIN
      fleet_vehicle_inspection_management/static/description/assets/modules/1.png
  55. BIN
      fleet_vehicle_inspection_management/static/description/assets/modules/2.jpg
  56. BIN
      fleet_vehicle_inspection_management/static/description/assets/modules/3.png
  57. BIN
      fleet_vehicle_inspection_management/static/description/assets/modules/4.png
  58. BIN
      fleet_vehicle_inspection_management/static/description/assets/modules/5.png
  59. BIN
      fleet_vehicle_inspection_management/static/description/assets/modules/6.png
  60. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/1.png
  61. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/10.png
  62. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/11.png
  63. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/12.png
  64. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/13.png
  65. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/14.png
  66. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/15.png
  67. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/16.png
  68. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/17.png
  69. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/18.png
  70. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/19.png
  71. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/2.png
  72. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/20.png
  73. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/21.png
  74. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/22.png
  75. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/23.png
  76. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/24.png
  77. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/3.png
  78. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/4.png
  79. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/5.png
  80. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/6.png
  81. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/7.png
  82. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/8.png
  83. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/9.png
  84. BIN
      fleet_vehicle_inspection_management/static/description/assets/screenshots/hero.gif
  85. BIN
      fleet_vehicle_inspection_management/static/description/banner.jpg
  86. BIN
      fleet_vehicle_inspection_management/static/description/icon.png
  87. 777
      fleet_vehicle_inspection_management/static/description/index.html
  88. 25
      fleet_vehicle_inspection_management/views/fleet_vehicle_log_services_views.xml
  89. 45
      fleet_vehicle_inspection_management/views/fleet_vehicle_views.xml
  90. 304
      fleet_vehicle_inspection_management/views/inspection_request_views.xml
  91. 36
      fleet_vehicle_inspection_management/views/vehicle_inspection_views.xml
  92. 118
      fleet_vehicle_inspection_management/views/vehicle_service_log_views.xml
  93. 22
      fleet_vehicle_inspection_management/wizard/__init__.py
  94. 140
      fleet_vehicle_inspection_management/wizard/fleet_service_inspection.py
  95. 43
      fleet_vehicle_inspection_management/wizard/fleet_service_inspection_views.xml

47
fleet_vehicle_inspection_management/README.rst

@ -0,0 +1,47 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Vehicle Inspection Management in Fleet
=======================================
* Vehicle Inspection Management used to manage the Fleet Inspection and Services, User can add real time images for service.
Configuration
=============
- Install our custom addon
- No additional Configuration needed
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
License
-------
GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL v3)
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
Credits
-------
* Developer: (V14)Mohamed Muzammil VP, Contact : 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 https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

23
fleet_vehicle_inspection_management/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from . import models
from . import wizard

55
fleet_vehicle_inspection_management/__manifest__.py

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
{
'name': 'Vehicle Inspection Management in Fleet',
'version': '14.0.1.0.0',
'category': 'Industries',
'summary': 'Vehicle Inspection Management for manage the Vehicle',
'description': 'Vehicle Inspection Management used to manage the Fleet '
'Inspection and Services, User can add real time images '
'for service',
'depends': ['base', 'fleet'],
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'data': {
'security/fleet_vehicle_inspection_management_security.xml',
'security/ir.model.access.csv',
'data/ir_sequence_data.xml',
'data/ir_cron_data.xml',
'data/mail_template_data.xml',
'views/vehicle_inspection_views.xml',
'views/inspection_request_views.xml',
'views/fleet_vehicle_views.xml',
'views/fleet_vehicle_log_services_views.xml',
'views/vehicle_service_log_views.xml',
'report/vehicle_service_log_reports.xml',
'report/vehicle_service_log_templates.xml',
'wizard/fleet_service_inspection_views.xml',
},
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

18
fleet_vehicle_inspection_management/data/ir_cron_data.xml

@ -0,0 +1,18 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<!--Cron function to create inspection request-->
<data noupdate="1">
<record id="ir_cron_scheduler_inspection_request" model="ir.cron">
<field name="name">Vehicle inspection Request</field>
<field name="model_id" ref="model_inspection_request"/>
<field name="state">code</field>
<field name="code">model.action_create_inspection_request()
</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall">1</field>
</record>
</data>
</odoo>

15
fleet_vehicle_inspection_management/data/ir_sequence_data.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Inspection request sequence-->
<data noupdate="1">
<record id="sequence_inspection_request" model="ir.sequence">
<field name="name">Vehicle Inspection Request</field>
<field name="code">inspection.request</field>
<field name="prefix">INSP/REQ</field>
<field name="padding">5</field>
<field eval="1" name="number_next"/>
<field eval="1" name="number_increment"/>
<field eval="False" name="company_id"/>
</record>
</data>
</odoo>

56
fleet_vehicle_inspection_management/data/mail_template_data.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Template for vehicle inspection reminder email-->
<data noupdate="1">
<record id="vehicle_inspection_reminder_email_template"
model="mail.template">
<field name="name">Vehicle Inspection Notification Email</field>
<field name="email_from">{{object.user_id.company_id.email}}
</field>
<field name="subject">{{object.name}} -
{{object.inspection_id.name}}
</field>
<field name="model_id"
ref="fleet_vehicle_inspection_management.model_inspection_request"/>
<field name="email_to">{{object.user_id.email}}</field>
<field name="auto_delete" eval="True"/>
<field name="body_html" type="html">
<p>Dear<t t-out="object.user_id.name"/>,
</p>
<ul>This Email is about Vehicle Inspection Notification as
below:
<t t-out="object.inspection_date"/>
<br/>
<table border="1">
<thead>
<tr>
<th width="200">Vehicle</th>
<th width="200">Model</th>
<th width="200">License Plate</th>
</tr>
</thead>
<tbody>
<tr>
<td width="200">
<t t-out="object.vehicle_id.name"/>
</td>
<td width="200">
<t t-out="object.vehicle_model_id.name"/>
</td>
<td width="200">
<t t-out="object.license_plate"/>
</td>
</tr>
</tbody>
</table>
<br/>
<br/>
<p/>
</ul>
<font size="3">
<p>Thank you,</p>
</font>
</field>
</record>
</data>
</odoo>

6
fleet_vehicle_inspection_management/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <fleet_vehicle_inspection_management>
#### 22.12.2023
#### Version 14.0.1.0.0
#### ADD
- Initial commit for Vehicle Inspection Management in Fleet

29
fleet_vehicle_inspection_management/models/__init__.py

@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from . import fleet_sub_service_type
from . import fleet_vehicle
from . import fleet_vehicle_log_services
from . import inspection_image
from . import inspection_request
from . import inspection_request_line
from . import vehicle_inspection
from . import vehicle_service_log

41
fleet_vehicle_inspection_management/models/fleet_sub_service_type.py

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import api, fields, models
class FleetSubServiceTypes(models.Model):
"""Model for create service wizard"""
_name = 'fleet.sub.service.type'
_description = 'Fleet Sub Service Type'
_rec_name = 'service_category'
service_type_id = fields.Many2one('fleet.service.type',
help='Vehicle service type',
string='Vehicle service type')
service_category = fields.Char(string='Category',
help='Vehicle service category',)
@api.onchange('service_type_id')
def _onchange_service_type_id(self):
"""Select service category """
for rec in self:
rec.service_category = rec.service_type_id.category

54
fleet_vehicle_inspection_management/models/fleet_vehicle.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import api, fields, models
class FleetVehicleInherit(models.Model):
""" Inherit model and add inspection lines"""
_inherit = 'fleet.vehicle'
inspection_line_ids = fields.One2many('inspection.request.line',
'fleet_vehicle_id',
string='Inspection Line',
help='Vehicle Inspection Lines')
is_inspection_active = fields.Boolean(string='Inspection active',
help='Active Vehicle Inspection',
default=False)
inspection_count = fields.Integer(string='Inspections',
help='Number of inspections',
compute='_compute_inspection_count')
def get_inspection_requests(self):
"""Inspection smart button"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Vehicle Inspections',
'view_mode': 'tree,form',
'res_model': 'inspection.request',
'domain': [('vehicle_id', '=', self.id)]}
@api.depends('is_inspection_active')
def _compute_inspection_count(self):
""" Calculating the vehicle inspection number """
self.inspection_count = self.env['inspection.request'].search_count(
[('vehicle_id', '=', self.id)])

39
fleet_vehicle_inspection_management/models/fleet_vehicle_log_services.py

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import fields, models
class FleetVehicleLogServices(models.Model):
"""Inherit fleet service add sub service types"""
_inherit = 'fleet.vehicle.log.services'
fleet_service_id = fields.Many2one(
'fleet.vehicle.log.services', help='Fleet service',
string='Fleet service')
sub_service_ids = fields.One2many(
'fleet.service.inspection', 'service_id', help='Sub Service Lines',
string='Sub Service Lines')
inspection_reference_id = fields.Many2one(
'fleet.vehicle.log.services', string='Inspection Reference',
help='Inspection Reference')
inspection_name = fields.Char(
string='Inspection', help='Vehicle Inspection name')

36
fleet_vehicle_inspection_management/models/inspection_image.py

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import fields, models
class InspectionImages(models.Model):
"""Model to add inspection images"""
_name = 'inspection.image'
_description = 'Inspection Images'
name = fields.Char(String='Image Name', help='Image name')
image = fields.Image(string='Image', help='Inspection Image')
inspection_req_id = fields.Many2one('inspection.request',
help='Vehicle inspection',
string='Vehicle inspection')
service_log_id = fields.Many2one('vehicle.service.log', help='Service log',
string='Service log')

203
fleet_vehicle_inspection_management/models/inspection_request.py

@ -0,0 +1,203 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from datetime import timedelta
from odoo import api, fields, models
class InspectionRequests(models.Model):
"""Create inspection requests"""
_name = 'inspection.request'
_description = 'Inspection Request'
_inherit = ['mail.thread', 'mail.activity.mixin']
name = fields.Char(
readonly=True, help='Inspection Request name',
string='Inspection Request name')
inspection_id = fields.Many2one(
'vehicle.inspection', required=True, help='Select Vehicle Inspection',
string='Select Vehicle Inspection')
vehicle_id = fields.Many2one(
'fleet.vehicle', string='Vehicle', required=True,
help='Select Vehicle for inspection')
vehicle_model_id = fields.Many2one(
'fleet.vehicle.model', string='Model', related="vehicle_id.model_id",
help='Vehicle model', store=True)
license_plate = fields.Char(
string='License Plate', readonly=False,
related="vehicle_id.license_plate", help='vehicle license plate')
date_create = fields.Date(
default=lambda self: fields.Date.today(),
string='Inspection Create Date', help='Inspection Create Date',)
inspection_date = fields.Date(
default=lambda self: fields.Date.today(), string='Inspection Date',
help='Vehicle inspection date',)
user_id = fields.Many2one(
'res.users', string='Inspection Supervisor', readonly=False,
related='inspection_id.user_id', help='Inspection supervisor')
company_id = fields.Many2one(
'res.company', string='Company', help='Company',
default=lambda self: self.env.company)
image_128 = fields.Image(
related='vehicle_model_id.image_128', help='Vehicle Image',
string='Image')
inspection_result = fields.Char(
string='Inspection Result', help='Vehicle inspection result')
internal_note = fields.Html(string='Internal Note', help='Internal note')
state = fields.Selection(
selection=[('draft', 'Draft'), ('new', 'New'),
('inspection_started', 'Inspection Started'),
('inspection_finished', 'Inspection Finished')],
default='draft', copy=False, tracking=True,
help='Status of Inspection', string='Status of Inspection')
inspection_image_ids = fields.One2many(
'inspection.image', 'inspection_req_id',
help='Add Inspection Images', string='Add Inspection Images')
inspection_line_reference_id = fields.Many2one(
'inspection.request',
string='Inspection Reference', help='Inspection Line')
service_reference_id = fields.Many2one(
'inspection.request', string='Service Reference',
help='Service Reference')
service_active = fields.Boolean(
string='Service active', default=False,
help='Active Service smart button', compute='_compute_service_active')
fleet_active = fields.Boolean(
string='Service active', default=False,
help='Active Service smart button', compute='_compute_fleet_active')
@api.model
def create(self, vals):
"""Generate vehicle inspection sequence"""
if vals.get('name', 'New') == 'New':
vals['name'] = self.env['ir.sequence'].next_by_code(
'inspection.request') or 'New'
return super(InspectionRequests, self, ).create(vals)
@api.depends('service_active')
def _compute_service_active(self):
"""Checking if any service is created or not"""
self.service_active = self.env[
'fleet.service.inspection'].search_count(
[('inspection_reference_id', '=', self.id)]) != 0
@api.depends('fleet_active')
def _compute_fleet_active(self):
"""Checking that vehicle is chosen or not"""
self.fleet_active = bool(self.vehicle_id)
def action_confirm_inspection(self):
"""Button to confirm inspection request"""
self.write({'state': 'new'})
inspection_request_line = self.env['inspection.request.line'].search([
('inspection_request_reference_id', '=', self.id)
])
if not inspection_request_line:
self.env['inspection.request.line'].create({
'fleet_vehicle_id': self.vehicle_id.id,
'description': self.inspection_id.name,
'inspection_id': self.inspection_id.id,
'inspection_period': self.inspection_id.inspection_period,
'reminder_notification':
self.inspection_id.reminder_notification_days,
'user_id': self.user_id,
'next_inspection_date': self.inspection_date,
})
def action_print_report(self):
""" Print pdf report"""
images = []
for rec in self.inspection_image_ids:
images.append(rec.image)
data = {
'logo': self.vehicle_id.model_id.image_128,
'vehicle_model_id': self.vehicle_id.model_id.name,
'records': self.read(),
'license_plate': self.vehicle_id.license_plate,
'user_id': self.user_id.name,
'images': images,}
return self.env.ref(
'fleet_vehicle_inspection_management.'
'action_report_vehicle_inspection').report_action(self, data=data)
def action_start_inspection(self):
"""Button to start vehicle inspection"""
self.write({'state': 'inspection_started'})
def action_finish_inspection(self):
"""Button to make inspection finished"""
self.write({'state': 'inspection_finished'})
def action_create_service(self):
"""Opens wizard to create service"""
if not self.service_reference_id:
service_id = self.env['fleet.service.inspection'].create({
'inspection_reference_id': self.id,
'vehicle_id': self.vehicle_id.id})
self.service_reference_id = service_id.id
return {
'name': 'Create Service',
'type': 'ir.actions.act_window',
'res_model': 'fleet.service.inspection',
'view_mode': 'form',
'target': 'new',
'res_id': self.service_reference_id.id}
def action_create_inspection_request(self):
"""Automatically create inspection request and send reminder email"""
for lines in self.env['inspection.request.line'].search([]):
reminder_day = lines.next_inspection_date - timedelta(
days=lines.reminder_notification)
if reminder_day == fields.Date.today():
self.write({'state': 'new'})
lines.inspection_request_reference_id = self.inspection_line_reference_id.id
next_inspection = lines.next_inspection_date + timedelta(
days=lines.inspection_period)
lines.last_inspection_date = lines.next_inspection_date
lines.next_inspection_date = next_inspection
mail_template_id = self.env.ref(
'fleet_vehicle_inspection_management.'
'vehicle_inspection_reminder_email_template')
mail_template_id.send_mail(
self.inspection_line_reference_id.id)
def get_vehicle_service(self):
"""Vehicle service smart button"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Vehicle Service log',
'view_mode': 'tree,form',
'context': {'create': False},
'res_model': 'vehicle.service.log',
'domain': [('service_reference_id', '=', self.env[
'fleet.service.inspection'].search(
[('inspection_reference_id', '=', self.id)]).id)]}
def get_fleet_vehicle(self):
"""Fleet vehicle smart button"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Fleet Vehicle',
'view_mode': 'tree,form',
'res_model': 'fleet.vehicle',
'domain': [('id', '=', self.vehicle_id.id)]}

56
fleet_vehicle_inspection_management/models/inspection_request_line.py

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
""" model for vehicle inspection lines"""
from odoo import fields, models
class InspectionRequestLine(models.Model):
""" add inspection requests """
_name = 'inspection.request.line'
_description = 'Inspection Request Line'
_rec_name = 'fleet_vehicle_id'
fleet_vehicle_id = fields.Many2one(
'fleet.vehicle', string='Vehicle',
help='Select vehicle for the inspection request.')
description = fields.Char(string='Description',
help='Description for inspection request')
inspection_id = fields.Many2one('vehicle.inspection', required=True,
help='Select vehicle inspection',
string='Inspection Reference')
inspection_period = fields.Integer(
string='Period(Days)', related='inspection_id.inspection_period',
help='Recurring interval of vehicle inspection')
reminder_notification = fields.Integer(
string='Reminder Notification Date',
related='inspection_id.reminder_notification_days',
help='Number of days before need to send Reminder Email')
user_id = fields.Many2one('res.users', string='Inspection Supervisor',
related='inspection_id.user_id',
help='Instruction Supervisor')
last_inspection_date = fields.Date(string='Last Inspection Date',
help='Date of last inspection ')
next_inspection_date = fields.Date(string='Next Inspection Date',
help='Date of next inspection')
inspection_request_reference_id = fields.Many2one(
'inspection.request.line', string='Inspection Request Reference',
help='Inspection Request Reference')

41
fleet_vehicle_inspection_management/models/vehicle_inspection.py

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import fields, models
class VehicleInspection(models.Model):
""" Add vehicle inspections """
_name = 'vehicle.inspection'
_description = 'Vehicle Inspection'
name = fields.Char(string='Name', help='Name of vehicle inspection',
required=True)
inspection_period = fields.Integer(
string='Period(Days)', help='Recurring period of vehicle inspection')
reminder_notification_days = fields.Integer(
string='Reminder Notification(Days)',
help='Number of days before want to send reminder email')
user_id = fields.Many2one('res.users', string='Inspection Supervisor',
helps='Inspection supervisor', required=True)
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help='Company Name')

44
fleet_vehicle_inspection_management/models/vehicle_service_log.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
""" vehicle inspection and service details"""
from odoo import fields, models
class VehicleServiceLog(models.Model):
""" add vehicle inspection details"""
_name = 'vehicle.service.log'
_description = 'Vehicle Service Log'
_inherit = 'fleet.vehicle.log.services'
service_image_ids = fields.One2many('inspection.image', 'service_log_id',
help='Inspection Images',
string='Inspection Images')
additional_service_ids = fields.One2many('fleet.service.inspection',
'service_log_id',
help='Additional Services',
string='Additional Services')
inspection_result = fields.Char(string='Inspection Result',
help='Result of inspection')
notes = fields.Html(string='Internal Notes', help='Internal notes')
service_reference_id = fields.Many2one(
'vehicle.service.log', string='Service Reference',
help='Service Reference')

11
fleet_vehicle_inspection_management/report/vehicle_service_log_reports.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Vehicle inspection report action-->
<record id="action_report_vehicle_inspection" model="ir.actions.report">
<field name="name">Vehicle Inspection Report</field>
<field name="model">vehicle.service.log</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">fleet_vehicle_inspection_management.report_vehicle_inspection</field>
<field name="report_file">fleet_vehicle_inspection_management.report_vehicle_inspection</field>
</record>
</odoo>

114
fleet_vehicle_inspection_management/report/vehicle_service_log_templates.xml

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Template for vehicle inspection report-->
<template id="report_vehicle_inspection">
<t t-call="web.external_layout">
<t t-call="web.html_container">
<div class="page">
<div class="float-left">
<t t-if="logo">
<img t-attf-src="data:image/png;base64,{{logo}}"
style="max-height:5cm; max-width:5cm;"
margin="left"/>
</t>
<br/>
</div>
<div>
<table class="table">
<thead>
<tr>
<td style="text-align: center;"
colspan="4">
<strong>
<t t-esc="records[0]['name']"/>
</strong>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<strong>Vehicle</strong>
</td>
<td>
<strong>
<t t-esc="records[0]['vehicle_id'][1]"/>
</strong>
</td>
<td>
<strong>Create Date:</strong>
</td>
<td>
<strong>
<t t-esc="records[0]['create_date']"/>
</strong>
</td>
</tr>
<tr>
<td>
<strong>Model</strong>
</td>
<td>
<strong>
<t t-esc="model_id"/>
</strong>
</td>
<td>
<strong>License Plate:</strong>
</td>
<td>
<strong>
<t t-esc="license_plate"/>
</strong>
</td>
</tr>
<tr>
<td>
<strong>Inspection Date</strong>
</td>
<td>
<strong>
<t t-esc="records[0]['inspection_date']"/>
</strong>
</td>
<td>
<strong>Inspection Supervisor</strong>
</td>
<td>
<strong>
<t t-esc="user_id"/>
</strong>
</td>
</tr>
</tbody>
</table>
</div>
<table>
<t t-if="images">
<h3>Images</h3>
<t t-foreach="images" t-as="rec">
<img t-attf-src="data:image/png;base64,{{rec}}"
style="max-height:5cm; max-width:5cm;margin-right:5px;padding-top:10px;"
margin="left"/>
</t>
</t>
</table>
<br/>
<br/>
<div class="mt32 mb32">
<div class="col-xs-6 text-left">
<strong>Supervisor Signature:____________________
</strong>
<br/>
<br/>
<strong>Date:____________________</strong>
</div>
</div>
</div>
</t>
</t>
</template>
</odoo>

52
fleet_vehicle_inspection_management/security/fleet_vehicle_inspection_management_security.xml

@ -0,0 +1,52 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<!--Access rights of fleet vehicle inspection-->
<record id="module_category_fleet_vehicle_inspection_management" model="ir.module.category">
<field name="name">Vehicle Inspection Management</field>
<field name="description">User access level for Vehicle Inspection
module
</field>
<field name="sequence">20</field>
</record>
<!--Access rights for supervisor-->
<record id="fleet_vehicle_inspection_management_group_supervisor" model="res.groups">
<field name="name">Inspection Supervisor</field>
<field name="category_id" ref="module_category_fleet_vehicle_inspection_management"/>
</record>
<!--Access rights for manager-->
<record id="fleet_vehicle_inspection_management_group_manager" model="res.groups">
<field name="name">Inspection Manager</field>
<field name="category_id" ref="module_category_fleet_vehicle_inspection_management"/>
<field name="implied_ids"
eval="[(4, ref('fleet_vehicle_inspection_management_group_supervisor'))]"/>
</record>
<!--Record rules-->
<!--Inspection Supervisor Rule-->
<record id="inspection_request_rule_supervisor" model="ir.rule">
<field name="name">Inspection Supervisor Rule</field>
<field name="model_id" ref="model_inspection_request"/>
<field name="domain_force">[('user_id', '=', user.id)]</field>
<field name="groups"
eval="[(4, ref('fleet_vehicle_inspection_management.fleet_vehicle_inspection_management_group_supervisor'))]"/>
</record>
<!--Inspection Manager Rule-->
<record id="inspection_request_rule_manager" model="ir.rule">
<field name="name">Inspection Manager Rule</field>
<field ref="model_inspection_request" name="model_id"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups"
eval="[(4, ref('fleet_vehicle_inspection_management.fleet_vehicle_inspection_management_group_supervisor'))]"/>
</record>
<!--Inspection request multi company rule-->
<record id="inspection_request_rule_company" model="ir.rule">
<field name="name">Inspection Request Company Rule</field>
<field ref="model_inspection_request" name="model_id"/>
<field name="domain_force">[('company_id', '=', company_id)]</field>
</record>
<!--Vehicle Inspection request multi company rule-->
<record id="vehicle_inspection_rule_company" model="ir.rule">
<field name="name">Vehicle Inspection Company Rule</field>
<field ref="model_vehicle_inspection" name="model_id"/>
<field name="domain_force">[('company_id', '=', company_id)]</field>
</record>
</odoo>

8
fleet_vehicle_inspection_management/security/ir.model.access.csv

@ -0,0 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_vehicle_inspection,vehicle.inspection,model_vehicle_inspection,base.group_user,1,1,1,1
access_inspection_request,inspection.request,model_inspection_request,base.group_user,1,1,1,1
access_inspection_image,inspection.image,model_inspection_image,base.group_user,1,1,1,1
access_inspection_request_line,inspection.request.line,model_inspection_request_line,base.group_user,1,1,1,1
access_fleet_service_inspection,fleet.service.inspection,model_fleet_service_inspection,base.group_user,1,1,1,1
access_fleet_sub_service_type,fleet.sub.service.type,model_fleet_sub_service_type,base.group_user,1,1,1,1
access_vehicle_service_log,vehicle.service.log,model_vehicle_service_log,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_vehicle_inspection vehicle.inspection model_vehicle_inspection base.group_user 1 1 1 1
3 access_inspection_request inspection.request model_inspection_request base.group_user 1 1 1 1
4 access_inspection_image inspection.image model_inspection_image base.group_user 1 1 1 1
5 access_inspection_request_line inspection.request.line model_inspection_request_line base.group_user 1 1 1 1
6 access_fleet_service_inspection fleet.service.inspection model_fleet_service_inspection base.group_user 1 1 1 1
7 access_fleet_sub_service_type fleet.sub.service.type model_fleet_sub_service_type base.group_user 1 1 1 1
8 access_vehicle_service_log vehicle.service.log model_vehicle_service_log base.group_user 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/modules/2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/17.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/18.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/19.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/20.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/21.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/22.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/23.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
fleet_vehicle_inspection_management/static/description/assets/screenshots/9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

BIN
fleet_vehicle_inspection_management/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
fleet_vehicle_inspection_management/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

777
fleet_vehicle_inspection_management/static/description/index.html

@ -0,0 +1,777 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
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
style="color: #875A7B; 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>Enterprise
</div>
<div
style="color: #017E84; 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>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Vehicle Inspection Management in Fleet.
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Manage Recurring Inspection of vehicles or fleets.
</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;"/>
</div>
</div>
</div>
</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">
The Fleet Vehicle Inspection Management app streamlines vehicle maintenance by
allowing users to schedule and conduct inspections. It ensures safety and
compliance by recording inspection results, identifying issues, and generating
services. This comprehensive solution enhances fleet management efficiency
while prioritizing driver and vehicle safety.
</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;">Option to create and manage vehicle inspection on vehicle form view.</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;">Option to set up and manage different inspections.</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;">Recurring Vehicle Inspections.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Option to send Automatic Vehicle Inspection Reminder Email.
</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Option to create vehicle service from Inspection Request.
</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Option to Print Vehicle Inspection PDF Report.</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;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Vehicle Inspection Management User Access
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Go to Settings -> User & Companies
->
Users. There has two user access 'Inspection Manager' and
'Inspection Supervisor'.
</p>
<img src="assets/screenshots/1.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Vehicle Inspection
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Can see Vehicle Inspection under Configuration.
</p>
<img src="assets/screenshots/2.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Vehicle Inspection
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We Can create Vehicle Inspection
</p>
<img src="assets/screenshots/3.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Create Inspection Requests
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
In Fleet, We have Inspection Request menu
</p>
<img src="assets/screenshots/4.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
In Inspection Requests, We Can create inspection requests, and
we can see created requests in tree view
</p>
<img src="assets/screenshots/5.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Fill inspection type vehicle, model, license plate etc..
</p>
<img src="assets/screenshots/6.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Then click on START INSPECTION button to start inspection
</p>
<img src="assets/screenshots/7.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
If the inspection finished click on FINISH INSPECTION button,
</p>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can add inspection information in given fields
</p>
<img src="assets/screenshots/8.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can add Inspection Images in the marked tab.
</p>
<img src="assets/screenshots/9.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can create service type by Clicking on CREATE SERVICE
button.
</p>
<img src="assets/screenshots/10.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
In the wizard fill information about the service.
</p>
<img src="assets/screenshots/11.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Click on Service smart button to see the services created.
</p>
<img src="assets/screenshots/12.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
</p>
<img src="assets/screenshots/13.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Form View of service
</p>
<img src="assets/screenshots/14.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Open a Vehicle record in Fleet
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Enable Inspection Active field, which activate inspection lines
Page in Notebook, can see the created Inspections for that vehicle
</p>
<img src="assets/screenshots/15.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Fleet --> Services
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can see the service menu open it.
</p>
<img src="assets/screenshots/16.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Can see the all service created in tree view. Can create a service from there
</p>
<img src="assets/screenshots/17.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Form view of service
</p>
<img src="assets/screenshots/18.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Inspection Request --> Started Inspection
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can see inspection in ongoing state.
</p>
<img src="assets/screenshots/19.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can see finished inspection
</p>
<img src="assets/screenshots/20.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Click on PDF REPORT button to print pdf report.
</p>
<img src="assets/screenshots/21.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
PDF Report
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Can see report with Images added
</p>
<img src="assets/screenshots/22.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Reminder
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Sent automatic reminder before one day to the Inspection Supervisor.
</p>
<img src="assets/screenshots/23.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<img src="assets/screenshots/24.png"
class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- SUGGESTED 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;">Suggested
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/14.0/fleet_rental/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius:0px"
src="assets/modules/1.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/14.0/fleet_car_workshop/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius:0px"
src="assets/modules/2.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/14.0/salon_management/" 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>
<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/14.0/insurance_management_cybro/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius:0px"
src="assets/modules/4.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/14.0/medical_lab_management/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius:0px"
src="assets/modules/5.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/14.0/laundry_management/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius:0px"
src="assets/modules/6.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 SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy
</h6>
</div>
</div>
</div>
<!--END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application
</p>
</div>
</div>
</div>
</div>
<!--END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
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 d-flex justify-content-center align-items-center"
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 -->

25
fleet_vehicle_inspection_management/views/fleet_vehicle_log_services_views.xml

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Inherit view for Fleet vehicle service-->
<record id="fleet_vehicle_log_services_view_form" model="ir.ui.view">
<field name="name">
fleet.service.log.view.form.inherit.fleet.vehicle.inspection.management
</field>
<field name="model">fleet.vehicle.log.services</field>
<field name="inherit_id"
ref="fleet.fleet_vehicle_log_services_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='notes']"
position="after">
<div>
<field name="sub_service_ids">
<tree editable="bottom">
<field name="service_type_id"/>
<field name="service_category"/>
</tree>
</field>
</div>
</xpath>
</field>
</record>
</odoo>

45
fleet_vehicle_inspection_management/views/fleet_vehicle_views.xml

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Inherited view for Fleet vehicle-->
<record id="fleet_vehicle_view_form" model="ir.ui.view">
<field name="name">
fleet.vehicle.view.form.inherit.fleet.vehicle.inspection.management
</field>
<field name="model">fleet.vehicle</field>
<field name="inherit_id"
ref="fleet.fleet_vehicle_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='plan_to_change_car']"
position="after">
<field name="is_inspection_active"/>
</xpath>
<xpath expr="//button[@name='return_action_to_open']"
position="after">
<button name="get_inspection_requests" type="object"
class="oe_stat_button" icon="fa-pencil-square-o"
attrs="{'invisible':[('is_inspection_active','=',False)]}">
<field name="inspection_count" widget="statinfo"/>
</button>
</xpath>
<!--Adding a new page in fleet model-->
<xpath expr="//sheet" position="inside">
<notebook>
<page string="Inspection Lines"
attrs="{'invisible':[('is_inspection_active','=',False)]}">
<field name="inspection_line_ids">
<tree editable="bottom">
<field name="inspection_id"/>
<field name="description"/>
<field name="last_inspection_date"/>
<field name="next_inspection_date"/>
<field name="reminder_notification"/>
<field name="inspection_period"/>
<field name="user_id"/>
</tree>
</field>
</page>
</notebook>
</xpath>
</field>
</record>
</odoo>

304
fleet_vehicle_inspection_management/views/inspection_request_views.xml

@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--Actions for Inspection request-->
<record id="inspection_request_action" model="ir.actions.act_window">
<field name="name">Inspection Requests</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">inspection.request</field>
<field name="view_mode">tree,form,kanban,calendar</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new record!
</p>
</field>
</record>
<record id="inspection_request_to_start_action"
model="ir.actions.act_window">
<field name="name">Started Inspections</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">inspection.request</field>
<field name="view_mode">tree,form,kanban,calendar</field>
<field name="domain">[('state','=','inspection_started')]</field>
<field name="context">{'create': False}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new record!
</p>
</field>
</record>
<!--Actions for Inspection request when inspection started-->
<record id="inspection_request_to_finish_action"
model="ir.actions.act_window">
<field name="name">Finished Inspections</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">inspection.request</field>
<field name="view_mode">tree,form,kanban,calendar</field>
<field name="domain">[('state','=','inspection_finished')]</field>
<field name="context">{'create': False}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new record!
</p>
</field>
</record>
<!-- Inspection Request menus-->
<menuitem id="inspection_request_menu"
name="Inspection"
parent="fleet.menu_root"/>
<menuitem id="inspection_request_details_menu"
name="Inspection Request"
parent="inspection_request_menu"
action="inspection_request_action"/>
<menuitem id="inspection_request_to_start_menu"
name="Inspection Started"
parent="inspection_request_menu"
action="inspection_request_to_start_action"/>
<menuitem id="inspection_request_to_finish_menu"
name="Inspection Finished"
parent="inspection_request_menu"
action="inspection_request_to_finish_action"/>
<!--Inspection Request form view-->
<record id="inspection_requests_view_form" model="ir.ui.view">
<field name="name">inspection.request.view.form</field>
<field name="model">inspection.request</field>
<field name="arch" type="xml">
<form>
<header>
<field name="state" widget='statusbar'
statusbar_visible='draft,new,inspection_started,inspection_finished'/>
<button name="action_start_inspection"
class="oe_highlight"
states="new" string="Start Inspection"
type="object"
help="Start Vehicle Inspection"/>
<button name="action_confirm_inspection"
class="oe_highlight"
states="draft" string="Confirm"
type="object"
help="Confirm Inspection Request"/>
<button name="action_finish_inspection"
class="oe_highlight"
states="inspection_started"
string="Finish Inspection" type="object"
help="Finish Vehicle Inspection"
/>
<button name="action_create_service"
class="oe_highlight"
states="inspection_started"
string="Create Service" type="object"
help="Create Service"
/>
<button name="action_print_report"
class="oe_highlight"
states="inspection_finished"
string="PDF Report"
type="object"
help="Print PDF Report"
/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="object"
name="get_vehicle_service"
icon="fa-wrench"
string="Service"
attrs="{'invisible':[('service_active','=',False)]}"
>
</button>
<button class="oe_stat_button" type="object"
name="get_fleet_vehicle"
icon="fa-car"
string="Fleet Vehicle"
attrs="{'invisible':[('fleet_active','=',False)]}"
>
</button>
</div>
<field name="image_128" widget="image" class="oe_avatar"/>
<div class="oe_title">
<h1>
<field name="name" placeholder="New"/>
<field name="inspection_id"
placeholder="Vehicle Inspection" attrs="{'readonly': [('state', 'not in', ['draft', 'new'])]}"/>
</h1>
</div>
<group>
<group>
<field name="vehicle_id"/>
<field name="vehicle_model_id"/>
<field name="license_plate"/>
<field name="service_active" invisible="1"/>
</group>
<group>
<field name="date_create"/>
<field name="inspection_date"/>
<field name="user_id"/>
<field name="company_id"/>
<field name="fleet_active" invisible="1"/>
</group>
</group>
<notebook>
<page string="Inspection Information"
attrs="{'invisible':[('state','!=','inspection_started'),('state','!=','inspection_finished')]}">
<group>
<group>
<field name="inspection_result"/>
</group>
<group>
<field name="internal_note"/>
</group>
</group>
</page>
<page string="Inspection Images"
attrs="{'invisible':[('state','!=','inspection_started')]}">
<field name="inspection_image_ids">
<kanban>
<field name="id"/>
<field name="name"/>
<field name="image" widget="image"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="o_kanban_image">
<field name="image"
widget="image"
class="oe_avatar"/>
</div>
<div class="oe_kanban_details">
<t class="o_kanban_record_title">
<strong>
<field name="name"/>
</strong>
<br/>
</t>
</div>
</div>
</t>
</templates>
</kanban>
<form>
<sheet>
<group>
<field name="name"/>
<field name="image"/>
</group>
</sheet>
</form>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!--Inspection Request tree view-->
<record id="inspection_requests_view_tree" model="ir.ui.view">
<field name="name">inspection.request.view.tree</field>
<field name="model">inspection.request</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="inspection_id"/>
<field name="vehicle_id"/>
<field name="vehicle_model_id"/>
<field name="license_plate"/>
<field name="date_create"/>
<field name="inspection_date"/>
<field name="user_id"/>
<field name="state" widget="badge"
decoration-success="state == 'inspection_finished'"
decoration-warning="state == 'inspection_started'"
decoration-info="state =='new'"
/>
</tree>
</field>
</record>
<!--Inspection Request kanban view-->
<record id="inspection_request_view_kanban" model="ir.ui.view">
<field name="name">inspection.request.view.kanban</field>
<field name="model">inspection.request</field>
<field name="arch" type="xml">
<kanban>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<div class="oe_kanban_content">
<div class="oe_kanban_card">
<div>
<b>
<field name="inspection_id"
style="color:red;"/>
</b>
</div>
<div>
<b>
Vehicle:
<field name="vehicle_id"/>
</b>
</div>
<div>
<b>
Model:
<field name="vehicle_model_id"/>
</b>
</div>
<div>
<b>
Inspection Supervisor:
<field name="user_id"/>
</b>
</div>
<div>
<b>
Inspection Date:
<field name="inspection_date"/>
</b>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!--Inspection Request calender view-->
<record id="inspection_request_view_calendar" model="ir.ui.view">
<field name="name">inspection.request.view.calendar</field>
<field name="model">inspection.request</field>
<field eval="2" name="priority"/>
<field name="arch" type="xml">
<calendar date_start="inspection_date" string="Inspection Request"
mode="month" quick_add="False">
<field name="inspection_id"/>
<field name="vehicle_id"/>
<field name="vehicle_model_id"/>
<field name="user_id"/>
<field name="inspection_date"/>
</calendar>
</field>
</record>
<!--Inspection Request search view-->
<record id="inspection_request_view_search" model="ir.ui.view">
<field name="name">inspection.request.view.search</field>
<field name="model">inspection.request</field>
<field name="arch" type="xml">
<search string="Search">
<group expand="1" string="Group By">
<filter string="Model" name="vehicle_model_id"
context="{'group_by':'vehicle_model_id', 'residual_visible':True}"/>
<filter string="Vehicle" name="vehicle_id"
context="{'group_by':'vehicle_id', 'residual_visible':True}"/>
<filter string="Status" name="state"
context="{'group_by':'state', 'residual_visible':True}"/>
<filter string="Inspection Date" name="inspection_date"
context="{'group_by':'inspection_date', 'residual_visible':True}"/>
</group>
</search>
</field>
</record>
</odoo>

36
fleet_vehicle_inspection_management/views/vehicle_inspection_views.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Actions of Vehicle Inspection-->
<record id="vehicle_inspection_action_inspection_details"
model="ir.actions.act_window">
<field name="name">Vehicle Inspection</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">vehicle.inspection</field>
<field name="view_mode">tree,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new record!
</p>
</field>
</record>
<!-- Vehicle inspection menus-->
<menuitem id="vehicle_inspection_menu"
name="Vehicle Inspection"
parent="fleet.fleet_configuration"
action="fleet_vehicle_inspection_management.vehicle_inspection_action_inspection_details"/>
<!-- Vehicle inspection views-->
<record id="vehicle_inspection_view_tree" model="ir.ui.view">
<field name="name">vehicle.inspection.view.tree</field>
<field name="model">vehicle.inspection</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="name"/>
<field name="inspection_period"/>
<field name="reminder_notification_days"/>
<field name="user_id"/>
<field name="company_id"/>
</tree>
</field>
</record>
</odoo>

118
fleet_vehicle_inspection_management/views/vehicle_service_log_views.xml

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Action of Vehicle service log -->
<record id="vehicle_service_log_action" model="ir.actions.act_window">
<field name="name">Vehicle Service Logs</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">vehicle.service.log</field>
<field name="view_mode">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new record!
</p>
</field>
</record>
<!--Form view of Vehicle Service log-->
<record id="vehicle_service_log_view_form" model="ir.ui.view">
<field name="name">vehicle.service.log.view.form</field>
<field name="model">vehicle.service.log</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group string="Service Details">
<field name="vehicle_id"/>
<field name="service_type_id"/>
<field name="amount"/>
</group>
<group string="Odometer Details">
<label for="odometer"/>
<div class="o_row">
<field name="odometer" class="w-25"/>
<field name="odometer_unit"
class="ps-1 ps-sm-0"
modifiers="{&quot;readonly&quot;: true}"/>
</div>
</group>
<group string="Additional Details">
<field name="date"/>
<field name="vendor_id"/>
<field name="inspection_name"/>
</group>
</group>
<h4>Additional Services</h4>
<field name="additional_service_ids">
<tree editable="bottom">
<field name="service_type_id"/>
<field name="service_category"/>
</tree>
</field>
<notebook>
<page string="Inspection Information">
<group>
<group>
<field name="inspection_result"/>
</group>
<group>
<field name="notes"/>
</group>
</group>
</page>
<page string="Inspection Images">
<field name="service_image_ids">
<kanban>
<field name="id"/>
<field name="name"/>
<field name="image"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="o_kanban_image">
<field name="image"
widget="image"
class="oe_avatar"/>
</div>
<div class="oe_kanban_details">
<t class="o_kanban_record_title">
<strong>
<field name="name"/>
</strong>
<br/>
</t>
</div>
</div>
</t>
</templates>
</kanban>
<form>
<sheet>
<group>
<field name="name"/>
<field name="image"/>
</group>
</sheet>
</form>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!--Vehicle Service log tree view-->
<record id="vehicle_service_log_view_tree" model="ir.ui.view">
<field name="name">vehicle.service.log.view.tree</field>
<field name="model">vehicle.service.log</field>
<field name="arch" type="xml">
<tree>
<field name="vehicle_id"/>
<field name="service_type_id"/>
<field name="odometer"/>
<field name="odometer_unit"/>
<field name="date"/>
</tree>
</field>
</record>
</odoo>

22
fleet_vehicle_inspection_management/wizard/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from . import fleet_service_inspection

140
fleet_vehicle_inspection_management/wizard/fleet_service_inspection.py

@ -0,0 +1,140 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mohamed Muzammil VP(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import api, fields, models
class FleetServiceInspection(models.TransientModel):
""" Create a vehicle service model"""
_name = 'fleet.service.inspection'
_description = 'Fleet Service'
service_subtype_ids = fields.Many2many(
'fleet.service.type', string='Sub service Type',
help='Related filed for the sub service type')
inspection_reference_id = fields.Many2one(
'inspection.request', string='Inspection ID', help='Inspection Id')
service_type_id = fields.Many2one(
'fleet.service.type', string='Services', help='Services')
service_id = fields.Many2one('fleet.vehicle.log.services',
help='Service Reference',
string='Service Reference')
service_log_id = fields.Many2one('vehicle.service.log',
help='Service log Reference',
string='Service log Reference')
service_category = fields.Selection(
selection=[('service', 'Service'), ('contract', 'Contract'), ],
help='Service Category type.', string='Service Category')
vehicle_id = fields.Many2one('fleet.vehicle', help='Vehicle',
string='Vehicle')
odometer = fields.Float(string='Last Odometer',
help='Odometer measure of the vehicle at the '
'moment of this log')
odometer_unit = fields.Selection(
selection=[('kilometers', 'km'), ('miles', 'mi')],
string='Odometer Unit', default='kilometers', required=True,
help='Odometer reading')
sub_service_reference_id = fields.Many2one(
'fleet.service.inspection', string='Sub Services',
help='Vehicle sub service')
log_sub_service_id = fields.Many2one('fleet.service.inspection',
string='Sub Services',
help='Vehicle sub service')
amount = fields.Monetary(string='Cost', help='Amount',)
date = fields.Date(string='Vehicle Service Date',
help='Vehicle Service Date',)
company_id = fields.Many2one('res.company', string='Company',
help='Company',
default=lambda self: self.env.company)
currency_id = fields.Many2one('res.currency',
related='company_id.currency_id',
string='Currency', help='Currency')
vendor_id = fields.Many2one('res.partner', string='Vendor', help='Vendor')
@api.onchange('service_type_id')
def _onchange_service_category(self):
"""Function to service category """
for rec in self:
rec.service_category = rec.service_type_id.category
def action_create_service(self):
"""Create vehicle service"""
if not self.service_id:
self.env['fleet.vehicle.log.services'].create({
'inspection_reference_id': self.id,
'description': self.inspection_reference_id.inspection_id.name,
'service_type_id': self.service_type_id.id,
'date': fields.Date.today(),
'vehicle_id': self.vehicle_id.id,
'odometer': self.odometer,
'sub_service_ids': [(0, 0, {
'service_type_id': rec.id,
'vehicle_id': self.vehicle_id.id,
'sub_service_reference_id': rec.id,
'service_category': rec.category,
}) for rec in self.service_subtype_ids]
})[0]
else:
for rec in self.service_subtype_ids:
if not self.sub_service_reference_id:
self.service_id.write({
'sub_service_ids': [(0, 0, {
'service_type_id': rec.id,
'vehicle_id': self.vehicle_id.id,
'sub_service_reference_id': rec.id,
'service_category': rec.category,
})],
})
if not self.service_log_id:
self.env['vehicle.service.log'].create({
'service_reference_id': self.id,
'vehicle_id': self.vehicle_id.id,
'service_type_id': self.service_type_id.id,
'amount': self.amount,
'odometer': self.odometer,
'odometer_unit': self.odometer_unit,
'date': self.date,
'vendor_id': self.vendor_id,
'inspection_name': self.inspection_reference_id.name,
'inspection_result': self.inspection_reference_id.inspection_result,
'notes': self.inspection_reference_id.internal_note,
'additional_service_ids': [(0, 0, {
'service_type_id': rec.id,
'vehicle_id': self.vehicle_id.id,
'log_sub_service_id': rec.id,
'service_category': rec.category,
}) for rec in self.service_subtype_ids],
'service_image_ids': [(0, 0, {
'name': rec.name,
'image': rec.image,
}) for rec in self.inspection_reference_id.inspection_image_ids
]})
else:
for rec in self.service_subtype_ids:
if not self.log_sub_service_id:
self.service_log_id.write({
'additional_service_ids': [(0, 0, {
'service_type_id': rec.id,
'vehicle_id': self.vehicle_id.id,
'service_log_id': rec.id,
'service_category': rec.category,
})],
})

43
fleet_vehicle_inspection_management/wizard/fleet_service_inspection_views.xml

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Create service wizard view-->
<record id="fleet_service_inspection_view_form" model="ir.ui.view">
<field name="name">fleet.service.inspection.view.form</field>
<field name="model">fleet.service.inspection</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="service_type_id"/>
<field name="vehicle_id"/>
</group>
<group>
<label for="odometer"/>
<div class="o_row">
<field name="odometer" class="w-25"/>
<field name="odometer_unit" class="ps-1 ps-sm-0"
modifiers="{&quot;readonly&quot;: true}"/>
</div>
</group>
</group>
<field name="service_subtype_ids"/>
<footer>
<button string="Create Service"
name="action_create_service" type="object"
class="btn-primary"/>
<button string="Discard" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
<!--Create service wizard action-->
<record id="fleet_service_inspection_action" model="ir.actions.act_window">
<field name="name">fleet.service.inspection</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">fleet.service.inspection</field>
<field name="view_mode">form</field>
<field name="view_id" ref="fleet_service_inspection_view_form"/>
<field name="target">new</field>
</record>
</odoo>
Loading…
Cancel
Save