Add test for depends

This commit is contained in:
Cédric Krier
2011-08-04 16:57:42 +02:00
parent 834b2f04d1
commit 183a3e7bbf
7 changed files with 249 additions and 201 deletions
+26 -21
View File
@@ -1,7 +1,7 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, ModelSingleton, fields
from trytond.pyson import Eval
from trytond.pyson import Eval, Get
class Configuration(ModelSingleton, ModelSQL, ModelView):
@@ -10,29 +10,34 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
_description = __doc__
shipment_in_sequence = fields.Property(fields.Many2One('ir.sequence',
'Supplier Shipment Sequence', domain=[
('company', 'in', [Eval('company'), False]),
('code', '=', 'stock.shipment.in'),
], required=True))
'Supplier Shipment Sequence', domain=[
('company', 'in',
[Get(Eval('context', {}), 'company'), False]),
('code', '=', 'stock.shipment.in'),
], required=True))
shipment_in_return_sequence = fields.Property(fields.Many2One(
'ir.sequence', 'Supplier Return Shipment Sequence', domain=[
('company', 'in', [Eval('company'), False]),
('code', '=', 'stock.shipment.in.return'),
], required=True))
'ir.sequence', 'Supplier Return Shipment Sequence', domain=[
('company', 'in',
[Get(Eval('context', {}), 'company'), False]),
('code', '=', 'stock.shipment.in.return'),
], required=True))
shipment_out_sequence = fields.Property(fields.Many2One( 'ir.sequence',
'Customer Shipment Sequence', domain=[
('company', 'in', [Eval('company'), False]),
('code', '=', 'stock.shipment.out'),
], required=True))
'Customer Shipment Sequence', domain=[
('company', 'in',
[Get(Eval('context', {}), 'company'), False]),
('code', '=', 'stock.shipment.out'),
], required=True))
shipment_out_return_sequence = fields.Property(fields.Many2One(
'ir.sequence', 'Customer Return Shipment Sequence', domain=[
('company', 'in', [Eval('company'), False]),
('code', '=', 'stock.shipment.out.return'),
], required=True))
'ir.sequence', 'Customer Return Shipment Sequence', domain=[
('company', 'in',
[Get(Eval('context', {}), 'company'), False]),
('code', '=', 'stock.shipment.out.return'),
], required=True))
shipment_internal_sequence = fields.Property(fields.Many2One(
'ir.sequence', 'Internal Shipment Sequence', domain=[
('company', 'in', [Eval('company'), False]),
('code', '=', 'stock.shipment.internal'),
], required=True))
'ir.sequence', 'Internal Shipment Sequence', domain=[
('company', 'in',
[Get(Eval('context', {}), 'company'), False]),
('code', '=', 'stock.shipment.internal'),
], required=True))
Configuration()
+10 -5
View File
@@ -10,6 +10,7 @@ from trytond.pool import Pool
STATES = {
'readonly': Not(Equal(Eval('state'), 'draft')),
}
DEPENDS = ['state']
class Inventory(ModelWorkflow, ModelSQL, ModelView):
@@ -23,21 +24,25 @@ class Inventory(ModelWorkflow, ModelSQL, ModelView):
domain=[('type', '=', 'storage')], states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('lines'))),
})
},
depends=['state', 'lines'])
date = fields.Date('Date', required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('lines'))),
})
},
depends=['state', 'lines'])
lost_found = fields.Many2One(
'stock.location', 'Lost and Found', required=True,
domain=[('type', '=', 'lost_found')], states=STATES)
domain=[('type', '=', 'lost_found')], states=STATES, depends=DEPENDS)
lines = fields.One2Many(
'stock.inventory.line', 'inventory', 'Lines', states=STATES)
'stock.inventory.line', 'inventory', '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'),
+20 -14
View File
@@ -11,6 +11,7 @@ from trytond.pool import Pool
STATES = {
'readonly': Not(Bool(Eval('active'))),
}
DEPENDS = ['active']
class Location(ModelSQL, ModelView):
@@ -18,14 +19,16 @@ class Location(ModelSQL, ModelView):
_name = 'stock.location'
_description = __doc__
name = fields.Char("Name", size=None, required=True, states=STATES,
translate=True)
code = fields.Char("Code", size=None, states=STATES, select=1)
depends=DEPENDS, translate=True)
code = fields.Char("Code", size=None, states=STATES, depends=DEPENDS,
select=1)
active = fields.Boolean('Active', select=1)
address = fields.Many2One("party.address", "Address",
states={
'invisible': Not(Equal(Eval('type'), 'warehouse')),
'readonly': Not(Bool(Eval('active'))),
})
states={
'invisible': Not(Equal(Eval('type'), 'warehouse')),
'readonly': Not(Bool(Eval('active'))),
},
depends=['type', 'active'])
type = fields.Selection([
('supplier', 'Supplier'),
('customer', 'Customer'),
@@ -34,7 +37,7 @@ class Location(ModelSQL, ModelView):
('storage', 'Storage'),
('production', 'Production'),
('view', 'View'),
], 'Location type', states=STATES)
], 'Location type', states=STATES, depends=DEPENDS)
parent = fields.Many2One("stock.location", "Parent", select=1,
left="left", right="right")
left = fields.Integer('Left', required=True, select=1)
@@ -45,14 +48,15 @@ class Location(ModelSQL, ModelView):
'invisible': Not(Equal(Eval('type'), 'warehouse')),
'readonly': Not(Bool(Eval('active'))),
'required': Equal(Eval('type'), 'warehouse'),
},
},
domain=[
('type','=','storage'),
['OR',
('parent', 'child_of', [Eval('active_id')]),
('parent', 'child_of', [Eval('id')]),
('parent', '=', False),
],
],
])
depends=['type', 'active', 'id'])
output_location = fields.Many2One(
"stock.location", "Output", states={
'invisible': Not(Equal(Eval('type'), 'warehouse')),
@@ -61,8 +65,9 @@ class Location(ModelSQL, ModelView):
},
domain=[('type','=','storage'),
['OR',
('parent', 'child_of', [Eval('active_id')]),
('parent', '=', False)]])
('parent', 'child_of', [Eval('id')]),
('parent', '=', False)]],
depends=['type', 'active', 'id'])
storage_location = fields.Many2One(
"stock.location", "Storage", states={
'invisible': Not(Equal(Eval('type'), 'warehouse')),
@@ -71,8 +76,9 @@ class Location(ModelSQL, ModelView):
},
domain=[('type','=','storage'),
['OR',
('parent', 'child_of', [Eval('active_id')]),
('parent', '=', False)]])
('parent', 'child_of', [Eval('id')]),
('parent', '=', False)]],
depends=['type', 'active', 'id'])
quantity = fields.Function(fields.Float('Quantity'), 'get_quantity')
forecast_quantity = fields.Function(fields.Float('Forecast Quantity'),
'get_quantity')
+42 -33
View File
@@ -11,6 +11,7 @@ from trytond.pool import Pool
STATES = {
'readonly': In(Eval('state'), ['cancel', 'assigned', 'done']),
}
DEPENDS = ['state']
class Move(ModelSQL, ModelView):
@@ -19,32 +20,35 @@ class Move(ModelSQL, ModelView):
_description = __doc__
_order_name = 'product'
product = fields.Many2One("product.product", "Product", required=True,
select=1, states=STATES,
on_change=['product', 'currency', 'uom', 'company',
'from_location', 'to_location'],
domain=[('type', '!=', 'service')])
select=1, states=STATES,
on_change=['product', 'currency', 'uom', 'company',
'from_location', 'to_location'],
domain=[('type', '!=', 'service')],
depends=DEPENDS)
uom = fields.Many2One("product.uom", "Uom", required=True, states=STATES,
domain=[
('category', '=',
(Eval('product'), 'product.default_uom.category')),
domain=[
('category', '=',
(Eval('product'), 'product.default_uom.category')),
],
context={
'category': (Eval('product'), 'product.default_uom.category'),
context={
'category': (Eval('product'), 'product.default_uom.category'),
},
on_change=['product', 'currency', 'uom', 'company',
'from_location', 'to_location'])
on_change=['product', 'currency', 'uom', 'company',
'from_location', 'to_location'],
depends=['state', 'product'])
unit_digits = fields.Function(fields.Integer('Unit Digits',
on_change_with=['uom']), 'get_unit_digits')
quantity = fields.Float("Quantity", required=True,
digits=(16, Eval('unit_digits', 2)), states=STATES)
digits=(16, Eval('unit_digits', 2)), states=STATES,
depends=['state', 'unit_digits'])
internal_quantity = fields.Float('Internal Quantity', readonly=True,
required=True)
from_location = fields.Many2One("stock.location", "From Location", select=1,
required=True, states=STATES,
domain=[('type', 'not in', ('warehouse', 'view'))])
required=True, states=STATES, depends=DEPENDS,
domain=[('type', 'not in', ('warehouse', 'view'))])
to_location = fields.Many2One("stock.location", "To Location", select=1,
required=True, states=STATES,
domain=[('type', 'not in', ('warehouse', 'view'))])
required=True, states=STATES, depends=DEPENDS,
domain=[('type', 'not in', ('warehouse', 'view'))])
shipment_in = fields.Many2One('stock.shipment.in', 'Supplier Shipment',
readonly=True, select=1, ondelete='CASCADE')
shipment_out = fields.Many2One('stock.shipment.out', 'Customer Shipment',
@@ -57,7 +61,8 @@ class Move(ModelSQL, ModelView):
ondelete='CASCADE')
shipment_internal = fields.Many2One('stock.shipment.internal',
'Internal Shipment', readonly=True, select=1, ondelete='CASCADE')
planned_date = fields.Date("Planned Date", states=STATES, select=2)
planned_date = fields.Date("Planned Date", states=STATES, depends=DEPENDS,
select=2)
effective_date = fields.Date("Effective Date", readonly=True, select=2)
state = fields.Selection([
('draft', 'Draft'),
@@ -66,25 +71,29 @@ class Move(ModelSQL, ModelView):
('cancel', 'Canceled'),
], 'State', select=1, readonly=True)
company = fields.Many2One('company.company', 'Company', required=True,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[
('id', If(In('company', Eval('context', {})), '=', '!='),
Get(Eval('context', {}), 'company', 0)),
])
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
},
domain=[
('id', If(In('company', Eval('context', {})), '=', '!='),
Get(Eval('context', {}), 'company', 0)),
],
depends=['state'])
unit_price = fields.Numeric('Unit Price', digits=(16, 4),
states={
'invisible': Not(Bool(Eval('unit_price_required'))),
'required': Bool(Eval('unit_price_required')),
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'invisible': Not(Bool(Eval('unit_price_required'))),
'required': Bool(Eval('unit_price_required')),
'readonly': Not(Equal(Eval('state'), 'draft')),
},
depends=['unit_price_required', 'state'])
cost_price = fields.Numeric('Cost Price', digits=(16, 4), readonly=True)
currency = fields.Many2One('currency.currency', 'Currency',
states={
'invisible': Not(Bool(Eval('unit_price_required'))),
'required': Not(Bool(Eval('unit_price_required'))),
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'invisible': Not(Bool(Eval('unit_price_required'))),
'required': Not(Bool(Eval('unit_price_required'))),
'readonly': Not(Equal(Eval('state'), 'draft')),
},
depends=['unit_price_required', 'state'])
unit_price_required = fields.Function(fields.Boolean('Unit Price Required',
on_change_with=['from_location', 'to_location']),
'get_unit_price_required')
+1 -1
View File
@@ -14,7 +14,7 @@ class Period(ModelSQL, ModelView):
_rec_name = 'date'
date = fields.Date('Date', required=True, states={
'readonly': Equal(Eval('state'), 'closed'),
})
}, depends=['state'])
company = fields.Many2One('company.company', 'Company', required=True,
domain=[
('id', If(In('company', Eval('context', {})), '=', '!='),
+142 -126
View File
@@ -22,26 +22,28 @@ class ShipmentIn(ModelWorkflow, ModelSQL, ModelView):
effective_date = fields.Date('Effective Date', readonly=True)
planned_date = fields.Date('Planned Date', states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
}, depends=['state'])
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
supplier = fields.Many2One('party.party', 'Supplier',
states={
'readonly': And(Or(Not(Equal(Eval('state'), 'draft')),
states={
'readonly': And(Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('incoming_moves'))), Bool(Eval('supplier'))),
}, on_change=['supplier'], required=True)
}, on_change=['supplier'], required=True,
depends=['state', 'incoming_moves', 'supplier'])
contact_address = fields.Many2One('party.address', 'Contact Address',
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[('party', '=', Eval('supplier'))])
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[('party', '=', Eval('supplier'))],
depends=['state', 'supplier'])
warehouse = fields.Many2One('stock.location', "Warehouse",
required=True, domain=[('type', '=', 'warehouse')],
states={
'readonly': Or(In(Eval('state'), ['cancel', 'done']),
Bool(Eval('incoming_moves'))),
})
required=True, domain=[('type', '=', 'warehouse')],
states={
'readonly': Or(In(Eval('state'), ['cancel', 'done']),
Bool(Eval('incoming_moves'))),
}, depends=['state', 'incoming_moves'])
incoming_moves = fields.Function(fields.One2Many('stock.move', None,
'Incoming Moves', add_remove=[
('shipment_in', '=', False),
@@ -56,14 +58,16 @@ class ShipmentIn(ModelWorkflow, ModelSQL, ModelView):
'warehouse': Eval('warehouse'),
'type': 'incoming',
'supplier': Eval('supplier'),
}), 'get_incoming_moves', setter='set_incoming_moves')
}, depends=['state', 'warehouse']),
'get_incoming_moves', setter='set_incoming_moves')
inventory_moves = fields.Function(fields.One2Many('stock.move', None,
'Inventory Moves', states={
'readonly': In(Eval('state'), ['draft', 'done', 'cancel']),
}, context={
'warehouse': Eval('warehouse'),
'type': 'inventory_in',
}), 'get_inventory_moves', setter='set_inventory_moves')
}, depends=['state', 'warehouse']),
'get_inventory_moves', setter='set_inventory_moves')
moves = fields.One2Many('stock.move', 'shipment_in', 'Moves',
readonly=True)
code = fields.Char("Code", size=None, select=1, readonly=True)
@@ -354,35 +358,37 @@ class ShipmentInReturn(ModelWorkflow, ModelSQL, ModelView):
effective_date =fields.Date('Effective Date', readonly=True)
planned_date = fields.Date('Planned Date',
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
code = fields.Char("Code", size=None, select=1, readonly=True)
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
from_location = fields.Many2One('stock.location', "From Location",
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
}, domain=[('type', '=', 'storage')])
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
}, domain=[('type', '=', 'storage')],
depends=['state', 'moves'])
to_location = fields.Many2One('stock.location', "To Location",
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
}, domain=[('type', '=', 'supplier')])
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
}, domain=[('type', '=', 'supplier')],
depends=['state', 'moves'])
moves = fields.One2Many('stock.move', 'shipment_in_return', 'Moves',
states={
'readonly': And(Or(Not(Equal(Eval('state'), 'draft')),
Not(Bool(Eval('from_location')))),
Not(Bool(Eval('from_location')))),
Bool(Eval('to_location'))),
},
},
context={
'from_location': Eval('from_location'),
'to_location': Eval('to_location'),
'planned_date': Eval('planned_date'),
})
}, depends=['state', 'from_location', 'to_location'])
state = fields.Selection([
('draft', 'Draft'),
('cancel', 'Canceled'),
@@ -553,44 +559,49 @@ class ShipmentOut(ModelWorkflow, ModelSQL, ModelView):
effective_date = fields.Date('Effective Date', readonly=True)
planned_date = fields.Date('Planned Date',
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
customer = fields.Many2One('party.party', 'Customer', required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('outgoing_moves'))),
}, on_change=['customer'])
delivery_address = fields.Many2One('party.address',
'Delivery Address', required=True,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[('party', '=', Eval('customer'))])
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
warehouse = fields.Many2One('stock.location', "Warehouse", required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('outgoing_moves'))),
}, domain=[('type', '=', 'warehouse')])
outgoing_moves = fields.Function(fields.One2Many('stock.move', None,
'Outgoing Moves', states={
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Not(Bool(Eval('warehouse')))),
}, context={
'warehouse': Eval('warehouse'),
'type': 'outgoing',
'customer': Eval('customer'),
}), 'get_outgoing_moves', setter='set_outgoing_moves')
Bool(Eval('outgoing_moves'))),
}, on_change=['customer'],
depends=['state', 'outgoing_moves'])
delivery_address = fields.Many2One('party.address',
'Delivery Address', required=True,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[('party', '=', Eval('customer'))],
depends=['state', 'customer'])
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
warehouse = fields.Many2One('stock.location', "Warehouse", required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('outgoing_moves'))),
}, domain=[('type', '=', 'warehouse')],
depends=['state', 'outgoing_moves'])
outgoing_moves = fields.Function(fields.One2Many('stock.move', None,
'Outgoing Moves', states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Not(Bool(Eval('warehouse')))),
}, context={
'warehouse': Eval('warehouse'),
'type': 'outgoing',
'customer': Eval('customer'),
}, depends=['state', 'warehouse', 'customer']),
'get_outgoing_moves', setter='set_outgoing_moves')
inventory_moves = fields.Function(fields.One2Many('stock.move', None,
'Inventory Moves', states={
'readonly': In(Eval('state'), ['draft', 'packed', 'done']),
}, context={
'warehouse': Eval('warehouse'),
'type': 'inventory_out',
}), 'get_inventory_moves', setter='set_inventory_moves')
'Inventory Moves', states={
'readonly': In(Eval('state'), ['draft', 'packed', 'done']),
}, context={
'warehouse': Eval('warehouse'),
'type': 'inventory_out',
}, depends=['state', 'warehouse']),
'get_inventory_moves', setter='set_inventory_moves')
moves = fields.One2Many('stock.move', 'shipment_out', 'Moves',
readonly=True)
code = fields.Char("Code", size=None, select=1, readonly=True)
@@ -983,43 +994,48 @@ class ShipmentOutReturn(ModelWorkflow, ModelSQL, ModelView):
effective_date = fields.Date('Effective Date', readonly=True)
planned_date = fields.Date('Planned Date',
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
customer = fields.Many2One('party.party', 'Customer', required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('incoming_moves'))),
}, on_change=['customer'])
delivery_address = fields.Many2One('party.address',
'Delivery Address', required=True,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[('party', '=', Eval('customer'))])
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
warehouse = fields.Many2One('stock.location', "Warehouse", required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('incoming_moves'))),
}, domain=[('type', '=', 'warehouse')])
incoming_moves = fields.Function(fields.One2Many('stock.move', None,
'Incoming Moves', states={
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, context={
'warehouse': Eval('warehouse'),
'type': 'incoming',
'customer': Eval('customer'),
}), 'get_incoming_moves', setter='set_incoming_moves')
}, depends=['state'])
customer = fields.Many2One('party.party', 'Customer', required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('incoming_moves'))),
}, on_change=['customer'],
depends=['state', 'incoming_moves'])
delivery_address = fields.Many2One('party.address',
'Delivery Address', required=True,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, domain=[('party', '=', Eval('customer'))],
depends=['state', 'customer'])
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
warehouse = fields.Many2One('stock.location', "Warehouse", required=True,
states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('incoming_moves'))),
}, domain=[('type', '=', 'warehouse')],
depends=['state', 'incoming_moves'])
incoming_moves = fields.Function(fields.One2Many('stock.move', None,
'Incoming Moves', states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, context={
'warehouse': Eval('warehouse'),
'type': 'incoming',
'customer': Eval('customer'),
}, depends=['state', 'warehouse', 'customer']),
'get_incoming_moves', setter='set_incoming_moves')
inventory_moves = fields.Function(fields.One2Many('stock.move', None,
'Inventory Moves', states={
'readonly': In(Eval('state'), ['draft', 'cancel', 'done']),
}, context={
'warehouse': Eval('warehouse'),
'type': 'inventory_out',
}), 'get_inventory_moves', setter='set_inventory_moves')
'Inventory Moves', states={
'readonly': In(Eval('state'), ['draft', 'cancel', 'done']),
}, context={
'warehouse': Eval('warehouse'),
'type': 'inventory_out',
}, depends=['state', 'warehouse']),
'get_inventory_moves', setter='set_inventory_moves')
moves = fields.One2Many('stock.move', 'shipment_out_return', 'Moves',
readonly=True)
code = fields.Char("Code", size=None, select=1, readonly=True)
@@ -1392,42 +1408,42 @@ class ShipmentInternal(ModelWorkflow, ModelSQL, ModelView):
effective_date =fields.Date('Effective Date', readonly=True)
planned_date = fields.Date('Planned Date',
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
code = fields.Char("Code", size=None, select=1, readonly=True)
reference = fields.Char("Reference", size=None, select=1,
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
})
states={
'readonly': Not(Equal(Eval('state'), 'draft')),
}, depends=['state'])
from_location = fields.Many2One('stock.location', "From Location",
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
},
domain=[
('type', 'not in',
['supplier', 'customer', 'warehouse', 'view']),
])
domain=[
('type', 'not in',
['supplier', 'customer', 'warehouse', 'view']),
], depends=['state', 'moves'])
to_location = fields.Many2One('stock.location', "To Location",
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
required=True, states={
'readonly': Or(Not(Equal(Eval('state'), 'draft')),
Bool(Eval('moves'))),
}, domain=[
('type', 'not in',
['supplier', 'customer', 'warehouse', 'view']),
])
('type', 'not in',
['supplier', 'customer', 'warehouse', 'view']),
], depends=['state', 'moves'])
moves = fields.One2Many('stock.move', 'shipment_internal', 'Moves',
states={
'readonly': And(Or(Not(Equal(Eval('state'), 'draft')),
Not(Bool(Eval('from_location')))),
Not(Bool(Eval('from_location')))),
Bool(Eval('to_location'))),
},
},
context={
'from_location': Eval('from_location'),
'to_location': Eval('to_location'),
'planned_date': Eval('planned_date'),
})
}, depends=['state', 'from_location', 'to_location', 'planned_date'])
state = fields.Selection([
('draft', 'Draft'),
('cancel', 'Canceled'),
+8 -1
View File
@@ -14,7 +14,8 @@ from decimal import Decimal
from dateutil.relativedelta import relativedelta
from functools import partial
import trytond.tests.test_tryton
from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view
from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
test_depends
from trytond.transaction import Transaction
@@ -41,6 +42,12 @@ class StockTestCase(unittest.TestCase):
'''
test_view('stock')
def test0006depends(self):
'''
Test depends.
'''
test_depends()
def test0010move_internal_quantity(self):
'''
Test Move.internal_quantity.