diff --git a/addons/hr_contract/report/hr_contract_history_report_views.xml b/addons/hr_contract/report/hr_contract_history_report_views.xml
index ed1c5b47ba2..11a1f6c8e02 100644
--- a/addons/hr_contract/report/hr_contract_history_report_views.xml
+++ b/addons/hr_contract/report/hr_contract_history_report_views.xml
@@ -139,8 +139,8 @@
hr.contract.history
- Hours
+ Hours
@@ -78,7 +78,7 @@
-
+
@@ -86,6 +86,16 @@
+
+ hr.work.entry.pivot
+ hr.work.entry
+
+
+
+
+
+
+
hr.work.entry.filter
hr.work.entry
diff --git a/addons/hr_work_entry_contract/static/src/js/work_entries_controller_mixin.js b/addons/hr_work_entry_contract/static/src/js/work_entries_controller_mixin.js
index f691a4cd1eb..7e9d1f88857 100644
--- a/addons/hr_work_entry_contract/static/src/js/work_entries_controller_mixin.js
+++ b/addons/hr_work_entry_contract/static/src/js/work_entries_controller_mixin.js
@@ -67,7 +67,7 @@ odoo.define('hr_work_entry_contract.WorkEntryControllerMixin', function(require)
/*
Private
*/
- _renderWorkEntryButtons: function() {
+ _renderWorkEntryButtons: function() {
return $('').append(QWeb.render('hr_work_entry.work_entry_button', {
button_text: _t("Regenerate Work Entries"),
event_class: 'btn-regenerate-work-entries',
@@ -88,11 +88,15 @@ odoo.define('hr_work_entry_contract.WorkEntryControllerMixin', function(require)
},
_regenerateWorkEntries: function () {
+ const all_rows = Object.values(this.model.allRows);
+ const only_employee = all_rows.length === 1 ? all_rows[0].resId : null;
this.do_action('hr_work_entry_contract.hr_work_entry_regeneration_wizard_action', {
additional_context: {
+ default_employee_id: only_employee,
date_start: time.date_to_str(this.firstDay),
date_end: time.date_to_str(this.lastDay),
},
+ on_close: this.reload.bind(this),
});
},
diff --git a/addons/hr_work_entry_contract/wizard/hr_work_entry_regeneration_wizard.py b/addons/hr_work_entry_contract/wizard/hr_work_entry_regeneration_wizard.py
index e39df799d34..27e043c7c48 100644
--- a/addons/hr_work_entry_contract/wizard/hr_work_entry_regeneration_wizard.py
+++ b/addons/hr_work_entry_contract/wizard/hr_work_entry_regeneration_wizard.py
@@ -4,6 +4,7 @@
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
+from dateutil.relativedelta import relativedelta
class HrWorkEntryRegenerationWizard(models.TransientModel):
_name = 'hr.work.entry.regeneration.wizard'
@@ -14,13 +15,19 @@ class HrWorkEntryRegenerationWizard(models.TransientModel):
latest_available_date = fields.Date('Latest date', compute='_compute_latest_available_date')
latest_available_date_message = fields.Char(readonly=True, store=False, default='')
date_from = fields.Date('From', required=True, default=lambda self: self.env.context.get('date_start'))
- date_to = fields.Date('To', required=True, default=lambda self: self.env.context.get('date_end'))
+ date_to = fields.Date('To', required=True, compute='_compute_date_to', store=True,
+ readonly=False, default=lambda self: self.env.context.get('date_end'))
employee_id = fields.Many2one('hr.employee', 'Employee', required=True)
validated_work_entry_ids = fields.Many2many('hr.work.entry', string='Work Entries Within Interval',
compute='_compute_validated_work_entry_ids')
search_criteria_completed = fields.Boolean(compute='_compute_search_criteria_completed')
valid = fields.Boolean(compute='_compute_valid')
+ @api.depends('date_from')
+ def _compute_date_to(self):
+ for wizard in self:
+ wizard.date_to = wizard.date_from + relativedelta(months=+1, day=1, days=-1)
+
@api.depends('employee_id')
def _compute_earliest_available_date(self):
for wizard in self:
@@ -104,5 +111,3 @@ class HrWorkEntryRegenerationWizard(models.TransientModel):
write_vals = {field: False for field in self._work_entry_fields_to_nullify()}
work_entries.write(write_vals)
self.employee_id.generate_work_entries(date_from, date_to, True)
- action = self.env["ir.actions.actions"]._for_xml_id('hr_work_entry.hr_work_entry_action')
- return action