Valuation cron

This commit is contained in:
2026-06-06 11:03:53 +02:00
parent 73006db98a
commit b3c33ed314
4 changed files with 74 additions and 10 deletions

View File

@@ -722,6 +722,38 @@ class PurchaseTradeTestCase(ModuleTestCase):
{'type': 'derivative'},
])
def test_update_daily_snapshot_generates_all_purchases_and_unmatched_sales(self):
'daily valuation cron snapshots purchases and unmatched sale lines'
Valuation = Pool().get('valuation.valuation')
PurchaseLine = Mock()
SaleLine = Mock()
purchase_lines = [Mock(id=1), Mock(id=2)]
unmatched_sale_line = Mock(id=3)
unmatched_sale_line.get_matched_lines.return_value = []
matched_sale_line = Mock(id=4)
matched_sale_line.get_matched_lines.return_value = [
Mock(lot_p=Mock(line=Mock(id=5)))]
PurchaseLine.search.return_value = purchase_lines
SaleLine.search.return_value = [unmatched_sale_line, matched_sale_line]
with patch(
'trytond.modules.purchase_trade.valuation.Pool'
) as PoolMock, patch.object(
Valuation, 'generate') as generate, patch.object(
Valuation, 'generate_from_sale_line'
) as generate_from_sale_line:
PoolMock.return_value.get.side_effect = lambda name: {
'purchase.line': PurchaseLine,
'sale.line': SaleLine,
}[name]
Valuation.update_daily_snapshot()
generate.assert_any_call(purchase_lines[0])
generate.assert_any_call(purchase_lines[1])
self.assertEqual(generate.call_count, 2)
generate_from_sale_line.assert_called_once_with(unmatched_sale_line)
def test_create_pnl_fee_from_line_accepts_missing_rate_amount(self):
'purchase fee valuation treats an uncomputed rate amount as zero'
Valuation = Pool().get('valuation.valuation')