Prechádzať zdrojové kódy

[ADD] agregado filtro por dias en el grafico de compras-gastos y ventas, tambien se elimino porciones de codigo innecesarios

Rodney Elpidio Enciso Arias 7 rokov pred
rodič
commit
bf0d8fcfa7

+ 37 - 100
static/src/js/widgets/chart_pos_order.js

@@ -9,6 +9,7 @@ function chart_pos_order (widget) {
         events: {
             'click .month': 'showMonth',
             'click .week': 'showWeek',
+            'click .days': 'showDays',
         },
 
         init: function (parent) {
@@ -81,8 +82,8 @@ function chart_pos_order (widget) {
         fecthPosOrder: function() {
             var self = this;
             var defer = $.Deferred();
-            var fields = ['id','name','date_order','amount_total'];
-            var domain = [['state','in',['paid','done','invoiced']]];
+            var fields = ['id','date_order','amount_total'];
+            var domain = [['state','not in',['draft','cancel']]];
             var PosOrder = new model.web.Model('pos.order');
             PosOrder.query(fields).filter(domain).all().then(function (results) {
                 defer.resolve(results);
@@ -110,11 +111,19 @@ function chart_pos_order (widget) {
                 return moment(inv.date_order).week() === week & moment(inv.date_order).isoWeekday() === day;
             }));
         },
+
+        getDaysPosOrder:function(day) {
+            var self = this;
+            var date = moment().subtract(day, 'days').format('YYYY-MM-DD');
+            return _.flatten(_.filter(self.PosOrder,function (inv) {
+                return moment(inv.date_order).format('YYYY-MM-DD') === date;
+            }));
+        },
         
         showMonth: function() {
             var self = this;
             var order;
-            var mes = 0;
+            var title = ['Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
             var data = [];
             
             for (var i = 1; i <= 12; i++) {
@@ -124,18 +133,17 @@ function chart_pos_order (widget) {
                 }),function(memo, num) {
                     return memo + num;
                 },0);
-                data.push({
-                    amount_total: accounting.formatNumber(total,0,".",","),
-                })
+                data.push(total);
             }
             self.$el.unblock();
             self.$el.find('.widget-content.widget-loading').css('display','none');
-            self.fetchMonthChart(data);
+            self.fetchChart(data,title);
         },
 
         showWeek: function (){
             var self = this;
             var order;
+            var title = ['Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo'];
             var data = [];
             for (var i = 1; i <= 7; i++) {
                 order = self.getWeekPosOrder(i);
@@ -144,108 +152,38 @@ function chart_pos_order (widget) {
                 }),function(memo, num) {
                     return memo + num;
                 },0);
-                data.push({
-                    amount_total: accounting.formatNumber(total,0,".",","),
-                });
+                data.push(total);
             }
             self.$el.unblock();
             self.$el.find('.widget-content.widget-loading').css('display','none');
-            self.fetchWeekChart(data);
+            self.fetchChart(data,title);
         },
 
