Ver código fonte

FIX ADD retoques varios conversion a moneda base en analisis e historico de ventas y filtros metodos de pagos

Sebas 6 anos atrás
pai
commit
a3e7fb70a3

+ 81 - 7
static/src/js/reports/report_sale_cab.js

@@ -8,6 +8,10 @@ function report_sale_cab(reporting){
         content: [],
         rowsData :[],
         invoices: [],
+        model: [],
+        AccountVoucher:[],
+        resCompany:[],
+        ResCurrency:[],
         accountJournal:[],
         modules:[],
         events:{
@@ -119,11 +123,20 @@ function report_sale_cab(reporting){
                      self.$el.find('#current-journal').append('<option value="' + item.id + '">' + item.name + '</option>');
                  });
                  return self.fetchInvoiceV2();
-             }).then(function (invoices){
-                 self.invoices = invoices;
+            }).then(function (invoices){
+                self.invoices = invoices;
+                return self.fetchAccountVoucher();
+            }).then(function (AccountVoucher) {
+                self.AccountVoucher = AccountVoucher;
                 return self.fetchResPartner();
             }).then(function(ResPartner){
                 self.ResPartner = ResPartner;
+                return self.fetchResCurrency();
+             }).then(function(ResCurrency){
+                self.ResCurrency = ResCurrency;
+                return self.fecthCompanyCurrency();
+            }).then(function(resCompany){
+                self.resCompany = resCompany;
                 return self.fecthResUser();
             }).then(function (ResUser) {
                 self.ResUser = ResUser;
@@ -196,7 +209,7 @@ function report_sale_cab(reporting){
             var self = this;
             var defer = $.Deferred();
             var field = ['id', 'name','store_ids'];
-            var domain = [['active','=',true],['type','in',['sale','purchase']]];
+            var domain = [['active','=',true]];
             var AccountJournal = new instance.web.Model('account.journal');
             AccountJournal.query(field).filter(domain).all().then(function(results){
                 defer.resolve(results);
@@ -204,6 +217,30 @@ function report_sale_cab(reporting){
             return defer;
         },
 
+        fetchResCurrency : function(){
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
+            var domain = [['active', '=', true]];
+            var ResCurrency = new instance.web.Model('res.currency');
+            ResCurrency.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
+        fecthCompanyCurrency: function(){
+            var self = this;
+            var defer = $.Deferred();
+            var field=['id','name', 'currency_id'];
+            var domain = [['id', '=', self.session.company_id]];
+            var ResCompany = new instance.web.Model('res.company');
+            ResCompany.query(field).filter(domain).all().then(function(results){
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
         // Invoice (FACTURAS)
         fetchInvoiceV2: function () {
             var self = this;
@@ -224,6 +261,16 @@ function report_sale_cab(reporting){
             return defer;
         },
 
+        fetchAccountVoucher: function () {
+            var self = this;
+            var defer = $.Deferred();
+            var AccountVoucher = new instance.web.Model('account.voucher');
+            AccountVoucher.query(['id', 'number','reference','journal_id','type']).filter([['state', '=', 'posted']]).all().then(function(results){
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
         fetchResPartner: function() {
             var self = this;
             var defer = $.Deferred();
@@ -318,6 +365,20 @@ function report_sale_cab(reporting){
             });
         },
 
+        getAccountVoucher: function (id) {
+            var self = this;
+            return _.filter(self.AccountVoucher,function (item) {
+                return item.reference === id;
+            });
+        },
+
+        getResCurrency: function (id) {
+            var self = this;
+            return _.filter(self.ResCurrency,function (item) {
+                return item.id === id;
+            })
+        },
+
         getSaleOrder:function(partner_id) {
             var self = this;
             return _.flatten(_.filter(self.invoices,function (inv) {
@@ -328,6 +389,7 @@ function report_sale_cab(reporting){
         BuildTable: function(){
             var self = this;
             var invoices = self.invoices;
+            var CurrencyBase = self.getResCurrency(self.resCompany[0].currency_id[0]).shift();
             var order = [];
             var data = [];
             var store = [];
@@ -335,18 +397,30 @@ function report_sale_cab(reporting){
             _.each(invoices, function(item){
                 order = self.getSaleOrder(item.user_id[0]);
                 store= self.getAccountJournal(item.journal_id[0]);
+                var currency = self.getResCurrency(item.currency_id[0]).shift();
+                var voucher = self.getAccountVoucher(item.number).shift();
+                var pago = '';
+                var pago_name = '';
+
+                if (voucher != undefined){
+                    pago = voucher.journal_id[0];
+                    pago_name=voucher.journal_id[1];
+                }else{
+                    pago = '';
+                    pago_name= '';
+                }
                 if(order.length > 0 & store.length > 0){
                     data.push({
                         id : item.id,
                         number: item.number,
                         partner: item.partner_id[1],
                         date_invoice: moment(item.date_invoice).format("DD/MM/YYYY"),
-                        amount_total: accounting.formatNumber(item.amount_total,0,".",","),
+                        amount_total: accounting.formatNumber((item.amount_total* (CurrencyBase.rate_silent/currency.rate_silent)),0,".",","),
                         date: item.date_invoice,
                         partner_id : item.partner_id[0],
-                        amount : item.amount_total,
-                        journal_id: item.journal_id[0],
-                        journal_name: item.journal_id[1],
+                        amount : (item.amount_total* (CurrencyBase.rate_silent/currency.rate_silent)),
+                        journal_id: pago,
+                        journal_name: pago_name,
                         user_id : item.user_id[0],
                         user: item.user_id[1],
                         store_id : store[0].store_ids[0]

+ 80 - 46
static/src/js/reports/report_sales_invoice_analysis.js

@@ -8,7 +8,8 @@ function report_sales_invoice_analysis (reporting){
         invoices: [],
         invoiceLines: [],
         productProduct:[],
-        Currency:[],
+        ResCurrency:[],
+        AccountVoucher:[],
         rowsData :[],
         content :[],
         rowOrigin:[],
@@ -117,10 +118,10 @@ function report_sales_invoice_analysis (reporting){
         // Cansultar
         submitForm: function () {
             var self = this;
-            this.fetchCurency().then(function(Currency) {
-                self.Currency = Currency;
-                return Currency;
-            }).then(function (Currency) {
+            this.fetchResCurrency().then(function(ResCurrency) {
+                self.ResCurrency = ResCurrency;
+                return ResCurrency;
+            }).then(function (ResCurrency) {
                return self.fecthResStore();
             }).then(function(ResStore){
                 self.ResStore = ResStore;
@@ -154,6 +155,9 @@ function report_sales_invoice_analysis (reporting){
                 return self.fecthCompanyCurrency();
             }).then(function(resCompany){
                 self.resCompany = resCompany;
+                return self.fetchAccountVoucher();
+            }).then(function (AccountVoucher) {
+                self.AccountVoucher = AccountVoucher;
             return self.fetchResPartner();
             }).then(function(ResPartner){
                 self.ResPartner = ResPartner;
@@ -163,7 +167,7 @@ function report_sales_invoice_analysis (reporting){
                 self.search();
                 self.searchProduct();
                 self.searchUser();
-                return self.invoice_Currency();
+                return self.fectUtility();
             });
         },
 
@@ -242,7 +246,7 @@ function report_sales_invoice_analysis (reporting){
             var self = this;
             var defer = $.Deferred();
             var field = ['id', 'name','store_ids'];
-            var domain = [['active','=',true],['type','in',['sale','purchase']]];
+            var domain = [['active','=',true]];
             var AccountJournal = new model.web.Model('account.journal');
             AccountJournal.query(field).filter(domain).all().then(function(results){
                 defer.resolve(results);
@@ -253,22 +257,34 @@ function report_sales_invoice_analysis (reporting){
         fecthCompanyCurrency: function(){
             var self = this;
             var defer = $.Deferred();
-            var currency = new model.web.Model('res.company');
-            var field=['id', 'currency_id'];
-            var domain=[['id','=',1]];
-            currency.query(field).filter(domain).all().then(function(results){
+            var field=['id','name', 'currency_id'];
+            var domain = [['id', '=', self.session.company_id]];
+            var ResCompany = new model.web.Model('res.company');
+            ResCompany.query(field).filter(domain).all().then(function(results){
                 defer.resolve(results);
             });
             return defer;
         },
 
-        // Buscar Cambio de Monedas USD,PYG,ARG,BRL
-        fetchCurency: function () {
+        fetchResCurrency : function(){
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
+            var domain = [['active', '=', true]];
+            var ResCurrency = new model.web.Model('res.currency');
+            ResCurrency.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
+        fecthCompanyCurrency: function(){
+            var self = this;
             var defer = $.Deferred();
-            var currency_Rate = new model.web.Model('res.currency.rate');
-            var fields = ['id', 'name', 'currency_id', 'rate', 'create_date'];
-            var domain = [['currency_id', 'in', [166 , 20, 7, 3]]];
-            currency_Rate.query(fields).filter(domain).all().then(function (results) {
+            var field=['id','name', 'currency_id'];
+            var domain = [['id', '=', self.session.company_id]];
+            var ResCompany = new model.web.Model('res.company');
+            ResCompany.query(field).filter(domain).all().then(function(results){
                 defer.resolve(results);
             });
             return defer;
@@ -285,7 +301,7 @@ function report_sales_invoice_analysis (reporting){
                 filter=filter.concat(",['journal_id', 'in',["+journal_ids+"]]");
             }
             filter=filter.concat("]");
-            var field =['id', 'type', 'number', 'origin', 'state', 'journal_id', 'currency_id', 'invoice_line','date_invoice','partner_id' ,'user_id'];
+            var field =['id', 'type', 'number', 'origin', 'state', 'journal_id', 'currency_id', 'invoice_line','date_invoice','partner_id' ,'user_id', 'reference' ,'payment_ids'];
             var defer = $.Deferred();
             var Invoice = new model.web.Model('account.invoice');
             Invoice.query(field).filter(filter).all().then(function (results) {
@@ -307,6 +323,16 @@ function report_sales_invoice_analysis (reporting){
             return defer;
         },
 
+        fetchAccountVoucher: function () {
+            var self = this;
+            var defer = $.Deferred();
+            var AccountVoucher = new model.web.Model('account.voucher');
+            AccountVoucher.query(['id', 'number','reference','journal_id','type']).filter([['state', '=', 'posted']]).all().then(function(results){
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
         fetchResPartner: function () {
             var self = this;
             var defer = $.Deferred();
@@ -385,35 +411,28 @@ function report_sales_invoice_analysis (reporting){
         },
 
         // Obtener Monedas de la Factura
-        getCurrency: function (id){
-            return _.find(this.Currency,function (curr) {
-                return _.contains(curr.currency_id,id);
-            });
-        },
-
-        // Actualizar cambio de las moneda de Factura
-        invoice_Currency: function(){
-            for (var i = 0; i < this.invoices.length; i++) {
-                var currency_new;
-                var item = this.invoices[i];
-                var id = item.currency_id[0];
-                currency_new = this.getCurrency(id);
-                if (!currency_new){
-                    currency_new={};
-                    currency_new.rate=1;
-                }
-                this.invoices[i].rate=(currency_new.rate);
-            }
-            return this.fectUtility();
+        getResCurrency: function (id) {
+            var self = this;
+            return _.filter(self.ResCurrency,function (item) {
+                return item.id === id;
+            })
         },
 
         // Obtener la Detalles de la Factura
         getInvoice: function (id_line){
+            var self = this;
             return _.find(this.invoices, function (inv) {
                 return _.contains(inv.invoice_line, id_line);
             });
         },
 
+        getAccountVoucher: function (id) {
+            var self = this;
+            return _.filter(self.AccountVoucher,function (item) {
+                return item.reference === id;
+            });
+        },
+
         // Obtener las lineas de las Facturas
         getProduct: function(pro_id){
             var self = this;
@@ -432,14 +451,29 @@ function report_sales_invoice_analysis (reporting){
         fectUtility: function(){
             var self = this;
             var data=[];
+            var CurrencyBase = self.getResCurrency(self.resCompany[0].currency_id[0]).shift();
             var item;
-            var invoice;
+            var invoice=[];
+            var voucher;
             var producto;
             var attribute;
 
             for (var i = 0; i < this.invoiceLines.length; i++) {
                 item = this.invoiceLines[i];
                 invoice = this.getInvoice(item.id);
+                var currency = self.getResCurrency(invoice.currency_id[0]).shift();
+                voucher = self.getAccountVoucher(invoice.number).shift();
+                var pago = '';
+                var pago_name = '';
+
+                if (voucher != undefined){
+                    pago = voucher.journal_id[0];
+                    pago_name=voucher.journal_id[1];
+                }else{
+                    pago = '';
+                    pago_name= '';
+                }
+
                 producto =this.getProduct(item.product_id);
 
                 if (producto != undefined){
@@ -457,17 +491,17 @@ function report_sales_invoice_analysis (reporting){
                             ean_product : self.valorNull(producto.ean13),
                             name : (item.name + attribute),
                             quantity : accounting.formatNumber((item.quantity),0, ".", ","),
-                            price_unity : accounting.formatNumber((item.price_unit / invoice.rate),0, ".", ","),
+                            price_unity : accounting.formatNumber((item.price_unit * (CurrencyBase.rate_silent/currency.rate_silent)),0, ".", ","),
                             standar_price : accounting.formatNumber((producto.standard_price),0, ".", ","),
-                            price_tot : accounting.formatNumber((item.quantity * (item.price_unit / invoice.rate)),0, ".", ","),
+                            price_tot : accounting.formatNumber((item.quantity * (item.price_unit * (CurrencyBase.rate_silent/currency.rate_silent))),0, ".", ","),
                             standar_tot : accounting.formatNumber((item.quantity * producto.standard_price),0, ".", ","),
-                            utility : accounting.formatNumber(((item.quantity * (item.price_unit / invoice.rate)) - (item.quantity * producto.standard_price)),0, ".", ","),
-                            journal_id :(invoice.journal_id[0]),
-                            journal_name :(invoice.journal_id[1]),
+                            utility : accounting.formatNumber(((item.quantity * (item.price_unit * (CurrencyBase.rate_silent/currency.rate_silent))) - (item.quantity * producto.standard_price)),0, ".", ","),
+                            journal_id : pago,
+                            journal_name : pago_name,
                             quantity_tot : (item.quantity),
-                            price_tot_tot : ((item.quantity * (item.price_unit / invoice.rate))),
+                            price_tot_tot : ((item.quantity * (item.price_unit *(CurrencyBase.rate_silent/currency.rate_silent)))),
                             standar_tot_tot : ((item.quantity * producto.standard_price)),
-                            utility_tot : (((item.quantity * (item.price_unit / invoice.rate)) - (item.quantity * producto.standard_price))),
+                            utility_tot : (((item.quantity * (item.price_unit * (CurrencyBase.rate_silent/currency.rate_silent))) - (item.quantity * producto.standard_price))),
                             date_create :moment(invoice.date_invoice).format("DD/MM/YYYY"),
                             date_invoice : (invoice.date_invoice),
                             partner_id : invoice.partner_id[0],