123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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);
- }
- });
- }
|