Ujjvala Collins (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-bug-805407-uco into
lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
Related bugs:
Bug #805407 in OpenERP Addons: "Point of sale"
https://bugs.launchpad.net/openobject-addons/+bug/805407
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-805407-uco/+merge/69067
[FIX] point_of_sale:
-------------------------------
* Corrected set to draft functionality as said in the bug. (lp:805407)
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-805407-uco/+merge/69067
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-bug-805407-uco.
=== modified file 'point_of_sale/point_of_sale.py'
--- point_of_sale/point_of_sale.py 2011-07-08 09:22:32 +0000
+++ point_of_sale/point_of_sale.py 2011-07-25 11:01:34 +0000
@@ -411,23 +411,30 @@
old_line.write({'product_qty': old_line.product_qty - qty_to_del}, context=context)
# add qty to new picking:
line.write({'product_qty': qty_to_del}, context=context)
+ elif qty_to_del < 0: # product qty has been modified (customer took greater than the ordered quantity):
+ # add qty to new picking:
+ line.write({'product_qty': -qty_to_del}, context=context)
else: # product hasn't changed (customer took it without any change):
# delete this product from new picking:
line.unlink(context=context)
else:
# delete it in the new picking:
line.unlink(context=context)
+ return new_picking_id
def create_picking(self, cr, uid, ids, context=None):
"""Create a picking for each order and validate it."""
picking_obj = self.pool.get('stock.picking')
property_obj = self.pool.get("ir.property")
move_obj = self.pool.get('stock.move')
+ wf_service = netsvc.LocalService("workflow")
pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
orders = self.browse(cr, uid, ids, context=context)
partner_obj = self.pool.get('res.partner')
for order in orders:
addr = order.partner_id and partner_obj.address_get(cr, uid, [order.partner_id.id], ['delivery']) or {}
+ diff_dict = {}
+ flag = False
if not order.picking_id:
new = True
picking_id = picking_obj.create(cr, uid, {
@@ -448,16 +455,30 @@
picking_obj.write(cr, uid, [picking_id], {'auto_picking': True}, context=context)
picking = picking_obj.browse(cr, uid, [picking_id], context=context)[0]
new = False
+ flag = True
# split the picking (if product quantity has changed):
diff_dict = self._get_qty_differences(orders, picking)
if diff_dict:
- self._split_picking(cr, uid, ids, context, picking, diff_dict)
-
+ picking_id = self._split_picking(cr, uid, ids, context, picking, diff_dict)
+ # create new picking if a product is added
+ line_ids = [m.product_id.id for m in order.lines]
+ second_line_ids = [m.product_id.id for m in picking.move_lines]
+ if len(line_ids) > len(second_line_ids):
+ diff_dict.clear()
+ new = True
+ diff = [x for x in line_ids if x not in second_line_ids]
+ for line in order.lines:
+ for i in range(len(diff)):
+ diff_dict[diff[i]] = (False, line.qty)
+ if picking_id == order.picking_id.id:
+ picking_id = self._split_picking(cr, uid, ids, context, picking, diff_dict)
if new:
for line in order.lines:
if line.product_id and line.product_id.type == 'service':
continue
+ if not diff_dict.get(line.product_id.id) and flag:
+ continue
prop_ids = property_obj.search(cr, uid, [('name', '=', 'property_stock_customer')], context=context)
val = property_obj.browse(cr, uid, prop_ids[0], context=context).value_reference
cr.execute("SELECT s.id FROM stock_location s, stock_warehouse w WHERE w.lot_stock_id = s.id AND w.id = %s", (order.shop_id.warehouse_id.id, ))
@@ -481,10 +502,10 @@
'location_dest_id': stock_dest_id,
'prodlot_id': line.prodlot_id and line.prodlot_id.id or False
}, context=context)
-
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
- picking_obj.force_assign(cr, uid, [picking_id], context)
+
+ if not flag:
+ wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
+ picking_obj.force_assign(cr, uid, [picking_id], context)
return True
def set_to_draft(self, cr, uid, ids, *args):
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp