From ac12aa981a4fc7c2dbbabaa65831f5415751a128 Mon Sep 17 00:00:00 2001 From: "Chirag Dodiya (OpenERP Trainee)" Date: Thu, 8 Aug 2013 11:19:40 +0530 Subject: [PATCH] [IMP] Improved Sale Analysis report bzr revid: chiragdd7@gmail.com-20130808054940-b1a8ikj4hd49rpru --- addons/sale/report/sale_report.py | 22 ++++++++++++++++++++++ addons/sale/report/sale_report_view.xml | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index d2f7849a958..42a3c3d7cbf 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -27,6 +27,17 @@ class sale_report(osv.osv): _description = "Sales Orders Statistics" _auto = False _rec_name = 'date' + def _compute_total_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): + """Compute the Price total in the currency of the user + """ + res = {} + currency_obj = self.pool.get('res.currency') + user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + for item in self.browse(cr, uid, ids, context=context): + res[item.id] = { + 'user_price_total': currency_obj.compute(cr, uid, item.pricelist_id.currency_id.id, user_currency_id, item.price_total, context=context), + } + return res _columns = { 'date': fields.date('Date Order', readonly=True), 'date_confirm': fields.date('Date Confirm', readonly=True), @@ -57,6 +68,7 @@ class sale_report(osv.osv): ], 'Order Status', readonly=True), 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True), 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True), + 'user_price_total': fields.function(_compute_total_in_user_currency, string="Total Price", type='float',digits=(16,2), multi="_compute_amounts", readonly=True), } _order = 'date desc' @@ -113,6 +125,16 @@ class sale_report(osv.osv): """ return group_by_str + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): + res = super(sale_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) + for group in res: + group['user_price_total'] = 0 + group_ids = self.search(cr, uid, group.get('__domain'),context=context) + record = self._compute_total_in_user_currency(cr, uid, group_ids, context=context) + for id, rec in record.iteritems(): + group['user_price_total'] += rec['user_price_total'] + return res + def init(self, cr): # self._table = sale_report tools.drop_view_if_exists(cr, self._table) diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index 28a6f83936a..1b22f9b75d6 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -20,7 +20,7 @@ - +