From e5fb7619d16ab8e9c84d05a33ba8abebd4d3bac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A0n=20Todorovich?= Date: Wed, 15 Dec 2021 11:02:54 -0300 Subject: [PATCH 01/15] [ADD] sale_expense_manual_reinvoice --- sale_expense_manual_reinvoice/README.rst | 0 sale_expense_manual_reinvoice/__init__.py | 1 + sale_expense_manual_reinvoice/__manifest__.py | 20 +++ .../models/__init__.py | 4 + .../models/account_analytic_line.py | 49 ++++++ .../models/account_move_line.py | 16 ++ .../models/hr_expense.py | 59 +++++++ .../models/product_template.py | 18 ++ .../readme/CONFIGURE.rst | 7 + .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 3 + .../readme/ROADMAP.rst | 2 + .../readme/USAGE.rst | 10 ++ .../static/description/configure.png | Bin 0 -> 48153 bytes .../static/description/reinvoice.png | Bin 0 -> 30237 bytes .../tests/__init__.py | 1 + .../test_sale_expense_manual_reinvoice.py | 159 ++++++++++++++++++ .../views/account_analytic_line.xml | 30 ++++ .../views/hr_expense.xml | 154 +++++++++++++++++ .../views/product_template.xml | 26 +++ 20 files changed, 562 insertions(+) create mode 100644 sale_expense_manual_reinvoice/README.rst create mode 100644 sale_expense_manual_reinvoice/__init__.py create mode 100644 sale_expense_manual_reinvoice/__manifest__.py create mode 100644 sale_expense_manual_reinvoice/models/__init__.py create mode 100644 sale_expense_manual_reinvoice/models/account_analytic_line.py create mode 100644 sale_expense_manual_reinvoice/models/account_move_line.py create mode 100644 sale_expense_manual_reinvoice/models/hr_expense.py create mode 100644 sale_expense_manual_reinvoice/models/product_template.py create mode 100644 sale_expense_manual_reinvoice/readme/CONFIGURE.rst create mode 100644 sale_expense_manual_reinvoice/readme/CONTRIBUTORS.rst create mode 100644 sale_expense_manual_reinvoice/readme/DESCRIPTION.rst create mode 100644 sale_expense_manual_reinvoice/readme/ROADMAP.rst create mode 100644 sale_expense_manual_reinvoice/readme/USAGE.rst create mode 100644 sale_expense_manual_reinvoice/static/description/configure.png create mode 100644 sale_expense_manual_reinvoice/static/description/reinvoice.png create mode 100644 sale_expense_manual_reinvoice/tests/__init__.py create mode 100644 sale_expense_manual_reinvoice/tests/test_sale_expense_manual_reinvoice.py create mode 100644 sale_expense_manual_reinvoice/views/account_analytic_line.xml create mode 100644 sale_expense_manual_reinvoice/views/hr_expense.xml create mode 100644 sale_expense_manual_reinvoice/views/product_template.xml diff --git a/sale_expense_manual_reinvoice/README.rst b/sale_expense_manual_reinvoice/README.rst new file mode 100644 index 000000000..e69de29bb diff --git a/sale_expense_manual_reinvoice/__init__.py b/sale_expense_manual_reinvoice/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/sale_expense_manual_reinvoice/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_expense_manual_reinvoice/__manifest__.py b/sale_expense_manual_reinvoice/__manifest__.py new file mode 100644 index 000000000..4c415a1ad --- /dev/null +++ b/sale_expense_manual_reinvoice/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2021 Camptocamp SA (https://www.camptocamp.com). +# @author Iván Todorovich +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Sale Expense Manual Re-invoice", + "summary": "Allow to manually re-invoice expenses", + "version": "15.0.1.0.0", + "author": "Camptocamp SA, Odoo Community Association (OCA)", + "maintainers": ["ivantodorovich"], + "website": "https://github.com/OCA/hr-expense", + "license": "AGPL-3", + "category": "Human Resources", + "depends": ["sale_expense"], + "data": [ + "views/account_analytic_line.xml", + "views/hr_expense.xml", + "views/product_template.xml", + ], +} diff --git a/sale_expense_manual_reinvoice/models/__init__.py b/sale_expense_manual_reinvoice/models/__init__.py new file mode 100644 index 000000000..1155bd876 --- /dev/null +++ b/sale_expense_manual_reinvoice/models/__init__.py @@ -0,0 +1,4 @@ +from . import account_analytic_line +from . import account_move_line +from . import hr_expense +from . import product_template diff --git a/sale_expense_manual_reinvoice/models/account_analytic_line.py b/sale_expense_manual_reinvoice/models/account_analytic_line.py new file mode 100644 index 000000000..5559e8172 --- /dev/null +++ b/sale_expense_manual_reinvoice/models/account_analytic_line.py @@ -0,0 +1,49 @@ +# Copyright 2021 Camptocamp SA (https://www.camptocamp.com). +# @author Iván Todorovich +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class AccountAnalyticLine(models.Model): + _inherit = "account.analytic.line" + + expense_id = fields.Many2one( + related="move_id.expense_id", + store=True, + ) + manual_reinvoice = fields.Boolean( + compute="_compute_manual_reinvoice", + store=True, + ) + manual_reinvoice_done = fields.Boolean( + compute="_compute_manual_reinvoice_done", + store=True, + ) + manual_reinvoice_discarded = fields.Boolean( + help="Technical field to hide it from pending to reinvoice list." + ) + + @api.depends("product_id") + def _compute_manual_reinvoice(self): + for rec in self: + rec.manual_reinvoice = rec.expense_id.product_id.expense_mode == "manual" + + @api.depends("manual_reinvoice", "so_line") + def _compute_manual_reinvoice_done(self): + for rec in self: + rec.manual_reinvoice_done = rec.manual_reinvoice and rec.so_line + + def action_manual_reinvoice(self): + if any(not rec.manual_reinvoice for rec in self): + raise UserError(_("Only manually re-invoice expenses can be re-invoiced.")) + if any(rec.manual_reinvoice_done for rec in self): + raise UserError(_("Expense already re-invoiced.")) + sale_lines_per_move_id = self.move_id._sale_create_reinvoice_sale_line() + for rec in self: + sale_line = sale_lines_per_move_id.get(rec.move_id.id) + if sale_line: + rec.so_line = sale_line + if rec.manual_reinvoice_discarded: + rec.manual_reinvoice_discarded = False diff --git a/sale_expense_manual_reinvoice/models/account_move_line.py b/sale_expense_manual_reinvoice/models/account_move_line.py new file mode 100644 index 000000000..8c0873656 --- /dev/null +++ b/sale_expense_manual_reinvoice/models/account_move_line.py @@ -0,0 +1,16 @@ +# Copyright 2021 Camptocamp SA (https://www.camptocamp.com). +# @author Iván Todorovich +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + def _sale_can_be_reinvoice(self): + # OVERRIDE to skip automatic reinvoicing of expense lines, when needed + res = super()._sale_can_be_reinvoice() + if self.expense_id: + return self.expense_id.product_id.expense_mode != "manual" and res + return res diff --git a/sale_expense_manual_reinvoice/models/hr_expense.py b/sale_expense_manual_reinvoice/models/hr_expense.py new file mode 100644 index 000000000..13283434b --- /dev/null +++ b/sale_expense_manual_reinvoice/models/hr_expense.py @@ -0,0 +1,59 @@ +# Copyright 2021 Camptocamp SA (https://www.camptocamp.com). +# @author Iván Todorovich +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class HrExpense(models.Model): + _inherit = "hr.expense" + + analytic_line_ids = fields.One2many( + "account.analytic.line", "expense_id", readonly=True + ) + manual_reinvoice = fields.Boolean(compute="_compute_manual_reinvoice", store=True) + manual_reinvoice_done = fields.Boolean( + compute="_compute_manual_reinvoice", store=True + ) + manual_reinvoice_discarded = fields.Boolean( + compute="_compute_manual_reinvoice", store=True + ) + + @api.depends( + "analytic_line_ids", + "analytic_line_ids.manual_reinvoice", + "analytic_line_ids.manual_reinvoice_done", + "analytic_line_ids.manual_reinvoice_discarded", + ) + def _compute_manual_reinvoice(self): + for rec in self: + for fname in [ + "manual_reinvoice", + "manual_reinvoice_done", + "manual_reinvoice_discarded", + ]: + rec[fname] = fields.first(rec.analytic_line_ids)[fname] + + def _compute_analytic_account_id(self): + # OVERRIDE to not recompute account_analytic_id if it's already posted + editable = self.filtered("is_editable") + return super(HrExpense, editable)._compute_analytic_account_id() + + def action_manual_reinvoice(self): + if any(not rec.sale_order_id for rec in self): + raise UserError( + _( + "Some expenses are missing the Customer to Reinvoice, " + "please fill this field on all lines and try again." + ) + ) + return self.analytic_line_ids.action_manual_reinvoice() + + def action_manual_reinvoice_discard(self): + self.analytic_line_ids.manual_reinvoice_discarded = True + return True + + def action_manual_reinvoice_pending(self): + self.analytic_line_ids.manual_reinvoice_discarded = False + return True diff --git a/sale_expense_manual_reinvoice/models/product_template.py b/sale_expense_manual_reinvoice/models/product_template.py new file mode 100644 index 000000000..a456712e0 --- /dev/null +++ b/sale_expense_manual_reinvoice/models/product_template.py @@ -0,0 +1,18 @@ +# Copyright 2021 Camptocamp SA (https://www.camptocamp.com). +# @author Iván Todorovich +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + expense_mode = fields.Selection( + [("auto", "Automatically"), ("manual", "Manually")], + string="Re-invoice Mode", + default="auto", + help="Choose how to re-invoice expenses:\n\n" + "* Automatically: Expenses are automatically re-invoiced when they're posted.\n" + "* Manually: Expenses have to be manually re-invoiced by a manager.\n", + ) diff --git a/sale_expense_manual_reinvoice/readme/CONFIGURE.rst b/sale_expense_manual_reinvoice/readme/CONFIGURE.rst new file mode 100644 index 000000000..333fd1e67 --- /dev/null +++ b/sale_expense_manual_reinvoice/readme/CONFIGURE.rst @@ -0,0 +1,7 @@ +On the **Expense Product**, set the **Re-invoice Mode**: + +* Automatically: Expenses are automatically re-invoiced when they're posted (standard) +* Manually: Expenses have to be manually re-invoiced by a manager + + +.. image:: ../static/description/configure.png diff --git a/sale_expense_manual_reinvoice/readme/CONTRIBUTORS.rst b/sale_expense_manual_reinvoice/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..59b447f28 --- /dev/null +++ b/sale_expense_manual_reinvoice/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Camptocamp `_ + + * Iván Todorovich diff --git a/sale_expense_manual_reinvoice/readme/DESCRIPTION.rst b/sale_expense_manual_reinvoice/readme/DESCRIPTION.rst new file mode 100644 index 000000000..6d02d27c5 --- /dev/null +++ b/sale_expense_manual_reinvoice/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +With this module Expense products can be configured to not reinvoice expenses +automatically. Instead, they will be listed in a new menu **Expenses to Reinvoice** +for a manager to manually review them and either reinvoice or discard them. diff --git a/sale_expense_manual_reinvoice/readme/ROADMAP.rst b/sale_expense_manual_reinvoice/readme/ROADMAP.rst new file mode 100644 index 000000000..2d945c50e --- /dev/null +++ b/sale_expense_manual_reinvoice/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +Some abstraction could be done to have the same mechanism work for all reinvoiceable +analytic lines, like the ones generated from purchase invoices. diff --git a/sale_expense_manual_reinvoice/readme/USAGE.rst b/sale_expense_manual_reinvoice/readme/USAGE.rst new file mode 100644 index 000000000..da4258fb9 --- /dev/null +++ b/sale_expense_manual_reinvoice/readme/USAGE.rst @@ -0,0 +1,10 @@ +After Expenses of products configured with **Manual** Re-invoice Mode have been +approved and posted, find them under the **Expenses to Reinvoice** menu. + +Review their **Customer to reinvoice** field, select the ones you want to process +and click either **Reinvoice** or **Discard** + +.. image:: ../static/description/reinvoice.png + +Discarded expenses will be hidden from the list, but you can still access them by +removing the default search filter. diff --git a/sale_expense_manual_reinvoice/static/description/configure.png b/sale_expense_manual_reinvoice/static/description/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..c7abd29e081e03f8db2d66e3b5cfde8caa4440ee GIT binary patch literal 48153 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 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from ast import literal_eval + +from odoo import fields +from odoo.exceptions import UserError + +from odoo.addons.hr_expense.tests.common import TestExpenseCommon + + +class TestReInvoiceManual(TestExpenseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.product_expense_auto = cls.env["product.product"].create( + { + "name": "Expense Auto (default)", + "lst_price": 1000.0, + "expense_policy": "sales_price", + "expense_mode": "auto", + } + ) + cls.product_expense_manual = cls.env["product.product"].create( + { + "name": "Expense Manual", + "lst_price": 1000.0, + "expense_policy": "sales_price", + "expense_mode": "manual", + } + ) + cls.order = cls.env["sale.order"].create({"partner_id": cls.partner_a.id}) + cls.order._create_analytic_account() + cls.order.action_confirm() + cls.expense_sheet = cls.env["hr.expense.sheet"].create( + { + "name": "Expense Sheet", + "employee_id": cls.expense_employee.id, + "journal_id": cls.company_data["default_journal_purchase"].id, + "accounting_date": fields.Date.today(), + } + ) + cls.expense = cls.env["hr.expense"].create( + { + "sheet_id": cls.expense_sheet.id, + "employee_id": cls.expense_employee.id, + "name": "Expense", + "date": fields.Date.today(), + "product_id": cls.product_expense_manual.id, + "unit_amount": cls.product_expense_manual.lst_price, + "sale_order_id": cls.order.id, + } + ) + + def _get_expenses_to_reinvoice(self, with_discarded=False): + """Gets the expenses to reinvoice from the UI menu action""" + xml_id = "sale_expense_manual_reinvoice.action_hr_expense_to_reinvoice" + action = self.env["ir.actions.act_window"]._for_xml_id(xml_id) + domain = literal_eval(action["domain"].strip()) + if not with_discarded: + domain += [("manual_reinvoice_discarded", "=", False)] + return self.env["hr.expense"].search(domain) + + def test_expense_manual_reinvoice(self): + """Test the full manual reinvoice flow""" + self.expense_sheet.approve_expense_sheets() + self.expense_sheet.action_sheet_move_create() + self.assertTrue(self.expense.manual_reinvoice) + self.assertFalse(self.order.order_line, "No expense should've been created yet") + # Check the re-invoice menu + self.assertIn( + self._get_expenses_to_reinvoice(), + self.expense, + "The expense should've been found in the to re-invoice menu", + ) + # Check that we can re-invoice the expense + self.expense.action_manual_reinvoice() + self.assertTrue(self.expense.manual_reinvoice_done) + self.assertTrue(self.order.order_line, "The expense should've been reinvoiced") + # Check that we can't re-invoice it again + with self.assertRaisesRegex(UserError, "Expense already re-invoiced"): + self.expense.action_manual_reinvoice() + + def test_expense_manual_reinvoice_without_sale_order(self): + """Test case without sale order on hr.expense""" + self.expense.sale_order_id = False + self.expense.analytic_account_id = self.order.analytic_account_id + self.expense_sheet.approve_expense_sheets() + self.expense_sheet.action_sheet_move_create() + self.assertFalse(self.order.order_line, "No expense should've been created yet") + # Check the re-invoice menu + self.assertIn( + self._get_expenses_to_reinvoice(), + self.expense, + "The expense should've been found in the to re-invoice menu", + ) + # Check that we can't re-invoice without the user filling the targeted order id + error_message = ( + "Some expenses are missing the Customer to Reinvoice, " + "please fill this field on all lines and try again." + ) + with self.assertRaisesRegex(UserError, error_message): + self.expense.action_manual_reinvoice() + # Check that we can re-invoice the expense if we fill the sale order + self.expense.sale_order_id = self.order + self.expense.action_manual_reinvoice() + self.assertTrue(self.expense.manual_reinvoice_done) + self.assertTrue(self.order.order_line, "The expense should've been reinvoiced") + + def test_expense_auto_reinvoice(self): + """Test that the normal flow still works""" + self.expense.product_id = self.product_expense_auto + self.expense.unit_amount = 1500.0 # amount resets after product change + self.expense_sheet.approve_expense_sheets() + self.expense_sheet.action_sheet_move_create() + self.assertFalse(self.expense.manual_reinvoice) + self.assertTrue(self.order.order_line, "The expense should've been reinvoiced") + # Check the re-invoice menu + self.assertNotIn( + self._get_expenses_to_reinvoice(), + self.expense, + "The expense shouldn't have been found in the to re-invoice menu", + ) + # Check that we can't re-invoice this expense + with self.assertRaisesRegex( + UserError, + "Only manually re-invoice expenses can be re-invoiced", + ): + self.expense.action_manual_reinvoice() + + def test_expense_manual_reinvoice_discard(self): + self.expense_sheet.approve_expense_sheets() + self.expense_sheet.action_sheet_move_create() + # Check the re-invoice menu + self.assertIn( + self._get_expenses_to_reinvoice(), + self.expense, + "The expense should've been found in the to re-invoice menu", + ) + self.expense.action_manual_reinvoice_discard() + self.assertTrue(self.expense.manual_reinvoice_discarded) + # Check the re-invoice menu + self.assertNotIn( + self._get_expenses_to_reinvoice(), + self.expense, + "The expense shouldn't have been found in the to re-invoice menu", + ) + # We should still be able to find it removing the "to reinvoice" filter + self.assertIn( + self._get_expenses_to_reinvoice(with_discarded=True), + self.expense, + "The expense should've been found in the to re-invoice menu", + ) + # We should be able to re-invoice it, even if it was discarded + self.expense.action_manual_reinvoice() + self.assertTrue(self.expense.manual_reinvoice_done) + self.assertFalse(self.expense.manual_reinvoice_discarded, "Back to false") + self.assertTrue(self.order.order_line, "The expense should've been reinvoiced") diff --git a/sale_expense_manual_reinvoice/views/account_analytic_line.xml b/sale_expense_manual_reinvoice/views/account_analytic_line.xml new file mode 100644 index 000000000..6abadbb02 --- /dev/null +++ b/sale_expense_manual_reinvoice/views/account_analytic_line.xml @@ -0,0 +1,30 @@ + + + + + + account.analytic.line + + + + + + + + + + diff --git a/sale_expense_manual_reinvoice/views/hr_expense.xml b/sale_expense_manual_reinvoice/views/hr_expense.xml new file mode 100644 index 000000000..80483aaf9 --- /dev/null +++ b/sale_expense_manual_reinvoice/views/hr_expense.xml @@ -0,0 +1,154 @@ + + + + + hr.expense + + + + + + + + + + + hr.expense + + +
+
+ + + + + + + + + +