-        fetchMonthChart: function (data) {
+        showDays: function() {
             var self = this;
-            var label = ['Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
-            var body = [];
-            var item;
-            var rank = 12;
-
-            if (data.length < rank && data.length > 0){
-                rank= ranking.length;
-            }
-            for (var i = 0; i < rank; i++) {
-                if (data[i]) {
-                    item = data[i];
-                }
-                if (data.length === 0) {
-                    item = {};
-                    item.amount_total = 0;
-                }
-                body.push(item.amount_total);
+            var order;
+            var title = [];
+            var data = [];
+            for (var i = 15; i >= 0; i--) {
+                order = self.getDaysPosOrder(i);
+                var total = _.reduce(_.map(order,function(item) {
+                    return item.amount_total;
+                }),function(memo, num) {
+                    return memo + num;
+                },0);
+                data.push(total);
+                title.push(moment().subtract(i, 'days').format('DD / MM'));
             }
 
-            // Global method for setting Y axis number format.
-            Chart.scaleService.updateScaleDefaults('linear', {
-              ticks: {
-                callback: function(tick) {
-                    return tick.toLocaleString('de-DE');
-                }
-              }
-            });
-            Chart.defaults.global.tooltips.callbacks.label = function(tooltipItem, data) {
-                var dataset = data.datasets[tooltipItem.datasetIndex];
-                var datasetLabel = dataset.label || '';
-                return datasetLabel +  dataset.data[tooltipItem.index].toLocaleString('de-DE');
-            };
-            var chart = new Chart(this.$el.find(".widget-content").find('canvas'), {
-                type: 'line',
-                data: {
-                    labels: label,
-                    datasets: [
-                        {
-                            label: false,
-                            data: body,
-                            backgroundColor: '#e3f2fd',
-                            borderColor: '#64b5f6',
-                            borderWidth: 2,
-                            fill: true,
-                        }
-                    ]
-                },
-                options: {
-                    responsive: true,
-                    title: {
-                        display: false,
-                    },
-                    hover: {
-                        mode: 'nearest',
-                        intersect: true
-                    },
-                    legend: {
-                       display: false,
-                    },
-                    layout: {
-                        padding: {
-                            top: 35,
-                            bottom: 0,
-                            left : 0,
-                            rigth: 0,
-                        }
-                    },
-                }
-            });
+            self.$el.unblock();
+            self.$el.find('.widget-content.widget-loading').css('display','none');
+            self.fetchChart(data, title);
         },
 
-        fetchWeekChart: function (data) {
+        fetchChart: function (data,title) {
             var self = this;
-            var label = ['Lunes', 'Martes', 'Miercoles','Jueves','Viernes','Sabado','Domingo'];
-            var body = [];
-            var item;
-            var rank = 7;
-
-            if (data.length < rank && data.length > 0){
-                rank= ranking.length;
-            }
-            for (var i = 0; i < rank; i++) {
-                if (data[i]) {
-                    item = data[i];
-                }
-                if (data.length === 0) {
-                    item = {};
-                    item.amount_total = 0;
-                }
-                body.push(item.amount_total);
-            }
+            var label = title;
+            var body = data;
 
             // Global method for setting Y axis number format.
             Chart.scaleService.updateScaleDefaults('linear', {
@@ -290,7 +228,7 @@ function chart_pos_order (widget) {
                     layout: {
                         padding: {
                             top: 35,
-                            bottom: 15,
+                            bottom: 20,
                             left : 0,
                             rigth: 0,
                         }
@@ -298,6 +236,5 @@ function chart_pos_order (widget) {
                 }
             });
         },
-
     });
 }

+ 59 - 140
static/src/js/widgets/chart_purchase_expense.js

@@ -10,6 +10,7 @@ function chart_purchase_expense (widget) {
         events: {
             'click .month': 'showMonth',
             'click .week': 'showWeek',
+            'click .days': 'showDays',
         },
         
         init: function (parent) {
@@ -92,6 +93,7 @@ function chart_purchase_expense (widget) {
             return defer;
         },
 
+        // Facturas de proveedor - Meses
         getMonthAccountInvoicePurchase:function(month) {
             var self = this;
             if (month < 10){
@@ -116,6 +118,7 @@ function chart_purchase_expense (widget) {
             }));
         },
 
+        // Facturas de proveedor - Semana Actual
         getWeekAccountInvoicePurchase:function(day) {
             var self = this;
             var week = moment().week();
@@ -131,11 +134,27 @@ function chart_purchase_expense (widget) {
                 return moment(inv.date_invoice).week() === week & inv.origin === false & moment(inv.date_invoice).isoWeekday() === day;
             }));
         },
+
+        // Facturas de proveedor - 15 dias 
+        getDaysAccountInvoicePurchase:function(day) {
+            var self = this;
+            var date = moment().subtract(day, 'days').format('YYYY-MM-DD');
+            return _.flatten(_.filter(self.AccountInvoice,function (inv) {
+                return moment(inv.date_invoice).format('YYYY-MM-DD') === date & inv.origin !== false;
+            }));
+        },
+        getDaysAccountInvoiceExpense:function(day) {
+            var self = this;
+            var date = moment().subtract(day, 'days').format('YYYY-MM-DD');
+            return _.flatten(_.filter(self.AccountInvoice,function (inv) {
+                return moment(inv.date_invoice).format('YYYY-MM-DD') === date & inv.origin === false;
+            }));
+        },
  
         showMonth: function() {
             var self = this;
             var invoices;
-            var mes = 0;
+            var title = ['Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
             var dataPurchase = [];
             var dataExpense = [];
 
@@ -146,9 +165,7 @@ function chart_purchase_expense (widget) {
                 }),function(memo, num) {
                     return memo + num;
                 },0);
-                dataPurchase.push({
-                    amount_total: accounting.formatNumber(total,0,".",","),
-                })
+                dataPurchase.push(total)
             }
             
             for (var i = 1; i <= 12; i++) {
@@ -158,20 +175,18 @@ function chart_purchase_expense (widget) {
                 }),function(memo, num) {
                     return memo + num;
                 },0);
