openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #03912
[Merge] lp:~openerp-dev/openobject-addons/trunk-bug-723448-ksa into lp:openobject-addons
Kirti Savalia(OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-bug-723448-ksa into lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
Related bugs:
#723448 product_margin purchases values in sales
https://bugs.launchpad.net/bugs/723448
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-723448-ksa/+merge/52672
https://bugs.launchpad.net/openobject-addons/+bug/723448
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-723448-ksa/+merge/52672
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-bug-723448-ksa.
=== modified file 'product_margin/product_margin.py'
--- product_margin/product_margin.py 2011-01-14 00:11:01 +0000
+++ product_margin/product_margin.py 2011-03-09 12:38:56 +0000
@@ -52,44 +52,43 @@
elif invoice_state == 'draft_open_paid':
states = ('draft', 'open', 'paid')
- if 'sale_avg_price' in field_names or 'sale_num_invoiced' in field_names or 'turnover' in field_names or 'sale_expected' in field_names:
- invoice_types = ('out_invoice', 'in_refund')
- if 'purchase_avg_price' in field_names or 'purchase_num_invoiced' in field_names or 'total_cost' in field_names or 'normal_cost' in field_names:
- invoice_types = ('in_invoice', 'out_refund')
- if len(invoice_types):
- cr.execute("""select
- avg(l.price_unit) as avg_unit_price,
+ sqlstr="""select
+ sum(l.price_unit * l.quantity)/sum(l.quantity) as avg_unit_price,
sum(l.quantity) as num_qty,
- sum(l.quantity * l.price_unit) as total,
+ sum(l.quantity * (l.price_subtotal/l.quantity)) as total,
sum(l.quantity * product.list_price) as sale_expected,
sum(l.quantity * product.standard_price) as normal_cost
from account_invoice_line l
left join account_invoice i on (l.invoice_id = i.id)
left join product_template product on (product.id=l.product_id)
- where l.product_id = %s and i.state in %s and i.type IN %s and i.date_invoice>=%s and i.date_invoice<=%s
- """, (val.id, states, invoice_types, date_from, date_to))
- result = cr.fetchall()[0]
- if 'sale_avg_price' in field_names or 'sale_num_invoiced' in field_names or 'turnover' in field_names or 'sale_expected' in field_names:
- res[val.id]['sale_avg_price'] = result[0] and result[0] or 0.0
- res[val.id]['sale_num_invoiced'] = result[1] and result[1] or 0.0
- res[val.id]['turnover'] = result[2] and result[2] or 0.0
- res[val.id]['sale_expected'] = result[3] and result[3] or 0.0
- res[val.id]['sales_gap'] = res[val.id]['sale_expected']-res[val.id]['turnover']
- if 'purchase_avg_price' in field_names or 'purchase_num_invoiced' in field_names or 'total_cost' in field_names or 'normal_cost' in field_names:
- res[val.id]['purchase_avg_price'] = result[0] and result[0] or 0.0
- res[val.id]['purchase_num_invoiced'] = result[1] and result[1] or 0.0
- res[val.id]['total_cost'] = result[2] and result[2] or 0.0
- res[val.id]['normal_cost'] = result[4] and result[4] or 0.0
- res[val.id]['purchase_gap'] = res[val.id]['normal_cost']-res[val.id]['total_cost']
+ where l.product_id = %s and i.state in %s and i.type IN %s and (i.date_invoice IS NULL or (i.date_invoice>=%s and i.date_invoice<=%s))
+ """
+ invoice_types = ('out_invoice', 'in_refund')
+ cr.execute(sqlstr, (val.id, states, invoice_types, date_from, date_to))
+ result = cr.fetchall()[0]
+ res[val.id]['sale_avg_price'] = result[0] and result[0] or 0.0
+ res[val.id]['sale_num_invoiced'] = result[1] and result[1] or 0.0
+ res[val.id]['turnover'] = result[2] and result[2] or 0.0
+ res[val.id]['sale_expected'] = result[3] and result[3] or 0.0
+ res[val.id]['sales_gap'] = res[val.id]['sale_expected']-res[val.id]['turnover']
+
+ invoice_types = ('in_invoice', 'out_refund')
+ cr.execute(sqlstr, (val.id, states, invoice_types, date_from, date_to))
+ result = cr.fetchall()[0]
+ res[val.id]['purchase_avg_price'] = result[0] and result[0] or 0.0
+ res[val.id]['purchase_num_invoiced'] = result[1] and result[1] or 0.0
+ res[val.id]['total_cost'] = result[2] and result[2] or 0.0
+ res[val.id]['normal_cost'] = result[4] and result[4] or 0.0
+ res[val.id]['purchase_gap'] = res[val.id]['normal_cost']-res[val.id]['total_cost']
if 'total_margin' in field_names:
- res[val.id]['total_margin'] = res[val.id].get('turnover', val.turnover) - res[val.id].get('total_cost', val.standard_price)
+ res[val.id]['total_margin'] = res[val.id]['turnover'] - res[val.id]['total_cost']
if 'expected_margin' in field_names:
- res[val.id]['expected_margin'] = res[val.id].get('sale_expected',val.sale_expected) - res[val.id].get('normal_cost',val.normal_cost)
+ res[val.id]['expected_margin'] = res[val.id]['sale_expected'] - res[val.id]['normal_cost']
if 'total_margin_rate' in field_names:
- res[val.id]['total_margin_rate'] = res[val.id].get('turnover', val.turnover) and res[val.id]['total_margin'] * 100 / res[val.id].get('turnover', val.turnover) or 0.0
+ res[val.id]['total_margin_rate'] = res[val.id]['turnover'] and res[val.id]['total_margin'] * 100 / res[val.id]['turnover'] or 0.0
if 'expected_margin_rate' in field_names:
- res[val.id]['expected_margin_rate'] = res[val.id].get('sale_expected',val.sale_expected) and res[val.id]['expected_margin'] * 100 / res[val.id].get('sale_expected',val.sale_expected) or 0.0
+ res[val.id]['expected_margin_rate'] = res[val.id]['sale_expected'] and res[val.id]['expected_margin'] * 100 / res[val.id]['sale_expected'] or 0.0
return res
_columns = {
Follow ups