diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 0d4df7afc63..b4451353b22 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -691,7 +691,7 @@ class stock_picking(osv.osv): if res: picking_obj = self.browse(cr, uid, res, context=context) for move in picking_obj.move_lines: - move_obj.write(cr, uid, [move.id], {'tracking_id': False,'prodlot_id':False}) + move_obj.write(cr, uid, [move.id], {'tracking_id': False,'prodlot_id':False, 'move_history_ids2': [(6, 0, [])], 'move_history_ids': [(6, 0, [])]}) return res def onchange_partner_in(self, cr, uid, context=None, partner_id=None): @@ -1624,6 +1624,7 @@ class stock_move(osv.osv): if default is None: default = {} default = default.copy() + default.update({'move_history_ids2': [], 'move_history_ids': []}) return super(stock_move, self).copy(cr, uid, id, default, context=context) def _auto_init(self, cursor, context=None): diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py index 9f644c981a8..6f0ee650979 100644 --- a/addons/stock/wizard/stock_partial_picking.py +++ b/addons/stock/wizard/stock_partial_picking.py @@ -68,7 +68,7 @@ class stock_partial_picking(osv.osv_memory): if m.state in ('done', 'cancel'): continue result.append(self.__create_partial_picking_memory(m, pick_type)) - + if 'product_moves_in' in fields: res.update({'product_moves_in': result}) if 'product_moves_out' in fields: diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py index 2dd9063fe7e..84876534230 100644 --- a/addons/stock/wizard/stock_return_picking.py +++ b/addons/stock/wizard/stock_return_picking.py @@ -25,9 +25,26 @@ import time from osv import osv,fields from tools.translate import _ +class stock_return_picking_memory(osv.osv_memory): + _name = "stock.return.picking.memory" + _rec_name = 'product_id' + _columns = { + 'product_id' : fields.many2one('product.product', string="Product", required=True), + 'quantity' : fields.float("Quantity", required=True), + 'wizard_id' : fields.many2one('stock.return.picking', string="Wizard"), + 'move_id' : fields.many2one('stock.move', "Move"), + } + +stock_return_picking_memory() + + class stock_return_picking(osv.osv_memory): _name = 'stock.return.picking' _description = 'Return Picking' + _columns = { + 'product_return_moves' : fields.one2many('stock.return.picking.memory', 'wizard_id', 'Moves'), + 'invoice_state': fields.selection([('2binvoiced', 'To be refunded/invoiced'), ('none', 'No invoicing')], 'Invoicing3',required=True), + } def default_get(self, cr, uid, fields, context=None): """ @@ -39,6 +56,7 @@ class stock_return_picking(osv.osv_memory): @param context: A standard dictionary @return: A dictionary with default values for all field in ``fields`` """ + result1 = [] if context is None: context = {} res = super(stock_return_picking, self).default_get(cr, uid, fields, context=context) @@ -48,13 +66,17 @@ class stock_return_picking(osv.osv_memory): if pick: if 'invoice_state' in fields: if pick.invoice_state=='invoiced': - res['invoice_state'] = '2binvoiced' + res.update({'invoice_state': '2binvoiced'}) else: - res['invoice_state'] = 'none' + res.update({'invoice_state': 'none'}) + for line in pick.move_lines: return_id = 'return%s'%(line.id) if return_id in fields: res[return_id] = line.product_qty + result1.append({'product_id': line.product_id.id, 'quantity': line.product_qty,'move_id':line.id}) + if 'product_return_moves' in fields: + res.update({'product_return_moves': result1}) return res def view_init(self, cr, uid, fields_list, context=None): @@ -84,10 +106,6 @@ class stock_return_picking(osv.osv_memory): return_history[m.id] += (rec.product_qty * rec.product_uom.factor) if m.product_qty * m.product_uom.factor >= return_history[m.id]: valid_lines += 1 - if 'return%s'%(m.id) not in self._columns: - self._columns['return%s'%(m.id)] = fields.float(string=m.name, required=True) - if 'invoice_state' not in self._columns: - self._columns['invoice_state'] = fields.selection([('2binvoiced', 'To be refunded/invoiced'), ('none', 'No invoicing')], string='Invoicing', required=True) if not valid_lines: raise osv.except_osv(_('Warning !'), _("There are no products to return (only lines in Done state and not fully returned yet can be returned)!")) return res @@ -112,24 +130,27 @@ class stock_return_picking(osv.osv_memory): pick = pick_obj.browse(cr, uid, record_id) return_history = {} res['fields'].clear() - arch_lst=['', '
' % _('Return lines'), '