Move all OCA HR modules from oca-technical to dedicated oca-hr submodule

Reorganized 67 HR-related modules for better structure:
- Moved all odoo-bringout-oca-hr-* packages from packages/oca-technical/
- Now organized in dedicated packages/oca-hr/ submodule
- Includes attendance, expense, holiday, employee, and contract modules
- Maintains all module functionality while improving project organization

This creates a cleaner separation between general technical modules
and HR-specific functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ernad Husremovic 2025-08-30 17:11:28 +02:00
parent f672249949
commit dfcda4100c
2456 changed files with 120722 additions and 0 deletions

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import test_hr_employee_service

View file

@ -0,0 +1,142 @@
# Copyright (C) 2018 Brainbean Apps (https://brainbeanapps.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from datetime import date
from unittest.mock import patch
from dateutil.relativedelta import relativedelta
from odoo import fields
from odoo.tests import common
class TestHrEmployeeService(common.TransactionCase):
def setUp(self):
super().setUp()
self.today = fields.Date.today()
self.now = fields.Datetime.now()
self.Employee = self.env["hr.employee"]
self.SudoEmployee = self.Employee.sudo()
def test_1(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #1",
"service_hire_date": (self.today - relativedelta(years=3)),
"service_start_date": (self.today - relativedelta(years=3)),
"departure_date": (self.today - relativedelta(years=1)),
}
)
self.assertEqual(employee.service_duration_years, 2)
self.assertEqual(employee.service_duration_months, 0)
self.assertEqual(employee.service_duration_days, 0)
def test_2(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #2",
"service_hire_date": (self.today - relativedelta(years=3)),
"service_start_date": (self.today - relativedelta(years=3)),
}
)
self.assertEqual(employee.service_duration_years, 3)
self.assertEqual(employee.service_duration_months, 0)
self.assertEqual(employee.service_duration_days, 0)
def test_3(self):
mocked_today = date(2019, 8, 27)
employee = self.SudoEmployee.create(
{
"name": "Employee #3",
"service_hire_date": (mocked_today - relativedelta(months=6)),
"service_start_date": (mocked_today - relativedelta(months=6)),
}
)
with patch("odoo.fields.Date.today") as today:
today.return_value = mocked_today
self.assertEqual(employee.service_duration_years, 0)
self.assertEqual(employee.service_duration_months, 6)
self.assertEqual(employee.service_duration_days, 0)
def test_4(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #4",
"service_hire_date": (self.today - relativedelta(months=6)),
}
)
self.assertEqual(employee.service_duration_years, 0)
self.assertEqual(employee.service_duration_months, 0)
self.assertEqual(employee.service_duration_days, 0)
def test_5(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #5",
"service_hire_date": (self.today - relativedelta(days=1)),
"service_start_date": (self.today - relativedelta(days=1)),
}
)
self.assertEqual(employee.service_duration, 1)
self.assertEqual(employee.service_duration_days, 1)
def test_6(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #6",
"service_hire_date": self.today,
"service_start_date": self.today,
}
)
employee.service_hire_date = None
employee.service_start_date = None
self.assertEqual(employee.service_duration_years, 0)
self.assertEqual(employee.service_duration_months, 0)
self.assertEqual(employee.service_duration_days, 0)
def test_7(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #7",
"service_hire_date": (self.today - relativedelta(days=1)),
}
)
employee._onchange_service_hire_date()
self.assertEqual(employee.service_duration_years, 0)
self.assertEqual(employee.service_duration_months, 0)
self.assertEqual(employee.service_duration_days, 1)
def test_8(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #8",
"service_hire_date": (self.today - relativedelta(days=1)),
"service_start_date": (self.today - relativedelta(days=1)),
"departure_date": (self.today - relativedelta(years=1)),
}
)
self.assertEqual(employee.service_duration, 0)
def test_get_service_duration_from_date(self):
employee = self.SudoEmployee.create(
{
"name": "Employee #9",
"service_hire_date": (self.today - relativedelta(years=1)),
"service_start_date": (self.today - relativedelta(years=1)),
}
)
search_date = self.today - relativedelta(months=10)
result = employee.get_service_duration_from_date(search_date)
self.assertEqual(result["years"], 0)
self.assertEqual(result["months"], 2)