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',
|
||||
'wizards/reject_reason_infraction.xml',
|
||||
'views/driver_departments.xml',
|
||||
'views/request_vehicle_authorization.xml',
|
||||
|
||||
]
|
||||
}
|
||||
|
|
@ -9,3 +9,4 @@ from . import insurance_companies
|
|||
from . import infractions
|
||||
from . import driver_departments
|
||||
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