summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorLaurent Smet <las@openerp.com>2017-08-31 12:23:35 +0200
committerqdp-odoo <qdp@odoo.com>2017-10-11 16:07:36 +0200
commit2f3b469dee6f18cbccce1cdf2a81cfe57960c533 (patch)
tree654171408f11c9a5df38cb4ab5f3788ad6437149 /addons
parent66f7d393d3d6b0ac77cfde9172be86f77d9b63b1 (diff)
[FIX] account: fix unreconciled amount on reconciliation widget
Try to reconcile a bank statement of 1000 to an invoice of 650 amount. The balance amount of 350 is missing on the resulting account.move and the bank amount is 650 instead of 1000. task: https://www.odoo.com/web#id=36342&view_type=form&model=project.task&action=333&active_id=967&menu_id=4720
Diffstat (limited to 'addons')
-rw-r--r--addons/account/static/src/js/reconciliation/reconciliation_model.js22
1 files changed, 20 insertions, 2 deletions
diff --git a/addons/account/static/src/js/reconciliation/reconciliation_model.js b/addons/account/static/src/js/reconciliation/reconciliation_model.js
index 48c668f33c8..b34fdd713a0 100644
--- a/addons/account/static/src/js/reconciliation/reconciliation_model.js
+++ b/addons/account/static/src/js/reconciliation/reconciliation_model.js
@@ -3,6 +3,8 @@ odoo.define('account.ReconciliationModel', function (require) {
var BasicModel = require('web.BasicModel');
var field_utils = require('web.field_utils');
+var utils = require('web.utils');
+var session = require('web.session');
var CrashManager = require('web.CrashManager');
var core = require('web.core');
var _t = core._t;
@@ -579,7 +581,7 @@ var StatementModel = BasicModel.extend({
}));
}
ids.push(line.id);
- values.push({
+ var values_dict = {
"partner_id": line.st_line.partner_id,
"counterpart_aml_dicts": _.map(_.filter(props, function (prop) {
return !isNaN(prop.id) && !prop.already_paid;
@@ -590,7 +592,23 @@ var StatementModel = BasicModel.extend({
"new_aml_dicts": _.map(_.filter(props, function (prop) {
return isNaN(prop.id);
}), self._formatToProcessReconciliation.bind(self, line)),
- });
+ };
+ // If the lines are not fully balanced, create an unreconciled amount.
+ // line.st_line.currency_id is never false here because its equivalent to
+ // statement_line.currency_id or statement_line.journal_id.currency_id or statement_line.journal_id.company_id.currency_id (Python-side).
+ // see: get_statement_line_for_reconciliation_widget method in account/models/account_bank_statement.py for more details
+ var currency = session.get_currency(line.st_line.currency_id);
+ var balance = line.balance.amount;
+ if (!utils.float_is_zero(balance, currency.digits)) {
+ var unreconciled_amount_dict = {
+ 'account_id': line.st_line.open_balance_account_id,
+ 'credit': balance > 0 ? balance : 0,
+ 'debit': balance < 0 ? -balance : 0,
+ 'name': line.st_line.name + ' : ' + _t("Open balance"),
+ };
+ values_dict['new_aml_dicts'].push(unreconciled_amount_dict);
+ }
+ values.push(values_dict);
line.reconciled = true;
self.valuenow++;
});