function ranking_doctores(widget) { "use strict"; var model = openerp; var Qweb = openerp.web.qweb; widget.RankingDoctores = widget.Base.extend({ template: 'RankingDoctores', init: function (parent) { this._super(parent, { width: 6, height: 4 }); }, start: function () { var self = this; self.fetchInitial(); }, fetchInitial: function(){ var self = this; self.fetchDataSQL().then(function (DataSQL) { return DataSQL; }).then(function(DataSQL) { self.ResCompany = DataSQL.company; self.AccountInvoice = DataSQL.invoices; self.AccountInvoiceLine = DataSQL.invoiceslines; self.ResUser = DataSQL.users; return self.SalesmanRanking(); }); }, fetchDataSQL: function() { var data = $.get('/dashboard-RankingDoctores'); return data; }, getAccountInvoiceLine:function(id) { var self = this; return _.flatten(_.filter(self.AccountInvoiceLine,function (inv) { return inv.medic_id === id; })); }, // getAccountInvoice:function(id) { // var self = this; // return _.flatten(_.filter(self.AccountInvoice,function (inv) { // return inv.id === id && inv.type == 'out_invoice'; // })); // }, SalesmanRanking: function() { var self = this; var ranking = []; var amount = 0; var ResUser = self.ResUser; var InvoiceLine= self.AccountInvoiceLine _.each(ResUser, function (item) { var AccountInvoiceLine = self.getAccountInvoiceLine(item.id); var account_invoice_amount = _.reduce(_.map(AccountInvoiceLine,function(item) { return item.subtotal; }),function(memo, num) { return memo + num; },0); amount = (account_invoice_amount); if(amount > 0 ){ ranking.push({ name: item.name, amount: amount, }); } }); ranking.sort(function(a, b) { return b.amount - a.amount }); self.BuildChart(ranking); }, BuildChart: function (ranking){ var self = this; var label = []; var body = []; var item; var CurrencyBase = self.ResCompany[0].currency_id; for (var i = 0; i < ranking.length; i++) { item = ranking[i]; label.push(item.name) body.push(item.amount); } var name = '.ranking-doctores-chart'; var chart = new widget.DashboardChartWidget3(self); chart.BuildHorizontalBarChart(name,CurrencyBase,label,body); } }); }