diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 58699b2c460..d05a71946c9 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -55,7 +55,7 @@ class AccountMove(models.Model): total_amount += amount for partial_line in (line.matched_debit_ids + line.matched_credit_ids): total_reconciled += partial_line.amount - if total_amount == 0.0: + if float_is_zero(total_amount, precision_rounding=move.currency_id.rounding): move.matched_percentage = 1.0 else: move.matched_percentage = total_reconciled / total_amount diff --git a/addons/account_tax_cash_basis/models/account_partial_reconcile.py b/addons/account_tax_cash_basis/models/account_partial_reconcile.py index 19ecec4bcb8..f913c34bb42 100644 --- a/addons/account_tax_cash_basis/models/account_partial_reconcile.py +++ b/addons/account_tax_cash_basis/models/account_partial_reconcile.py @@ -22,7 +22,7 @@ class AccountPartialReconcileCashBasis(models.Model): #create reporting issues. Not sure of the behavior to implement in that case, though. # amount to write is the current cash_basis amount minus the one before the reconciliation matched_percentage = value_before_reconciliation[move.id] - amount = (line.credit_cash_basis - line.debit_cash_basis) - (line.credit - line.debit) * matched_percentage + amount = line.currency_id.round((line.credit_cash_basis - line.debit_cash_basis) - (line.credit - line.debit) * matched_percentage) if not line.tax_exigible: if line.tax_line_id and line.tax_line_id.use_cash_basis: # group by line account @@ -42,16 +42,16 @@ class AccountPartialReconcileCashBasis(models.Model): for tax in line.tax_ids: line_to_create.append((0, 0, { 'name': '/', - 'debit': line.debit_cash_basis - line.debit * matched_percentage, - 'credit': line.credit_cash_basis - line.credit * matched_percentage, + 'debit': line.currency_id.round(line.debit_cash_basis - line.debit * matched_percentage), + 'credit': line.currency_id.round(line.credit_cash_basis - line.credit * matched_percentage), 'account_id': line.account_id.id, 'tax_ids': [(6, 0, [tax.id])], 'tax_exigible': True, })) line_to_create.append((0, 0, { 'name': '/', - 'credit': line.debit_cash_basis - line.debit * matched_percentage, - 'debit': line.credit_cash_basis - line.credit * matched_percentage, + 'credit': line.currency_id.round(line.debit_cash_basis - line.debit * matched_percentage), + 'debit': line.currency_id.round(line.credit_cash_basis - line.credit * matched_percentage), 'account_id': line.account_id.id, 'tax_exigible': True, })) diff --git a/addons/web/static/src/js/views/pivot_view.js b/addons/web/static/src/js/views/pivot_view.js index c9a01f44ec2..77c0f059354 100644 --- a/addons/web/static/src/js/views/pivot_view.js +++ b/addons/web/static/src/js/views/pivot_view.js @@ -275,9 +275,10 @@ var PivotView = View.extend({ col_domain = this.headers[col_id].domain, context = _.omit(_.clone(this.context), 'group_by'); - var views = _.filter(this.options.action.views, function (view) { - return view[1] === 'form' || view[1] === 'list'; - }); + var views = [ + _find_view_info.call(this, "list"), + _find_view_info.call(this, "form"), + ]; return this.do_action({ type: 'ir.actions.act_window', @@ -290,6 +291,12 @@ var PivotView = View.extend({ context: context, domain: this.domain.concat(row_domain, col_domain), }); + + function _find_view_info(view_type) { + return _.find(this.options.action.views, function (view) { + return view[1] === view_type; + }) || [false, view_type]; + } }, on_measure_row_click: function (event) { var $target = $(event.target), diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 36929f6050d..0c71c0f48b2 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -569,12 +569,12 @@ class Website(models.Model): @api.multi def search_pages(self, needle=None, limit=None): name = re.sub(r"^/p(a(g(e(/(w(e(b(s(i(t(e(\.)?)?)?)?)?)?)?)?)?)?)?)?", "", needle or "") + name = slugify(name, max_length=50) res = [] for page in self.enumerate_pages(query_string=name): - if needle in page['loc']: - res.append(page) - if len(res) == limit: - break + res.append(page) + if len(res) == limit: + break return res @api.model