diff --git a/forecast.py b/forecast.py index 684256d3bd..a70b345a61 100644 --- a/forecast.py +++ b/forecast.py @@ -13,6 +13,7 @@ from trytond.pool import Pool STATES = { 'readonly': Not(Equal(Eval('state'), 'draft')), } +DEPENDS = ['state'] class Forecast(ModelWorkflow, ModelSQL, ModelView): @@ -26,19 +27,24 @@ class Forecast(ModelWorkflow, ModelSQL, ModelView): domain=[('type', '=', 'storage')], states={ 'readonly': Or(Not(Equal(Eval('state'), 'draft')), Bool(Eval('lines'))), - }) + }, + depends=['state', 'lines']) destination = fields.Many2One( 'stock.location', 'Destination', required=True, - domain=[('type', '=', 'customer')], states=STATES) - from_date = fields.Date('From Date', required=True, states=STATES) - to_date = fields.Date('To Date', required=True, states=STATES) + domain=[('type', '=', 'customer')], states=STATES, depends=DEPENDS) + from_date = fields.Date('From Date', required=True, states=STATES, + depends=DEPENDS) + to_date = fields.Date('To Date', required=True, states=STATES, + depends=DEPENDS) lines = fields.One2Many( - 'stock.forecast.line', 'forecast', 'Lines', states=STATES) + 'stock.forecast.line', 'forecast', 'Lines', states=STATES, + depends=DEPENDS) company = fields.Many2One( 'company.company', 'Company', required=True, states={ 'readonly': Or(Not(Equal(Eval('state'), 'draft')), Bool(Eval('lines'))), - }) + }, + depends=['state', 'lines']) state = fields.Selection([ ('draft', 'Draft'), ('done', 'Done'), @@ -176,18 +182,18 @@ class ForecastLine(ModelSQL, ModelView): product = fields.Many2One('product.product', 'Product', required=True, domain=[('type', '=', 'stockable')], on_change=['product']) - uom = fields.Many2One( - 'product.uom', 'UOM', required=True, + uom = fields.Many2One('product.uom', 'UOM', required=True, domain=[ ('category', '=', (Eval('product'), 'product.default_uom.category')), - ], on_change=['uom']) + ], on_change=['uom'], depends=['product']) unit_digits = fields.Function(fields.Integer('Unit Digits'), 'get_unit_digits') quantity = fields.Float('Quantity', digits=(16, Eval('unit_digits', 2)), - required=True) + required=True, depends=['unit_digits']) minimal_quantity = fields.Float('Minimal Qty', - digits=(16, Eval('unit_digits', 2)), required=True) + digits=(16, Eval('unit_digits', 2)), required=True, + depends=['unit_digits']) moves = fields.Many2Many('stock.forecast.line-stock.move', 'line', 'move','Moves', readonly=True) forecast = fields.Many2One( diff --git a/tests/test_stock_forecast.py b/tests/test_stock_forecast.py index 5c46d25dc4..a2fc638f5c 100644 --- a/tests/test_stock_forecast.py +++ b/tests/test_stock_forecast.py @@ -10,7 +10,7 @@ if os.path.isdir(DIR): import unittest import trytond.tests.test_tryton -from trytond.tests.test_tryton import test_view +from trytond.tests.test_tryton import test_view, test_depends class StockForecastTestCase(unittest.TestCase): @@ -27,6 +27,12 @@ class StockForecastTestCase(unittest.TestCase): ''' test_view('stock_forecast') + def test0006depends(self): + ''' + Test depends. + ''' + test_depends() + def suite(): suite = trytond.tests.test_tryton.suite() suite.addTests(unittest.TestLoader().loadTestsFromTestCase(