[FIX] [6.0] sale.order picked_rate is wrong

lp bug: https://launchpad.net/bugs/725028 fixed

bzr revid: skh@tinyerp.com-20110428074426-d1q77t1zg8xlof9b
This commit is contained in:
skh
2011-04-28 13:14:26 +05:30
parent a6ba3557e7
commit 289a56ced1
2 changed files with 32 additions and 19 deletions
+20 -19
View File
@@ -61,16 +61,8 @@ class sale_order(osv.osv):
def _picked_rate(self, cr, uid, ids, name, arg, context=None):
if not ids:
return {}
temp = {}
res_sale = {}
res = super(sale_order, self)._picked_rate(cr, uid, ids, name, arg, context=context)
for id in ids:
temp[id] = {}
temp[id]['number_of_done'] = 0
temp[id]['percentage'] = 0.0
temp[id]['number_of_stockable'] = 0.0
temp[id]['total_no_task'] = 0
temp[id]['total'] = 0
cr.execute('''select so.id as sale_id, t.state as task_state ,
t.id as task_id, count(t.id) as total
from project_task as t
@@ -80,29 +72,38 @@ class sale_order(osv.osv):
if not sale_task_data:
return res
for id in ids:
res_sale[id] = {}
res_sale[id]['number_of_done'] = 0
res_sale[id]['percentage'] = 0.0
res_sale[id]['number_of_stockable'] = 0.0
res_sale[id]['total_no_task'] = 0
res_sale[id]['total'] = 0
for item in sale_task_data:
temp[item['sale_id']]['total_no_task'] += item['total']
res_sale[item['sale_id']]['total_no_task'] += item['total']
if item['task_state'] == 'done':
temp[item['sale_id']]['number_of_done'] += 1
res_sale[item['sale_id']]['number_of_done'] += 1
else:
pass
for sale in self.browse(cr, uid, ids, context=None):
# Percent of service + other' Type product
temp[sale.id]['percentage'] = temp[sale.id]['total_no_task'] and (float(temp[sale.id]['number_of_done']) / temp[sale.id]['total_no_task']) * 100
temp[sale.id]['number_of_stockable'] = len(sale.order_line) - temp[sale.id]['total_no_task']
if temp[sale.id]['percentage'] == 100 and res[sale.id] == 100:
res_sale[sale.id]['percentage'] = res_sale[sale.id]['total_no_task'] and (float(res_sale[sale.id]['number_of_done']) / res_sale[sale.id]['total_no_task']) * 100
res_sale[sale.id]['number_of_stockable'] = len(sale.order_line) - res_sale[sale.id]['total_no_task']
if res_sale[sale.id]['percentage'] == 100 and res[sale.id] == 100 or res_sale[sale.id]['total_no_task'] == 0:
continue
elif temp[sale.id]['number_of_stockable'] == 0:
res[sale.id] = (temp[sale.id]['percentage'])
elif res_sale[sale.id]['number_of_stockable'] == 0:
res[sale.id] = (res_sale[sale.id]['percentage'])
else:
res[sale.id] = round((res[sale.id] + temp[sale.id]['percentage']) / (temp[sale.id]['number_of_stockable'] + temp[sale.id]['total_no_task']), 2)
res[sale.id] = round((res[sale.id] + res_sale[sale.id]['percentage']) / (res_sale[sale.id]['number_of_stockable'] + res_sale[sale.id]['total_no_task']), 2)
if res[sale.id] > 100:
res[sale.id] = 100
return res
_columns = {
'picked_rate': fields.function(_picked_rate, method=True, string='Picked', type='float'),
}
'picked_rate': fields.function(_picked_rate, method=True, string='Picked', type='float'),
}
sale_order()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+12
View File
@@ -24,6 +24,18 @@
</field>
</field>
</record>
<record id="view_project_mrp_inherit_form2" model="ir.ui.view">
<field name="name">project.mrp.form.view.inherit</field>
<field name="model">project.task</field>
<field name="type">form</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Extra Info']/group/field[@name='sequence']" position="after">
<field name="sale_id" readonly="1"/>
</xpath>
</field>
</record>
</data>
</openerp>