← Back to team overview

openerp-community-reviewer team mailing list archive

lp:~yann-papouin/ocb-addons/6.1-bug-947838-sale-recreate-packing-duplicates into lp:ocb-addons/6.1

 

Yann Papouin has proposed merging lp:~yann-papouin/ocb-addons/6.1-bug-947838-sale-recreate-packing-duplicates into lp:ocb-addons/6.1.

Requested reviews:
  Holger Brunn (Therp) (hbrunn)
Related bugs:
  Bug #947838 in OpenERP Community Backports (Addons): "[6.0][6.1][7.0][trunk][sale] Sale exception: Recreate Packing duplicates confirmed moves"
  https://bugs.launchpad.net/ocb-addons/+bug/947838
  Bug #1249345 in OpenERP Community Backports (Addons): "[6.1][7.0][trunk][sale] Recreate Packing create duplicates"
  https://bugs.launchpad.net/ocb-addons/+bug/1249345

For more details, see:
https://code.launchpad.net/~yann-papouin/ocb-addons/6.1-bug-947838-sale-recreate-packing-duplicates/+merge/194523

Change _create_pickings_and_procurements to avoid recreating procurement when they are still valid
-- 
https://code.launchpad.net/~yann-papouin/ocb-addons/6.1-bug-947838-sale-recreate-packing-duplicates/+merge/194523
Your team OpenERP Community Backports Team is subscribed to branch lp:ocb-addons/6.1.
=== modified file 'sale/sale.py'
--- sale/sale.py	2013-11-20 01:17:39 +0000
+++ sale/sale.py	2013-12-05 13:00:01 +0000
@@ -825,6 +825,19 @@
             date_planned = self._get_date_planned(cr, uid, order, line, order.date_order, context=context)
 
             if line.product_id:
+                if line.state == 'confirmed':
+                    # Ignore existing procurement and linked move if not canceled
+                    if line.procurement_id and line.procurement_id.state != 'cancel'\
+                    and line.procurement_id.move_id and line.procurement_id.move_id.state != 'cancel': 
+                        continue
+                elif line.state == 'exception':
+                    # Reset line state to confirmed state
+                    line.button_confirm(context=context) 
+                    # Cancel existing move if the canceled procurement exists 
+                    if line.procurement_id and line.procurement_id.state == 'cancel'\
+                    and line.procurement_id.move_id and line.procurement_id.move_id.state not in ('done', 'cancel'):
+                        line.procurement_id.move_id.action_cancel(context=context)
+                        
                 if line.product_id.product_tmpl_id.type in ('product', 'consu'):
                     if not picking_id:
                         picking_id = picking_obj.create(cr, uid, self._prepare_order_picking(cr, uid, order, context=context))
@@ -1137,7 +1150,7 @@
     def copy_data(self, cr, uid, id, default=None, context=None):
         if not default:
             default = {}
-        default.update({'state': 'draft', 'move_ids': [], 'invoiced': False, 'invoice_lines': []})
+        default.update({'state': 'draft', 'move_ids': [], 'procurement_id': False, 'invoiced': False, 'invoice_lines': []})
         return super(sale_order_line, self).copy_data(cr, uid, id, default, context=context)
 
     def product_packaging_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False,


Follow ups