add menuitem Request vehicle authorization
This commit is contained in:
parent
ac5f344864
commit
e13ee06a74
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,54 +1,72 @@
|
|||
from odoo import models, fields, api, _
|
||||
import logging
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class VehicleDelegation(models.Model):
|
||||
class RequestVehicleDelegation(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)]")
|
||||
employee_id = fields.Many2one('hr.employee', string="Driver",default=lambda item: item.get_user_id(),
|
||||
tracking=True)
|
||||
state = fields.Selection(selection=[('draft', 'Draft'),
|
||||
('confirm', 'Confirm'),
|
||||
('Direct_manager', 'Direct manager'),
|
||||
('direct_manager', 'Direct manager'),
|
||||
('refused', 'Refused'),
|
||||
('fleet_tool', 'Fleet tool'),
|
||||
], default='draft')
|
||||
], 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)
|
||||
license_end = fields.Date(string="License End")
|
||||
vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", )
|
||||
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_plate = fields.Char(required=True, related='vehicle_id.license_plate', store=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, )
|
||||
fleet_type_id = fields.Many2one('fleet.type', string="Fleet Type", related='vehicle_id.fleet_type_id', store=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")
|
||||
end_date = fields.Date(string="End Date")
|
||||
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')
|
||||
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')
|
||||
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)
|
||||
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')
|
||||
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")
|
||||
departments_id= fields.Many2one('hr.department')
|
||||
|
||||
|
||||
|
||||
@api.model
|
||||
def _get_delegated_vehicle_ids(self):
|
||||
delegated_vehicles = self.env['vehicle.delegation'].search([
|
||||
('state', 'in', ['draft', 'confirm', 'approve', 'in_progress'])
|
||||
])
|
||||
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:
|
||||
return employee_id.id
|
||||
else:
|
||||
return False
|
||||
|
||||
@api.depends("vehicle_id")
|
||||
def get_first_odometer(self):
|
||||
|
|
@ -86,18 +104,6 @@ class VehicleDelegation(models.Model):
|
|||
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 {
|
||||
|
|
@ -111,20 +117,18 @@ class VehicleDelegation(models.Model):
|
|||
'context': {'default_delegation_id': self.id},
|
||||
}
|
||||
|
||||
# def action_close(self):
|
||||
# for rec in self:
|
||||
# rec.state = 'close'
|
||||
|
||||
def Direct_manager(self):
|
||||
|
||||
def direct_manager(self):
|
||||
for rec in self:
|
||||
rec.state = 'Direct_manager'
|
||||
rec.state = 'direct_manager'
|
||||
|
||||
def fleet_tool(self):
|
||||
|
||||
payment_vals = {
|
||||
vehicle_vals = {
|
||||
'employee_id': self.employee_id.id,
|
||||
'name': self.name,
|
||||
'delegation_type': self.delegation_type,
|
||||
'delegation_type': 'driver',
|
||||
'license_number': self.license_number,
|
||||
'license_end': self.license_end,
|
||||
'vehicle_id': self.vehicle_id.id,
|
||||
|
|
@ -138,17 +142,17 @@ class VehicleDelegation(models.Model):
|
|||
'last_project_id': self.last_project_id.id if self.last_project_id else False,
|
||||
'last_branch_id': self.last_branch_id.id,
|
||||
'custody_id': self.custody_id.id if self.custody_id else False,
|
||||
'departments_id': self.departments_id.id if self.departments_id else False,
|
||||
'request_vehicle_authorization': self.id
|
||||
}
|
||||
print("qqqqqqqqqqqqqqq",payment_vals)
|
||||
_logger.info("Attempting to create vehicle delegation with values: %s", payment_vals)
|
||||
_logger.info("Attempting to create vehicle delegation with values: %s", vehicle_vals)
|
||||
|
||||
payment = self.env['vehicle.delegation'].create(payment_vals)
|
||||
print("aaaaaaaaaaaaaaaaaaaaaaaaaaa",payment)
|
||||
_logger.info("Created vehicle delegation: %s", payment)
|
||||
vehicle = self.env['vehicle.delegation'].create(vehicle_vals)
|
||||
_logger.info("Created vehicle delegation: %s", vehicle)
|
||||
|
||||
self.state = "fleet_tool"
|
||||
return payment
|
||||
return vehicle
|
||||
|
||||
|
||||
|
||||
class InheritVehicleDelegation(models.Model):
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ class VehicleDelegation(models.Model):
|
|||
|
||||
name = fields.Char(string="Name")
|
||||
branch_id = fields.Many2one('res.branch', string="Branch",related="driver_department.branch_id")
|
||||
departments_id = fields.Many2one('hr.department')
|
||||
old_branch_id = fields.Many2one('res.branch', string="Old Branch")
|
||||
employee_id = fields.Many2one('hr.employee', string="Driver",
|
||||
domain="[('driver', '=', True),('vehicle_id', '=', False)]")
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_contract_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_service_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_odometer_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_vehicle_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_contract_visibility_manager"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_service_visibility_manager"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_odometer_visibility_manager"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_contract_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_service_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_odometer_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_vehicle_visibility_user"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_contract_visibility_manager"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_service_visibility_manager"/>
|
||||
<delete model="ir.rule" id="fleet.fleet_rule_odometer_visibility_manager"/>
|
||||
<record id="fleet_group_supervisor" model="res.groups">
|
||||
<field name="name">Fleet Supervisor</field>
|
||||
<field name="category_id" ref="fleet.module_fleet_category"/>
|
||||
|
|
@ -52,11 +52,77 @@
|
|||
<field name="category_id" ref="fleet.module_fleet_category"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_employee_fleet" model="ir.rule">
|
||||
<field name="name">Fleet Hr</field>
|
||||
<field ref="hr.model_hr_employee" name="model_id"/>
|
||||
<field name="domain_force">[('driver','=',True)]</field>
|
||||
<field name="groups" eval="[(4, ref('fleet.fleet_group_user')),(4, ref('fleet_group_hr_officer'))]"/>
|
||||
</record>
|
||||
<record id="hr_employee_fleet" model="ir.rule">
|
||||
<field name="name">Fleet Hr</field>
|
||||
<field ref="hr.model_hr_employee" name="model_id"/>
|
||||
<field name="domain_force">[('driver','=',True)]</field>
|
||||
<field name="groups" eval="[(4, ref('fleet.fleet_group_user')),(4, ref('fleet_group_hr_officer'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="rule_security_groups_rule_by_user" model="ir.rule">
|
||||
<field name="name">request.vehicle.authorization.by.user</field>
|
||||
<field name="model_id" ref="model_request_vehicle_authorization"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
<field name="domain_force">[('create_uid', '=', user.id)]</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="model_request_vehicle_authorization" model="ir.model">-->
|
||||
<!-- <field name="name">request.vehicle.authorization</field>-->
|
||||
<!-- <field name="info">Vehicle Authorization Request</field>-->
|
||||
<!-- <field name="model">request.vehicle.authorization</field>-->
|
||||
<!-- <field name="state">manual</field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <!– إضافة صلاحية جديدة –>-->
|
||||
<!-- <record id="access_request_vehicle_authorization" model="ir.model.access">-->
|
||||
<!-- <field name="name">access_request_vehicle_authorization</field>-->
|
||||
<!-- <field name="model_id" ref="model_request_vehicle_authorization"/>-->
|
||||
<!-- <field name="group_id" ref="base.group_user"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="1"/>-->
|
||||
<!-- <field name="perm_create" eval="1"/>-->
|
||||
<!-- <field name="perm_unlink" eval="0"/>-->
|
||||
<!-- </record>-->
|
||||
<record id="group_hr_user" model="res.groups">
|
||||
<field name="name">user</field>
|
||||
<field name="category_id" ref="fleet.module_fleet_category"/>
|
||||
</record>
|
||||
|
||||
<record id="group_direct_manager" model="res.groups">
|
||||
<field name="name">direct manager</field>
|
||||
<field name="category_id" ref="fleet.module_fleet_category"/>
|
||||
</record>
|
||||
<record id="group_fleet_tool" model="res.groups">
|
||||
<field name="name">fleet tool</field>
|
||||
<field name="category_id" ref="fleet.module_fleet_category"/>
|
||||
</record>
|
||||
<record id="fleet_tool_access_rule" model="ir.rule">
|
||||
<field name="name">Fleet Tool Full Access</field>
|
||||
<field name="model_id" ref="model_request_vehicle_authorization"/>
|
||||
<field name="groups" eval="[(4, ref('odex_fleet.group_fleet_tool'))]"/>
|
||||
<field name="domain_force">[(1, '=', 1)]</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_unlink" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- <record id="access_direct_manager" model="ir.rule">-->
|
||||
<!-- <field name="name">Direct Manager Access</field>-->
|
||||
<!-- <field name="model_id" ref="model_request_vehicle_authorization"/>-->
|
||||
<!-- <field name="domain_force">[('employee_id.parent_id.user_id', '=', user.id)]</field>-->
|
||||
<!-- <field name="groups_id" eval="[(4, ref('odex25_fleet.group_direct_manager'))]"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<record id="request_rule_direct_manager" model="ir.rule">
|
||||
<field name="name">Department Manager</field>
|
||||
<field name="model_id" ref="odex_fleet.model_request_vehicle_authorization"/>
|
||||
<field name="domain_force">[('department_id.manager_id.user_id','in', [user.id])]</field>
|
||||
<field name="groups"
|
||||
eval="[ (4, ref('odex_fleet.group_direct_manager'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -7,13 +7,25 @@
|
|||
<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_confirm" string="Confirm" type="object" class="oe_highlight"
|
||||
states="draft" attrs="{'invisible': [('state', '!=', 'draft')]}"
|
||||
groups="odex_fleet.group_hr_user,odex_fleet.group_fleet_tool,odex_fleet.group_direct_manager"/>
|
||||
|
||||
<button name="direct_manager" string="Direct manager" type="object" class="oe_highlight"
|
||||
states="confirm" groups="odex_fleet.group_direct_manager,odex_fleet.group_fleet_tool"/>
|
||||
|
||||
<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"/>
|
||||
class="oe_highlight" string="Refuse"
|
||||
groups="odex_fleet.group_direct_manager,odex_fleet.group_fleet_tool"/>
|
||||
|
||||
<button name="fleet_tool" string="Fleet tool" type="object" class="oe_highlight"
|
||||
states="Direct_manager"/>
|
||||
states="direct_manager" groups="odex_fleet.group_fleet_tool"/>
|
||||
|
||||
<button name="action_refuse" type="object" states="direct_manager"
|
||||
class="oe_highlight" string="Refuse" ttrs="{'invisible': [('state', '=', 'fleet_tool')]}"
|
||||
groups="odex_fleet.group_fleet_tool"/>
|
||||
|
||||
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
|
|
@ -22,38 +34,39 @@
|
|||
<field name="from_hr_depart" string="Another Employee"/>
|
||||
</group>
|
||||
<group col="4" colspan="2" string="Employee Information">
|
||||
|
||||
<field name="employee_id" string="Employee Name"
|
||||
attrs="{'readonly': [('from_hr_depart', '=', False)]}"/>
|
||||
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"/>
|
||||
<field name="custody_id" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<!-- <field name="custody_id" invisible="1"/>-->
|
||||
<field name="departments_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
</group>
|
||||
<div class="oe_title">
|
||||
<label for="vehicle_id" class="oe_edit_only"/>
|
||||
<h2>
|
||||
<field name="vehicle_id"/>
|
||||
<field name="vehicle_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="name" invisible="1"/>
|
||||
</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="start_date"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')], 'required': [('state', '=', 'draft')]}"/>
|
||||
<field name="end_date"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')], 'required': [('state', '=', 'draft')]}"/>
|
||||
<field name="last_department_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="last_project_id" invisible="1"/>
|
||||
<field name="last_branch_id"/>
|
||||
<field name="vin_sn"/>
|
||||
<field name="last_branch_id" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<field name="vin_sn" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
|
||||
<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="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"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
</sheet>
|
||||
|
||||
<div class="oe_chatter">
|
||||
|
|
@ -69,7 +82,10 @@
|
|||
<field name="model">request.vehicle.authorization</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="start_date"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="vehicle_id"/>
|
||||
<field name="departments_id"/>
|
||||
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
</h1>
|
||||
<label for="vehicle_id" class="oe_edit_only"/>
|
||||
<h2>
|
||||
<field name="vehicle_id" attrs="{'readonly': [('state', '!=', 'draft')],'required':True}"/>
|
||||
<field name="vehicle_id" attrs="{'readonly': [('state', '!=', 'draft')],'required':True}" />
|
||||
</h2>
|
||||
</div>
|
||||
<group col="4" colspan="2" string="Vehicle Information">
|
||||
|
|
@ -48,6 +48,7 @@
|
|||
<field name="license_number" readonly="1" force_save="1"/>
|
||||
<field name="license_end" readonly="1" force_save="1"/>
|
||||
<field name="custody_id" invisible="1"/>
|
||||
<field name="departments_id" attrs="{'invisible': [('departments_id', '=', False)]}"/>
|
||||
</group>
|
||||
<group col="4" colspan="2" string="delegated entity" attrs="{'invisible': [('delegation_type', '!=', 'branch')]}">
|
||||
<!-- <field name="state_id" attrs="{'readonly': [('state', '!=', 'draft')],'required':[('delegation_type', '=', 'branch')]}" />-->
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -12,8 +12,9 @@ class RejectReasonFleet(models.TransientModel):
|
|||
request_id = fields.Many2one('fleet.quotation')
|
||||
|
||||
def action_reject(self):
|
||||
if self.delegation_id:
|
||||
self.delegation_id.sudo().write({
|
||||
if self._context.get('active_model')=='request.vehicle.authorization':
|
||||
delegation_id = self.env[self._context.get('active_model')].browse(self._context.get('active_id'))
|
||||
delegation_id.sudo().write({
|
||||
'state': 'refused',
|
||||
'reason': self.reason
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue