Ila Rana(Open ERP) has proposed merging 
lp:~openerp-dev/openobject-addons/6.0-bug-812931-ira into 
lp:openobject-addons/6.0.

Requested reviews:
  OpenERP Core Team (openerp)
Related bugs:
  Bug #812931 in OpenERP Addons: "new delivery order with sales order manually 
completed does not count for delivery state of the sales order"
  https://bugs.launchpad.net/openobject-addons/+bug/812931

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-bug-812931-ira/+merge/70009

Hello,

Sale,Stock: Improved picked_rate function to make able it while validation of 
picking created manually and set sale order as a False while duplication of 
picking.

Thanks,
Ila Rana.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-bug-812931-ira/+merge/70009
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/6.0-bug-812931-ira.
=== modified file 'sale/sale.py'
--- sale/sale.py	2011-07-07 10:50:50 +0000
+++ sale/sale.py	2011-08-01 13:39:52 +0000
@@ -95,7 +95,7 @@
         for id in ids:
             res[id] = [0.0, 0.0]
         cr.execute('''SELECT
-                p.sale_id, sum(m.product_qty), mp.state as mp_state
+                p.sale_id, sum(m.product_qty), mp.state as mp_state,m.state as move_state, p.type as picking_type
             FROM
                 stock_move m
             LEFT JOIN
@@ -103,15 +103,20 @@
             LEFT JOIN
                 procurement_order mp on (mp.move_id=m.id)
             WHERE
-                p.sale_id IN %s GROUP BY mp.state, p.sale_id''', (tuple(ids),))
-        for oid, nbr, mp_state in cr.fetchall():
-            if mp_state == 'cancel':
-                continue
-            if mp_state == 'done':
-                res[oid][0] += nbr or 0.0
-                res[oid][1] += nbr or 0.0
+                p.sale_id IN %s GROUP BY m.state,mp.state, p.sale_id,p.type''', (tuple(ids),))
+
+        for oid, nbr, mp_state,move_state, picking_type in cr.fetchall():
+
+            if picking_type == 'in':#this is a returned picking
+                res[oid][0] -= nbr or 0.0 # Deducting the return picking qty
             else:
-                res[oid][1] += nbr or 0.0
+                if mp_state == 'cancel':
+                    continue
+                if mp_state == 'done' or move_state == 'done':
+                    res[oid][0] += nbr or 0.0
+                    res[oid][1] += nbr or 0.0
+                else:
+                    res[oid][1] += nbr or 0.0
         for r in res:
             if not res[r][1]:
                 res[r] = 0.0

=== modified file 'sale/stock_view.xml'
--- sale/stock_view.xml	2011-01-14 00:11:01 +0000
+++ sale/stock_view.xml	2011-08-01 13:39:52 +0000
@@ -58,7 +58,7 @@
             <field name="inherit_id" ref="stock.view_picking_out_form"/>
             <field name="arch" type="xml">
                 <field name="move_type" position="after">
-                    <field name="sale_id"/>
+                    <field name="sale_id" attrs="{'readonly':[('sale_id','=',False)]}"/>
                 </field>
             </field>
         </record>

=== modified file 'stock/stock.py'
--- stock/stock.py	2011-07-25 09:53:22 +0000
+++ stock/stock.py	2011-08-01 13:39:52 +0000
@@ -688,6 +688,7 @@
             default['name'] = self.pool.get('ir.sequence').get(cr, uid, seq_obj_name)
             default['origin'] = ''
             default['backorder_id'] = False
+            default['sale_id'] = False
         res = super(stock_picking, self).copy(cr, uid, id, default, context)
         if res:
             picking_obj = self.browse(cr, uid, res, context=context)

_______________________________________________
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

Reply via email to