I've created my module to fix these bugs. Here are some parts of the module. Thanks! ##### # PROBLEM: there is an error when start and end periods are the same. # SOLUTION: In build_ctx_periods, return the period_from_id with a list # FILE: account.py class account_period(osv.osv): _inherit = "account.period" # FIXED: There is an error if the start and end periods are the same. def build_ctx_periods(self, cr, uid, period_from_id, period_to_id): if period_from_id == period_to_id: return [period_from_id] return super(account_period, self).build_ctx_periods(cr, uid, period_from_id=period_from_id, period_to_id=period_to_id) account_period() ##### ##### # PROBLEM: Target Moves filter functionality does not work in Financial Report, BS and P&L. # SOLUTION: Include Target Moves in context. # FILE: account_financial_report.py class account_financial_report(osv.osv): _inherit = "account.financial.report" def _get_balance(self, cr, uid, ids, field_names, args, context=None): account_obj = self.pool.get('account.account') res = {} for report in self.browse(cr, uid, ids, context=context): if report.id in res: continue res[report.id] = dict((fn, 0.0) for fn in field_names) if report.type == 'accounts': # it's the sum of the linked accounts ### Use browse method to include context account_ids = [] for a in report.account_ids: account_ids.append(a.id) for b in account_obj.browse(cr, uid, account_ids, context=context): for field in field_names: res[report.id][field] += getattr(b, field) ### elif report.type == 'account_type': # it's the sum the leaf accounts with such an account type report_types = [x.id for x in report.account_type_ids] account_ids = account_obj.search(cr, uid, [('user_type','in', report_types), ('type','!=','view')], context=context) for a in account_obj.browse(cr, uid, account_ids, context=context): for field in field_names: res[report.id][field] += getattr(a, field) elif report.type == 'account_report' and report.account_report_id: # it's the amount of the linked report res2 = self._get_balance(cr, uid, [report.account_report_id.id], field_names, False, context=context) for key, value in res2.items(): for field in field_names: res[report.id][field] += value[field] elif report.type == 'sum': # it's the sum of the children of this account.report res2 = self._get_balance(cr, uid, [rec.id for rec in report.children_ids], field_names, False, context=context) for key, value in res2.items(): for field in field_names: res[report.id][field] += value[field] return res _columns = { 'balance': fields.function(_get_balance, 'Balance', multi='balance'), 'debit': fields.function(_get_balance, 'Debit', multi='balance'), 'credit': fields.function(_get_balance, 'Credit', multi="balance"), } account_financial_report() # FILE: wizard/account_financial_report.py class accounting_report(osv.osv_memory): _inherit = "accounting.report" def _build_contexts(self, cr, uid, ids, data, context=None): result = super(accounting_report, self)._build_contexts(cr, uid, ids, data, context=context) result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or False return result def _build_comparison_context(self, cr, uid, ids, data, context=None): result = super(accounting_report, self)._build_comparison_context(cr, uid, ids, data, context=context) result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or False return result accounting_report() #####