[REF] stock: refactoring set active field on push and pull rules as a normal field (previously related on the route) as the route_id field is not required
bzr revid: qdp-launchpad@openerp.com-20140423082322-ms66ta8zq0uklw32
This commit is contained in:
parent
6ccdde1f9b
commit
d69f5e20ec
|
@ -79,6 +79,7 @@ class procurement_rule(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Name', required=True,
|
||||
help="This field will fill the packing origin and the name of its moves"),
|
||||
'active': fields.boolean('Active', help="If unchecked, it will allow you to hide the rule without removing it."),
|
||||
'group_propagation_option': fields.selection([('none', 'Leave Empty'), ('propagate', 'Propagate'), ('fixed', 'Fixed')], string="Propagation of Procurement Group"),
|
||||
'group_id': fields.many2one('procurement.group', 'Fixed Procurement Group'),
|
||||
'action': fields.selection(selection=lambda s, cr, uid, context=None: s._get_action(cr, uid, context=context),
|
||||
|
@ -90,6 +91,7 @@ class procurement_rule(osv.osv):
|
|||
_defaults = {
|
||||
'group_propagation_option': 'propagate',
|
||||
'sequence': 20,
|
||||
'active': True,
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -221,6 +221,7 @@
|
|||
<group string="General Information">
|
||||
<field name="action"/>
|
||||
<field name="sequence"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group name="propagation_group" string="Propagation Options" groups="base.group_no_one">
|
||||
<field name="group_propagation_option"/>
|
||||
|
|
|
@ -47,20 +47,6 @@ class procurement_rule(osv.osv):
|
|||
res += [x.id for x in route.pull_ids]
|
||||
return res
|
||||
|
||||
def _get_route(self, cr, uid, ids, context=None):
|
||||
#WARNING TODO route_id is not required, so a field related seems a bad idea >-<
|
||||
if context is None:
|
||||
context = {}
|
||||
result = {}
|
||||
if context is None:
|
||||
context = {}
|
||||
context_with_inactive = context.copy()
|
||||
context_with_inactive['active_test']=False
|
||||
for route in self.pool.get('stock.location.route').browse(cr, uid, ids, context=context_with_inactive):
|
||||
for pull_rule in route.pull_ids:
|
||||
result[pull_rule.id] = True
|
||||
return result.keys()
|
||||
|
||||
_columns = {
|
||||
'location_id': fields.many2one('stock.location', 'Procurement Location'),
|
||||
'location_src_id': fields.many2one('stock.location', 'Source Location',
|
||||
|
@ -76,10 +62,6 @@ class procurement_rule(osv.osv):
|
|||
}),
|
||||
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type',
|
||||
help="Picking Type determines the way the picking should be shown in the view, reports, ..."),
|
||||
'active': fields.related('route_id', 'active', type='boolean', string='Active', store={
|
||||
'stock.location.route': (_get_route, ['active'], 20),
|
||||
'procurement.rule': (lambda self, cr, uid, ids, c={}: ids, ['route_id'], 20)},
|
||||
help="If the active field is set to False, it will allow you to hide the rule without removing it."),
|
||||
'delay': fields.integer('Number of Days'),
|
||||
'partner_address_id': fields.many2one('res.partner', 'Partner Address'),
|
||||
'propagate': fields.boolean('Propagate cancel and split', help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too'),
|
||||
|
@ -89,7 +71,6 @@ class procurement_rule(osv.osv):
|
|||
|
||||
_defaults = {
|
||||
'procure_method': 'make_to_stock',
|
||||
'active': True,
|
||||
'propagate': True,
|
||||
'delay': 0,
|
||||
}
|
||||
|
|
|
@ -210,6 +210,24 @@ class stock_location_route(osv.osv):
|
|||
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.location.route', context=c),
|
||||
}
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
'''when a route is deactivated, deactivate also its pull and push rules'''
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
res = super(stock_location_route, self).write(cr, uid, ids, vals, context=context)
|
||||
if 'active' in vals:
|
||||
push_ids = []
|
||||
pull_ids = []
|
||||
for route in self.browse(cr, uid, ids, context=context):
|
||||
if route.push_ids:
|
||||
push_ids += [r.id for r in route.push_ids if r.active != vals['active']]
|
||||
if route.pull_ids:
|
||||
pull_ids += [r.id for r in route.pull_ids if r.active != vals['active']]
|
||||
if push_ids:
|
||||
self.pool.get('stock.location.path').write(cr, uid, push_ids, {'active': vals['active']}, context=context)
|
||||
if pull_ids:
|
||||
self.pool.get('procurement.rule').write(cr, uid, pull_ids, {'active': vals['active']}, context=context)
|
||||
return res
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Quants
|
||||
|
@ -3324,20 +3342,6 @@ class stock_location_path(osv.osv):
|
|||
_description = "Pushed Flows"
|
||||
_order = "name"
|
||||
|
||||
def _get_route(self, cr, uid, ids, context=None):
|
||||
#WARNING TODO route_id is not required, so a field related seems a bad idea >-<
|
||||
if context is None:
|
||||
context = {}
|
||||
result = {}
|
||||
if context is None:
|
||||
context = {}
|
||||
context_with_inactive = context.copy()
|
||||
context_with_inactive['active_test'] = False
|
||||
for route in self.pool.get('stock.location.route').browse(cr, uid, ids, context=context_with_inactive):
|
||||
for push_rule in route.push_ids:
|
||||
result[push_rule.id] = True
|
||||
return result.keys()
|
||||
|
||||
def _get_rules(self, cr, uid, ids, context=None):
|
||||
res = []
|
||||
for route in self.browse(cr, uid, ids, context=context):
|
||||
|
@ -3362,10 +3366,7 @@ class stock_location_path(osv.osv):
|
|||
"by a worker. With 'Automatic No Step Added', the location is replaced in the original move."
|
||||
),
|
||||
'propagate': fields.boolean('Propagate cancel and split', help='If checked, when the previous move is cancelled or split, the move generated by this move will too'),
|
||||
'active': fields.related('route_id', 'active', type='boolean', string='Active', store={
|
||||
'stock.location.route': (_get_route, ['active'], 20),
|
||||
'stock.location.path': (lambda self, cr, uid, ids, c={}: ids, ['route_id'], 20),},
|
||||
help="If the active field is set to False, it will allow you to hide the rule without removing it." ),
|
||||
'active': fields.boolean('Active', help="If unchecked, it will allow you to hide the rule without removing it."),
|
||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),
|
||||
'route_sequence': fields.related('route_id', 'sequence', string='Route Sequence',
|
||||
store={
|
||||
|
|
Loading…
Reference in New Issue