diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-07-26 15:12:29 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-07-26 15:12:29 +0200 |
| commit | bfd34e14b1be97465e135d85c76b9e626a219e7a (patch) | |
| tree | 8de54ec8f504158e965ab92e21658cab539024ee /addons/account/static/src | |
| parent | 26b5b446b3dab3d66b7db054ca77e7b1a811c28a (diff) | |
| parent | 40e8b67179f212551a176d72b3851671febc1fba (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.js | 75 |
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 () { |
