diff --git a/.tx/config b/.tx/config index 23e76595a0f..5ace6a735bc 100644 --- a/.tx/config +++ b/.tx/config @@ -1121,13 +1121,3 @@ source_lang = en file_filter = addons/website_twitter/i18n/.po source_file = addons/website_twitter/i18n/website_twitter.pot source_lang = en - -[odoo-9.web_tests] -file_filter = addons/web_tests/i18n/.po -source_file = addons/web_tests/i18n/web_tests.pot -source_lang = en - -[odoo-9.web_tests_demo] -file_filter = addons/web_tests_demo/i18n/.po -source_file = addons/web_tests_demo/i18n/web_tests_demo.pot -source_lang = en diff --git a/addons/account_budget/report/analytic_account_budget_report.py b/addons/account_budget/report/analytic_account_budget_report.py index 1e4f8a1c334..7290aab2020 100644 --- a/addons/account_budget/report/analytic_account_budget_report.py +++ b/addons/account_budget/report/analytic_account_budget_report.py @@ -78,11 +78,16 @@ class analytic_account_budget_report(report_sxw.rml_parse): 'theo':0.00, 'pln':0.00, 'prac':0.00, - 'perc':0.00 + 'perc':0.00, + 'date_from': budget_name[0].date_from, + 'date_to': budget_name[0].date_to, } result.append(res) - - line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', b_line_ids), ('crossovered_budget_id','=',budget_ids[i][0])]) + domain_lines = [('id', 'in', b_line_ids), + ('crossovered_budget_id', '=', budget_ids[i][0]), + ('date_from', '<=', d_to), + ('date_to', '>=', d_from)] + line_ids = c_b_lines_obj.search(self.cr, self.uid, domain_lines) line_id = c_b_lines_obj.browse(self.cr, self.uid, line_ids) tot_theo = tot_pln = tot_prac = tot_perc = 0 diff --git a/addons/account_budget/report/budget_report.py b/addons/account_budget/report/budget_report.py index 00f1ba2b422..ef9b7ab9c70 100644 --- a/addons/account_budget/report/budget_report.py +++ b/addons/account_budget/report/budget_report.py @@ -84,8 +84,11 @@ class budget_report(report_sxw.rml_parse): 'perc': 0.00 } result.append(res) - - line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', budget_ids), ('analytic_account_id','=',an_ids[i][0])]) + domain_lines = [('id', 'in', budget_ids), + ('analytic_account_id','=',an_ids[i][0]), + ('date_from', '<=', d_to), + ('date_to', '>=', d_from)] + line_ids = c_b_lines_obj.search(self.cr, self.uid, domain_lines) line_id = c_b_lines_obj.browse(self.cr, self.uid, line_ids) tot_theo = tot_pln = tot_prac = tot_perc = 0.00 diff --git a/addons/account_budget/views/report_analyticaccountbudget.xml b/addons/account_budget/views/report_analyticaccountbudget.xml index dab987d6099..9f6e31aa258 100644 --- a/addons/account_budget/views/report_analyticaccountbudget.xml +++ b/addons/account_budget/views/report_analyticaccountbudget.xml @@ -32,6 +32,8 @@ Planned Amt Practical Amt Perc(%) + Start date + End Date @@ -42,6 +44,8 @@ % + + diff --git a/openerp/models.py b/openerp/models.py index a0c9f1530e5..cfd22fc9641 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -3215,9 +3215,6 @@ class BaseModel(object): # fetch the records of this model without field_name in their cache records = self._in_cache_without(field) - if len(records) > PREFETCH_MAX: - records = records[:PREFETCH_MAX] | self - # determine which fields can be prefetched if not self.env.in_onchange and \ self._context.get('prefetch_fields', True) and \ @@ -5677,16 +5674,19 @@ class BaseModel(object): return RecordCache(self) @api.model - def _in_cache_without(self, field): - """ Make sure ``self`` is present in cache (for prefetching), and return - the records of model ``self`` in cache that have no value for ``field`` - (:class:`Field` instance). + def _in_cache_without(self, field, limit=PREFETCH_MAX): + """ Return records to prefetch that have no value in cache for ``field`` + (:class:`Field` instance), including ``self``. + Return at most ``limit`` records. """ env = self.env prefetch_ids = env.prefetch[self._name] prefetch_ids.update(self._ids) ids = filter(None, prefetch_ids - set(env.cache[field])) - return self.browse(ids) + recs = self.browse(ids) + if limit and len(recs) > limit: + recs = self + (recs - self)[:(limit - len(self))] + return recs @api.model def refresh(self):