diff --git a/beesdoo_shift/__manifest__.py b/beesdoo_shift/__manifest__.py
index a14dcfa..e6fb1fe 100644
--- a/beesdoo_shift/__manifest__.py
+++ b/beesdoo_shift/__manifest__.py
@@ -37,6 +37,7 @@
"wizard/extension.xml",
"wizard/holiday.xml",
"wizard/temporary_exemption.xml",
+ "wizard/generate_missing_attendance_sheets.xml",
],
'demo': [
"demo/workers.xml",
diff --git a/beesdoo_shift/models/attendance_sheet.py b/beesdoo_shift/models/attendance_sheet.py
index 85bebda..64869a3 100644
--- a/beesdoo_shift/models/attendance_sheet.py
+++ b/beesdoo_shift/models/attendance_sheet.py
@@ -597,7 +597,6 @@ class AttendanceSheet(models.Model):
defined from corresponding CRON time interval.
"""
- time_ranges = set()
tasks = self.env["beesdoo.shift.shift"]
sheets = self.env["beesdoo.shift.sheet"]
current_time = datetime.now()
diff --git a/beesdoo_shift/views/res_config_settings_view.xml b/beesdoo_shift/views/res_config_settings_view.xml
index a715521..55ed7df 100644
--- a/beesdoo_shift/views/res_config_settings_view.xml
+++ b/beesdoo_shift/views/res_config_settings_view.xml
@@ -96,6 +96,13 @@
sequence="21"
/>
+
+
+ Generate missing past attendance sheets
+ beesdoo.shift.generate_missing_attendance_sheets
+ form
+
+
Day Number
beesdoo.shift.daynumber
diff --git a/beesdoo_shift/wizard/__init__.py b/beesdoo_shift/wizard/__init__.py
index ea73734..f2f6720 100644
--- a/beesdoo_shift/wizard/__init__.py
+++ b/beesdoo_shift/wizard/__init__.py
@@ -6,3 +6,4 @@ from . import extension
from . import holiday
from . import temporary_exemption
from . import validate_attendance_sheet
+from . import generate_missing_attendance_sheets
diff --git a/beesdoo_shift/wizard/generate_missing_attendance_sheets.py b/beesdoo_shift/wizard/generate_missing_attendance_sheets.py
new file mode 100644
index 0000000..8954945
--- /dev/null
+++ b/beesdoo_shift/wizard/generate_missing_attendance_sheets.py
@@ -0,0 +1,57 @@
+from odoo import models, fields, api, _
+from odoo.exceptions import UserError, ValidationError
+
+from datetime import datetime
+
+
+class GenerateMissingAttendanceSheets(models.TransientModel):
+ """
+ Generate missing past sheets
+ """
+
+ _name = "beesdoo.shift.generate_missing_attendance_sheets"
+
+ date_start = fields.Datetime("Start date", required=True)
+ date_end = fields.Datetime("End date", required=True)
+
+ @api.multi
+ def generate_missing_attendance_sheets(self):
+ self.ensure_one()
+ tasks = self.env["beesdoo.shift.shift"]
+ sheets = self.env["beesdoo.shift.sheet"]
+
+ tasks = tasks.search(
+ [
+ ("start_time", ">", self.date_start),
+ ("start_time", "<", self.date_end),
+ ]
+ )
+
+ # We should not loop on task with same start_time and end_time
+ # To improve performances
+ for task in tasks:
+ start_time = task.start_time
+ end_time = task.end_time
+ sheet = sheets.search(
+ [("start_time", "=", start_time), ("end_time", "=", end_time),]
+ )
+
+ if not sheet:
+ sheets |= sheets.create(
+ {"start_time": start_time, "end_time": end_time}
+ )
+
+ return {
+ "name": _("Generated Missing Sheets"),
+ "type": "ir.actions.act_window",
+ "view_type": "form",
+ "view_mode": "tree,form",
+ "res_model": "beesdoo.shift.sheet",
+ "target": "current",
+ "domain": [("id", "in", sheets.ids)],
+ }
+
+ @api.constrains("date_start", "date_end")
+ def constrains_dates(self):
+ if self.date_start > datetime.now() or self.date_end > datetime.now():
+ raise UserError(_("Only past attendance sheets can be generated"))
diff --git a/beesdoo_shift/wizard/generate_missing_attendance_sheets.xml b/beesdoo_shift/wizard/generate_missing_attendance_sheets.xml
new file mode 100644
index 0000000..a37fdae
--- /dev/null
+++ b/beesdoo_shift/wizard/generate_missing_attendance_sheets.xml
@@ -0,0 +1,35 @@
+
+
+ Generate Missing Attendance Sheets
+ beesdoo.shift.generate_missing_attendance_sheets
+
+
+
+
+
+
+
+
+