Pnl clean up
This commit is contained in:
@@ -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,
|
||||
}])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user