Skip to content
Snippets Groups Projects
Commit 19482aff authored by Yannick Tivisse's avatar Yannick Tivisse
Browse files

[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: default avatarChristophe Monniez (moc) <moc@odoo.com>
parent 0d5fcdc1
No related branches found
No related tags found
No related merge requests found
......@@ -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)
# -*- 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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment