Pnl
This commit is contained in:
@@ -160,6 +160,62 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
strategy, line),
|
||||
Decimal('-349167.53'))
|
||||
|
||||
@with_transaction()
|
||||
def test_strategy_mtm_lines_split_by_curve_with_previous_price(self):
|
||||
'strategy MTM creates one valuation line per curve with previous price'
|
||||
Valuation = Pool().get('valuation.valuation')
|
||||
valuation_date = datetime.date(2026, 6, 5)
|
||||
previous_date = datetime.date(2026, 6, 4)
|
||||
unit = Mock()
|
||||
currency = Mock()
|
||||
line = Mock(unit=unit)
|
||||
curve_a = Mock(id=10)
|
||||
curve_a.get_price.side_effect = [Decimal('100'), Decimal('90')]
|
||||
curve_b = Mock(id=20)
|
||||
curve_b.get_price.side_effect = [Decimal('50'), Decimal('45')]
|
||||
strategy = Mock(
|
||||
scenario=Mock(
|
||||
valuation_date=valuation_date,
|
||||
use_last_price=False),
|
||||
currency=currency,
|
||||
components=[
|
||||
Mock(
|
||||
price_source_type='curve',
|
||||
price_index=curve_a,
|
||||
ratio=Decimal('60')),
|
||||
Mock(
|
||||
price_source_type='curve',
|
||||
price_index=curve_b,
|
||||
ratio=Decimal('40')),
|
||||
])
|
||||
values = {
|
||||
'type': 'pur. priced',
|
||||
'price': Decimal('10'),
|
||||
'amount': Decimal('-100'),
|
||||
'base_amount': Decimal('-100'),
|
||||
'quantity': Decimal('10'),
|
||||
}
|
||||
target = []
|
||||
price_value = Mock()
|
||||
price_value.search.return_value = [Mock(price_date=previous_date)]
|
||||
|
||||
with patch('trytond.modules.purchase_trade.valuation.Pool') as PoolMock:
|
||||
PoolMock.return_value.get.return_value = price_value
|
||||
Valuation._append_strategy_mtm_lines(
|
||||
target, values, strategy, line)
|
||||
|
||||
self.assertEqual(len(target), 2)
|
||||
self.assertEqual(target[0]['mtm_curve'], curve_a.id)
|
||||
self.assertEqual(target[0]['amount'], Decimal('-60.00'))
|
||||
self.assertEqual(target[0]['mtm_price'], Decimal('60.0000'))
|
||||
self.assertEqual(target[0]['mtm_price_prev'], Decimal('54.0000'))
|
||||
self.assertEqual(target[0]['mtm'], Decimal('-600.00'))
|
||||
self.assertEqual(target[1]['mtm_curve'], curve_b.id)
|
||||
self.assertEqual(target[1]['amount'], Decimal('-40.00'))
|
||||
self.assertEqual(target[1]['mtm_price'], Decimal('20.0000'))
|
||||
self.assertEqual(target[1]['mtm_price_prev'], Decimal('18.0000'))
|
||||
self.assertEqual(target[1]['mtm'], Decimal('-200.00'))
|
||||
|
||||
@with_transaction()
|
||||
def test_purchase_line_charter_conditions_inherit_header_when_empty(self):
|
||||
'purchase line uses header charter conditions when it has no line terms'
|
||||
|
||||
Reference in New Issue
Block a user