diff --git a/odex25_fleet/odex_fleet/i18n/ar_001.po b/odex25_fleet/odex_fleet/i18n/ar_001.po
index 50953503a..efebe873f 100644
--- a/odex25_fleet/odex_fleet/i18n/ar_001.po
+++ b/odex25_fleet/odex_fleet/i18n/ar_001.po
@@ -940,12 +940,10 @@ msgstr "الادارة / القسم"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_fleet_wiz__department_ids
-
msgid "Departments"
msgstr "الأقسام"
#. module: odex_fleet
-
#: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__departments_id
#: model:ir.model.fields,field_description:odex_fleet.field_vehicle_delegation__departments_id
msgid "Departments"
@@ -1912,7 +1910,7 @@ msgstr "الرخصة"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_attache
msgid "License Attachment"
-msgstr ""
+msgstr "مرفق صوره الرخصة"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_fleet_vehicle__license_end
@@ -1927,7 +1925,7 @@ msgstr "تاريخ انتهاء الرخصة"
#. module: odex_fleet
#: model_terms:ir.ui.view,arch_db:odex_fleet.hr_driver_form_view
msgid "License Information"
-msgstr ""
+msgstr "معلومات رخصة السياقة"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_number
@@ -1938,6 +1936,13 @@ msgstr ""
msgid "License Number"
msgstr "رقم رخصة السياقة"
+
+#. module: odex_fleet
+#: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__depart_id
+#: model:ir.model.fields,field_description:odex_fleet.field_vehicle_delegation__depart_id
+msgid "Depart"
+msgstr "الفرع"
+
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_fleet_maintenance__license_plate
#: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__license_plate
@@ -1948,15 +1953,17 @@ msgstr "رقم اللوحة"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_start
+#: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__license_start
#: model_terms:ir.ui.view,arch_db:odex_fleet.hr_kanban_view
msgid "License Start"
-msgstr ""
+msgstr "تاريخ الاصدار"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_type
+#: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__license_type
#: model_terms:ir.ui.view,arch_db:odex_fleet.hr_kanban_view
msgid "License Type"
-msgstr ""
+msgstr "نوع الرخصة"
#. module: odex_fleet
#: model:ir.model.fields,help:odex_fleet.field_fleet_maintenance__license_plate
@@ -2469,8 +2476,8 @@ msgstr "السببظ المبرر"
#. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__receive_date
-msgid "Receive Date"
-msgstr ""
+msgid "Receive Date"
+msgstr "تاريخ الاستلام"
#. module: odex_fleet
#: model:ir.actions.report,name:odex_fleet.delegation_receive_report_pdf_act
diff --git a/odex25_fleet/odex_fleet/models/__pycache__/driver.cpython-38.pyc b/odex25_fleet/odex_fleet/models/__pycache__/driver.cpython-38.pyc
index 83ca0b475..cbeb3a777 100644
Binary files a/odex25_fleet/odex_fleet/models/__pycache__/driver.cpython-38.pyc and b/odex25_fleet/odex_fleet/models/__pycache__/driver.cpython-38.pyc differ
diff --git a/odex25_fleet/odex_fleet/models/__pycache__/request_vehicle_authorization.cpython-38.pyc b/odex25_fleet/odex_fleet/models/__pycache__/request_vehicle_authorization.cpython-38.pyc
index c1f8e234a..4e560e75f 100644
Binary files a/odex25_fleet/odex_fleet/models/__pycache__/request_vehicle_authorization.cpython-38.pyc and b/odex25_fleet/odex_fleet/models/__pycache__/request_vehicle_authorization.cpython-38.pyc differ
diff --git a/odex25_fleet/odex_fleet/models/driver.py b/odex25_fleet/odex_fleet/models/driver.py
index 203e42be4..0c06812d1 100644
--- a/odex25_fleet/odex_fleet/models/driver.py
+++ b/odex25_fleet/odex_fleet/models/driver.py
@@ -17,7 +17,7 @@ class HRCustom(models.Model):
old_vehicle_id = fields.Many2one('fleet.vehicle', string="Old Vehicle")
delegation_start = fields.Date(string="Delegation Start Date")
delegation_end = fields.Date(string="Delegation End Date")
- receive_date = fields.Date(string="Receive Date",readonly=True)
+ receive_date = fields.Date(string="Receive Date",readonly=True)
license_attache = fields.Binary(string="License Attachment")
employee_cars_count = fields.Integer(compute="_compute_employee_cars_count", string="Cars",groups="base.group_user")
diff --git a/odex25_fleet/odex_fleet/models/request_vehicle_authorization.py b/odex25_fleet/odex_fleet/models/request_vehicle_authorization.py
index 7d78ed73c..668d72f78 100644
--- a/odex25_fleet/odex_fleet/models/request_vehicle_authorization.py
+++ b/odex25_fleet/odex_fleet/models/request_vehicle_authorization.py
@@ -9,49 +9,79 @@ class RequestVehicleDelegation(models.Model):
_name = 'request.vehicle.authorization'
_inherit = ['mail.thread', 'mail.activity.mixin']
-
- employee_id = fields.Many2one('hr.employee', string="Driver",default=lambda item: item.get_user_id(),
- tracking=True)
+ employee_id = fields.Many2one('hr.employee', string="Driver", default=lambda item: item.get_user_id(),
+ tracking=True, required=True)
state = fields.Selection(selection=[('draft', 'Draft'),
('confirm', 'Confirm'),
('direct_manager', 'Direct manager'),
('refused', 'Refused'),
('fleet_tool', 'Fleet tool'),
- ], default='draft',tracking=True)
+ ], default='draft', tracking=True)
company_id = fields.Many2one('res.company', string='Company')
project_id = fields.Many2one('project.project', string='Project')
delegation_type = fields.Selection(selection=[('branch', 'Branch'), ('driver', 'driver')],
string="Delegation Type")
- license_number = fields.Char(string="License Number", related='employee_id.license_number', store=True,tracking=True)
- license_end = fields.Date(string="License End",tracking=True)
- vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle",tracking=True ,domain=lambda self: [('id', 'not in', self._get_delegated_vehicle_ids())] )
+ license_number = fields.Char(string="License Number", related='employee_id.license_number', tracking=True,
+ readonly=False, required=True)
+ license_end = fields.Date(string="License End", tracking=True, related='employee_id.license_end', readonly=False,
+ required=True)
+ license_type = fields.Selection(selection=[('private', 'Private'), ('general', 'General'), ('public', 'Public')],
+ string="License Type", related='employee_id.license_type', readonly=False,
+ required=True)
+ license_start = fields.Date(string="License Start", related='employee_id.license_start', readonly=False,
+ required=True)
+ vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", tracking=True,
+ domain=lambda self: [('id', 'not in', self._get_delegated_vehicle_ids())])
- license_plate = fields.Char(required=True, related='vehicle_id.license_plate', store=True,tracking=True)
+ license_plate = fields.Char(required=True, related='vehicle_id.license_plate', store=True, tracking=True, )
vin_sn = fields.Char('Chassis Number', related='vehicle_id.vin_sn', store=True,
copy=False)
- model_id = fields.Many2one('fleet.vehicle.model', 'Model', related='vehicle_id.model_id', store=True,tracking=True)
- fleet_type_id = fields.Many2one('fleet.type', string="Fleet Type", related='vehicle_id.fleet_type_id', store=True,tracking=True)
+ model_id = fields.Many2one('fleet.vehicle.model', 'Model', related='vehicle_id.model_id', store=True, tracking=True)
+ fleet_type_id = fields.Many2one('fleet.type', string="Fleet Type", related='vehicle_id.fleet_type_id', store=True,
+ tracking=True)
serial_number = fields.Char(related='vehicle_id.serial_number', string="Serial Number")
# state_id = fields.Many2one('res.country.state', string="State", )
- start_date = fields.Date(string="Start Date",tracking=True)
- end_date = fields.Date(string="End Date",tracking=True)
- reason = fields.Text(string="Reject Reason", tracking=True,)
+ start_date = fields.Date(string="Start Date", tracking=True)
+ end_date = fields.Date(string="End Date", tracking=True)
+ reason = fields.Text(string="Reject Reason", tracking=True, )
custody_id = fields.Many2one('custom.employee.custody')
entity_type = fields.Selection(selection=[('department', 'Department'), ('project', 'Project')],
- string="Entity Type")
- driver_department = fields.Many2one('driver.department',tracking=True)
- first_odometer = fields.Float(string='First Odometer',compute="get_first_odometer", store=True,help='The odometer value at the moment the car is authorized')
- odometer = fields.Float(string='Last Odometer',compute="get_odometer", store=True,
- help='Odometer measure of the vehicle at the moment of this log',tracking=True)
- km_number = fields.Integer(string='KM Number', compute='get_km', store=True,help='The value of the difference between the odometer at the moment of delivery and receipt')
- last_department_id = fields.Many2one(related='vehicle_id.department_id', string="Last Department",help='The last Department the vehicle was authorized for')
- last_project_id = fields.Many2one('project.project', string='Last Project', compute="get_last_project", store=True,tracking=True)
- last_branch_id = fields.Many2one('hr.department', string="Last Branch", compute="get_last_branch", store=True,help='The last Branch the vehicle was authorized for',tracking=True)
+ string="Entity Type")
+ driver_department = fields.Many2one('driver.department', tracking=True)
+ first_odometer = fields.Float(string='First Odometer', compute="get_first_odometer", store=True,
+ help='The odometer value at the moment the car is authorized')
+ odometer = fields.Float(string='Last Odometer', compute="get_odometer", store=True,
+ help='Odometer measure of the vehicle at the moment of this log', tracking=True)
+ km_number = fields.Integer(string='KM Number', compute='get_km', store=True,
+ help='The value of the difference between the odometer at the moment of delivery and receipt')
+ last_department_id = fields.Many2one(related='vehicle_id.department_id', string="Last Department",
+ help='The last Department the vehicle was authorized for')
+ last_project_id = fields.Many2one('project.project', string='Last Project', compute="get_last_project", store=True,
+ tracking=True)
+ last_branch_id = fields.Many2one('hr.department', string="Last Branch", compute="get_last_branch", store=True,
+ help='The last Branch the vehicle was authorized for', tracking=True)
from_hr_depart = fields.Boolean()
name = fields.Char(string="Name")
- depart_id= fields.Many2one('hr.department')
+ depart_id = fields.Many2one('hr.department', related='employee_id.department_id')
+ driver = fields.Boolean(string="Is Driver", related='employee_id.driver')
+ @api.onchange('license_number', 'license_end', 'license_type', 'license_start')
+ def _onchange_license_fields(self):
+ if self.employee_id:
+ if self.license_number:
+ self.employee_id.license_number = self.license_number
+ if self.license_end:
+ self.employee_id.license_end = self.license_end
+ if self.license_type:
+ self.employee_id.license_type = self.license_type
+ if self.license_start:
+ self.employee_id.license_start = self.license_start
+ @api.onchange('driver')
+ def _onchange_driver(self):
+ if self.employee_id and not self.driver:
+ self.driver = True
+ self.employee_id.driver = True
@api.model
def _get_delegated_vehicle_ids(self):
@@ -60,7 +90,6 @@ class RequestVehicleDelegation(models.Model):
])
return delegated_vehicles.mapped('vehicle_id.id')
-
def get_user_id(self):
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
if employee_id:
@@ -120,8 +149,7 @@ class RequestVehicleDelegation(models.Model):
def direct_manager(self):
for rec in self:
rec.state = 'direct_manager'
-
-
+ rec.send_notification_to_direct_manager_groups()
def send_notification_to_fleet_tool_group(self):
message_template = 'Dear {user_name}, you have an authorization request awaiting approval'
@@ -147,6 +175,34 @@ class RequestVehicleDelegation(models.Model):
'notification_type': 'inbox'
})]
})
+
+ def send_notification_to_direct_manager_groups(self):
+ message_template = 'Dear {user_name}, you have an authorization request awaiting approval'
+ groups = [
+ self.env.ref('odex_fleet.group_direct_manager')
+ ]
+ for group in groups:
+ users = group.users
+ for user in users:
+ if user.partner_id:
+ message_body = message_template.format(user_name=user.name)
+
+ # Send the notification to appear as a real notification in Odoo
+ self.env['mail.message'].create({
+ 'message_type': 'notification',
+ 'subtype_id': self.env.ref('mail.mt_comment').id,
+ 'body': message_body,
+ 'subject': 'New authorization request',
+ 'partner_ids': [(4, user.partner_id.id)],
+ 'model': 'request.vehicle.authorization',
+ 'res_id': self.id,
+ 'author_id': self.env.user.partner_id.id,
+ 'notification_ids': [(0, 0, {
+ 'res_partner_id': user.partner_id.id,
+ 'notification_type': 'inbox'
+ })]
+ })
+
def fleet_tool(self):
vehicle_vals = {
@@ -179,7 +235,6 @@ class RequestVehicleDelegation(models.Model):
return vehicle
-
class InheritVehicleDelegation(models.Model):
_inherit = "vehicle.delegation"
diff --git a/odex25_fleet/odex_fleet/views/request_vehicle_authorization.xml b/odex25_fleet/odex_fleet/views/request_vehicle_authorization.xml
index d3cbd81f7..70562bede 100644
--- a/odex25_fleet/odex_fleet/views/request_vehicle_authorization.xml
+++ b/odex25_fleet/odex_fleet/views/request_vehicle_authorization.xml
@@ -35,11 +35,19 @@