Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[15.0][MIG] hr_employee_calendar_planning #1086

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
e81b25f
[ADD] hr_employee_calendar_planning: Employee Calendar Planning
pedrobaeza Mar 12, 2019
7ac3f1d
[UPD] README.rst
OCA-git-bot Mar 14, 2019
ae14ffa
[MIG] hr_employee_calendar_planning
Mar 15, 2019
84c7733
[UPD] README.rst
OCA-git-bot May 15, 2019
3dd8b49
[12.0][MIG] hr_employee_calendar_planning
May 28, 2019
d229ebf
[UPD] Update hr_employee_calendar_planning.pot
oca-travis May 29, 2019
e576155
[12.0][IMP] hr_employee_calendar_planning
Jun 5, 2019
a33b2a0
[UPD] Update hr_employee_calendar_planning.pot
oca-travis Jun 5, 2019
95929a9
[IMP] hr_employee_calendar_planning: black, isort, prettier
May 6, 2020
e2b1553
[13.0][MIG] hr_employee_calendar_planning
May 6, 2020
1a2c82c
[13.0][IMP] support for two_week calendar
May 7, 2020
b633e66
[UPD] Update hr_employee_calendar_planning.pot
oca-travis May 8, 2020
504e9ba
[UPD] README.rst
OCA-git-bot May 8, 2020
b704617
Update translation files
oca-transbot May 8, 2020
0e63d0d
[FIX] hr_employee_calendar_planning: link leaves
chienandalu Nov 5, 2019
e7892c7
hr_employee_calendar_planning 13.0.1.0.1
OCA-git-bot Jun 17, 2020
f4f929b
[UPD] Eficent -> ForgeFlow
MiquelRForgeFlow Sep 30, 2020
4a33bfd
[UPD] README.rst
OCA-git-bot Sep 30, 2020
65ecd89
[14.0][MIG] hr_employee_calendar_planning
aphon61bank Nov 12, 2020
5e76cb1
[UPD] Update hr_employee_calendar_planning.pot
oca-travis May 9, 2021
818d611
[UPD] README.rst
OCA-git-bot May 9, 2021
627d987
Added translation using Weblate (French)
Yvesldff May 14, 2021
ccea68d
Translated using Weblate (French)
Yvesldff May 14, 2021
52de1e9
[FIX] hr_employee_calendar_planning: Prevent disable resource.calenda…
victoralmau Jul 13, 2021
9bda277
[UPD] Update hr_employee_calendar_planning.pot
oca-travis Jul 16, 2021
c11ebbb
hr_employee_calendar_planning 14.0.1.0.2
OCA-git-bot Jul 16, 2021
094aeca
Update translation files
oca-transbot Jul 16, 2021
ca04357
[FIX] hr_employee_calendar_planning: Add check_company to calendar_id…
victoralmau Jul 27, 2021
fa87ee8
[UPD] Update hr_employee_calendar_planning.pot
oca-travis Jul 28, 2021
f528d16
hr_employee_calendar_planning 14.0.1.1.0
OCA-git-bot Jul 28, 2021
da12074
Update translation files
oca-transbot Jul 28, 2021
a7f4f9b
[FIX] hr_employee_calendar_planning: Force to auto generate calendar …
victoralmau Sep 8, 2021
c686828
[UPD] Update hr_employee_calendar_planning.pot
oca-travis Sep 8, 2021
c909ae7
[UPD] README.rst
OCA-git-bot Sep 8, 2021
4b3b6df
Update translation files
oca-transbot Sep 8, 2021
27363b2
[FIX] hr_employee_calendar_planning: Regenerate automatic calendar 2 …
victoralmau Oct 15, 2021
ec604ff
[FIX] hr_employee_calendar_planning: Regenerate the automatic calenda…
victoralmau Oct 18, 2021
4135dd4
[UPD] README.rst
OCA-git-bot Feb 15, 2022
b9cba13
Translated using Weblate (Catalan)
Noel000 Mar 21, 2022
0add05f
[FIX] hr_employee_calendar_planning: Prevent inconsistent company + A…
victoralmau Apr 11, 2022
3f8014e
[UPD] Update hr_employee_calendar_planning.pot
Apr 25, 2022
2a58ec9
hr_employee_calendar_planning 14.0.1.3.1
OCA-git-bot Apr 25, 2022
6380242
Update translation files
oca-transbot Apr 25, 2022
6d15a19
[FIX] hr_employee_calendar_planning: Avoid error with parent
luistorresm Oct 26, 2021
859195c
hr_employee_calendar_planning 14.0.1.4.0
OCA-git-bot Apr 26, 2022
abb7a64
Added translation using Weblate (German)
marylla May 11, 2022
4c9ca07
[IMP] hr_employee_calendar_planning: black, isort, prettier
pegonzalezspesol Jul 7, 2022
2e89948
[MIG] hr_employee_calendar_planning: Migration to 15.0
pegonzalezspesol Jul 7, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions hr_employee_calendar_planning/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
==========================
Employee Calendar Planning
==========================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/15.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-15-0/hr-15-0-hr_employee_calendar_planning
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/116/15.0
:alt: Try me on Runbot

|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
=============

#. Go to *Employees > Employees*.
#. Open or create a new one.
#. On the "Work Information" tab, fill the section "Calendar planning" 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 smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/hr/issues/new?body=module:%20hr_employee_calendar_planning%0Aversion:%2015.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]>

* `Pesol <https://www.pesol.es>`__:

* 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/15.0/hr_employee_calendar_planning>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions hr_employee_calendar_planning/__init__.py
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
15 changes: 15 additions & 0 deletions hr_employee_calendar_planning/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Employee Calendar Planning",
"version": "15.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"],
"post_init_hook": "post_init_hook",
"maintainers": ["victoralmau", "pedrobaeza"],
}
71 changes: 71 additions & 0 deletions hr_employee_calendar_planning/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from collections import defaultdict

from odoo import SUPERUSER_ID, api


def post_init_hook(cr, registry, employees=None):
"""Split current calendars by date ranges and assign new ones for
having proper initial data.
"""
env = api.Environment(cr, SUPERUSER_ID, {})
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 + " {}-{}".format(
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: x.resource_id == employee.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})
147 changes: 147 additions & 0 deletions hr_employee_calendar_planning/i18n/ca.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# 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
#: code:addons/hr_employee_calendar_planning/models/resource_calendar.py:0
#, 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."

#. module: hr_employee_calendar_planning
#: code:addons/hr_employee_calendar_planning/models/resource_calendar.py:0
#, 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."

#. 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
#: 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__display_name
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__display_name
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_resource_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
msgid "Employee Calendar"
msgstr "Horari de l'empleat"

#. 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__id
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar__id
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_resource_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____last_update
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_hr_employee_calendar____last_update
#: model:ir.model.fields,field_description:hr_employee_calendar_planning.field_resource_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
#: code:addons/hr_employee_calendar_planning/models/hr_employee.py:0
#, python-format
msgid "You can not create employees without any calendar."
msgstr ""
Loading