From 77c7b68a9b7970f64f3f90e854ef45f3cc073e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 Mar 2018 15:34:14 +0200 Subject: [PATCH] [IMP] fleet: improve activity management on fleet contract model This commit improves fleet contracts management through a better integration of activities and addition of automated activities. Several things are done in this commit : * fleet vehicle log contract does not inherit from mail.activity.mixin. This commit adds the inherit so that fleet users and managers can now schedule and manage activities on vehicle contracts. This will help them in their daily job; * automatic activities generation is added when contracts are nearly expired and renewal is required; * a menu to configure activity types is added. Indeed fleet managers should be able to see and configure activity types related to their job; * filters are added to be able to use the systray and to filter the kanban view based on activities Having automated activities allow to replace some messages posted on the contract. Indeed currently there are messages posted on vehicles about contracts to renew. As we now have automated activities on contracts to remind assigned people to renew it the log can be safely removed. It will lessen noise generated on chatter. --- addons/fleet/__manifest__.py | 2 ++ addons/fleet/data/mail_data.xml | 10 ++++++++++ addons/fleet/models/fleet_vehicle_cost.py | 16 +++++----------- addons/fleet/security/ir.model.access.csv | 1 + addons/fleet/views/fleet_vehicle_cost_views.xml | 10 ++++++++++ addons/fleet/views/fleet_vehicle_views.xml | 2 +- addons/fleet/views/mail_activity_views.xml | 17 +++++++++++++++++ 7 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 addons/fleet/data/mail_data.xml create mode 100644 addons/fleet/views/mail_activity_views.xml diff --git a/addons/fleet/__manifest__.py b/addons/fleet/__manifest__.py index 623f655e995..646e28b1294 100644 --- a/addons/fleet/__manifest__.py +++ b/addons/fleet/__manifest__.py @@ -35,8 +35,10 @@ Main Features 'views/fleet_vehicle_views.xml', 'views/fleet_vehicle_cost_views.xml', 'views/fleet_board_view.xml', + 'views/mail_activity_views.xml', 'data/fleet_cars_data.xml', 'data/fleet_data.xml', + 'data/mail_data.xml', ], 'demo': ['data/fleet_demo.xml'], diff --git a/addons/fleet/data/mail_data.xml b/addons/fleet/data/mail_data.xml new file mode 100644 index 00000000000..a8098b50f6c --- /dev/null +++ b/addons/fleet/data/mail_data.xml @@ -0,0 +1,10 @@ + + + + + Contract to Renew + fa-car + + + + diff --git a/addons/fleet/models/fleet_vehicle_cost.py b/addons/fleet/models/fleet_vehicle_cost.py index 76e3b713b2a..b8b3602f851 100644 --- a/addons/fleet/models/fleet_vehicle_cost.py +++ b/addons/fleet/models/fleet_vehicle_cost.py @@ -71,7 +71,7 @@ class FleetVehicleCost(models.Model): class FleetVehicleLogContract(models.Model): - _inherit = ['mail.thread'] + _inherit = ['mail.thread', 'mail.activity.mixin'] _inherits = {'fleet.vehicle.cost': 'cost_id'} _name = 'fleet.vehicle.log.contract' _description = 'Contract information on a vehicle' @@ -263,17 +263,12 @@ class FleetVehicleLogContract(models.Model): date_today = fields.Date.from_string(fields.Date.today()) in_fifteen_days = fields.Date.to_string(date_today + relativedelta(days=+15)) nearly_expired_contracts = self.search([('state', '=', 'open'), ('expiration_date', '<', in_fifteen_days)]) - res = {} - for contract in nearly_expired_contracts: - if contract.vehicle_id.id in res: - res[contract.vehicle_id.id] += 1 - else: - res[contract.vehicle_id.id] = 1 - Vehicle = self.env['fleet.vehicle'] - for vehicle, value in res.items(): - Vehicle.browse(vehicle).message_post(body=_('%s contract(s) will expire soon and should be renewed and/or closed!') % value) nearly_expired_contracts.write({'state': 'diesoon'}) + for contract in nearly_expired_contracts.filtered(lambda contract: contract.user_id): + contract.activity_schedule( + 'fleet.mail_act_fleet_contract_to_renew', contract.expiration_date, + user_id=contract.user_id.id) expired_contracts = self.search([('state', '!=', 'expired'), ('expiration_date', '<',fields.Date.today() )]) expired_contracts.write({'state': 'expired'}) @@ -284,7 +279,6 @@ class FleetVehicleLogContract(models.Model): now_running_contracts = self.search([('state', '=', 'futur'), ('start_date', '<=', fields.Date.today())]) now_running_contracts.write({'state': 'open'}) - @api.model def run_scheduler(self): self.scheduler_manage_auto_costs() self.scheduler_manage_contract_expiration() diff --git a/addons/fleet/security/ir.model.access.csv b/addons/fleet/security/ir.model.access.csv index bc2901071ad..78090d174e0 100644 --- a/addons/fleet/security/ir.model.access.csv +++ b/addons/fleet/security/ir.model.access.csv @@ -19,3 +19,4 @@ fleet_vehicle_log_services_access_right,fleet_vehicle_log_services_access_right, fleet_vehicle_log_contract_access_right,fleet_vehicle_log_contract_access_right,model_fleet_vehicle_log_contract,fleet_group_manager,1,1,1,1 fleet_service_type_access_right,fleet_service_type_access_right,model_fleet_service_type,fleet_group_manager,1,1,1,1 access_fleet_vehicle_cost,access_fleet_vehicle_cost,model_fleet_vehicle_cost,fleet_group_manager,1,1,1,1 +access_mail_activity_type_fleet_manager,mail.activity.type.fleet.manager,mail.model_mail_activity_type,fleet.fleet_group_manager,1,1,1,1 diff --git a/addons/fleet/views/fleet_vehicle_cost_views.xml b/addons/fleet/views/fleet_vehicle_cost_views.xml index 72c3f17065a..e62617e98b3 100644 --- a/addons/fleet/views/fleet_vehicle_cost_views.xml +++ b/addons/fleet/views/fleet_vehicle_cost_views.xml @@ -251,6 +251,7 @@
+
@@ -337,6 +338,15 @@ + + + + diff --git a/addons/fleet/views/fleet_vehicle_views.xml b/addons/fleet/views/fleet_vehicle_views.xml index 6ae5fc92316..0dc0463c778 100644 --- a/addons/fleet/views/fleet_vehicle_views.xml +++ b/addons/fleet/views/fleet_vehicle_views.xml @@ -434,6 +434,6 @@ - + diff --git a/addons/fleet/views/mail_activity_views.xml b/addons/fleet/views/mail_activity_views.xml new file mode 100644 index 00000000000..98819009f1d --- /dev/null +++ b/addons/fleet/views/mail_activity_views.xml @@ -0,0 +1,17 @@ + + + + + Activity Types + mail.activity.type + form + tree,form + ['|', ('res_model_id', '=', False), ('res_model_id.model', '=', 'fleet.vehicle.log.contract')] + {'default_res_model': 'fleet.vehicle.log.contract'} + + + \ No newline at end of file