Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
96 changes: 96 additions & 0 deletions resource_calendar_season/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
========================
Resource Calendar Season
========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:4d6a3cdf13ff4eb21c2f7410076545c5c25943c2164303780d93a6929966c7ce
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/resource_calendar_season
: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-resource_calendar_season
: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 lets a single working time (``resource.calendar``) behave
differently depending on the time of the year, using **recurring**
seasons defined by month, so they repeat automatically every year.

A *seasonal* calendar holds no working hours of its own. For each date
it delegates the working-time computation to the calendar of the season
that matches that date, falling back to a configurable default working
time for any date not covered by a season.

**Table of contents**

.. contents::
:local:

Usage
=====

Assign the seasonal working time wherever a calendar is used (an
employee's contract, the company, etc.).

From then on, any computation based on that calendar (worked hours,
planned days, lead times...) automatically uses the working time of the
season matching each date, and the default working time for uncovered
dates.

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:%20resource_calendar_season%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
-------

* ForgeFlow

Contributors
------------

- ForgeFlow

- Guillermo Navas <guillermo.navas@forgeflow.com>

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.

This module is part of the `OCA/hr <https://github.com/OCA/hr/tree/17.0/resource_calendar_season>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions resource_calendar_season/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
16 changes: 16 additions & 0 deletions resource_calendar_season/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Resource Calendar Season",
"summary": "Recurring seasonal working times for a resource calendar",
"version": "17.0.1.0.0",
"license": "AGPL-3",
"category": "Human Resources",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/hr",
"depends": ["resource"],
"data": [
"security/ir.model.access.csv",
"views/resource_calendar_views.xml",
],
}
226 changes: 226 additions & 0 deletions resource_calendar_season/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * resource_calendar_season
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-30 06:36+0000\n"
"PO-Revision-Date: 2026-06-30 06:36+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__4
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__4
msgid "April"
msgstr "Abril"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__8
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__8
msgid "August"
msgstr "Agosto"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__create_uid
msgid "Created by"
msgstr ""

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__create_date
msgid "Created on"
msgstr ""

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__12
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__12
msgid "December"
msgstr "Diciembre"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar__default_calendar_id
msgid "Default Working Time"
msgstr "Horario de trabajo por defecto"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__display_name
msgid "Display Name"
msgstr "Nombre mostrado"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__2
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__2
msgid "February"
msgstr "Febrero"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__month_from
msgid "From Month"
msgstr "Mes inicial"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__id
msgid "ID"
msgstr ""

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__1
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__1
msgid "January"
msgstr "Enero"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__7
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__7
msgid "July"
msgstr "Julio"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__6
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__6
msgid "June"
msgstr "Junio"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__write_uid
msgid "Last Updated by"
msgstr ""

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__write_date
msgid "Last Updated on"
msgstr ""

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__3
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__3
msgid "March"
msgstr "Marzo"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__5
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__5
msgid "May"
msgstr "Mayo"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__name
msgid "Name"
msgstr "Nombre"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__11
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__11
msgid "November"
msgstr "Noviembre"

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__10
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__10
msgid "October"
msgstr "Octubre"

#. module: resource_calendar_season
#: model:ir.model,name:resource_calendar_season.model_resource_calendar_season
msgid "Resource Calendar Season"
msgstr "Temporada de calendario de recursos"

#. module: resource_calendar_season
#: model:ir.model,name:resource_calendar_season.model_resource_calendar
msgid "Resource Working Time"
msgstr "Tiempo de trabajo de recursos"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar__is_seasonal
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__calendar_id
msgid "Seasonal Calendar"
msgstr "Calendario estacional"

#. module: resource_calendar_season
#. odoo-python
#: code:addons/resource_calendar_season/models/resource_calendar.py:0
#, python-format
msgid ""
"Seasonal calendar %(name)s cannot use itself as the default working time."
msgstr ""
"El calendario estacional %(name)s no puede usarse a sí mismo como horario de "
"trabajo por defecto."

#. module: resource_calendar_season
#. odoo-python
#: code:addons/resource_calendar_season/models/resource_calendar.py:0
#, python-format
msgid "Seasonal calendar %(name)s requires a default working time."
msgstr "El calendario estacional %(name)s requiere un horario de trabajo por defecto."

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar__season_ids
#: model_terms:ir.ui.view,arch_db:resource_calendar_season.resource_calendar_form
msgid "Seasons"
msgstr "Temporadas"

#. module: resource_calendar_season
#. odoo-python
#: code:addons/resource_calendar_season/models/resource_calendar_season.py:0
#, python-format
msgid "Seasons %(first)s and %(second)s overlap."
msgstr "Las temporadas %(first)s y %(second)s se solapan."

#. module: resource_calendar_season
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_from__9
#: model:ir.model.fields.selection,name:resource_calendar_season.selection__resource_calendar_season__month_to__9
msgid "September"
msgstr "Septiembre"

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__sequence
msgid "Sequence"
msgstr "Secuencia"

#. module: resource_calendar_season
#. odoo-python
#: code:addons/resource_calendar_season/models/resource_calendar.py:0
#, python-format
msgid ""
"The default working time of %(name)s cannot itself be a seasonal calendar."
msgstr ""
"El horario por defecto de %(name)s no puede ser a su vez un calendario "
"estacional."

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__month_to
msgid "To Month"
msgstr "Mes final"

#. module: resource_calendar_season
#: model:ir.model.fields,help:resource_calendar_season.field_resource_calendar__is_seasonal
msgid ""
"When enabled, this calendar has no working hours of its own. Instead, the "
"working time is taken from the season matching each date, falling back to "
"the default working time for uncovered dates."
msgstr ""
"Cuando está activado, este calendario no tiene horas de trabajo propias. En "
"su lugar, el horario de trabajo se toma de la temporada que corresponde a cada "
"fecha, recurriendo al horario de trabajo por defecto para las fechas no "
"cubiertas."

#. module: resource_calendar_season
#: model:ir.model.fields,field_description:resource_calendar_season.field_resource_calendar_season__season_calendar_id
msgid "Working Time"
msgstr "Horario de trabajo"

#. module: resource_calendar_season
#: model:ir.model.fields,help:resource_calendar_season.field_resource_calendar_season__season_calendar_id
msgid "Working time applied during this season."
msgstr "Horario de trabajo aplicado durante esta temporada."

#. module: resource_calendar_season
#: model:ir.model.fields,help:resource_calendar_season.field_resource_calendar__default_calendar_id
msgid "Working time applied on dates not covered by any season."
msgstr "Horario de trabajo aplicado en las fechas no cubiertas por ninguna temporada."
2 changes: 2 additions & 0 deletions resource_calendar_season/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import resource_calendar_season
from . import resource_calendar
Loading
Loading