summaryrefslogtreecommitdiff
path: root/addons/account/static/src
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-07-26 15:12:29 +0200
committerChristophe Simonis <chs@odoo.com>2019-07-26 15:12:29 +0200
commitbfd34e14b1be97465e135d85c76b9e626a219e7a (patch)
tree8de54ec8f504158e965ab92e21658cab539024ee /addons/account/static/src
parent26b5b446b3dab3d66b7db054ca77e7b1a811c28a (diff)
parent40e8b67179f212551a176d72b3851671febc1fba (diff)
[MERGE] forward port branch saas-12.3 up to 40e8b67179f
Diffstat (limited to 'addons/account/static/src')
-rw-r--r--addons/account/static/src/js/reconciliation/reconciliation_model.js75
1 files changed, 56 insertions, 19 deletions
diff --git a/addons/account/static/src/js/reconciliation/reconciliation_model.js b/addons/account/static/src/js/reconciliation/reconciliation_model.js
index 2846e2d2e2f..985bcd15496 100644
--- a/addons/account/static/src/js/reconciliation/reconciliation_model.js
+++ b/addons/account/static/src/js/reconciliation/reconciliation_model.js
@@ -428,14 +428,7 @@ var StatementModel = BasicModel.extend({
if (self.context && self.context.active_model === 'account.journal' && self.context.active_ids) {
domainReconcile.push(['journal_id', 'in', [false].concat(self.context.active_ids)]);
}
- var def_reconcileModel = this._rpc({
- model: 'account.reconcile.model',
- method: 'search_read',
- domain: domainReconcile,
- })
- .then(function (reconcileModels) {
- self.reconcileModels = reconcileModels;
- });
+ var def_reconcileModel = this._loadReconciliationModel({domainReconcile: domainReconcile});
var def_account = this._rpc({
model: 'account.account',
method: 'search_read',
@@ -455,7 +448,59 @@ var StatementModel = BasicModel.extend({
return self._formatLine(self.statement.lines);
});
},
-
+ _readAnalyticTags: function (params) {
+ var self = this;
+ this.analyticTags = {};
+ if (!params || !params.res_ids || !params.res_ids.length) {
+ return $.when();
+ }
+ var fields = (params && params.fields || []).concat(['id', 'display_name']);
+ return this._rpc({
+ model: 'account.analytic.tag',
+ method: 'read',
+ args: [
+ params.res_ids,
+ fields,
+ ],
+ }).then(function (tags) {
+ for (var i=0; i<tags.length; i++) {
+ var tag = tags[i];
+ self.analyticTags[tag.id] = tag;
+ }
+ });
+ },
+ _loadReconciliationModel: function (params) {
+ var self = this;
+ return this._rpc({
+ model: 'account.reconcile.model',
+ method: 'search_read',
+ domain: params.domainReconcile || [],
+ })
+ .then(function (reconcileModels) {
+ var analyticTagIds = [];
+ for (var i=0; i<reconcileModels.length; i++) {
+ var modelTags = reconcileModels[i].analytic_tag_ids || [];
+ for (var j=0; j<modelTags.length; j++) {
+ if (analyticTagIds.indexOf(modelTags[j]) === -1) {
+ analyticTagIds.push(modelTags[j]);
+ }
+ }
+ }
+ return self._readAnalyticTags({res_ids: analyticTagIds}).then(function () {
+ for (var i=0; i<reconcileModels.length; i++) {
+ var recModel = reconcileModels[i];
+ var analyticTagData = [];
+ var modelTags = reconcileModels[i].analytic_tag_ids || [];
+ for (var j=0; j<modelTags.length; j++) {
+ var tagId = modelTags[j];
+ analyticTagData.push([tagId, self.analyticTags[tagId].display_name])
+ }
+ recModel.analytic_tag_ids = analyticTagData;
+ }
+ self.reconcileModels = reconcileModels;
+ });
+ });
+ },
_loadTaxes: function(){
var self = this;
self.taxes = {};
@@ -984,7 +1029,7 @@ var StatementModel = BasicModel.extend({
_formatMany2ManyTags: function (value) {
var res = [];
for (var i=0, len=value.length; i<len; i++) {
- res[i] = {data: {'id': value[i][0], 'display_name': value[i][1]}};
+ res[i] = {'id': value[i][0], 'display_name': value[i][1]};
}
return res;
},
@@ -1345,15 +1390,7 @@ var ManualModel = StatementModel.extend({
if (company_ids) {
domainReconcile.push(['company_id', 'in', company_ids]);
}
- var def_reconcileModel = this._rpc({
- model: 'account.reconcile.model',
- method: 'search_read',
- domain: domainReconcile,
- })
- .then(function (reconcileModels) {
- self.reconcileModels = reconcileModels;
- });
-
+ var def_reconcileModel = this._loadReconciliationModel({domainReconcile: domainReconcile});
var def_taxes = this._loadTaxes();
return Promise.all([def_reconcileModel, def_account, def_taxes]).then(function () {