diff --git a/modules/purchase_trade/pricing.py b/modules/purchase_trade/pricing.py
index 4f0fc9b..ff1ebf6 100755
--- a/modules/purchase_trade/pricing.py
+++ b/modules/purchase_trade/pricing.py
@@ -1331,17 +1331,23 @@ class Pricing(ModelSQL,ModelView):
purchase_lines = PurchaseLine.search([])
sale_lines = SaleLine.search([])
- for line in purchase_lines:
- line.check_pricing()
-
- for sale_line in sale_lines:
- sale_line.check_pricing()
+ cls._update_line_pricing_prices(PurchaseLine, purchase_lines)
+ cls._update_line_pricing_prices(SaleLine, sale_lines)
logger.info(
"Updated pricing for %s purchase line(s) and %s sale line(s)",
len(purchase_lines),
len(sale_lines))
+ @classmethod
+ def _update_line_pricing_prices(cls, Line, lines):
+ if not lines:
+ return
+ for line in lines:
+ line.check_pricing()
+ line._recompute_trade_price_fields()
+ Line.save(lines)
+
@classmethod
def _is_manual_pricing_record(cls, record):
component = getattr(record, 'price_component', None)
diff --git a/modules/purchase_trade/tests/test_module.py b/modules/purchase_trade/tests/test_module.py
index d201210..126fffc 100644
--- a/modules/purchase_trade/tests/test_module.py
+++ b/modules/purchase_trade/tests/test_module.py
@@ -1407,8 +1407,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual(generate.call_count, 2)
generate_from_sale_line.assert_called_once_with(unmatched_sale_line)
- def test_update_daily_pricing_checks_all_purchase_and_sale_lines(self):
- 'daily pricing cron refreshes purchase and sale pricing lines'
+ def test_update_daily_pricing_checks_and_recomputes_all_lines(self):
+ 'daily pricing cron refreshes pricing and line prices'
Pricing = Pool().get('pricing.pricing')
PurchaseLine = Mock()
SaleLine = Mock()
@@ -1431,6 +1431,9 @@ class PurchaseTradeTestCase(ModuleTestCase):
SaleLine.search.assert_called_once_with([])
for line in purchase_lines + sale_lines:
line.check_pricing.assert_called_once_with()
+ line._recompute_trade_price_fields.assert_called_once_with()
+ PurchaseLine.save.assert_called_once_with(purchase_lines)
+ SaleLine.save.assert_called_once_with(sale_lines)
def test_create_pnl_fee_from_line_accepts_missing_rate_amount(self):
'purchase fee valuation treats an uncomputed rate amount as zero'
diff --git a/modules/purchase_trade/view/period_form.xml b/modules/purchase_trade/view/period_form.xml
index c084571..e04c212 100755
--- a/modules/purchase_trade/view/period_form.xml
+++ b/modules/purchase_trade/view/period_form.xml
@@ -9,10 +9,12 @@
-
-
-
-
+
+
+
+
+
+