From ffdabcbc525e7c2c8aecae48c92f9fe7c8a2c315 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Wed, 24 Jul 2013 17:32:35 +0200 Subject: [PATCH] [WIP] Sequence on picking types bzr revid: jco@openerp.com-20130724153235-0we14ofbquanuo2h --- addons/purchase/purchase.py | 7 ++++--- addons/stock/product.py | 6 ++++-- addons/stock/product_view.xml | 4 ++-- addons/stock/stock.py | 22 +++++++++++++-------- addons/stock/stock_data.xml | 36 +++++++++++++++++++++++++++++++++++ addons/stock/stock_view.xml | 6 +++--- 6 files changed, 63 insertions(+), 18 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 18e1f98c477..319b1260a6a 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -622,13 +622,15 @@ class purchase_order(osv.osv): return user_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT) def _prepare_order_picking(self, cr, uid, order, context=None): + type_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'picking_type_in')[1] + type = self.pool.get("picking.type").browse(cr, uid, type_id, context=context) + return { - 'name': self.pool.get('ir.sequence').get(cr, uid, 'stock.picking'), + 'name': self.pool.get('ir.sequence').get(cr, uid, type.sequence_id.id, 'id'), 'origin': order.name + ((order.origin and (':' + order.origin)) or ''), 'date': self.date_to_datetime(cr, uid, order.date_order, context), 'partner_id': order.dest_address_id.id or order.partner_id.id, 'invoice_state': '2binvoiced' if order.invoice_method == 'picking' else 'none', - 'type': 'in', 'partner_id': order.dest_address_id.id or order.partner_id.id, 'purchase_id': order.id, 'company_id': order.company_id.id, @@ -652,7 +654,6 @@ class purchase_order(osv.osv): 'partner_id': order.dest_address_id.id or order.partner_id.id, 'move_dest_id': order_line.move_dest_id.id, 'state': 'draft', - 'type':'in', 'purchase_line_id': order_line.id, 'company_id': order.company_id.id, 'price_unit': order_line.price_unit, diff --git a/addons/stock/product.py b/addons/stock/product.py index fbd8c21d88b..1563ee1416a 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -31,7 +31,8 @@ class product_product(osv.osv): move_pool=self.pool.get('stock.move') moves = move_pool.read_group(cr, uid, [ ('product_id', 'in', ids), - ('picking_id.type', '=', 'in'), + ('location_id.usage', '!=', 'internal'), + ('location_dest_id.usage', '=', 'internal'), ('state','in',('confirmed','assigned','pending')) ], ['product_id'], ['product_id']) for move in moves: @@ -39,7 +40,8 @@ class product_product(osv.osv): res[product_id]['reception_count'] = move['product_id_count'] moves = move_pool.read_group(cr, uid, [ ('product_id', 'in', ids), - ('picking_id.type', '=', 'out'), + ('location_id.usage', '=', 'internal'), + ('location_dest_id.usage', '!=', 'internal'), ('state','in',('confirmed','assigned','pending')) ], ['product_id'], ['product_id']) for move in moves: diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 6a9bc5b304e..d057c47cc80 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -48,7 +48,7 @@ ir.actions.act_window form tree,form - [('picking_id.type','=','in')] + [('picking_type_id','=',ref("picking_type_in")), ('location_id.usage','!=','internal'), ('location_dest_id.usage', '=', 'internal')] @@ -68,8 +68,8 @@ ir.actions.act_window form tree,form - [('picking_id.type','=','out')] + [('picking_type_id','=',ref("picking_type_out")), ('location_id.usage','=','internal'), ('location_dest_id.usage', '!=', 'internal')]

diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 5adaca5c7db..f952b9e9c17 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -403,7 +403,12 @@ class stock_picking(osv.osv): def create(self, cr, user, vals, context=None): if ('name' not in vals) or (vals.get('name') in ('/', False)): - vals['name'] = self.pool.get('ir.sequence').get(cr, user, self._name) + import pdb + pdb.set_trace() + if 'move_lines' in vals: + if vals['move_lines'][0] and vals['move_lines'][0][2] and vals['move_lines'][0][2]['picking_type_id']: + sequence_id = self.pool.get('stock.picking.type').browse(cr, user, vals['move_lines'][0][2]['picking_type_id'], context=context).sequence_id.id + vals['name'] = self.pool.get('ir.sequence').get_id(cr, user, sequence_id, 'id', context=context) return super(stock_picking, self).create(cr, user, vals, context) @@ -468,11 +473,11 @@ class stock_picking(osv.osv): 'pack_operation_ids': fields.one2many('stock.pack.operation', 'picking_id', string='Related Packing Operations'), # Used to search a product 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'), - 'location_dest_id': fields.related('move_lines', 'location_dest_id', type='many2one', relation='stock.location', string='Destination Location'), - 'group_id': fields.related('move_lines', 'group_id', type='many2one', relation='procurement.group', string='Procurement Group'), - 'picking_type_id': fields.related('move_lines', 'picking_type_id', type='many2one', relation='stock.picking.type', string="Picking Type"), + '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), + 'picking_type_id': fields.related('move_lines', 'picking_type_id', type='many2one', relation='stock.picking.type', string="Picking Type", readonly=True), } _defaults = { 'name': lambda self, cr, uid, context: '/', @@ -2301,13 +2306,14 @@ class product_product(osv.osv): } class stock_picking_type(osv.osv): - _name="stock.picking.type" + _name = "stock.picking.type" _columns = { 'name': fields.char('name', size=30), 'pack': fields.boolean('Pack', 'This picking type needs packing interface'), 'delivery': fields.boolean('Print delivery'), - + 'sequence_id': fields.many2one('ir.sequence', 'Sequence', required = True), } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml index ba0e2dcbd5d..9e776a69b9c 100644 --- a/addons/stock/stock_data.xml +++ b/addons/stock/stock_data.xml @@ -103,17 +103,53 @@ watch your stock valuation, and track production lots upstream and downstream (b Picking types --> + + + Picking in + IN + 5 + + + + + Picking out + OUT + 5 + + + + + Picking internal + INT + 5 + + + + + Picking inventory + INV + 5 + + + in + + + out + + internal + inventory + diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 7358cf0cead..8f86f75c722 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -610,7 +610,7 @@ - + @@ -1097,9 +1097,9 @@ ir.actions.act_window form tree,form - ['|','&',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','out')] + ['|','&',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False)] - {'picking_type': 'out', 'search_default_future': True} + {'search_default_future': True}

Click to register a product delivery.