Skip to content

Commit

Permalink
Merge PR #125 into 14.0
Browse files Browse the repository at this point in the history
Signed-off-by tv-openbig
  • Loading branch information
OCA-git-bot committed Sep 3, 2023
2 parents 6cec44d + b87a3da commit 3be592a
Showing 1 changed file with 39 additions and 16 deletions.
55 changes: 39 additions & 16 deletions l10n_de_holidays/wizards/hr_holidays_public_generator_de.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from datetime import datetime, timedelta

from dateutil import easter
from dateutil.relativedelta import SU, relativedelta

from odoo import _, api, fields, models
from odoo.exceptions import UserError
Expand Down Expand Up @@ -46,6 +47,13 @@ def calculate_corpus_christi(self, easter):
corpus_christi = easter + timedelta(days=60)
return fields.Date.to_string(corpus_christi)

@api.model
def calculate_repentance_day(self, year):
# Repentance Day is always 11 days befor the first advent
first_advent = datetime(year, 12, 24) + relativedelta(weekday=SU(-4))
repentance_day = first_advent + relativedelta(days=-11)
return fields.Date.to_string(repentance_day)

@api.model
def calculate_floating_holidays(self, existing_holidays):
public_holiday_line_obj = self.env["hr.holidays.public.line"]
Expand Down Expand Up @@ -127,6 +135,20 @@ def calculate_state_floating_holidays(self, existing_holidays, state=None):
"year_id": existing_holidays.id,
}
)
# Sachsen
codes = ["SN"]
state_ids = self.get_state_ids(codes)

if not state or state.id in state_ids:
public_holiday_line_obj.create(
{
"name": _("Repentance Day"),
"date": self.calculate_repentance_day(self.year),
"variable_date": True,
"state_ids": [(6, 0, state_ids)],
"year_id": existing_holidays.id,
}
)

@api.model
def calculate_fixed_holidays(self, existing_holidays):
Expand Down Expand Up @@ -190,6 +212,21 @@ def calculate_state_fixed_holidays(self, existing_holidays, state=None):
"year_id": existing_holidays.id,
}
)
# Thüringen
codes = ["DE-TH"]
state_ids = self.get_state_ids(codes)

if not state or state.id in state_ids:
public_holiday_line_obj.create(
{
"name": _("World Children's Day"),
"date": "%s-09-20" % existing_holidays.year,
"variable_date": False,
"state_ids": [(6, 0, state_ids)],
"year_id": existing_holidays.id,
}
)

# Bavaria, Saarland
codes = ["BY", "SL"]
state_ids = self.get_state_ids(codes)
Expand Down Expand Up @@ -235,23 +272,9 @@ def calculate_state_fixed_holidays(self, existing_holidays, state=None):
"year_id": existing_holidays.id,
}
)
# Sachsen
codes = ["SN"]
state_ids = self.get_state_ids(codes)

if not state or state.id in state_ids:
public_holiday_line_obj.create(
{
"name": _("Repentance Day"),
"date": "%s-11-23" % existing_holidays.year,
"variable_date": False,
"state_ids": [(6, 0, state_ids)],
"year_id": existing_holidays.id,
}
)

# Berlin
codes = ["BE"]
# Berlin, Mecklenburg-Vorpommern
codes = ["BE", "MV"]
state_ids = self.get_state_ids(codes)

if not state or state.id in state_ids:
Expand Down

0 comments on commit 3be592a

Please sign in to comment.