From f232d71a16461dd2d2991305db35e777dc8e45fe Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 1 Oct 2018 08:24:15 -0700 Subject: [PATCH 1/3] Initial commit of `hr_expense_recruitment` for 11.0 --- hr_expense_recruitment/__init__.py | 1 + hr_expense_recruitment/__manifest__.py | 21 ++++++++++++++++ hr_expense_recruitment/models/__init__.py | 2 ++ .../models/hr_expense_job.py | 7 ++++++ hr_expense_recruitment/models/hr_job.py | 18 ++++++++++++++ hr_expense_recruitment/tests/__init__.py | 1 + hr_expense_recruitment/tests/test_expenses.py | 16 +++++++++++++ .../views/hr_expense_views.xml | 24 +++++++++++++++++++ hr_expense_recruitment/views/hr_job_views.xml | 19 +++++++++++++++ 9 files changed, 109 insertions(+) create mode 100644 hr_expense_recruitment/__init__.py create mode 100644 hr_expense_recruitment/__manifest__.py create mode 100644 hr_expense_recruitment/models/__init__.py create mode 100644 hr_expense_recruitment/models/hr_expense_job.py create mode 100644 hr_expense_recruitment/models/hr_job.py create mode 100644 hr_expense_recruitment/tests/__init__.py create mode 100644 hr_expense_recruitment/tests/test_expenses.py create mode 100644 hr_expense_recruitment/views/hr_expense_views.xml create mode 100644 hr_expense_recruitment/views/hr_job_views.xml 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..e1401df5 --- /dev/null +++ b/hr_expense_recruitment/__manifest__.py @@ -0,0 +1,21 @@ +{ + 'name': 'HR Expense Recruitment', + 'version': '11.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..33492ade --- /dev/null +++ b/hr_expense_recruitment/models/hr_job.py @@ -0,0 +1,18 @@ +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.multi + @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..f9ef88ba --- /dev/null +++ b/hr_expense_recruitment/tests/test_expenses.py @@ -0,0 +1,16 @@ +from odoo.tests import common + + +class TestJobExpense(common.TransactionCase): + def test_fields(self): + job = self.env['hr.job'].create({'name': 'Test Job'}) + expense = self.env['hr.expense'].create({ + 'name': 'Test Expense', + 'product_id': self.env['product.product'].search([('can_be_expensed', '=', True)], limit=1).id, + 'unit_amount': 34.0, + }) + 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..97f65e7e --- /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 From 8c1b5db7a90684834e3ef091ba6a095ed024b640 Mon Sep 17 00:00:00 2001 From: Bhoomi Date: Fri, 20 Sep 2019 11:30:29 -0400 Subject: [PATCH 2/3] MIG `hr_expense_recruitment` For Odoo 12.0 --- hr_expense_recruitment/__manifest__.py | 2 +- hr_expense_recruitment/tests/test_expenses.py | 1 + hr_expense_recruitment/views/hr_expense_views.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hr_expense_recruitment/__manifest__.py b/hr_expense_recruitment/__manifest__.py index e1401df5..448542f6 100644 --- a/hr_expense_recruitment/__manifest__.py +++ b/hr_expense_recruitment/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'HR Expense Recruitment', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'author': 'Hibou Corp. ', 'category': 'Human Resources', 'summary': 'Assign Recruitment to expenses for reporting.', diff --git a/hr_expense_recruitment/tests/test_expenses.py b/hr_expense_recruitment/tests/test_expenses.py index f9ef88ba..c8654a20 100644 --- a/hr_expense_recruitment/tests/test_expenses.py +++ b/hr_expense_recruitment/tests/test_expenses.py @@ -6,6 +6,7 @@ class TestJobExpense(common.TransactionCase): job = self.env['hr.job'].create({'name': 'Test Job'}) expense = self.env['hr.expense'].create({ 'name': 'Test Expense', + 'employee_id': self.env['hr.employee'].search([], limit=1).id, 'product_id': self.env['product.product'].search([('can_be_expensed', '=', True)], limit=1).id, 'unit_amount': 34.0, }) diff --git a/hr_expense_recruitment/views/hr_expense_views.xml b/hr_expense_recruitment/views/hr_expense_views.xml index 97f65e7e..fbc2b47f 100644 --- a/hr_expense_recruitment/views/hr_expense_views.xml +++ b/hr_expense_recruitment/views/hr_expense_views.xml @@ -3,7 +3,7 @@ hr.expense.form.inherit hr.expense - + From eee8448d3c90f496445479b0c409e86e370dd68f Mon Sep 17 00:00:00 2001 From: Leo Pinedo Date: Fri, 28 Oct 2022 00:39:32 +0000 Subject: [PATCH 3/3] [MIG] hr_expense_recruitment: to 16 --- hr_expense_recruitment/__manifest__.py | 2 +- hr_expense_recruitment/models/hr_job.py | 1 - hr_expense_recruitment/tests/test_expenses.py | 17 +++++++++++++---- .../views/hr_expense_views.xml | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/hr_expense_recruitment/__manifest__.py b/hr_expense_recruitment/__manifest__.py index 448542f6..cd7012ff 100644 --- a/hr_expense_recruitment/__manifest__.py +++ b/hr_expense_recruitment/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'HR Expense Recruitment', - 'version': '12.0.1.0.0', + 'version': '16.0.1.0.0', 'author': 'Hibou Corp. ', 'category': 'Human Resources', 'summary': 'Assign Recruitment to expenses for reporting.', diff --git a/hr_expense_recruitment/models/hr_job.py b/hr_expense_recruitment/models/hr_job.py index 33492ade..8b9477d8 100644 --- a/hr_expense_recruitment/models/hr_job.py +++ b/hr_expense_recruitment/models/hr_job.py @@ -11,7 +11,6 @@ class HRJob(models.Model): compute_sudo=True) expense_ids = fields.One2many('hr.expense', 'job_id', string='Expenses') - @api.multi @api.depends('expense_ids.total_amount') def _compute_expense_total_amount(self): for job in self: diff --git a/hr_expense_recruitment/tests/test_expenses.py b/hr_expense_recruitment/tests/test_expenses.py index c8654a20..6b2fb929 100644 --- a/hr_expense_recruitment/tests/test_expenses.py +++ b/hr_expense_recruitment/tests/test_expenses.py @@ -1,15 +1,24 @@ -from odoo.tests import common +from odoo.addons.hr_expense.tests.common import TestExpenseCommon +from odoo.tests import tagged, Form -class TestJobExpense(common.TransactionCase): + +@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.env['hr.employee'].search([], limit=1).id, - 'product_id': self.env['product.product'].search([('can_be_expensed', '=', True)], limit=1).id, + '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 diff --git a/hr_expense_recruitment/views/hr_expense_views.xml b/hr_expense_recruitment/views/hr_expense_views.xml index fbc2b47f..c3603597 100644 --- a/hr_expense_recruitment/views/hr_expense_views.xml +++ b/hr_expense_recruitment/views/hr_expense_views.xml @@ -14,9 +14,9 @@ hr.expense.filter.inherit hr.expense - + - +