-
-
Notifications
You must be signed in to change notification settings - Fork 670
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by pedrobaeza
- Loading branch information
Showing
28 changed files
with
2,845 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
========================== | ||
Employee Calendar Planning | ||
========================== | ||
|
||
.. | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! source digest: sha256:284506a493efa30b083dbb0cfa7dec6704dd8d03c0def4a8747d89b7d55d2065 | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png | ||
:target: https://odoo-community.org/page/development-status | ||
:alt: Beta | ||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png | ||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html | ||
:alt: License: AGPL-3 | ||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github | ||
:target: https://github.com/OCA/hr/tree/17.0/hr_employee_calendar_planning | ||
:alt: OCA/hr | ||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
:target: https://translation.odoo-community.org/projects/hr-17-0/hr-17-0-hr_employee_calendar_planning | ||
:alt: Translate me on Weblate | ||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png | ||
:target: https://runboat.odoo-community.org/builds?repo=OCA/hr&target_branch=17.0 | ||
:alt: Try me on Runboat | ||
|
||
|badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
||
This module allows to manage employee working time with profiles by date | ||
intervals. | ||
|
||
The profiles are regular working time calendars, but they are treated as | ||
master ones here, allowing you to compose complexes working times by | ||
dates. | ||
|
||
Under the hook, a unique working time is created for each employee with | ||
the proper composition for not affecting the rest of the functionality | ||
linked to this model. | ||
|
||
**Table of contents** | ||
|
||
.. contents:: | ||
:local: | ||
|
||
Installation | ||
============ | ||
|
||
During the installation of the module, current working times are split | ||
by start/end dates for having consistent data, and the potential new | ||
composed calendar planning is saved instead on the employee. | ||
|
||
Configuration | ||
============= | ||
|
||
1. Go to *Employees > Employees*. | ||
2. Open or create a new one. | ||
3. On the "Work Information" tab, fill the section "Working Hours" with: | ||
|
||
- Starting date (optional). | ||
- Ending date (optional). | ||
- Working time to apply during that date interval. | ||
|
||
Known issues / Roadmap | ||
====================== | ||
|
||
- Add a wizard for generating next year calendar planning based on | ||
current one in batch. | ||
- Add constraint for avoiding planning lines overlapping. | ||
- Avoid the regeneration of whole private calendars each time a change | ||
is detected. | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/hr/issues>`_. | ||
In case of trouble, please check there if your issue has already been reported. | ||
If you spotted it first, help us to smash it by providing a detailed and welcomed | ||
`feedback <https://github.com/OCA/hr/issues/new?body=module:%20hr_employee_calendar_planning%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
Credits | ||
======= | ||
|
||
Authors | ||
------- | ||
|
||
* Tecnativa | ||
|
||
Contributors | ||
------------ | ||
|
||
- `Tecnativa <https://www.tecnativa.com>`__: | ||
|
||
- Pedro M. Baeza | ||
- Víctor Martínez | ||
|
||
- `Creu Blanca <https://www.creu-blanca.es/>`__: | ||
|
||
- Jaime Arroyo | ||
|
||
- `ForgeFlow <https://www.forgeflow.com/>`__: | ||
|
||
- Jordi Ballester Alomar ([email protected]) | ||
- Nattapong W. <[email protected]> | ||
|
||
- `PeGon <https://www.pegon.ch>`__: | ||
|
||
- Pedro Evaristo Gonzalez Sanchez <[email protected]> | ||
|
||
Maintainers | ||
----------- | ||
|
||
This module is maintained by the OCA. | ||
|
||
.. image:: https://odoo-community.org/logo.png | ||
:alt: Odoo Community Association | ||
:target: https://odoo-community.org | ||
|
||
OCA, or the Odoo Community Association, is a nonprofit organization whose | ||
mission is to support the collaborative development of Odoo features and | ||
promote its widespread use. | ||
|
||
.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px | ||
:target: https://github.com/victoralmau | ||
:alt: victoralmau | ||
.. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px | ||
:target: https://github.com/pedrobaeza | ||
:alt: pedrobaeza | ||
|
||
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__: | ||
|
||
|maintainer-victoralmau| |maintainer-pedrobaeza| | ||
|
||
This module is part of the `OCA/hr <https://github.com/OCA/hr/tree/17.0/hr_employee_calendar_planning>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
|
||
from . import models | ||
from .hooks import post_init_hook |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Copyright 2019 Tecnativa - Pedro M. Baeza | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
{ | ||
"name": "Employee Calendar Planning", | ||
"version": "17.0.1.0.0", | ||
"category": "Human Resources", | ||
"website": "https://github.com/OCA/hr", | ||
"author": "Tecnativa,Odoo Community Association (OCA)", | ||
"license": "AGPL-3", | ||
"installable": True, | ||
"depends": ["hr"], | ||
"data": [ | ||
"security/ir.model.access.csv", | ||
"views/hr_employee_views.xml", | ||
"views/resource_calendar_views.xml", | ||
], | ||
"post_init_hook": "post_init_hook", | ||
"maintainers": ["victoralmau", "pedrobaeza"], | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# Copyright 2019 Tecnativa - Pedro M. Baeza | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
|
||
from collections import defaultdict | ||
|
||
|
||
def post_init_hook(env, employees=None): | ||
"""Split current calendars by date ranges and assign new ones for | ||
having proper initial data. | ||
""" | ||
if not employees: | ||
employees = env["hr.employee"].search([]) | ||
calendars = employees.mapped("resource_calendar_id") | ||
calendar_obj = env["resource.calendar"] | ||
line_obj = env["resource.calendar.attendance"] | ||
groups = line_obj.read_group( | ||
[("calendar_id", "in", calendars.ids)], | ||
["calendar_id", "date_from", "date_to"], | ||
["calendar_id", "date_from:day", "date_to:day"], | ||
lazy=False, | ||
) | ||
calendar_mapping = defaultdict(list) | ||
for group in groups: | ||
calendar = calendar_obj.browse(group["calendar_id"][0]) | ||
lines = line_obj.search(group["__domain"]) | ||
if len(calendar.attendance_ids) == len(lines): | ||
# Don't alter calendar, as it's the same | ||
new_calendar = calendar | ||
else: | ||
name = calendar.name + f" {lines[0].date_from}-{lines[0].date_to}" | ||
attendances = [] | ||
for line in lines: | ||
data = line.copy_data({"date_from": False, "date_to": False})[0] | ||
data.pop("calendar_id") | ||
attendances.append((0, 0, data)) | ||
new_calendar = calendar_obj.create( | ||
{"name": name, "attendance_ids": attendances} | ||
) | ||
calendar_mapping[calendar].append( | ||
(lines[0].date_from, lines[0].date_to, new_calendar), | ||
) | ||
for employee in employees.filtered("resource_calendar_id"): | ||
calendar_lines = [] | ||
for data in calendar_mapping[employee.resource_calendar_id]: | ||
calendar_lines.append( | ||
( | ||
0, | ||
0, | ||
{ | ||
"date_start": data[0], | ||
"date_end": data[1], | ||
"calendar_id": data[2].id, | ||
}, | ||
) | ||
) | ||
# Extract employee's existing leaves so they are passed to the new | ||
# automatic calendar. | ||
leaves = employee.resource_calendar_id.leave_ids.filtered( | ||
lambda x, e=employee: x.resource_id == e.resource_id | ||
) | ||
employee.calendar_ids = calendar_lines | ||
employee.resource_calendar_id.active = False | ||
# Now the automatic calendar has been created, so we link the | ||
# leaves to that one so they count correctly. | ||
leaves.write({"calendar_id": employee.resource_calendar_id.id}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * hr_employee_calendar_planning | ||
# | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 12.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"PO-Revision-Date: 2022-03-21 14:17+0000\n" | ||
"Last-Translator: Noel estudillo <[email protected]>\n" | ||
"Language-Team: none\n" | ||
"Language: ca\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: \n" | ||
"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
"X-Generator: Weblate 4.3.2\n" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#. odoo-python | ||
#: code:addons/hr_employee_calendar_planning/models/resource_calendar.py:0 | ||
#, python-format | ||
msgid "" | ||
"%(item_name)s is used in %(total_items)s employee(s) related to another " | ||
"company." | ||
msgstr "" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#. odoo-python | ||
#: code:addons/hr_employee_calendar_planning/models/resource_calendar.py:0 | ||
#, python-format | ||
msgid "" | ||
"%(item_name)s is used in %(total_items)s employee(s).You should change them " | ||
"first." | ||
msgstr "" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_resource_calendar__active | ||
msgid "Active" | ||
msgstr "Actiu" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_resource_calendar__auto_generate | ||
msgid "Auto Generate" | ||
msgstr "Generació automàtica" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#. odoo-python | ||
#: code:addons/hr_employee_calendar_planning/models/hr_employee.py:0 | ||
#, python-format | ||
msgid "Auto generated calendar for employee" | ||
msgstr "Horari autogenerat per a l'empleat" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee__calendar_ids | ||
msgid "Calendar planning" | ||
msgstr "Pla d'horari" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__company_id | ||
msgid "Company" | ||
msgstr "Companyia" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__create_uid | ||
msgid "Created by" | ||
msgstr "Creat per" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__create_date | ||
msgid "Created on" | ||
msgstr "Creat el" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.constraint,message:hr_employee_calendar_planning.constraint_hr_employee_calendar_date_consistency | ||
msgid "Date end should be higher than date start" | ||
msgstr "La data de fi ha de ser més gran que la d'inici" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__display_name | ||
msgid "Display Name" | ||
msgstr "Nom a mostrar" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model,name:hr_employee_calendar_planning.model_hr_employee | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__employee_id | ||
msgid "Employee" | ||
msgstr "Empleat" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model,name:hr_employee_calendar_planning.model_hr_employee_calendar | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_resource_calendar__employee_calendar_ids | ||
msgid "Employee Calendar" | ||
msgstr "Horari de l'empleat" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model_terms:ir.ui.view,arch_db:hr_employee_calendar_planning.resource_calendar_form | ||
msgid "Employee Calendars" | ||
msgstr "" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__date_end | ||
msgid "End Date" | ||
msgstr "Data de finalització" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__id | ||
msgid "ID" | ||
msgstr "ID" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,help:hr_employee_calendar_planning.field_resource_calendar__active | ||
msgid "" | ||
"If the active field is set to false, it will allow you to hide the Working " | ||
"Time without removing it." | ||
msgstr "" | ||
"Si el camp actiu està definit com a fals, us permetrà ocultar el temps de " | ||
"treball sense eliminar-lo." | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar____last_update | ||
msgid "Last Modified on" | ||
msgstr "Darrera modificació el" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__write_uid | ||
msgid "Last Updated by" | ||
msgstr "Darrera modificació per" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__write_date | ||
msgid "Last Updated on" | ||
msgstr "Darrera modificació el" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model,name:hr_employee_calendar_planning.model_resource_calendar | ||
msgid "Resource Working Time" | ||
msgstr "Temps de treball" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__date_start | ||
msgid "Start Date" | ||
msgstr "Data d'Inici" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__calendar_id | ||
msgid "Working Time" | ||
msgstr "Temps de treball" | ||
|
||
#. module: hr_employee_calendar_planning | ||
#. odoo-python | ||
#: code:addons/hr_employee_calendar_planning/models/hr_employee.py:0 | ||
#, python-format | ||
msgid "You can not create employees without any calendar." | ||
msgstr "" | ||
|
||
#, python-format | ||
#~ msgid "%s is used in %s employee(s) related to another company." | ||
#~ msgstr "%s s'utilitza en %s empleats relacionats amb una altra empresa." | ||
|
||
#, python-format | ||
#~ msgid "%s is used in %s employee(s). You should change them first." | ||
#~ msgstr "%s s'utilitza en %s empleat(s). Primer els hauries de canviar." |
Oops, something went wrong.