Jelajahi Sumber

[FIX] Corrección de cálculos para multi divisa Widget deudas atrasadas

adrielso 7 tahun lalu
induk
melakukan
9d73b55724
1 mengubah file dengan 33 tambahan dan 54 penghapusan
  1. 33 54
      static/src/js/widgets/expired_account_counters.js

+ 33 - 54
static/src/js/widgets/expired_account_counters.js

@@ -6,7 +6,6 @@ function expired_account_counters (widget) {
 
     widget.ExpiredAccountCountersWidget = widget.Base.extend({
         template: 'ExpiredAccountCounters',
-        resPartner : [],
         moveLine : [],
         resCompany : [],
         resCurrecy :[],
@@ -16,16 +15,19 @@ function expired_account_counters (widget) {
             'click a': 'showCustomers',
             'click h2': 'showCustomers',
         },
+
         init: function (parent) {
             this._super(parent, {
                 width : 3,
                 height: 2
             });
         },
+
         start: function () {
             var self = this;
             self.fetchInitial();
         },
+        // Consulta Inicial
         fetchInitial: function(){
             var self = this;
             self.$el.find('.grid-stack-item-content dashboard').block({
@@ -34,19 +36,17 @@ function expired_account_counters (widget) {
                     backgroundColor: '#FAFAFA'
                 }
             });
+
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchPartner().then(function (resPartner){
-                return resPartner;
-            }).then(function (resPartner){
-                self.resPartner = resPartner;
-                return self.fetchMoveLine(resPartner);
+            self.fetchMoveLine().then(function (moveLine){
+                return moveLine;
             }).then(function (moveLine){
                 self.moveLine = moveLine;
                 return self.fetchResCompany();
             }).then(function (resCompany){
                 self.resCompany = resCompany;
-                return self.fetchResCurrecy(resCompany);
+                return self.fetchResCurrecy();
             }).then(function (resCurrecy){
                 self.resCurrecy = resCurrecy;
                 return self.fetchGetModelId();
@@ -65,36 +65,22 @@ function expired_account_counters (widget) {
             this.alive(getObtjectReference('account', 'invoice_form')).then(function(results){
                 defer.resolve(results);
             });
-            return defer;
-        },
-        // Partner
-        fetchPartner: function () {
-            var self = this;
-            var defer = $.Deferred();
-            var fields =['id', 'name', 'unreconciled_aml_ids', 'credit'];
-            var domain =[['active', '=', true], ['credit', '>', 0]];
-            var resPartner = new model.web.Model('res.partner');
 
-            resPartner.query(fields).filter(domain).all().then(function (results){
-                defer.resolve(results);
-            });
             return defer;
         },
         // Move line
-        fetchMoveLine: function (partner){
+        fetchMoveLine: function (){
             var self = this;
             var hoy =moment().format('YYYY-MM-DD');
             var defer = $.Deferred();
-            var move_id = _.flatten(_.map(partner, function (map) {
-                return map.unreconciled_aml_ids
-            }));
             var field =['id', 'partner_id', 'amount_residual', 'credit', 'debit', 'date_maturity','invoice','ref'];
-            var domain=[['credit', '<=', 0],['id', 'in', move_id],['date_maturity', '<', hoy]];
+            var domain=[['credit', '<=', 0],['date_maturity', '<', hoy]];
             var moveLine = new model.web.Model('account.move.line');
 
             moveLine.query(field).filter(domain).all().then(function(results){
                 defer.resolve(results);
             });
+
             return defer;
         },
         //Comapnia
@@ -103,41 +89,42 @@ function expired_account_counters (widget) {
             var defer = $.Deferred();
             var fields =['id','name', 'currency_id', 'logo'];
             var domain =[['id', '=', 1]];
-            var resCompany = new model.web.Model('res.company');
+            var resCompanyIds = new model.web.Model('res.company');
 
-            resCompany.query(fields).filter(domain).all().then(function (results) {
+            resCompanyIds.query(fields).filter(domain).all().then(function (results) {
                 defer.resolve(results);
             });
+
             return defer;
         },
         // Res currecy
-        fetchResCurrecy : function(company){
+        fetchResCurrecy : function(){
             var self = this;
             var defer = $.Deferred();
-
-            var id_curency = _.flatten(_.map(company,function(map){
-                return map.currency_id[0];
-            }));
-
-            var fields =['id','name', 'symbol'];
-            var domain =[['id','in',id_curency]];
+            var fields =['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
+            var domain =[['active','=', true]];
             var resCurrecy = new model.web.Model('res.currency');
 
             resCurrecy.query(fields).filter(domain).all().then(function(results){
                 defer.resolve(results);
             });
+
             return defer;
         },
+        // Obtener moneda
+        getCurrency: function (id) {
+            var self = this;
+            return _.filter(self.resCurrecy,function (item) {
+                return item.id === id;
+            });
+        },
         // Reduce Move line
         fetchReduceMoveLine: function () {
             var self = this;
-            var residual =0;
-
-            var company = _.map(self.resCompany, function (map) {
-                return map.currency_id[1]
-            });
-
-            var moneda = self.resCurrecy.shift();
+            var residual = 0;
+            var newMoveLine = [];
+            var company = self.resCompany.shift();
+            var currencyBase = self.getCurrency(company.currency_id[0]).shift();
 
             if (self.moveLine.length > 0){
                 residual = _.reduce(_.map(self.moveLine, function (map) {
@@ -146,14 +133,9 @@ function expired_account_counters (widget) {
                     return memo + num;
                 });
             }
-            if (moneda.id != 166){
-                residual=accounting.formatNumber(residual,2, ".", ",");
-            }else {
-                residual=accounting.formatNumber(residual, ",", ".");
-            }
 
             self.$el.find('.widget-content.widget-loading').css('display','none');
-            self.$el.find('.widget-content').find('a').text(residual).append(" <small>"+moneda.symbol+"</small>");
+            self.$el.find('.widget-content').find('a').text(accounting.formatMoney(residual, currencyBase.symbol, currencyBase.decimal_places, currencyBase.thousands_separator, currencyBase.decimal_separator));
             self.$el.find('.grid-stack-item-content dashboard').unblock();
         },
 
@@ -209,19 +191,16 @@ function expired_account_counters (widget) {
         },
         // Remover <Modal></Modal>
         removeModal: function (e) {
-            $('.expired-account-modal').remove()
-            $('.modal-backdrop').remove()
+            $('.expired-account-modal').remove();
+            $('.modal-backdrop').remove();
         },
         // Llamar form
         renderForm: function(id){
             var self= this;
-
-            id = parseInt(id)
-
-            // if (!id) return
+            id = parseInt(id);
 
             this.do_action({
-                // name : "factura",
+
                 type : "ir.actions.act_window",
                 res_model : "account.invoice",
                 views : [[self.modelId[1], 'form']],