From b1828c01d8f6cfa8ec430ef79f4778ddd0a80ac5 Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Tue, 27 Nov 2018 11:00:55 +0000 Subject: [PATCH] [FIX] hr_expense: create expense from email with taxes Have an expense product with a supplier tax on it Write an email to be caught by the thread model to create an expense for that product Before this commit, the tax was not set up on the expense After this commit, it is OPW 1908596 closes odoo/odoo#29061 --- addons/hr_expense/models/hr_expense.py | 1 + addons/hr_expense/tests/test_expenses.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 1cc6e2cbd45..a1a7c927b3c 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -395,6 +395,7 @@ class HrExpense(models.Model): 'employee_id': employee.id, 'product_id': product.id, 'product_uom_id': product.uom_id.id, + 'tax_ids': [(4, tax.id, False) for tax in product.supplier_taxes_id], 'quantity': 1, 'unit_amount': price, 'company_id': employee.company_id.id, diff --git a/addons/hr_expense/tests/test_expenses.py b/addons/hr_expense/tests/test_expenses.py index b3cb5227230..d789f6e92be 100644 --- a/addons/hr_expense/tests/test_expenses.py +++ b/addons/hr_expense/tests/test_expenses.py @@ -87,3 +87,23 @@ class TestCheckJournalEntry(TransactionCase): self.assertAlmostEquals(line.debit, 636.36) else: self.assertAlmostEquals(line.debit, 63.64) + + def test_expense_from_email(self): + user_demo = self.env.ref('base.user_demo') + self.tax.price_include = False + + message_parsed = { + 'message_id': 'the-world-is-a-ghetto', + 'subject': '[AT] 9876', + 'email_from': 'demo@yourcompany.example.com', + 'to': 'catchall@yourcompany.com', + 'body': "Don't you know, that for me, and for you", + 'attachments': [], + } + + expense = self.env['hr.expense'].message_new(message_parsed) + + self.assertEquals(expense.product_id, self.product) + self.assertEquals(expense.tax_ids.ids, [self.tax.id]) + self.assertEquals(expense.total_amount, 10863.60) + self.assertTrue(expense.employee_id in user_demo.employee_ids)