diff --git a/hr_expense_recruitment/__init__.py b/hr_expense_recruitment/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/hr_expense_recruitment/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/hr_expense_recruitment/__manifest__.py b/hr_expense_recruitment/__manifest__.py new file mode 100644 index 00000000..cd7012ff --- /dev/null +++ b/hr_expense_recruitment/__manifest__.py @@ -0,0 +1,21 @@ +{ + 'name': 'HR Expense Recruitment', + 'version': '16.0.1.0.0', + 'author': 'Hibou Corp. ', + 'category': 'Human Resources', + 'summary': 'Assign Recruitment to expenses for reporting.', + 'description': """ +Assign Recruitment to expenses for reporting. +""", + 'website': 'https://hibou.io/', + 'depends': [ + 'hr_expense', + 'hr_recruitment', + ], + 'data': [ + 'views/hr_expense_views.xml', + 'views/hr_job_views.xml' + ], + 'installable': True, + 'auto_install': False, +} diff --git a/hr_expense_recruitment/models/__init__.py b/hr_expense_recruitment/models/__init__.py new file mode 100644 index 00000000..cdc77a6e --- /dev/null +++ b/hr_expense_recruitment/models/__init__.py @@ -0,0 +1,2 @@ +from . import hr_expense_job +from . import hr_job diff --git a/hr_expense_recruitment/models/hr_expense_job.py b/hr_expense_recruitment/models/hr_expense_job.py new file mode 100644 index 00000000..b7911d34 --- /dev/null +++ b/hr_expense_recruitment/models/hr_expense_job.py @@ -0,0 +1,7 @@ +from odoo import api, fields, models + + +class HRExpenseJob(models.Model): + _inherit = 'hr.expense' + + job_id = fields.Many2one('hr.job', string='Job') diff --git a/hr_expense_recruitment/models/hr_job.py b/hr_expense_recruitment/models/hr_job.py new file mode 100644 index 00000000..8b9477d8 --- /dev/null +++ b/hr_expense_recruitment/models/hr_job.py @@ -0,0 +1,17 @@ +from odoo import api, fields, models + + +class HRJob(models.Model): + _inherit = 'hr.job' + + company_currency = fields.Many2one('res.currency', string='Currency', + related='company_id.currency_id', readonly=True) + expense_total_amount = fields.Float(string='Expenses Total', + compute='_compute_expense_total_amount', + compute_sudo=True) + expense_ids = fields.One2many('hr.expense', 'job_id', string='Expenses') + + @api.depends('expense_ids.total_amount') + def _compute_expense_total_amount(self): + for job in self: + job.expense_total_amount = sum(job.expense_ids.mapped('total_amount')) diff --git a/hr_expense_recruitment/tests/__init__.py b/hr_expense_recruitment/tests/__init__.py new file mode 100644 index 00000000..bf77393e --- /dev/null +++ b/hr_expense_recruitment/tests/__init__.py @@ -0,0 +1 @@ +from . import test_expenses diff --git a/hr_expense_recruitment/tests/test_expenses.py b/hr_expense_recruitment/tests/test_expenses.py new file mode 100644 index 00000000..6b2fb929 --- /dev/null +++ b/hr_expense_recruitment/tests/test_expenses.py @@ -0,0 +1,26 @@ +from odoo.addons.hr_expense.tests.common import TestExpenseCommon +from odoo.tests import tagged, Form + + + +@tagged('-at_install', 'post_install') +class TestJobExpense(TestExpenseCommon): + def test_fields(self): + + employee = self.env['hr.employee'].create({ + 'name': 'Leo Pinedo', + }) + job = self.env['hr.job'].create({'name': 'Test Job'}) + expense = self.env['hr.expense'].create({ + 'name': 'Test Expense', + 'employee_id': self.expense_employee.id, + 'product_id': self.product_a.id, + 'unit_amount': 34.0, + }) + self.assertTrue(job) + self.assertTrue(expense) + self.assertFalse(job.expense_ids) + self.assertEqual(job.expense_total_amount, 0.0) + expense.job_id = job + self.assertTrue(job.expense_ids) + self.assertEqual(job.expense_total_amount, 34.0) diff --git a/hr_expense_recruitment/views/hr_expense_views.xml b/hr_expense_recruitment/views/hr_expense_views.xml new file mode 100644 index 00000000..c3603597 --- /dev/null +++ b/hr_expense_recruitment/views/hr_expense_views.xml @@ -0,0 +1,24 @@ + + + + hr.expense.form.inherit + hr.expense + + + + + + + + + + hr.expense.filter.inherit + hr.expense + + + + + + + + \ No newline at end of file diff --git a/hr_expense_recruitment/views/hr_job_views.xml b/hr_expense_recruitment/views/hr_job_views.xml new file mode 100644 index 00000000..072d4170 --- /dev/null +++ b/hr_expense_recruitment/views/hr_job_views.xml @@ -0,0 +1,19 @@ + + + + hr.job.form.inherit + hr.job + + + + + + + + + \ No newline at end of file