diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 4e656649349..03d7e0987e4 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -422,6 +422,47 @@ class purchase_order(osv.osv):
})
return action
+
+ def view_picking_(self, cr, uid, ids, context=None):
+ '''
+ This function returns an action that display existing picking orders of given purchase order ids.
+ '''
+
+ import ipdb; ipdb.set_trace()
+
+ if context is None:
+ context = {}
+ mod_obj = self.pool.get('ir.model.data')
+ pick_ids = []
+ for po in self.browse(cr, uid, ids, context=context):
+ pick_ids += [picking.id for picking in po.picking_ids]
+
+ print(pick_ids)
+
+ action_model, action_id = tuple(mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree'))
+ action = self.pool[action_model].read(cr, uid, action_id, context=context)
+ active_id = context.get('active_id',ids[0])
+ picking_type_id = self.browse(cr, uid, active_id, context=context)['picking_type_id'].id
+
+ ctx = eval(action['context'],{'active_id': picking_type_id}, nocopy=True)
+ ctx.update({
+ 'search_default_purchase_id': ids[0]
+ })
+ if pick_ids and len(pick_ids) == 1:
+ form_view_ids = [view_id for view_id, view in action['views'] if view == 'form']
+ view_id = form_view_ids and form_view_ids[0] or False
+ action.update({
+ 'views': [],
+ 'view_mode': 'form',
+ 'view_id': view_id,
+ 'res_id': pick_ids[0]
+ })
+
+ action.update({
+ 'context': ctx,
+ })
+ return action
+
def wkf_approve_order(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context)})
return True
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index 23ff2f3271e..8048910f53d 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -170,7 +170,7 @@
-
+
diff --git a/addons/stock/product.py b/addons/stock/product.py
index 9e436dd49c3..d27bb1c95bf 100644
--- a/addons/stock/product.py
+++ b/addons/stock/product.py
@@ -25,7 +25,7 @@ import openerp.addons.decimal_precision as dp
class product_product(osv.osv):
_inherit = "product.product"
-
+
def _stock_move_count(self, cr, uid, ids, field_name, arg, context=None):
res = dict([(id, {'reception_count': 0, 'delivery_count': 0}) for id in ids])
move_pool=self.pool.get('stock.move')
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 765f90c69eb..373de66d16e 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -575,8 +575,20 @@ class stock_picking(osv.osv):
else:
res[pick.id] = False
return res
-
-
+
+# def onchange_owner_id(self,cr,uid,ids,new_owner_id,pack_operation_ids, context=None):
+# packop_ids = self.resolve_2many_commands(cr, uid, 'pack_operation_ids',pack_operation_ids, ['id'])
+# packop_ids = [p['id'] for p in packop_ids] #NO CORRECT FOR NEW
+# self.pool.get('stock.pack.operation').write(cr,uid,packop_ids,{'owner_id':new_owner_id},context=context)
+# result = {
+# 'pack_operation_ids':pack_operation_ids
+# }
+# return { 'value' : result}
+#
+ def action_assign_owner(self, cr, uid, ids, context=None):
+ pack_op = self.browse(cr,uid,ids[0],context=context)
+ packop_ids = [p.id for p in pack_op.pack_operation_ids]
+ self.pool.get('stock.pack.operation').write(cr,uid,packop_ids,{'owner_id':pack_op.owner_id.id},context=context)
_columns = {
'name': fields.char('Reference', size=64, select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}),
@@ -616,12 +628,13 @@ class stock_picking(osv.osv):
'pack_operation_exist': fields.function(_get_pack_operation_exist, type='boolean', string='Pack Operation Exists?', help='technical field for attrs in view'),
'picking_type_id': fields.many2one('stock.picking.type', 'Picking Type', required=True),
+ 'owner_id': fields.many2one('res.partner', 'Owner', help="Default Owner"),
# Used to search on pickings
'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'),#?
'location_id': fields.related('move_lines', 'location_id', type='many2one', relation='stock.location', string='Location', readonly=True),
'location_dest_id': fields.related('move_lines', 'location_dest_id', type='many2one', relation='stock.location', string='Destination Location', readonly=True),
'group_id': fields.related('move_lines', 'group_id', type='many2one', relation='procurement.group', string='Procurement Group', readonly=True),
-# 'group_id': fields.function(_get_group_id, type='many2one', store={'stock.move': (_get_pickings, ['picking_id', 'group_id'], 10)}),
+ # 'group_id': fields.function(_get_group_id, type='many2one', store={'stock.move': (_get_pickings, ['picking_id', 'group_id'], 10)}),
}
_defaults = {
'name': lambda self, cr, uid, context: '/',
@@ -2326,6 +2339,11 @@ class stock_pack_operation(osv.osv):
_name = "stock.pack.operation"
_description = "Packing Operation"
+
+ def onchange_product_id_for_owner(self,cr,uid,ids,powner_id, context=None):
+ return { 'value' : {'owner_id' : powner_id} }
+
+
def _get_remaining_qty(self, cr, uid, ids, context=None):
res = {}
for ops in self.browse(cr, uid, ids, context=context):
@@ -2335,7 +2353,6 @@ class stock_pack_operation(osv.osv):
res[ops.id] = qty
return res
-
_columns = {
'picking_id': fields.many2one('stock.picking', 'Stock Picking', help='The stock operation where the packing has been made', required=True),
'product_id': fields.many2one('product.product', 'Product', ondelete="CASCADE"), # 1
@@ -2355,7 +2372,7 @@ class stock_pack_operation(osv.osv):
}
_defaults = {
- 'date': fields.date.context_today,
+ 'date': fields.date.context_today,
}
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 3bbc4f2847f..2dad833c9a7 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -612,6 +612,12 @@