send_notification_to_direct_manager_groups and _onchange_license_fields _onchange_driver

This commit is contained in:
Mazen Abdo 2024-11-13 12:13:37 +02:00
parent 53ef65ab82
commit 7d15e5bcb8
6 changed files with 111 additions and 41 deletions

View File

@ -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

View File

@ -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")

View File

@ -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"

View File

@ -35,11 +35,19 @@
</group>
<group col="4" colspan="2" string="Employee Information">
<field name="employee_id" string="Employee Name"
attrs="{'readonly': [('from_hr_depart', '=', False), ('state', '!=', 'confirm')]}"/>
<field name="license_number" readonly="1" force_save="1"/>
<field name="license_end" readonly="1" force_save="1"/>
attrs="{'readonly': [('from_hr_depart', '=', False), ('state', '!=', 'draft')]}"/>
<field name="license_type"
attrs="{'readonly': [('license_type', '!=', False), ('state', '!=', 'draft')]}"/>
<field name="license_start"
attrs="{'readonly': [('license_start', '!=', False), ('state', '!=', 'draft')]}"/>
<field name="license_end"
attrs="{'readonly': [('license_end', '!=', False), ('state', '!=', 'draft')]}"/>
<field name="license_number"
attrs="{'readonly': [('license_number', '!=', False), ('state', '!=', 'draft')]}"/>
<!-- <field name="custody_id" invisible="1"/>-->
<field name="depart_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
<field name="driver" invisible="1"/>
</group>
<div class="oe_title">
<label for="vehicle_id" class="oe_edit_only"/>
@ -64,7 +72,7 @@
<field name="first_odometer" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
<field name="odometer" readonly="1" force_save="1"/>
<field name="km_number" readonly="1" force_save="1"/>
<field name="delegation_type" invisible="1"/>
<!-- <field name="delegation_type" invisible="1"/>-->
</group>
</group>
</sheet>