Skip to content

Commit 738f4dd

Browse files
[16.0][ADD] hr_attendance_leave_report: In Attendances new menu option: "Attendances And Leaves".
1 parent a8e8f42 commit 738f4dd

22 files changed

+2300
-0
lines changed

hr_attendance_leave_report/README.rst

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
2+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
3+
:alt: License: AGPL-3
4+
5+
==========================
6+
Hr attendance leave report
7+
==========================
8+
9+
* For users in Attendances new menu option: "User Attendances And Absences", the
10+
user can see their own attendances and absences.
11+
* For manager in Attendances, Reporting, new menu option: "Attendances And
12+
Absences", for see all users attendances and Absences.
13+
* With this new option, the worker's information will be displayed, with days
14+
worked, holidays, and absences.
15+
* As a condition... that the worker has an assigned contract.
16+
17+
18+
Bug Tracker
19+
===========
20+
21+
Bugs are tracked on `GitHub Issues
22+
<https://github.com/avanzosc/hr-addons/issues>`_. In case of trouble,
23+
please check there if your issue has already been reported. If you spotted
24+
it first, help us smash it by providing detailed and welcomed feedback.
25+
26+
Do not contact contributors directly about support or help with technical issues.
27+
28+
Credits
29+
=======
30+
31+
Contributors
32+
------------
33+
34+
* Ana Juaristi <anajuaristi@avanzosc.es>
35+
* Alfredo de la Fuente <alfredodelafuente@avanzosc.es>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from . import models
2+
from odoo import api, SUPERUSER_ID
3+
4+
5+
def _post_install_put_dates_without_hour(cr, registry):
6+
"""
7+
This method will set the production cost on already done manufacturing orders.
8+
"""
9+
env = api.Environment(cr, SUPERUSER_ID, {})
10+
admin_user = env.ref("base.user_admin")
11+
env["hr.attendance"].with_user(admin_user)._put_dates_without_hour()
12+
env["resource.calendar.leaves"].with_user(admin_user)._put_dates_without_hour()
13+
env["hr.leave"].with_user(admin_user)._put_dates_without_hour()
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Copyright 2024 Alfredo de la Fuente - AvanzOSC
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
3+
{
4+
"name": "Hr Attendance Leave Report",
5+
"version": "16.0.1.0.0",
6+
"category": "Human Resources/Attendances",
7+
"license": "AGPL-3",
8+
"author": "AvanzOSC",
9+
"website": "https://github.com/avanzosc/hr-addons",
10+
"depends": ["contract", "resource", "hr_attendance", "hr_holidays"],
11+
"data": [
12+
"security/ir.model.access.csv",
13+
"security/hr_attendance_leave_report_security.xml",
14+
"views/hr_attendance_views.xml",
15+
"views/hr_attendance_leave_views.xml",
16+
],
17+
"installable": True,
18+
"post_init_hook": "_post_install_put_dates_without_hour",
19+
}