-                dataExpense.push({
-                    amount_total: accounting.formatNumber(total,0,".",","),
-                })
+                dataExpense.push(total)
             }
 
             self.$el.unblock();
             self.$el.find('.widget-content.widget-loading').css('display','none');
-            self.fetchMonthChart(dataPurchase, dataExpense);
+            self.fetchChart(dataPurchase, dataExpense, title);
         },
 
         showWeek: function() {
             var self = this;
             var invoices;
-            var mes = 0;
+            var title = ['Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo'];
             var dataPurchase = [];
             var dataExpense = [];
 
@@ -182,9 +197,7 @@ function chart_purchase_expense (widget) {
                 }),function(memo, num) {
                     return memo + num;
                 },0);
-                dataPurchase.push({
-                    amount_total: accounting.formatNumber(total,0,".",","),
-                })
+                dataPurchase.push(total);
             }
             
             for (var i = 1; i <= 7; i++) {
@@ -194,144 +207,50 @@ function chart_purchase_expense (widget) {
                 }),function(memo, num) {
                     return memo + num;
                 },0);
-                dataExpense.push({
-                    amount_total: accounting.formatNumber(total,0,".",","),
-                })
+                dataExpense.push(total);
             }
 
             self.$el.unblock();
             self.$el.find('.widget-content.widget-loading').css('display','none');
-            self.fetchWeekChart(dataPurchase, dataExpense);
+            self.fetchChart(dataPurchase, dataExpense, title);
         },
 
