Merge pull request #1674 from expsa/zen_send_notifications

send lateness notifications
This commit is contained in:
mazenmuhamad 2024-11-02 23:18:14 +02:00 committed by GitHub
commit 98185d4549
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 209 additions and 1 deletions

View File

@ -42,6 +42,7 @@ Manage Fleet and Reports
'views/infractions.xml', 'views/infractions.xml',
'wizards/reject_reason_infraction.xml', 'wizards/reject_reason_infraction.xml',
'views/driver_departments.xml', 'views/driver_departments.xml',
'views/request_vehicle_authorization.xml',
] ]
} }

View File

@ -8,4 +8,5 @@ from . import account_config
from . import insurance_companies from . import insurance_companies
from . import infractions from . import infractions
from . import driver_departments from . import driver_departments
from . import fleet_service_type from . import fleet_service_type
from . import request_vehicle_authorization

View File

@ -0,0 +1,126 @@
from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError
from datetime import datetime
from dateutil.relativedelta import relativedelta
class VehicleDelegation(models.Model):
_name = 'request.vehicle.authorization'
_inherit = ['mail.thread', 'mail.activity.mixin']
employee_id = fields.Many2one('hr.employee', string="Driver",
domain="[('driver', '=', True),('vehicle_id', '=', False)]")
state = fields.Selection(selection=[('draft', 'Draft'),
('confirm', 'Confirm'),
('Direct_manager', 'Direct manager'),
('refused', 'Refused'),
('fleet_tool', 'Fleet tool'),
], default='draft')
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)
license_end = fields.Date(string="License End")
vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", )
license_plate = fields.Char(required=True, related='vehicle_id.license_plate', store=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, )
fleet_type_id = fields.Many2one('fleet.type', string="Fleet Type", related='vehicle_id.fleet_type_id', store=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")
end_date = fields.Date(string="End Date")
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')
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')
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)
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')
from_hr_depart = fields.Boolean()
@api.depends("vehicle_id")
def get_first_odometer(self):
for rec in self:
if rec.vehicle_id:
odometer_id = self.env['fleet.vehicle.odometer'].search([('vehicle_id', '=', rec.vehicle_id.id)],
order="date desc", limit=1)
rec.first_odometer = odometer_id.value
@api.depends("vehicle_id")
def get_odometer(self):
for rec in self:
if rec.vehicle_id:
odometer_id = self.env['fleet.vehicle.odometer'].search([('vehicle_id', '=', rec.vehicle_id.id)],
order="date asc", limit=1)
rec.odometer = odometer_id.value
@api.depends("vehicle_id")
def get_last_project(self):
for rec in self:
obj = self.search([('vehicle_id', '=', rec.vehicle_id.name)], limit=1)
rec.last_project_id = obj.project_id
@api.depends("vehicle_id")
def get_last_branch(self):
for rec in self:
rec.last_branch_id = rec.vehicle_id.branch_id
@api.depends('odometer', 'first_odometer')
def get_km(self):
for rec in self:
rec.km_number = rec.odometer - rec.first_odometer
def action_confirm(self):
for rec in self:
rec.state = 'confirm'
# def action_approve(self):
# for rec in self:
# rec.state = 'approve'
#
# def action_inprogress(self):
# for rec in self:
# # if rec.start_date > str(datetime.now().date()):
# # raise ValidationError(_("You Can Start Request Early than Plan"))
# rec.state = 'in_progress'
def action_refuse(self):
form_view_id = self.env.ref("odex_fleet.wizard_reject_reason_fleet_wiz_form").id
return {
'name': _("Reject Reason"),
'view_mode': 'form',
'res_model': 'reject.reason.fleet.wiz',
'views': [(form_view_id, 'form')],
'type': 'ir.actions.act_window',
'target': 'new',
'context': {'default_delegation_id': self.id},
}
# def action_close(self):
# for rec in self:
# rec.state = 'close'
def fleet_tool(self):
for rec in self:
rec.state = 'fleet_tool'
def Direct_manager(self):
for rec in self:
rec.state = 'Direct_manager'
# def action_cancel(self):
# for rec in self:
# rec.sudo().state = 'cancel'

View File

@ -0,0 +1,80 @@
<odoo>
<record id='fleet_request_vehicle_authorization_action_form' model='ir.ui.view'>
<field name="name">fleet.request.vehicle.authorization.form</field>
<field name="model">request.vehicle.authorization</field>
<field name="arch" type="xml">
<form string="Vehicle">
<header>
<button name="action_confirm" string="Confirm" type="object" class="oe_highlight" states="draft"/>
<button name="action_refuse" type="object" states="confirm"
class="oe_highlight" string="Refuse"/>
<button name="Direct_manager" string="Direct manager" type="object" class="oe_highlight" states="confirm"/>
<button name="fleet_tool" string="Fleet tool" type="object" class="oe_highlight"
states="Direct_manager"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<group col="4" colspan="2" string="Employee Information">
<field name="from_hr_depart" string="Another Employee"/>
<field name="employee_id" string="Employee Name"
attrs="{'readonly': [('from_hr_depart', '=', False)]}"/>
<field name="license_number" readonly="1" force_save="1"/>
<field name="license_end" readonly="1" force_save="1"/>
<field name="custody_id" invisible="1"/>
</group>
<div class="oe_title">
<label for="vehicle_id" class="oe_edit_only"/>
<h2>
<field name="vehicle_id"/>
</h2>
</div>
<group col="4" colspan="2" string="Vehicle Information">
<field name="start_date"/>
<field name="end_date"/>
<field name="last_department_id"/>
<field name="last_project_id" invisible="1"/>
<field name="last_branch_id"/>
<field name="vin_sn"/>
<field name="model_id" readonly="1" force_save="1"/>
<field name="license_plate" readonly="1" force_save="1"/>
<field name="serial_number" readonly="1" force_save="1"/>
<field name="fleet_type_id" readonly="1" force_save="1"/>
<field name="first_odometer"/>
<field name="odometer" readonly="1" force_save="1"/>
<field name="km_number" readonly="1" force_save="1"/>
<field name="delegation_type" invisible="1"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread" options='{"thread_level": 1}'/>
</div>
</form>
</field>
</record>
<record id='fleet_request_vehicle_authorization_action' model='ir.actions.act_window'>
<field name="name">Request vehicle authorization</field>
<field name="res_model">request.vehicle.authorization</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new Driver Delegation.
</p>
</field>
</record>
<menuitem action="fleet_request_vehicle_authorization_action" parent="fleet_vehicles_delegation"
id="request_vehicle_authorization_menu_test" sequence="5"/>
</odoo>