Pricing cron
This commit is contained in:
@@ -1331,17 +1331,23 @@ class Pricing(ModelSQL,ModelView):
|
|||||||
purchase_lines = PurchaseLine.search([])
|
purchase_lines = PurchaseLine.search([])
|
||||||
sale_lines = SaleLine.search([])
|
sale_lines = SaleLine.search([])
|
||||||
|
|
||||||
for line in purchase_lines:
|
cls._update_line_pricing_prices(PurchaseLine, purchase_lines)
|
||||||
line.check_pricing()
|
cls._update_line_pricing_prices(SaleLine, sale_lines)
|
||||||
|
|
||||||
for sale_line in sale_lines:
|
|
||||||
sale_line.check_pricing()
|
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"Updated pricing for %s purchase line(s) and %s sale line(s)",
|
"Updated pricing for %s purchase line(s) and %s sale line(s)",
|
||||||
len(purchase_lines),
|
len(purchase_lines),
|
||||||
len(sale_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
|
@classmethod
|
||||||
def _is_manual_pricing_record(cls, record):
|
def _is_manual_pricing_record(cls, record):
|
||||||
component = getattr(record, 'price_component', None)
|
component = getattr(record, 'price_component', None)
|
||||||
|
|||||||
@@ -1407,8 +1407,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
|||||||
self.assertEqual(generate.call_count, 2)
|
self.assertEqual(generate.call_count, 2)
|
||||||
generate_from_sale_line.assert_called_once_with(unmatched_sale_line)
|
generate_from_sale_line.assert_called_once_with(unmatched_sale_line)
|
||||||
|
|
||||||
def test_update_daily_pricing_checks_all_purchase_and_sale_lines(self):
|
def test_update_daily_pricing_checks_and_recomputes_all_lines(self):
|
||||||
'daily pricing cron refreshes purchase and sale pricing lines'
|
'daily pricing cron refreshes pricing and line prices'
|
||||||
Pricing = Pool().get('pricing.pricing')
|
Pricing = Pool().get('pricing.pricing')
|
||||||
PurchaseLine = Mock()
|
PurchaseLine = Mock()
|
||||||
SaleLine = Mock()
|
SaleLine = Mock()
|
||||||
@@ -1431,6 +1431,9 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
|||||||
SaleLine.search.assert_called_once_with([])
|
SaleLine.search.assert_called_once_with([])
|
||||||
for line in purchase_lines + sale_lines:
|
for line in purchase_lines + sale_lines:
|
||||||
line.check_pricing.assert_called_once_with()
|
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):
|
def test_create_pnl_fee_from_line_accepts_missing_rate_amount(self):
|
||||||
'purchase fee valuation treats an uncomputed rate amount as zero'
|
'purchase fee valuation treats an uncomputed rate amount as zero'
|
||||||
|
|||||||
@@ -9,10 +9,12 @@
|
|||||||
<newline/>
|
<newline/>
|
||||||
<label name="every"/>
|
<label name="every"/>
|
||||||
<field name="every"/>
|
<field name="every"/>
|
||||||
<label name="nb_quotation_before"/>
|
<group id="quotation_counts" col="-1" colspan="2">
|
||||||
<field name="nb_quotation_before"/>
|
<label name="nb_quotation_before"/>
|
||||||
<label name="nb_quotation_after"/>
|
<field name="nb_quotation_before"/>
|
||||||
<field name="nb_quotation_after"/>
|
<label name="nb_quotation_after"/>
|
||||||
|
<field name="nb_quotation_after"/>
|
||||||
|
</group>
|
||||||
<newline/>
|
<newline/>
|
||||||
<label name="startday"/>
|
<label name="startday"/>
|
||||||
<field name="startday"/>
|
<field name="startday"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user