Elouan Le Bars
5 years ago
4 changed files with 0 additions and 118 deletions
-
1beesdoo_shift/__openerp__.py
-
1beesdoo_shift/wizard/__init__.py
-
80beesdoo_shift/wizard/generate_attendance_sheet.py
-
36beesdoo_shift/wizard/generate_attendance_sheet.xml
@ -1,80 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
from openerp import models, fields, api, exceptions, _ |
|
||||
|
|
||||
from datetime import date, datetime, timedelta |
|
||||
|
|
||||
|
|
||||
class GenerateAttendanceSheet(models.TransientModel): |
|
||||
_name = "beesdoo.shift.sheet.generate" |
|
||||
_description = "Use a selected time range to generate the corresponding attendance sheet." |
|
||||
|
|
||||
time_range = fields.Selection("_get_time_ranges", string="Hours") |
|
||||
|
|
||||
def _get_time_ranges(self): |
|
||||
time_ranges = set() |
|
||||
tasks = self.env["beesdoo.shift.shift"] |
|
||||
sheets = self.env["beesdoo.shift.sheet"] |
|
||||
current_time = datetime.now() |
|
||||
allowed_time_range = timedelta(minutes=45) |
|
||||
|
|
||||
tasks = tasks.search( |
|
||||
[ |
|
||||
("start_time", ">", str(current_time - allowed_time_range),), |
|
||||
("start_time", "<", str(current_time + allowed_time_range),), |
|
||||
] |
|
||||
) |
|
||||
|
|
||||
for task in tasks: |
|
||||
start_time = task.start_time |
|
||||
end_time = task.end_time |
|
||||
sheets = sheets.search( |
|
||||
[("start_time", "=", start_time), ("end_time", "=", end_time),] |
|
||||
) |
|
||||
|
|
||||
if not sheets: |
|
||||
start_time_dt = fields.Datetime.from_string(start_time) |
|
||||
start_time_dt = fields.Datetime.context_timestamp( |
|
||||
self, start_time_dt |
|
||||
) |
|
||||
end_time_dt = fields.Datetime.from_string(end_time) |
|
||||
end_time_dt = fields.Datetime.context_timestamp( |
|
||||
self, end_time_dt |
|
||||
) |
|
||||
|
|
||||
# We display contextualized time range |
|
||||
# but we save it according to UTC timezone |
|
||||
time_ranges.add( |
|
||||
( |
|
||||
start_time + "~" + end_time, |
|
||||
start_time_dt.strftime("%H:%M") |
|
||||
+ " - " |
|
||||
+ end_time_dt.strftime("%H:%M"), |
|
||||
) |
|
||||
) |
|
||||
return list(time_ranges) |
|
||||
|
|
||||
@api.multi |
|
||||
def button_generate(self): |
|
||||
self.ensure_one() |
|
||||
tasks = self.env["beesdoo.shift.shift"] |
|
||||
sheets = self.env["beesdoo.shift.sheet"] |
|
||||
if not self.time_range: |
|
||||
raise exceptions.UserError( |
|
||||
_("Please select a time time_range to generate the sheet.") |
|
||||
) |
|
||||
time_range = self.time_range.split("~") |
|
||||
if len(time_range) != 2: |
|
||||
raise exceptions.ValidationError( |
|
||||
_("Selection key has wrong format.") |
|
||||
) |
|
||||
sheet = sheets.create( |
|
||||
{"start_time": time_range[0], "end_time": time_range[1]} |
|
||||
) |
|
||||
|
|
||||
return { |
|
||||
"type": "ir.actions.act_window", |
|
||||
"res_model": "beesdoo.shift.sheet", |
|
||||
"res_id": sheet.id, |
|
||||
"view_type": "form", |
|
||||
"view_mode": "form", |
|
||||
} |
|
@ -1,36 +0,0 @@ |
|||||
<odoo> |
|
||||
<record model="ir.ui.view" id="generate_attendance_sheet_view_form"> |
|
||||
<field name="name">Generate an attendance sheet</field> |
|
||||
<field name="model">beesdoo.shift.sheet.generate</field> |
|
||||
<field name="arch" type="xml"> |
|
||||
<form> |
|
||||
<group> |
|
||||
<field name="time_range" /> |
|
||||
</group> |
|
||||
<footer> |
|
||||
<button type="object" name="button_generate" |
|
||||
string="Generate" class="oe_highlight" /> |
|
||||
<button special="cancel" string="Cancel" /> |
|
||||
</footer> |
|
||||
</form> |
|
||||
</field> |
|
||||
</record> |
|
||||
|
|
||||
<!-- Actions --> |
|
||||
|
|
||||
<act_window id="action_generate_sheet_wizard" |
|
||||
name="Generate a non-existing sheet" |
|
||||
res_model="beesdoo.shift.sheet.generate" |
|
||||
view_mode="form" |
|
||||
target="new" |
|
||||
/> |
|
||||
|
|
||||
<!-- Menu actions --> |
|
||||
|
|
||||
<menuitem id="menu_generate_sheet" |
|
||||
name="Generate a sheet" |
|
||||
parent="menu_sheet_top" |
|
||||
action="action_generate_sheet_wizard" |
|
||||
/> |
|
||||
|
|
||||
</odoo> |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue