48 lines
2.1 KiB
Python
48 lines
2.1 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
from odoo.tests import Form, tagged
|
|
from odoo.tests.common import freeze_time
|
|
|
|
from odoo.addons.sale_renting.tests.common import SaleRentingCommon
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestRentalProcessing(SaleRentingCommon):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.rental_order.company_id.min_extra_hour = 2
|
|
|
|
def test_add_late_fee(self):
|
|
self.assertEqual(len(self.rental_order.order_line), 1) # Only the projector
|
|
self.projector_sol.qty_delivered = self.projector_sol.product_uom_qty
|
|
self.assertEqual(self.rental_order.has_pickable_lines, False)
|
|
|
|
with freeze_time(self.rental_order.rental_return_date + relativedelta(days=1)):
|
|
wizard_form = Form.from_action(self.env, self.rental_order.action_open_return())
|
|
wizard_form.rental_wizard_line_ids.qty_returned = self.projector_sol.qty_delivered
|
|
wizard_form.save()
|
|
wizard_form.record.apply()
|
|
|
|
# Customer was late, a fee was added to the order
|
|
self.assertEqual(self.rental_order.rental_status, 'returned')
|
|
self.assertEqual(len(self.rental_order.order_line), 2)
|
|
|
|
def test_late_fee_allow_buffer(self):
|
|
self.assertEqual(len(self.rental_order.order_line), 1) # Only the projector
|
|
self.projector_sol.qty_delivered = self.projector_sol.product_uom_qty
|
|
self.assertEqual(self.rental_order.has_pickable_lines, False)
|
|
|
|
with freeze_time(self.rental_order.rental_return_date + relativedelta(minutes=30)):
|
|
wizard_form = Form.from_action(self.env, self.rental_order.action_open_return())
|
|
wizard_form.rental_wizard_line_ids.qty_returned = self.projector_sol.qty_delivered
|
|
wizard_form.save()
|
|
wizard_form.record.apply()
|
|
|
|
# Customer was late, but less than the company policy, no fee is added
|
|
self.assertEqual(self.rental_order.rental_status, 'returned')
|
|
self.assertEqual(len(self.rental_order.order_line), 1)
|