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
if 'expected_margin' in field_names:
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]['turnover'] and (res[val.id]['total_margin'] * 100 / res[val.id]['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]['sale_expected'] and (res[val.id]['expected_margin'] * 100 / res[val.id]['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 = {
- 'date_from': fields.function(_product_margin, method=True, type='date', string='From Date', multi='product_margin'),
- 'date_to': fields.function(_product_margin, method=True, type='date', string='To Date', multi='product_margin'),
- 'invoice_state': fields.function(_product_margin, method=True, type='selection', selection=[
+ 'date_from': fields.function(_product_margin, type='date', string='From Date', multi='product_margin'),
+ 'date_to': fields.function(_product_margin, type='date', string='To Date', multi='product_margin'),
+ 'invoice_state': fields.function(_product_margin, type='selection', selection=[
('paid','Paid'),('open_paid','Open and Paid'),('draft_open_paid','Draft, Open and Paid')
], string='Invoice State',multi='product_margin', readonly=True),
- 'sale_avg_price' : fields.function(_product_margin, method=True, type='float', string='Avg. Unit Price', multi='product_margin',
+ 'sale_avg_price' : fields.function(_product_margin, type='float', string='Avg. Unit Price', multi='product_margin',
help="Avg. Price in Customer Invoices)"),
- 'purchase_avg_price' : fields.function(_product_margin, method=True, type='float', string='Avg. Unit Price', multi='product_margin',
+ 'purchase_avg_price' : fields.function(_product_margin, type='float', string='Avg. Unit Price', multi='product_margin',
help="Avg. Price in Supplier Invoices "),
- 'sale_num_invoiced' : fields.function(_product_margin, method=True, type='float', string='# Invoiced', multi='product_margin',
+ 'sale_num_invoiced' : fields.function(_product_margin, type='float', string='# Invoiced', multi='product_margin',
help="Sum of Quantity in Customer Invoices"),
- 'purchase_num_invoiced' : fields.function(_product_margin, method=True, type='float', string='# Invoiced', multi='product_margin',
+ 'purchase_num_invoiced' : fields.function(_product_margin, type='float', string='# Invoiced', multi='product_margin',
help="Sum of Quantity in Supplier Invoices"),
- 'sales_gap' : fields.function(_product_margin, method=True, type='float', string='Sales Gap', multi='product_margin',
+ 'sales_gap' : fields.function(_product_margin, type='float', string='Sales Gap', multi='product_margin',
help="Expected Sale - Turn Over"),
- 'purchase_gap' : fields.function(_product_margin, method=True, type='float', string='Purchase Gap', multi='product_margin',
+ 'purchase_gap' : fields.function(_product_margin, type='float', string='Purchase Gap', multi='product_margin',
help="Normal Cost - Total Cost"),
- 'turnover' : fields.function(_product_margin, method=True, type='float', string='Turnover' ,multi='product_margin',
+ 'turnover' : fields.function(_product_margin, type='float', string='Turnover' ,multi='product_margin',
help="Sum of Multification of Invoice price and quantity of Customer Invoices"),
- 'total_cost' : fields.function(_product_margin, method=True, type='float', string='Total Cost', multi='product_margin',
+ 'total_cost' : fields.function(_product_margin, type='float', string='Total Cost', multi='product_margin',
help="Sum of Multification of Invoice price and quantity of Supplier Invoices "),
- 'sale_expected' : fields.function(_product_margin, method=True, type='float', string='Expected Sale', multi='product_margin',
+ 'sale_expected' : fields.function(_product_margin, type='float', string='Expected Sale', multi='product_margin',
help="Sum of Multification of Sale Catalog price and quantity of Customer Invoices"),
- 'normal_cost' : fields.function(_product_margin, method=True, type='float', string='Normal Cost', multi='product_margin',
+ 'normal_cost' : fields.function(_product_margin, type='float', string='Normal Cost', multi='product_margin',
help="Sum of Multification of Cost price and quantity of Supplier Invoices"),
- 'total_margin' : fields.function(_product_margin, method=True, type='float', string='Total Margin', multi='product_margin',
+ 'total_margin' : fields.function(_product_margin, type='float', string='Total Margin', multi='product_margin',
help="Turnorder - Standard price"),
- 'expected_margin' : fields.function(_product_margin, method=True, type='float', string='Expected Margin', multi='product_margin',
+ 'expected_margin' : fields.function(_product_margin, type='float', string='Expected Margin', multi='product_margin',
help="Expected Sale - Normal Cost"),
- 'total_margin_rate' : fields.function(_product_margin, method=True, type='float', string='Total Margin (%)', multi='product_margin',
+ 'total_margin_rate' : fields.function(_product_margin, type='float', string='Total Margin (%)', multi='product_margin',
help="Total margin * 100 / Turnover"),
- 'expected_margin_rate' : fields.function(_product_margin, method=True, type='float', string='Expected Margin (%)', multi='product_margin',
+ 'expected_margin_rate' : fields.function(_product_margin, type='float', string='Expected Margin (%)', multi='product_margin',
help="Expected margin * 100 / Expected Sale"),
}
product_product()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: