##############################################################################
import time
+from collections import defaultdict
import pooler
from report import report_sxw
def _lines_get_with_partner(self, partner, company_id):
pool = pooler.get_pool(self.cr.dbname)
moveline_obj = pool.get('account.move.line')
- company_obj = pool.get('res.company')
- obj_currency = pool.get('res.currency')
- movelines = moveline_obj.search(self.cr, self.uid,
- [('partner_id', '=', partner.id),
- ('account_id.type', '=', 'receivable'),
- ('reconcile_id', '=', False), ('state', '<>', 'draft'),('company_id','=', company_id)])
- movelines = moveline_obj.browse(self.cr, self.uid, movelines)
- base_currency = movelines[0].company_id.currency_id
- final_res = []
- line_cur = {base_currency.id: {'line': []}}
+ moveline_ids = moveline_obj.search(self.cr, self.uid, [
+ ('partner_id', '=', partner.id),
+ ('account_id.type', '=', 'receivable'),
+ ('reconcile_id', '=', False),
+ ('state', '!=', 'draft'),
+ ('company_id', '=', company_id),
+ ])
- for line in movelines:
- if line.currency_id and (not line.currency_id.id in line_cur):
- line_cur[line.currency_id.id] = {'line': []}
+ # lines_per_currency = {currency: [line data, ...], ...}
+ lines_per_currency = defaultdict(list)
+ for line in moveline_obj.browse(self.cr, self.uid, moveline_ids):
currency = line.currency_id or line.company_id.currency_id
line_data = {
- 'name': line.move_id.name,
- 'ref': line.ref,
- 'date':line.date,
- 'date_maturity': line.date_maturity,
- 'balance': currency.id <> line.company_id.currency_id.id and line.amount_currency or (line.debit - line.credit),
- 'blocked': line.blocked,
- 'currency_id': currency,
- }
- line_cur[currency.id]['line'].append(line_data)
+ 'name': line.move_id.name,
+ 'ref': line.ref,
+ 'date': line.date,
+ 'date_maturity': line.date_maturity,
+ 'balance': line.amount_currency if currency != line.company_id.currency_id else line.debit - line.credit,
+ 'blocked': line.blocked,
+ 'currency_id': currency,
+ }
+ lines_per_currency[currency].append(line_data)
- for cur in line_cur:
- if line_cur[cur]['line']:
- final_res.append({'line': line_cur[cur]['line']})
- return final_res
+ return [{'line': lines} for lines in lines_per_currency.values()]
def _get_text(self, stat_line, followup_id, context=None):
if context is None: