diff --git a/employee_vehicle_request/README.rst b/employee_vehicle_request/README.rst new file mode 100644 index 000000000..0bab0a5dc --- /dev/null +++ b/employee_vehicle_request/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 + +Employee Vehicle Request +======================== +This module is used for manage vehicle requests from employee and the vehicle availability at the requested time slot + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +======= +General Public License, version 3 (AGPL v3). +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +* Developer : (V17) Bhagyadev KP +* 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 `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/employee_vehicle_request/__init__.py b/employee_vehicle_request/__init__.py new file mode 100644 index 000000000..7d45d5569 --- /dev/null +++ b/employee_vehicle_request/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Bhagyadev KP (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# 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 for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ +from . import models diff --git a/employee_vehicle_request/__manifest__.py b/employee_vehicle_request/__manifest__.py new file mode 100644 index 000000000..82c3a444b --- /dev/null +++ b/employee_vehicle_request/__manifest__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Bhagyadev KP (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# 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 for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ +{ + 'name': 'Employee Vehicle Request', + 'version': '17.0.1.0.0', + 'category': "Human Resources", + 'summary': """Manage Vehicle Requests From Employee""", + 'description': """This module is used for manage vehicle requests from + employee. This module also checking the vehicle availability + at the requested time slot.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['hr', 'fleet'], + 'data': [ + 'security/ir.model.access.csv', + 'security/security.xml', + 'data/employee_data.xml', + 'data/fleet_security.xml', + 'views/employee_fleet_views.xml', + 'views/fleet_vehicle_views.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_vehicle_request/data/employee_data.xml b/employee_vehicle_request/data/employee_data.xml new file mode 100644 index 000000000..38e9130bb --- /dev/null +++ b/employee_vehicle_request/data/employee_data.xml @@ -0,0 +1,12 @@ + + + + + + Vehicle Request Code + employee.fleet + + VR + + + \ No newline at end of file diff --git a/employee_vehicle_request/data/fleet_security.xml b/employee_vehicle_request/data/fleet_security.xml new file mode 100644 index 000000000..046f9843a --- /dev/null +++ b/employee_vehicle_request/data/fleet_security.xml @@ -0,0 +1,16 @@ + + + + + + User can only see his/her vehicle + + + + + + + [] + + + \ No newline at end of file diff --git a/employee_vehicle_request/doc/RELEASE_NOTES.md b/employee_vehicle_request/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..39e4cc164 --- /dev/null +++ b/employee_vehicle_request/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 03.12.2024 +#### Version 17.0.1.0.0 +##### ADD +- Initial Commit for Employee Vehicle Request diff --git a/employee_vehicle_request/models/__init__.py b/employee_vehicle_request/models/__init__.py new file mode 100644 index 000000000..086ea18a7 --- /dev/null +++ b/employee_vehicle_request/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Bhagyadev KP (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# 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 for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ +from . import employee_fleet +from . import fleet_reserved +from . import fleet_vehicle diff --git a/employee_vehicle_request/models/employee_fleet.py b/employee_vehicle_request/models/employee_fleet.py new file mode 100644 index 000000000..dc109f2a3 --- /dev/null +++ b/employee_vehicle_request/models/employee_fleet.py @@ -0,0 +1,225 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Bhagyadev KP (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# 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 for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ +from odoo.exceptions import UserError +from odoo import api, fields, models, _ + + +class EmployeeFleet(models.Model): + _name = 'employee.fleet' + _inherit = 'mail.thread' + _description = 'Employee Vehicle Request' + + @api.model + def create(self, vals): + """ + Generating sequence number for the employee vehicle request + """ + vals['name'] = self.env['ir.sequence'].next_by_code('employee.fleet') + return super(EmployeeFleet, self).create(vals) + + def action_send(self): + """ + Process a vehicle request by checking availability and reserving a + vehicle. + + This method is called when an employee requests a vehicle. It checks the + availability of the requested vehicle by examining existing reservations + and then either reserves the vehicle for the requested period or raises + a UserError if it's not available. + """ + if self.date_from and self.date_to: + fleet_obj = self.env['fleet.vehicle'].search([]) + check_availability = 0 + for obj in fleet_obj: + for each in obj.reserved_time_ids: + if each.date_from and each.date_to: + if (each.date_from <= self.date_from <= each.date_to and + self.fleet_id == each.reserved_obj_id): + check_availability = 1 + elif self.date_from < each.date_from: + if (each.date_from <= self.date_to <= each.date_to + and self.fleet_id == each.reserved_obj_id): + check_availability = 1 + elif (self.date_to > each.date_to and self.fleet_id + == each.reserved_obj_id): + check_availability = 1 + else: + check_availability = 0 + else: + check_availability = 0 + if check_availability == 0: + reserved_id = self.fleet_id.reserved_time_ids.create( + {'employee_id': self.employee_id.id, + 'date_from': self.date_from, + 'date_to': self.date_to, + 'reserved_obj_id': self.fleet_id.id, + }) + self.write({'reserved_fleet_id': reserved_id.id}) + self.state = 'waiting' + else: + raise UserError( + _('Sorry This vehicle is already requested by another' + ' employee')) + + def action_approve(self): + """ + Approve a vehicle request and notify the employee. + + This method is called when an employee's vehicle request is approved. + It changes the state of the request to 'confirm', sends an email + notification to the employee, and updates the mail message with the + approval information. + """ + self.state = 'confirm' + mail_content = _( + 'Hi %s,
Your vehicle request for the reference %s is approved.') % \ + (self.employee_id.name, self.name) + main_content = { + 'subject': _('%s: Approved') % self.name, + 'author_id': self.env.user.partner_id.id, + 'body_html': mail_content, + 'email_to': self.employee_id.work_email, + } + mail_id = self.env['mail.mail'].create(main_content) + mail_id.mail_message_id.body = mail_content + mail_id.send() + if self.employee_id.user_id: + mail_id.mail_message_id.write( + {'partner_ids': [(4, self.employee_id.user_id.partner_id.id)]}) + self.fleet_id.check_availability = False + + def action_reject(self): + """ + Reject a vehicle request and notify the employee. + + This method is called when an employee's vehicle request is rejected. It + deletes the reservation for the request, changes the state of the + request to 'reject', sends an email notification to the employee, and + updates the mail message. + """ + self.reserved_fleet_id.unlink() + self.state = 'reject' + mail_content = _( + 'Hi %s,
Sorry, Your vehicle request for the reference %s is' + ' Rejected.') % \ + (self.employee_id.name, self.name) + + main_content = { + 'subject': _('%s: Rejected') % self.name, + 'author_id': self.env.user.partner_id.id, + 'body_html': mail_content, + 'email_to': self.employee_id.work_email, + } + mail_id = self.env['mail.mail'].create(main_content) + mail_id.mail_message_id.body = mail_content + mail_id.send() + if self.employee_id.user_id: + mail_id.mail_message_id.write( + {'partner_ids': [(4, self.employee_id.user_id.partner_id.id)]}) + self.fleet_id.check_availability = True + + def action_cancel(self): + """ + Cancel a vehicle request. + + This method is called when an employee's vehicle request is canceled. It + checks if there is a reservation associated with the request and deletes + it. Then, it changes the state of the request to 'cancel'. + """ + if self.reserved_fleet_id: + self.reserved_fleet_id.unlink() + self.state = 'cancel' + self.fleet_id.check_availability = True + + def action_return(self): + """ + Mark a vehicle as returned and update its status. + + This method is called when a vehicle is returned after being used. It + deletes the reservation associated with the request, records the return + date and time, and updates the state of the request to 'return'. + """ + self.reserved_fleet_id.unlink() + self.returned_date = fields.Datetime.now() + self.state = 'return' + self.fleet_id.check_availability = True + + @api.onchange('date_from', 'date_to') + def _onchange_date_from(self): + """ + Update vehicle availability based on the selected date range. + + This onchange method is triggered when the 'date_from' or 'date_to' + fields are changed. It iterates through the available fleet vehicles and + checks their availability based on the selected date range. It updates + the 'check_availability' field of each vehicle to indicate whether the + vehicle is available during the specified period. + """ + if self.date_from and self.date_to: + self.fleet_id = '' + fleet_obj = self.env['fleet.vehicle'].search([]) + for rec in fleet_obj: + overlapping_reservations = rec.reserved_time_ids.filtered( + lambda + r: r.date_from <= self.date_to and r.date_to >= self.date_from + ) + if overlapping_reservations: + last_return_date = max( + rec.reserved_time_ids.mapped('date_to')) + if last_return_date <= fields.Datetime.now(): + rec.check_availability = True + else: + rec.check_availability = False + else: + rec.check_availability = True + + @api.constrains('date_from', 'date_to') + def onchange_date_to(self): + for each in self: + if each.date_from > each.date_to: + raise UserError(_('Date To must be greater than Date From')) + + reserved_fleet_id = fields.Many2one('fleet.reserved', invisible=1, + copy=False, help="Reserved fleet") + name = fields.Char(string='Request Number', copy=False, + help="Sequence number of the vehicle request") + employee_id = fields.Many2one('hr.employee', string='Employee', required=1, + help="Employee who is requesting the vehicle") + req_date = fields.Date(string='Requested Date', + default=fields.Date.context_today, required=1, + help="Requested Date") + fleet_id = fields.Many2one('fleet.vehicle', string='Vehicle', required=1, + domain="[('check_availability', '=', True)]", + help="Name of the vehicle which is requesting") + date_from = fields.Datetime(string='From date', required=1, + help='Date from which employee needs the vehicle') + date_to = fields.Datetime(string='To date', required=1, + help='Date till employee needs the vehicle') + returned_date = fields.Datetime(string='Returned Date', readonly=1, + help='Returned date of the vehicle') + purpose = fields.Text(string='Purpose', required=1, + help="Purpose for the vehicle request") + state = fields.Selection( + [('draft', 'Draft'), ('waiting', 'Waiting for Approval'), + ('cancel', 'Cancel'), ('confirm', 'Approved'), ('reject', 'Rejected'), + ('return', 'Returned')], + string="State", default="draft", help="State of the vehicle request") diff --git a/employee_vehicle_request/models/fleet_reserved.py b/employee_vehicle_request/models/fleet_reserved.py new file mode 100644 index 000000000..3f43a6563 --- /dev/null +++ b/employee_vehicle_request/models/fleet_reserved.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Bhagyadev KP (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# 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 for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ +from odoo import fields, models + + +class FleetReserved(models.Model): + """ + Model for recording reserved time for fleet vehicles. + + This class defines the model for tracking reserved time for fleet vehicles. + """ + + _name = "fleet.reserved" + _description = "Fleet reserved" + + employee_id = fields.Many2one('hr.employee', string='Employee', + help="Employee who have vehicle reserved") + date_from = fields.Datetime(string='Reserved Date From', + help='Reserved Date From') + date_to = fields.Datetime(string='Reserved Date To', + help='Reserved Date To') + reserved_obj_id = fields.Many2one('fleet.vehicle', + string='Reserved Vehicle', + help='Reserved Vehicle') diff --git a/employee_vehicle_request/models/fleet_vehicle.py b/employee_vehicle_request/models/fleet_vehicle.py new file mode 100644 index 000000000..3e522757f --- /dev/null +++ b/employee_vehicle_request/models/fleet_vehicle.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Bhagyadev KP (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# 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 for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ +from odoo import fields, models + + +class FleetVehicle(models.Model): + """ + Inherited model for extending fleet vehicles with availability tracking. + + This class extends the 'fleet.vehicle' model to add a 'check_availability' + field to track vehicle availability and a 'reserved_time_ids' field to + associate reserved time periods for the vehicle. + """ + _inherit = 'fleet.vehicle' + + check_availability = fields.Boolean(default=True, copy=False, + string="Check Availability", + help="Check availability") + reserved_time_ids = fields.One2many('fleet.reserved', + 'reserved_obj_id', + string='Reserved Time', readonly=1, + ondelete='cascade', + help="Reserved Time") diff --git a/employee_vehicle_request/security/ir.model.access.csv b/employee_vehicle_request/security/ir.model.access.csv new file mode 100644 index 000000000..15a41c964 --- /dev/null +++ b/employee_vehicle_request/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_fleet_reserved_user,access.fleet.reserved.user,model_fleet_reserved,base.group_user,1,1,1,0 +access_fleet_reserved_hr_manager,access.fleet.reserved.hr.manager,model_fleet_reserved,hr.group_hr_manager,1,1,1,1 +access_fleet_reserved_hr_user,access.fleet.reserved.hr.user,model_fleet_reserved,hr.group_hr_user,1,1,1,0 +access_employee_fleet_user,access.employee.fleet.user,model_employee_fleet,base.group_user,1,1,1,0 +access_employee_fleet_hr_manager,access.employee.fleet.hr.manager,model_employee_fleet,hr.group_hr_manager,1,1,1,1 +access_employee_fleet_hr_user,access.employee.fleet.hr.user,model_employee_fleet,hr.group_hr_user,1,1,1,0 diff --git a/employee_vehicle_request/security/security.xml b/employee_vehicle_request/security/security.xml new file mode 100644 index 000000000..d7e30021d --- /dev/null +++ b/employee_vehicle_request/security/security.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/icons/capture (1).png b/employee_vehicle_request/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/capture (1).png differ diff --git a/employee_vehicle_request/static/description/assets/icons/check.png b/employee_vehicle_request/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/check.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/chevron.png b/employee_vehicle_request/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/chevron.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/cogs.png b/employee_vehicle_request/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/cogs.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/consultation.png b/employee_vehicle_request/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/consultation.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/ecom-black.png b/employee_vehicle_request/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/ecom-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/education-black.png b/employee_vehicle_request/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/education-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/hotel-black.png b/employee_vehicle_request/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/hotel-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/img.png b/employee_vehicle_request/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/img.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/license.png b/employee_vehicle_request/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/license.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/lifebuoy.png b/employee_vehicle_request/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/manufacturing-black.png b/employee_vehicle_request/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/photo-capture.png b/employee_vehicle_request/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/photo-capture.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/pos-black.png b/employee_vehicle_request/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/pos-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/puzzle.png b/employee_vehicle_request/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/puzzle.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/restaurant-black.png b/employee_vehicle_request/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/service-black.png b/employee_vehicle_request/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/service-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/trading-black.png b/employee_vehicle_request/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/trading-black.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/training.png b/employee_vehicle_request/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/training.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/update.png b/employee_vehicle_request/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/update.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/user.png b/employee_vehicle_request/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/user.png differ diff --git a/employee_vehicle_request/static/description/assets/icons/wrench.png b/employee_vehicle_request/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_vehicle_request/static/description/assets/icons/wrench.png differ diff --git a/employee_vehicle_request/static/description/assets/misc/Cybrosys R.png b/employee_vehicle_request/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/misc/Cybrosys R.png differ diff --git a/employee_vehicle_request/static/description/assets/misc/email.svg b/employee_vehicle_request/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/misc/phone.svg b/employee_vehicle_request/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/employee_vehicle_request/static/description/assets/misc/star (1) 2.svg b/employee_vehicle_request/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/misc/support (1) 1.svg b/employee_vehicle_request/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/misc/support-email.svg b/employee_vehicle_request/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/employee_vehicle_request/static/description/assets/misc/tick-mark.svg b/employee_vehicle_request/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/misc/whatsapp 1.svg b/employee_vehicle_request/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/misc/whatsapp.svg b/employee_vehicle_request/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/employee_vehicle_request/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_vehicle_request/static/description/assets/modules/1.jpg b/employee_vehicle_request/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..08bbafeb6 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/modules/1.jpg differ diff --git a/employee_vehicle_request/static/description/assets/modules/2.png b/employee_vehicle_request/static/description/assets/modules/2.png new file mode 100644 index 000000000..66730082c Binary files /dev/null and b/employee_vehicle_request/static/description/assets/modules/2.png differ diff --git a/employee_vehicle_request/static/description/assets/modules/3.jpg b/employee_vehicle_request/static/description/assets/modules/3.jpg new file mode 100644 index 000000000..3d171226b Binary files /dev/null and b/employee_vehicle_request/static/description/assets/modules/3.jpg differ diff --git a/employee_vehicle_request/static/description/assets/modules/4.jpg b/employee_vehicle_request/static/description/assets/modules/4.jpg new file mode 100644 index 000000000..1f3f2e27f Binary files /dev/null and b/employee_vehicle_request/static/description/assets/modules/4.jpg differ diff --git a/employee_vehicle_request/static/description/assets/modules/5.jpg b/employee_vehicle_request/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..0db717519 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/modules/5.jpg differ diff --git a/employee_vehicle_request/static/description/assets/modules/6.jpg b/employee_vehicle_request/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..cd62a577c Binary files /dev/null and b/employee_vehicle_request/static/description/assets/modules/6.jpg differ diff --git a/employee_vehicle_request/static/description/assets/screenshots/hero.gif b/employee_vehicle_request/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..0db20697e Binary files /dev/null and b/employee_vehicle_request/static/description/assets/screenshots/hero.gif differ diff --git a/employee_vehicle_request/static/description/assets/screenshots/s1.png b/employee_vehicle_request/static/description/assets/screenshots/s1.png new file mode 100644 index 000000000..65b4b8d7f Binary files /dev/null and b/employee_vehicle_request/static/description/assets/screenshots/s1.png differ diff --git a/employee_vehicle_request/static/description/assets/screenshots/s2.png b/employee_vehicle_request/static/description/assets/screenshots/s2.png new file mode 100644 index 000000000..5936ff226 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/screenshots/s2.png differ diff --git a/employee_vehicle_request/static/description/assets/screenshots/s3.png b/employee_vehicle_request/static/description/assets/screenshots/s3.png new file mode 100644 index 000000000..c39c692f3 Binary files /dev/null and b/employee_vehicle_request/static/description/assets/screenshots/s3.png differ diff --git a/employee_vehicle_request/static/description/assets/screenshots/s4.png b/employee_vehicle_request/static/description/assets/screenshots/s4.png new file mode 100644 index 000000000..45ccf663b Binary files /dev/null and b/employee_vehicle_request/static/description/assets/screenshots/s4.png differ diff --git a/employee_vehicle_request/static/description/banner.png b/employee_vehicle_request/static/description/banner.png new file mode 100644 index 000000000..b03fba45c Binary files /dev/null and b/employee_vehicle_request/static/description/banner.png differ diff --git a/employee_vehicle_request/static/description/icon.png b/employee_vehicle_request/static/description/icon.png new file mode 100644 index 000000000..d6d5cd674 Binary files /dev/null and b/employee_vehicle_request/static/description/icon.png differ diff --git a/employee_vehicle_request/static/description/index.html b/employee_vehicle_request/static/description/index.html new file mode 100644 index 000000000..6cd7a2210 --- /dev/null +++ b/employee_vehicle_request/static/description/index.html @@ -0,0 +1,749 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

Employee Vehicle Request

+

+ This module helps you to manage Vehicle requests from + Employee +

+
+ +
+
+
+
+
+

+ Key Highlights +

+
+
+
+
+
+ +
+
+

+ Employee can request for any vehicle.

+
+
+
+
+
+
+ +
+
+

+ Checking availability of vehicles.

+
+
+
+
+
+
+ +
+
+

+ Validation for send request.

+
+
+
+
+
+
+ +
+
+

+ Validation for requested dates.

+
+
+
+
+
+
+ +
+
+

+ Employee get email if the request is approved or rejected.

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

+ Employee Can Request Available Vehicle.

+
+
+
+
+
+
+ +
+
+

+ HR Manager Can Approve/Reject A Vehicle + Request.

+
+
+
+
+
+
+ +
+
+

+ Validation Messages.

+
+
+
+ +
+
+
+ +
+
+

+ Requested Period Validation.

+
+
+
+
+
+
+
    +
  • + Employee can + request for any vehicle. +
  • +
  • + Checking + availability of vehicles. +
  • +
  • + Validation for + send request and requested dates. +
  • +
  • + Employee get email if the request is approved or rejected. +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:3rd December 2024 +
+

+ + Initial Commit for Employee Vehicle Request.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Licensing Consultancy

+
+
+
+
+
+
+

+ Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

+ Education

+

A platform for educational management

+
+
+
+
+ +

+ Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & + Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service + Management

+

Keep track of services and invoice

+
+
+
+
+ +

+ Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel + Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/employee_vehicle_request/views/employee_fleet_views.xml b/employee_vehicle_request/views/employee_fleet_views.xml new file mode 100644 index 000000000..43a911d0c --- /dev/null +++ b/employee_vehicle_request/views/employee_fleet_views.xml @@ -0,0 +1,123 @@ + + + + + employee.fleet.view.form + employee.fleet + +
+
+
+ +

+ +

+ + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + + employee.fleet.view.tree + employee.fleet + + + + + + + + + + + + + + employee.fleet.view.search + employee.fleet + + + + + + + + + + + + + + + + + + + + Vehicle Request + employee.fleet + tree,form + + +

+ Click to create a New Vehicle Request. +

+
+
+ + + + +
diff --git a/employee_vehicle_request/views/fleet_vehicle_views.xml b/employee_vehicle_request/views/fleet_vehicle_views.xml new file mode 100644 index 000000000..b8e48b210 --- /dev/null +++ b/employee_vehicle_request/views/fleet_vehicle_views.xml @@ -0,0 +1,15 @@ + + + + + fleet.vehicle.view.form.inherit.employee.vehicle.request + fleet.vehicle + + + + + + + + +