Merge pull request #1674 from expsa/zen_send_notifications
send lateness notifications
This commit is contained in:
commit
98185d4549
|
|
@ -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',
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -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
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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'
|
||||||
|
|
@ -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>
|
||||||
Binary file not shown.
Loading…
Reference in New Issue