Add open/closed state on package
When a package is closed, we should not allow to modify it. It is closed when the linked shipment is in packed, done or cancel state. issue7714 review47831002
This commit is contained in:
1 parent
268378b000
commit
89fe3467fa
5 files changed
+53
-12
No files matched your search
@@ -1,3 +1,5 @@
|
||||
* Add open/closed state on package
|
||||
|
||||
Version 5.0.0 - 2018-10-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove support for Python 2.7
|
||||
|
||||
@@ -80,9 +80,18 @@ class Package(tree(), ModelSQL, ModelView):
|
||||
__name__ = 'stock.package'
|
||||
_rec_name = 'code'
|
||||
code = fields.Char('Code', select=True, readonly=True, required=True)
|
||||
type = fields.Many2One('stock.package.type', 'Type', required=True)
|
||||
shipment = fields.Reference('Shipment', selection='get_shipment',
|
||||
select=True)
|
||||
type = fields.Many2One(
|
||||
'stock.package.type', "Type", required=True,
|
||||
states={
|
||||
'readonly': Eval('state') == 'closed',
|
||||
},
|
||||
depends=['state'])
|
||||
shipment = fields.Reference(
|
||||
"Shipment", selection='get_shipment', select=True,
|
||||
states={
|
||||
'readonly': Eval('state') == 'closed',
|
||||
},
|
||||
depends=['state'])
|
||||
moves = fields.One2Many('stock.move', 'package', 'Moves',
|
||||
domain=[
|
||||
('shipment', '=', Eval('shipment')),
|
||||
@@ -92,13 +101,32 @@ class Package(tree(), ModelSQL, ModelView):
|
||||
add_remove=[
|
||||
('package', '=', None),
|
||||
],
|
||||
depends=['shipment'])
|
||||
parent = fields.Many2One('stock.package', 'Parent', select=True,
|
||||
ondelete='CASCADE', domain=[('shipment', '=', Eval('shipment'))],
|
||||
depends=['shipment'])
|
||||
children = fields.One2Many('stock.package', 'parent', 'Children',
|
||||
domain=[('shipment', '=', Eval('shipment'))],
|
||||
depends=['shipment'])
|
||||
states={
|
||||
'readonly': Eval('state') == 'closed',
|
||||
},
|
||||
depends=['shipment', 'state'])
|
||||
parent = fields.Many2One(
|
||||
'stock.package', "Parent", select=True, ondelete='CASCADE',
|
||||
domain=[
|
||||
('shipment', '=', Eval('shipment')),
|
||||
],
|
||||
states={
|
||||
'readonly': Eval('state') == 'closed',
|
||||
},
|
||||
depends=['shipment', 'state'])
|
||||
children = fields.One2Many(
|
||||
'stock.package', 'parent', 'Children',
|
||||
domain=[
|
||||
('shipment', '=', Eval('shipment')),
|
||||
],
|
||||
states={
|
||||
'readonly': Eval('state') == 'closed',
|
||||
},
|
||||
depends=['shipment', 'state'])
|
||||
state = fields.Function(fields.Selection([
|
||||
('open', "Open"),
|
||||
('closed', "Closed"),
|
||||
], "State"), 'on_change_with_state')
|
||||
|
||||
@staticmethod
|
||||
def _get_shipment():
|
||||
@@ -118,6 +146,13 @@ class Package(tree(), ModelSQL, ModelView):
|
||||
])
|
||||
return [(None, '')] + [(m.model, m.name) for m in models]
|
||||
|
||||
@fields.depends('shipment')
|
||||
def on_change_with_state(self, name=None):
|
||||
if (self.shipment
|
||||
and self.shipment.state in {'packed', 'done', 'cancel'}):
|
||||
return 'closed'
|
||||
return 'open'
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
pool = Pool()
|
||||
@@ -145,13 +180,13 @@ class Move(metaclass=PoolMeta):
|
||||
class PackageMixin(object):
|
||||
packages = fields.One2Many('stock.package', 'shipment', 'Packages',
|
||||
states={
|
||||
'readonly': Eval('state').in_(['done', 'cancel']),
|
||||
'readonly': Eval('state').in_(['packed', 'done', 'cancel']),
|
||||
})
|
||||
root_packages = fields.Function(fields.One2Many('stock.package',
|
||||
'shipment', 'Packages',
|
||||
domain=[('parent', '=', None)],
|
||||
states={
|
||||
'readonly': Eval('state').in_(['done', 'cancel']),
|
||||
'readonly': Eval('state').in_(['packed', 'done', 'cancel']),
|
||||
}), 'get_root_packages', setter='set_root_packages')
|
||||
|
||||
def get_root_packages(self, name):
|
||||
|
||||
@@ -12,4 +12,6 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="shipment"/>
|
||||
<field name="moves" colspan="4" widget="many2many"/>
|
||||
<field name="children" colspan="4"/>
|
||||
<label name="state"/>
|
||||
<field name="state"/>
|
||||
</form>
|
||||
@@ -5,4 +5,5 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="rec_name"/>
|
||||
<field name="shipment"/>
|
||||
<field name="type"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
@@ -5,6 +5,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="rec_name"/>
|
||||
<field name="type"/>
|
||||
<field name="shipment"/>
|
||||
<field name="state"/>
|
||||
<field name="parent" tree_invisible="1"/>
|
||||
<field name="children" tree_invisible="1"/>
|
||||
</tree>
|
||||
Reference in new issue
Block a user