[FIX] sale_timesheet: Fix undeterministic crashing test

Purpose
=======

Launch the test at 00:05:00.

Then when opening the advance payment wizard, the field
date_invoice_timesheet would be set to yesterday, instead of
today.

Adapt the default value on the wizard, and the related tests.

closes odoo/odoo#45023

Taskid: 2178983
X-original-commit: 0a46e92cf742ca811b1685860619dba1d0dc7bd5
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
This commit is contained in:
Yannick Tivisse
2020-02-10 16:21:03 +00:00
parent 0d5fcdc1c7
commit 19482aff8e
2 changed files with 15 additions and 9 deletions
@@ -2,6 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import date, timedelta
from odoo.fields import Date
from odoo.tools import float_is_zero
from odoo.exceptions import UserError
from odoo.addons.sale_timesheet.tests.common import TestCommonSaleTimesheetNoChart
@@ -393,6 +394,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
4) create invoice for the timesheets 4 days before
5) create invoice for the timesheets from today
"""
today = Date.context_today(self.env.user)
sale_order = self.env['sale.order'].create({
'partner_id': self.partner_customer_usd.id,
'partner_invoice_id': self.partner_customer_usd.id,
@@ -430,7 +432,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
'task_id': task_serv1.id,
'unit_amount': 10,
'employee_id': self.employee_manager.id,
'date': date.today() - timedelta(days=6)
'date': today - timedelta(days=6)
})
timesheet2 = self.env['account.analytic.line'].create({
@@ -439,7 +441,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
'task_id': task_serv1.id,
'unit_amount': 20,
'employee_id': self.employee_manager.id,
'date': date.today() - timedelta(days=1)
'date': today - timedelta(days=1)
})
timesheet3 = self.env['account.analytic.line'].create({
@@ -448,7 +450,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
'task_id': task_serv1.id,
'unit_amount': 10,
'employee_id': self.employee_manager.id,
'date': date.today() - timedelta(days=5)
'date': today - timedelta(days=5)
})
timesheet4 = self.env['account.analytic.line'].create({
@@ -473,7 +475,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
# invoice SO
wizard = self.env['sale.advance.payment.inv'].with_context(self.context).create({
'advance_payment_method': 'delivered',
'date_invoice_timesheet': date.today() - timedelta(days=10)
'date_invoice_timesheet': today - timedelta(days=10)
})
self.assertTrue(wizard.invoicing_timesheet_enabled, 'The "date_invoice_timesheet" field should be visible in the wizard because a product in sale order has service_policy to "Timesheet on Task"')
@@ -484,7 +486,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
self.assertFalse(sale_order.invoice_ids, 'Normally, no invoice will be created created because the timesheet logged is after the date defined in date_invoice_timesheet field')
wizard.write({
'date_invoice_timesheet': date.today() - timedelta(days=6)
'date_invoice_timesheet': today - timedelta(days=6)
})
wizard.create_invoices()
@@ -497,7 +499,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
invoice.post()
wizard.write({
'date_invoice_timesheet': date.today() - timedelta(days=4)
'date_invoice_timesheet': today - timedelta(days=4)
})
wizard.create_invoices()
@@ -507,7 +509,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
self.assertEqual(so_line_deliver_global_project.qty_invoiced, timesheet1.unit_amount + timesheet3.unit_amount, "The last invoice done should have the quantity of the timesheet 3, because the date this timesheet is the only one before the 'date_invoice_timesheet' field in the wizard.")
wizard.write({
'date_invoice_timesheet': date.today()
'date_invoice_timesheet': today
})
wizard.create_invoices()
@@ -517,4 +519,5 @@ class TestSaleTimesheet(TestCommonSaleTimesheetNoChart):
# Check if all timesheets have been invoiced
self.assertEqual(so_line_deliver_global_project.qty_invoiced, timesheet1.unit_amount + timesheet2.unit_amount + timesheet3.unit_amount)
self.assertEqual(so_line_deliver_task_project.qty_invoiced, + timesheet4.unit_amount)
self.assertTrue(so_line_deliver_task_project.invoice_lines)
self.assertEqual(so_line_deliver_task_project.qty_invoiced, timesheet4.unit_amount)
@@ -1,3 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
@@ -15,7 +18,7 @@ class SaleAdvancePaymentInv(models.TransientModel):
date_invoice_timesheet = fields.Date(
string='Invoice Timesheets Up To This Date',
default=fields.Date.today,
default=fields.Date.context_today,
required=False,
help="Only timesheets not yet invoiced (and validated, if applicable) up to this date included will be invoiced. If no date is indicated, all timesheets not yet invoiced (and validated, if applicable) will be invoiced without distinction.")
invoicing_timesheet_enabled = fields.Boolean(default=_default_invoicing_timesheet_enabled)