Pnl clean up

This commit is contained in:
2026-07-01 15:39:46 +02:00
parent 99d5d2a849
commit ea85927a17
3 changed files with 141 additions and 0 deletions

View File

@@ -1824,6 +1824,47 @@ class PurchaseTradeTestCase(ModuleTestCase):
{'type': 'derivative', 'amount': Decimal('30')},
])
def test_delete_existing_purchase_clears_matched_sale_line_only_values(self):
'purchase valuation cleanup removes matched sale-only valuation rows'
Valuation = Pool().get('valuation.valuation')
today = datetime.date(2026, 7, 1)
sale_line = Mock(id=30)
sale_lot = Mock(sale_line=sale_line)
purchase_lot = Mock(id=20, lot_type='virtual', sale_line=None)
line = Mock(
id=10,
finished=False,
lots=[purchase_lot],
get_matched_lines=Mock(return_value=[]))
valuation_model = Mock()
valuation_line_model = Mock()
lot_qt_model = Mock()
lot_qt_model.search.return_value = [Mock(lot_s=sale_lot)]
with patch('trytond.modules.purchase_trade.valuation.Pool') as PoolMock:
PoolMock.return_value.get.side_effect = lambda name: {
'ir.date': Mock(today=Mock(return_value=today)),
'valuation.valuation': valuation_model,
'valuation.valuation.line': valuation_line_model,
'lot.qt': lot_qt_model,
}[name]
Valuation._delete_existing(line)
valuation_model.search.assert_any_call([
('line', '=', line.id),
('date', '=', today),
])
valuation_model.search.assert_any_call([
('sale_line', '=', sale_line.id),
('line', '=', None),
('date', '=', today),
])
valuation_line_model.search.assert_any_call([
('sale_line', '=', sale_line.id),
('line', '=', None),
])
def test_generate_keeps_finished_purchase_line_physical_pnl(self):
'finished purchase lines still generate physical lot valuation'
Valuation = Pool().get('valuation.valuation')
@@ -2728,6 +2769,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual(segments, [{
'quantity': Decimal('18000'),
'share': Decimal('1'),
'sale_lot': None,
'sale_line': None,
'shipment_in': shipment.id,
}])