[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 = {
|
_columns = {
|
||||||
'name': fields.char('Name', required=True,
|
'name': fields.char('Name', required=True,
|
||||||
help="This field will fill the packing origin and the name of its moves"),
|
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_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'),
|
'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),
|
'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 = {
|
_defaults = {
|
||||||
'group_propagation_option': 'propagate',
|
'group_propagation_option': 'propagate',
|
||||||
'sequence': 20,
|
'sequence': 20,
|
||||||
|
'active': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,7 @@
|
||||||
<group string="General Information">
|
<group string="General Information">
|
||||||
<field name="action"/>
|
<field name="action"/>
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
|
<field name="active"/>
|
||||||
</group>
|
</group>
|
||||||
<group name="propagation_group" string="Propagation Options" groups="base.group_no_one">
|
<group name="propagation_group" string="Propagation Options" groups="base.group_no_one">
|
||||||
<field name="group_propagation_option"/>
|
<field name="group_propagation_option"/>
|
||||||
|
|
|
@ -47,20 +47,6 @@ class procurement_rule(osv.osv):
|
||||||
res += [x.id for x in route.pull_ids]
|
res += [x.id for x in route.pull_ids]
|
||||||
return res
|
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 = {
|
_columns = {
|
||||||
'location_id': fields.many2one('stock.location', 'Procurement Location'),
|
'location_id': fields.many2one('stock.location', 'Procurement Location'),
|
||||||
'location_src_id': fields.many2one('stock.location', 'Source 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',
|
'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, ..."),
|
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'),
|
'delay': fields.integer('Number of Days'),
|
||||||
'partner_address_id': fields.many2one('res.partner', 'Partner Address'),
|
'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'),
|
'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 = {
|
_defaults = {
|
||||||
'procure_method': 'make_to_stock',
|
'procure_method': 'make_to_stock',
|
||||||
'active': True,
|
|
||||||
'propagate': True,
|
'propagate': True,
|
||||||
'delay': 0,
|
'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),
|
'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
|
# Quants
|
||||||
|
@ -3324,20 +3342,6 @@ class stock_location_path(osv.osv):
|
||||||
_description = "Pushed Flows"
|
_description = "Pushed Flows"
|
||||||
_order = "name"
|
_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):
|
def _get_rules(self, cr, uid, ids, context=None):
|
||||||
res = []
|
res = []
|
||||||
for route in self.browse(cr, uid, ids, context=context):
|
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."
|
"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'),
|
'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={
|
'active': fields.boolean('Active', help="If unchecked, it will allow you to hide the rule without removing it."),
|
||||||
'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." ),
|
|
||||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),
|
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),
|
||||||
'route_sequence': fields.related('route_id', 'sequence', string='Route Sequence',
|
'route_sequence': fields.related('route_id', 'sequence', string='Route Sequence',
|
||||||
store={
|
store={
|
||||||
|
|
Loading…
Reference in New Issue