diff --git a/addons/hr_expense/models/account_move.py b/addons/hr_expense/models/account_move.py index 875c5726e26..588afaa345a 100644 --- a/addons/hr_expense/models/account_move.py +++ b/addons/hr_expense/models/account_move.py @@ -50,7 +50,7 @@ class AccountMove(models.Model): # Also, expense' account moves are expressed in the company currency. super()._compute_needed_terms() for move in self: - if move.expense_sheet_id: + if move.expense_sheet_id and move.expense_sheet_id.payment_mode == 'company_account': amount_currency = -sum(move.line_ids.filtered(lambda l: l.display_type != 'payment_term').mapped("amount_currency")) move.needed_terms = { frozendict( diff --git a/addons/hr_expense/tests/test_expenses.py b/addons/hr_expense/tests/test_expenses.py index 14affef3b22..e67b189e0dc 100644 --- a/addons/hr_expense/tests/test_expenses.py +++ b/addons/hr_expense/tests/test_expenses.py @@ -900,3 +900,27 @@ class TestExpenses(TestExpenseCommon): expense.unlink() self.analytic_account_1.unlink() + + def test_expense_sheet_due_date(self): + ''' Test expense sheet bill due date''' + + self.expense_employee.user_partner_id.property_supplier_payment_term_id = self.env.ref('account.account_payment_term_30days') + + expense_sheet = self.env['hr.expense.sheet'].create({ + 'name': 'Expense for John Smith', + 'employee_id': self.expense_employee.id, + 'accounting_date': '2021-01-01', + 'expense_line_ids': [(0, 0, { + 'name': 'Car Travel Expenses', + 'employee_id': self.expense_employee.id, + 'product_id': self.product_a.id, + 'unit_amount': 350.00, + })] + }) + + expense_sheet.action_submit_sheet() + expense_sheet.action_approve_expense_sheets() + expense_sheet.action_sheet_move_create() + move = expense_sheet.account_move_id + expected_date = fields.Date.from_string('2021-01-31') + self.assertEqual(move.invoice_date_due, expected_date, 'Bill due date should follow employee payment terms')