demurrage

This commit is contained in:
2026-06-03 16:29:50 +02:00
parent adcce718fd
commit 4a0461df44
3 changed files with 242 additions and 0 deletions

View File

@@ -270,6 +270,52 @@ class PurchaseTradeTestCase(ModuleTestCase):
sof._applied_laytime_end(),
datetime.datetime(2026, 6, 1, 12, 0))
@with_transaction()
def test_sof_calculation_info_explains_structured_inputs(self):
'sof calculation info displays the structured calculation inputs'
Sof = Pool().get('sof.statement')
sof = Sof()
sof.applied_condition = Mock(
rec_name='Discharge',
name='Discharge',
party_role='owner',
responsibility='ours',
laytime_allowed=Decimal('72'),
laytime_unit='hours',
laytime_start_event='notice_of_readiness',
laytime_start_offset=Decimal('6'),
laytime_start_offset_unit='hours',
laytime_end_event='hoses_disconnected',
laytime_start='Arrival + 1 day',
laytime_end='End pumping',
rates=[
Mock(rate=Decimal('24000'), rate_type=Mock(category='demurrage')),
Mock(rate=Decimal('12000'), rate_type=Mock(category='despatch')),
])
sof.notice_of_readiness_time = datetime.datetime(2026, 6, 1, 2, 0)
sof.hoses_disconnected = datetime.datetime(2026, 6, 4, 10, 0)
sof.laytime_balance = -Decimal('12')
self.assertEqual(
sof.get_calculation_info('calculation_condition'), 'Discharge')
self.assertEqual(
sof.get_calculation_info('calculation_start_event'),
'Notice of Readiness')
self.assertEqual(
sof.get_calculation_info('calculation_start_event_time'),
'01/06/2026 02:00')
self.assertEqual(
sof.get_calculation_info('calculation_start_offset'), '6 hours')
self.assertEqual(
sof.get_calculation_info('calculation_end_event'),
'Hoses Disconnected')
self.assertEqual(
sof.get_calculation_info('calculation_end_event_time'),
'04/06/2026 10:00')
self.assertEqual(
sof.get_calculation_info('calculation_rate_used'),
'Demurrage: 24000 / day')
@with_transaction()
def test_sof_header_date_time_values_sync_to_datetime(self):
'sof header date and time fields build the technical datetime value'