Merge pull request #1743 from expsa/lgen_onchange_license

send_notification_to_direct_manager_groups and _onchange_license_fiel…
This commit is contained in:
mazenmuhamad 2024-11-13 12:15:51 +02:00 committed by GitHub
commit f2e50ace8c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 111 additions and 41 deletions

View File

@ -940,12 +940,10 @@ msgstr "الادارة / القسم"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_fleet_wiz__department_ids #: model:ir.model.fields,field_description:odex_fleet.field_fleet_wiz__department_ids
msgid "Departments" msgid "Departments"
msgstr "الأقسام" msgstr "الأقسام"
#. module: odex_fleet #. 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_request_vehicle_authorization__departments_id
#: model:ir.model.fields,field_description:odex_fleet.field_vehicle_delegation__departments_id #: model:ir.model.fields,field_description:odex_fleet.field_vehicle_delegation__departments_id
msgid "Departments" msgid "Departments"
@ -1912,7 +1910,7 @@ msgstr "الرخصة"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_attache #: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_attache
msgid "License Attachment" msgid "License Attachment"
msgstr "" msgstr "مرفق صوره الرخصة"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_fleet_vehicle__license_end #: model:ir.model.fields,field_description:odex_fleet.field_fleet_vehicle__license_end
@ -1927,7 +1925,7 @@ msgstr "تاريخ انتهاء الرخصة"
#. module: odex_fleet #. module: odex_fleet
#: model_terms:ir.ui.view,arch_db:odex_fleet.hr_driver_form_view #: model_terms:ir.ui.view,arch_db:odex_fleet.hr_driver_form_view
msgid "License Information" msgid "License Information"
msgstr "" msgstr "معلومات رخصة السياقة"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_number #: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__license_number
@ -1938,6 +1936,13 @@ msgstr ""
msgid "License Number" msgid "License Number"
msgstr "رقم رخصة السياقة" 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 #. 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_fleet_maintenance__license_plate
#: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__license_plate #: model:ir.model.fields,field_description:odex_fleet.field_request_vehicle_authorization__license_plate
@ -1948,15 +1953,17 @@ msgstr "رقم اللوحة"
#. module: odex_fleet #. 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_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 #: model_terms:ir.ui.view,arch_db:odex_fleet.hr_kanban_view
msgid "License Start" msgid "License Start"
msgstr "" msgstr "تاريخ الاصدار"
#. module: odex_fleet #. 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_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 #: model_terms:ir.ui.view,arch_db:odex_fleet.hr_kanban_view
msgid "License Type" msgid "License Type"
msgstr "" msgstr "نوع الرخصة"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.model.fields,help:odex_fleet.field_fleet_maintenance__license_plate #: model:ir.model.fields,help:odex_fleet.field_fleet_maintenance__license_plate
@ -2469,8 +2476,8 @@ msgstr "السببظ المبرر"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__receive_date #: model:ir.model.fields,field_description:odex_fleet.field_hr_employee__receive_date
msgid "Receive Date" msgid "Receive Date"
msgstr "" msgstr "تاريخ الاستلام"
#. module: odex_fleet #. module: odex_fleet
#: model:ir.actions.report,name:odex_fleet.delegation_receive_report_pdf_act #: 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") old_vehicle_id = fields.Many2one('fleet.vehicle', string="Old Vehicle")
delegation_start = fields.Date(string="Delegation Start Date") delegation_start = fields.Date(string="Delegation Start Date")
delegation_end = fields.Date(string="Delegation End 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") license_attache = fields.Binary(string="License Attachment")
employee_cars_count = fields.Integer(compute="_compute_employee_cars_count", string="Cars",groups="base.group_user") 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' _name = 'request.vehicle.authorization'
_inherit = ['mail.thread', 'mail.activity.mixin'] _inherit = ['mail.thread', 'mail.activity.mixin']
employee_id = fields.Many2one('hr.employee', string="Driver", default=lambda item: item.get_user_id(),
employee_id = fields.Many2one('hr.employee', string="Driver",default=lambda item: item.get_user_id(), tracking=True, required=True)
tracking=True)
state = fields.Selection(selection=[('draft', 'Draft'), state = fields.Selection(selection=[('draft', 'Draft'),
('confirm', 'Confirm'), ('confirm', 'Confirm'),
('direct_manager', 'Direct manager'), ('direct_manager', 'Direct manager'),
('refused', 'Refused'), ('refused', 'Refused'),
('fleet_tool', 'Fleet tool'), ('fleet_tool', 'Fleet tool'),
], default='draft',tracking=True) ], default='draft', tracking=True)
company_id = fields.Many2one('res.company', string='Company') company_id = fields.Many2one('res.company', string='Company')
project_id = fields.Many2one('project.project', string='Project') project_id = fields.Many2one('project.project', string='Project')
delegation_type = fields.Selection(selection=[('branch', 'Branch'), ('driver', 'driver')], delegation_type = fields.Selection(selection=[('branch', 'Branch'), ('driver', 'driver')],
string="Delegation Type") string="Delegation Type")
license_number = fields.Char(string="License Number", related='employee_id.license_number', store=True,tracking=True) license_number = fields.Char(string="License Number", related='employee_id.license_number', tracking=True,
license_end = fields.Date(string="License End",tracking=True) 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_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, vin_sn = fields.Char('Chassis Number', related='vehicle_id.vin_sn', store=True,
copy=False) copy=False)
model_id = fields.Many2one('fleet.vehicle.model', 'Model', related='vehicle_id.model_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) 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") serial_number = fields.Char(related='vehicle_id.serial_number', string="Serial Number")
# state_id = fields.Many2one('res.country.state', string="State", ) # state_id = fields.Many2one('res.country.state', string="State", )
start_date = fields.Date(string="Start Date",tracking=True) start_date = fields.Date(string="Start Date", tracking=True)
end_date = fields.Date(string="End Date",tracking=True) end_date = fields.Date(string="End Date", tracking=True)
reason = fields.Text(string="Reject Reason", tracking=True,) reason = fields.Text(string="Reject Reason", tracking=True, )
custody_id = fields.Many2one('custom.employee.custody') custody_id = fields.Many2one('custom.employee.custody')
entity_type = fields.Selection(selection=[('department', 'Department'), ('project', 'Project')], entity_type = fields.Selection(selection=[('department', 'Department'), ('project', 'Project')],
string="Entity Type") string="Entity Type")
driver_department = fields.Many2one('driver.department',tracking=True) 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') first_odometer = fields.Float(string='First Odometer', compute="get_first_odometer", store=True,
odometer = fields.Float(string='Last Odometer',compute="get_odometer", store=True, help='The odometer value at the moment the car is authorized')
help='Odometer measure of the vehicle at the moment of this log',tracking=True) odometer = fields.Float(string='Last Odometer', compute="get_odometer", store=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') help='Odometer measure of the vehicle at the moment of this log', tracking=True)
last_department_id = fields.Many2one(related='vehicle_id.department_id', string="Last Department",help='The last Department the vehicle was authorized for') km_number = fields.Integer(string='KM Number', compute='get_km', store=True,
last_project_id = fields.Many2one('project.project', string='Last Project', compute="get_last_project", store=True,tracking=True) help='The value of the difference between the odometer at the moment of delivery and receipt')
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) 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() from_hr_depart = fields.Boolean()
name = fields.Char(string="Name") 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 @api.model
def _get_delegated_vehicle_ids(self): def _get_delegated_vehicle_ids(self):
@ -60,7 +90,6 @@ class RequestVehicleDelegation(models.Model):
]) ])
return delegated_vehicles.mapped('vehicle_id.id') return delegated_vehicles.mapped('vehicle_id.id')
def get_user_id(self): def get_user_id(self):
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1) employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
if employee_id: if employee_id:
@ -120,8 +149,7 @@ class RequestVehicleDelegation(models.Model):
def direct_manager(self): def direct_manager(self):
for rec in self: for rec in self:
rec.state = 'direct_manager' rec.state = 'direct_manager'
rec.send_notification_to_direct_manager_groups()
def send_notification_to_fleet_tool_group(self): def send_notification_to_fleet_tool_group(self):
message_template = 'Dear {user_name}, you have an authorization request awaiting approval' message_template = 'Dear {user_name}, you have an authorization request awaiting approval'
@ -147,6 +175,34 @@ class RequestVehicleDelegation(models.Model):
'notification_type': 'inbox' '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): def fleet_tool(self):
vehicle_vals = { vehicle_vals = {
@ -179,7 +235,6 @@ class RequestVehicleDelegation(models.Model):
return vehicle return vehicle
class InheritVehicleDelegation(models.Model): class InheritVehicleDelegation(models.Model):
_inherit = "vehicle.delegation" _inherit = "vehicle.delegation"

View File

@ -35,11 +35,19 @@
</group> </group>
<group col="4" colspan="2" string="Employee Information"> <group col="4" colspan="2" string="Employee Information">
<field name="employee_id" string="Employee Name" <field name="employee_id" string="Employee Name"
attrs="{'readonly': [('from_hr_depart', '=', False), ('state', '!=', 'confirm')]}"/> attrs="{'readonly': [('from_hr_depart', '=', False), ('state', '!=', 'draft')]}"/>
<field name="license_number" readonly="1" force_save="1"/> <field name="license_type"
<field name="license_end" readonly="1" force_save="1"/> 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="custody_id" invisible="1"/>-->
<field name="depart_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/> <field name="depart_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
<field name="driver" invisible="1"/>
</group> </group>
<div class="oe_title"> <div class="oe_title">
<label for="vehicle_id" class="oe_edit_only"/> <label for="vehicle_id" class="oe_edit_only"/>
@ -64,7 +72,7 @@
<field name="first_odometer" attrs="{'readonly': [('state', '!=', 'draft')]}"/> <field name="first_odometer" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
<field name="odometer" readonly="1" force_save="1"/> <field name="odometer" readonly="1" force_save="1"/>
<field name="km_number" 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>
</group> </group>
</sheet> </sheet>
@ -107,4 +115,4 @@
<menuitem action="fleet_request_vehicle_authorization_action" parent="fleet_vehicles_delegation" <menuitem action="fleet_request_vehicle_authorization_action" parent="fleet_vehicles_delegation"
id="request_vehicle_authorization_menu_test" sequence="5"/> id="request_vehicle_authorization_menu_test" sequence="5"/>
</odoo> </odoo>