Charter party

This commit is contained in:
2026-05-31 22:58:42 +02:00
parent 2dd8360d62
commit d483e7cf69
3 changed files with 135 additions and 34 deletions

View File

@@ -150,6 +150,30 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual(rate.basis, 'per_day')
@with_transaction()
def test_sof_calculation_reads_applied_condition_rates(self):
'sof demurrage calculation uses the selected charter condition rates'
Sof = Pool().get('sof.statement')
sof = Sof()
sof.applied_condition = Mock(
laytime_allowed=None,
turn_time=Decimal('6'),
turn_time_unit='hours',
rates=[
Mock(rate=Decimal('300'), rate_type=Mock(category='pumping')),
Mock(rate=Decimal('24000'), rate_type=Mock(category='demurrage')),
],
)
sof.laytime_balance = -Decimal('12')
self.assertEqual(
sof._applied_turn_delta(), datetime.timedelta(hours=6))
self.assertEqual(
sof._applied_laytime_allowed(Decimal('600')), 2.0)
self.assertEqual(
sof._applied_compensation_amount(), Decimal('-12000.00'))
self.assertEqual(sof.compensation_type, 'demurrage')
@with_transaction()
def test_add_physical_lot_defaults_hidden_premium_and_chunk_key(self):
'add physical lot works when hidden tree fields are not loaded'