-        fetchMonthChart: function (dataPurchase,dataExpense) {
+        showDays: function() {
             var self = this;
-            var label = ['Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
-            var bodyPurchase = [];
-            var bodyExpense = [];
-            var item;
-            var rank = 12;
-
-            if (dataPurchase.length < rank && dataPurchase.length > 0){
-                rank= ranking.length;
-            }
-            for (var i = 0; i < rank; i++) {
-                if (dataPurchase[i]) {
-                    item = dataPurchase[i];
-                }
-                if (dataPurchase.length === 0) {
-                    item = {};
-                    item.amount_total = 0;
-                }
-                bodyPurchase.push(item.amount_total);
+            var title = [];
+            var invoices;
+            var dataPurchase = [];
+            var dataExpense = [];
+            for (var i = 15; i >= 0; i--) {
+                invoices = self.getDaysAccountInvoicePurchase(i);
+                var total = _.reduce(_.map(invoices,function(item) {
+                    return item.amount_total;
+                }),function(memo, num) {
+                    return memo + num;
+                },0);
+                dataPurchase.push(total);
+                title.push(moment().subtract(i, 'days').format('DD / MM'));
             }
-
-            if (dataExpense.length < rank && dataExpense.length > 0){
-                rank= ranking.length;
+            
+            for (var i = 15; i >= 0; i--) {
+                invoices = self.getDaysAccountInvoiceExpense(i);
+                var total = _.reduce(_.map(invoices,function(item) {
+                    return item.amount_total;
+                }),function(memo, num) {
+                    return memo + num;
+                },0);
+                dataExpense.push(total);
             }
-            for (var i = 0; i < rank; i++) {
-                if (dataExpense[i]) {
-                    item = dataExpense[i];
-                }
-                if (dataExpense.length === 0) {
-                    item = {};
-                    item.amount_total = 0;
-                }
-                bodyExpense.push(item.amount_total);
-            } 
-
-            // Global method for setting Y axis number format.
-            Chart.scaleService.updateScaleDefaults('linear', {
-              ticks: {
-                callback: function(tick) {
-                    return tick.toLocaleString('de-DE');
-                }
-              }
-            });
-            Chart.defaults.global.tooltips.callbacks.label = function(tooltipItem, data) {
-                var dataset = data.datasets[tooltipItem.datasetIndex];
-                var datasetLabel = dataset.label || '';
-                return datasetLabel +  dataset.data[tooltipItem.index].toLocaleString('de-DE');
-            };
-            var chart = new Chart(this.$el.find(".widget-content").find('canvas'), {
-                type: 'line',
-                data: {
-                    labels: label,
-                    datasets: [
-                        {
-                            label: 'Compras  ',
-                            data: bodyPurchase,
-                            backgroundColor: '#e3f2fd',
-                            borderColor: '#64b5f6',
-                            borderWidth: 2,
-                            fill: false,
-                        },
-                        {
-                            label: 'Gastos  ',                            
-                            data: bodyExpense,
-                            backgroundColor: '#c8e6c9',
-                            borderColor: '#66bb6a',
-                            borderWidth: 2,
-                            fill: false,
-                        }
-                    ]
-                },
-                options: {
-                    responsive: true,
-                    title: {
-                        display: true,
-                    },
-                    hover: {
-                        mode: 'nearest',
-                        intersect: true
-                    },
-                    layout: {
-                        padding: {
-                            top: 0,
-                            bottom: 0,
-                            left : 0,
-                            rigth: 0,
-                        }
-                    },
-                }
-            });
+            self.$el.unblock();
+            self.$el.find('.widget-content.widget-loading').css('display','none');
+            self.fetchChart(dataPurchase, dataExpense, title);
         },
 
-        fetchWeekChart: function (dataPurchase,dataExpense) {
+        fetchChart: function (dataPurchase, dataExpense, title) {
             var self = this;
-            var label = ['Lunes', 'Martes', 'Miercoles','Jueves','Viernes','Sabado','Domingo'];
-            var bodyPurchase = [];
-            var bodyExpense = [];
-            var item;
-            var rank = 7;
-
-            if (dataPurchase.length < rank && dataPurchase.length > 0){
-                rank= ranking.length;
-            }
-            for (var i = 0; i < rank; i++) {
-                if (dataPurchase[i]) {
-                    item = dataPurchase[i];
-                }
-                if (dataPurchase.length === 0) {
-                    item = {};
-                    item.amount_total = 0;
-                }
-                bodyPurchase.push(item.amount_total);
-            }
-
-            if (dataExpense.length < rank && dataExpense.length > 0){
-                rank= ranking.length;
-            }
-            for (var i = 0; i < rank; i++) {
-                if (dataExpense[i]) {
-                    item = dataExpense[i];
-                }
-                if (dataExpense.length === 0) {
-                    item = {};
-                    item.amount_total = 0;
-                }
-                bodyExpense.push(item.amount_total);
-            } 
+            var label = title;
+            var bodyPurchase = dataPurchase;
+            var bodyExpense = dataExpense;
 
             // Global method for setting Y axis number format.
             Chart.scaleService.updateScaleDefaults('linear', {
@@ -380,8 +299,8 @@ function chart_purchase_expense (widget) {
                     },
                     layout: {
                         padding: {
-                            top: 0,
-                            bottom: 15,
+                            top: 5,
+                            bottom: 20,
                             left : 0,
                             rigth: 0,
                         }

+ 16 - 3
static/src/xml/widgets/chart_pos_order.xml

@@ -5,9 +5,22 @@
         <t t-call="WidgetReportingBaseTemplate">
             <h2  class="widget-title">
                 <i class="fa fa-bar-chart" aria-hidden="true"></i>
-                <span> Ventas   </span>
-                <a class="btn btn-default week" role="button">Esta Semana</a>
-                <a class="btn btn-default month" role="button">Meses</a>
+                <span>Ventas</span>
+                <div class="col-xs-6 col-xs-offset-10">
+                    <div class="btn-group">
+                        <a type="button" class="btn btn-default">Filtrar</a>
+                        <a type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                        <span class="caret"></span>
+                        <span class="sr-only">Toggle Dropdown</span>
+                        </a>
+                        <ul class="dropdown-menu dropdown-menu-right">
+                            <li><a class="days">15 dias</a></li>
+                            <li><a class="month">Meses</a></li>
+                            <li role="separator" class="divider"></li>
+                            <li><a class="week">Esta Semana</a></li>
+                        </ul>
+                    </div>
+                </div>
             </h2>
             <div class="widget-content">
                 <br/>

+ 16 - 3
static/src/xml/widgets/chart_purchase_expense.xml

@@ -5,9 +5,22 @@
         <t t-call="WidgetReportingBaseTemplate">
             <h2  class="widget-title">
                 <i class="fa fa-bar-chart" aria-hidden="true"></i>
-                <span> Compras y Gastos     </span>
-                <a class="btn btn-default week" role="button">Esta Semana</a>
-                <a class="btn btn-default month" role="button">Meses</a>
+                <span> Compras y Gastos </span>
+                <div class="col-xs-6 col-xs-offset-10">
+                    <div class="btn-group">
+                        <a type="button" class="btn btn-default">Filtrar</a>
+                        <a type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                        <span class="caret"></span>
+                        <span class="sr-only">Toggle Dropdown</span>
+                        </a>
+                        <ul class="dropdown-menu dropdown-menu-right">
+                            <li><a class="days">15 dias</a></li>
+                            <li><a class="month">Meses</a></li>
+                            <li role="separator" class="divider"></li>
+                            <li><a class="week">Esta Semana</a></li>
+                        </ul>
+                    </div>
+                </div>
             </h2>
             <div class="widget-content">
                 <br/>