demurrage
This commit is contained in:
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user