hr_attendance_leave_report/_common.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Copyright 2024 Alfredo de la Fuente - AvanzOSC
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
3+
from datetime import datetime
4+
5+
import pytz
6+
from dateutil.relativedelta import relativedelta
7+
8+
9+
def _get_local_date(date_to_convert, tz="UTC"):
10+
if isinstance(date_to_convert, str):
11+
date_to_convert = datetime.strptime(date_to_convert, "%Y-%m-%d %H:%M:%S")
12+
local_tz = pytz.timezone(tz)
13+
if date_to_convert.tzinfo is None:
14+
date_to_convert = pytz.utc.localize(date_to_convert)
15+
return date_to_convert.astimezone(local_tz)
16+
17+
18+
def _catch_employees_dates_to_treat(
19+
employee_dates, employee, date_from, date_to, today_date
20+
):
21+
date_from = date_from
22+
date_to = date_to
23+
while date_from <= date_to:
24+
found_company_employee = False
25+
for employee_date in employee_dates:
26+
if employee_date.get("employee") == employee:
27+
found_company_employee = True
28+
if date_from not in employee_date.get("work_date"):
29+
employee_date["work_date"].append(date_from)
30+
if not found_company_employee:
31+
vals = {"employee": employee, "work_date": [date_from]}
32+
employee_dates.append(vals)
33+
date_from = date_from + relativedelta(days=1)
34+
return employee_dates
Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * hr_attendance_leave_report
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 16.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"POT-Creation-Date: 2024-10-09 11:41+0000\n"
10+
"PO-Revision-Date: 2024-10-09 11:41+0000\n"
11+
"Last-Translator: \n"
12+
"Language-Team: \n"
13+
"MIME-Version: 1.0\n"
14+
"Content-Type: text/plain; charset=UTF-8\n"
15+
"Content-Transfer-Encoding: \n"
16+
"Plural-Forms: \n"
17+
18+
#. module: hr_attendance_leave_report
19+
#: model:ir.model,name:hr_attendance_leave_report.model_hr_attendance
20+
msgid "Attendance"
21+
msgstr "Assistència"
22+
23+
#. module: hr_attendance_leave_report
24+
#: model:ir.ui.menu,name:hr_attendance_leave_report.menu_hr_attendance2_report
25+
msgid "Attendances"
26+
msgstr ""
27+
28+
#. module: hr_attendance_leave_report
29+
#: model:ir.actions.act_window,name:hr_attendance_leave_report.action_hr_attendance_leave_manager
30+
#: model:ir.model,name:hr_attendance_leave_report.model_hr_attendance_leave
31+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_employee__attendance_leave_ids
32+
#: model:ir.ui.menu,name:hr_attendance_leave_report.menu_hr_attendance_leave_manager
33+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_calendar_view
34+
msgid "Attendances And Absences"
35+
msgstr ""
36+
37+
#. module: hr_attendance_leave_report
38+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance__check_in_without_hour
39+
msgid "Check In Without Hour"
40+
msgstr ""
41+
42+
#. module: hr_attendance_leave_report
43+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance__check_out_without_hour
44+
msgid "Check Out Without Hour"
45+
msgstr ""
46+
47+
#. module: hr_attendance_leave_report
48+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__company_id
49+
msgid "Company"
50+
msgstr ""
51+
52+
#. module: hr_attendance_leave_report
53+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__contract_id
54+
msgid "Contract"
55+
msgstr ""
56+
57+
#. module: hr_attendance_leave_report
58+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__create_uid
59+
msgid "Created by"
60+
msgstr ""
61+
62+
#. module: hr_attendance_leave_report
63+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__create_date
64+
msgid "Created on"
65+
msgstr ""
66+
67+
#. module: hr_attendance_leave_report
68+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_search_view
69+
msgid "Day Type"
70+
msgstr ""
71+
72+
#. module: hr_attendance_leave_report
73+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__day_type
74+
msgid "Day type"
75+
msgstr ""
76+
77+
#. module: hr_attendance_leave_report
78+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__department_id
79+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_search_view
80+
msgid "Department"
81+
msgstr ""
82+
83+
#. module: hr_attendance_leave_report
84+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__display_name
85+
msgid "Display Name"
86+
msgstr ""
87+
88+
#. module: hr_attendance_leave_report
89+
#: model:ir.model,name:hr_attendance_leave_report.model_hr_employee
90+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__employee_id
91+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_search_view
92+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_tree_view
93+
msgid "Employee"
94+
msgstr "Empleat"
95+
96+
#. module: hr_attendance_leave_report
97+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_leave__date_to_without_hour
98+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_resource_calendar_leaves__date_to_without_hour
99+
msgid "End Date Without Hour"
100+
msgstr ""
101+
102+
#. module: hr_attendance_leave_report
103+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__extra_hours
104+
msgid "Extra hours"
105+
msgstr ""
106+
107+
#. module: hr_attendance_leave_report
108+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__calendar_leave_id
109+
msgid "Festive"
110+
msgstr ""
111+
112+
#. module: hr_attendance_leave_report
113+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_search_view
114+
msgid "Group By"
115+
msgstr ""
116+
117+
#. module: hr_attendance_leave_report
118+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__hours_to_work
119+
msgid "Hours To Work"
120+
msgstr ""
121+
122+
#. module: hr_attendance_leave_report
123+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__id
124+
msgid "ID"
125+
msgstr ""
126+
127+
#. module: hr_attendance_leave_report
128+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__is_normal_day
129+
msgid "Is Normal Day"
130+
msgstr ""
131+
132+
#. module: hr_attendance_leave_report
133+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave____last_update
134+
msgid "Last Modified on"
135+
msgstr ""
136+
137+
#. module: hr_attendance_leave_report
138+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__write_uid
139+
msgid "Last Updated by"
140+
msgstr ""
141+
142+
#. module: hr_attendance_leave_report
143+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__write_date
144+
msgid "Last Updated on"
145+
msgstr ""
146+
147+
#. module: hr_attendance_leave_report
148+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__leave_type_id
149+
msgid "Leave Type"
150+
msgstr ""
151+
152+
#. module: hr_attendance_leave_report
153+
#. odoo-python
154+
#: code:addons/hr_attendance_leave_report/models/hr_leave_type.py:0
155+
#, python-format
156+
msgid ""
157+
"Leave type: '%s', exists in any absence of a worker. You can disable this "
158+
"one, and create a new one."
159+
msgstr ""
160+
161+
#. module: hr_attendance_leave_report
162+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__non_remunerated_hours
163+
msgid "Non Remunerated Hours"
164+
msgstr ""
165+
166+
#. module: hr_attendance_leave_report
167+
#. odoo-python
168+
#: code:addons/hr_attendance_leave_report/models/hr_attendance_leave.py:0
169+
#: code:addons/hr_attendance_leave_report/models/hr_attendance_leave.py:0
170+
#, python-format
171+
msgid "Normal Day"
172+
msgstr ""
173+
174+
#. module: hr_attendance_leave_report
175+
#: model:ir.model.fields,help:hr_attendance_leave_report.field_hr_attendance_leave__user_id
176+
msgid "Related user name for the resource to manage its access."
177+
msgstr ""
178+
179+
#. module: hr_attendance_leave_report
180+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__remunerated_hours
181+
msgid "Remunerated Hours"
182+
msgstr ""
183+
184+
#. module: hr_attendance_leave_report
185+
#: model:ir.model,name:hr_attendance_leave_report.model_resource_calendar_leaves
186+
msgid "Resource Time Off Detail"
187+
msgstr "Detall del temps lliure dels recursos"
188+
189+
#. module: hr_attendance_leave_report
190+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_search_view
191+
msgid "Search Attendances And Absences"
192+
msgstr ""
193+
194+
#. module: hr_attendance_leave_report
195+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_leave__date_from_without_hour
196+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_resource_calendar_leaves__date_from_without_hour
197+
msgid "Start Date Without Hour"
198+
msgstr ""
199+
200+
#. module: hr_attendance_leave_report
201+
#: model:ir.model,name:hr_attendance_leave_report.model_hr_leave
202+
msgid "Time Off"
203+
msgstr "Absències"
204+
205+
#. module: hr_attendance_leave_report
206+
#: model:ir.model,name:hr_attendance_leave_report.model_hr_leave_type
207+
msgid "Time Off Type"
208+
msgstr "Tipus d'absència"
209+
210+
#. module: hr_attendance_leave_report
211+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_tree_view
212+
msgid "Total Extra Hours"
213+
msgstr ""
214+
215+
#. module: hr_attendance_leave_report
216+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_tree_view
217+
msgid "Total Hours To Work"
218+
msgstr ""
219+
220+
#. module: hr_attendance_leave_report
221+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_tree_view
222+
msgid "Total Non Remunerated Hours"
223+
msgstr ""
224+
225+
#. module: hr_attendance_leave_report
226+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_tree_view
227+
msgid "Total Remunerated Hours"
228+
msgstr ""
229+
230+
#. module: hr_attendance_leave_report
231+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_tree_view
232+
msgid "Total Worked Hours"
233+
msgstr ""
234+
235+
#. module: hr_attendance_leave_report
236+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__user_id
237+
msgid "User"
238+
msgstr ""
239+
240+
#. module: hr_attendance_leave_report
241+
#: model:ir.actions.act_window,name:hr_attendance_leave_report.action_hr_attendance_leave_user
242+
#: model:ir.ui.menu,name:hr_attendance_leave_report.menu_hr_attendance_leave
243+
msgid "User Attendances And Absences"
244+
msgstr ""
245+
246+
#. module: hr_attendance_leave_report
247+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__user_name
248+
msgid "User Name"
249+
msgstr ""
250+
251+
#. module: hr_attendance_leave_report
252+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__work_day
253+
#: model_terms:ir.ui.view,arch_db:hr_attendance_leave_report.hr_attendance_leave_search_view
254+
msgid "Work Day"
255+
msgstr ""
256+
257+
#. module: hr_attendance_leave_report
258+
#: model:ir.model.fields,field_description:hr_attendance_leave_report.field_hr_attendance_leave__worked_hours
259+
msgid "Worked hours"
260+
msgstr ""

0 commit comments

Comments
 (0)