Add test for depends
This commit is contained in:
+26
-21
@@ -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
@@ -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
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user