Sélectionner une révision Git
account_move.py
Bifurcation depuis
Le Filament / Confédération Générale des SCOP / cgscop_cotisation
Le projet source a une visibilité limitée.
-
Benjamin - Le Filament a rédigéBenjamin - Le Filament a rédigé
dashboard_year.js 8,46 Kio
odoo.define('lefilament_tdb.dashboard_year', function (require) {
"use strict";
var core = require('web.core');
var formats = require('web.formats');
var Model = require('web.Model');
var session = require('web.session');
var Widget = require('web.Widget');
var QWeb = core.qweb;
var _t = core._t;
var _lt = core._lt;
var YearDashboardView = Widget.extend({
template: 'YearDashboard',
events: {
// 'click .card': function() {
// this.mychart.reflow();
// },
'click #facture_non_encaisse': function() {
this.facture();
},
'click #commandes': function() {
this.commandes();
},
},
init: function() {
var result = this._super.apply(this, arguments);
return result;
},
willStart: function() {
var deferred = new jQuery.Deferred();
var self = this;
this.values = {};
this.progess = 0;
var dash_model = new Model('lefilament.dashboard');
dash_model.call('retrieve_datas_dashboard')
.then(function(results) {
self.values = results;
self.progress = results.facture / results.target;
self.pfact = (self.values.facture / self.values.target * 100).toFixed(0);
self.pcomm = (self.values.commandes / self.values.target * 100).toFixed(0);
self.ppipe_win = (self.values.pipe_win / self.values.target * 100).toFixed(0);
self.ppipe_to_win = (self.values.pipe_to_win / self.values.target * 100).toFixed(0);
self.ptarg = 100-self.pfact-self.pcomm-self.ppipe_win-self.ppipe_to_win;
self.pfact2 = (self.values.facture);
self.pcomm2 = (self.values.commandes);
self.ppipe2_win = (self.values.pipe_win);
self.ppipe2_to_win = (self.values.pipe_to_win);
self.ptarg2 = self.values.target -self.pfact2-self.pcomm2-self.ppipe2_to_win-self.ppipe2_win;
self.total2 = ((self.values.facture + self.values.commandes + self.values.pipe_win) / self.values.target * 100).toFixed(0);
self.total = self.pfact + self.pcomm + self.ppipe_win
deferred.resolve();
});
return jQuery.when(this._super.apply(this, arguments),deferred);
},
start: function() {
return this.render_chart();
},
render_chart: function(chart) {
self = this;
/////////////////////////////////////////
// Etat d'avancement -> HighChart //
/////////////////////////////////////////
// var hchart = this.$el.find('#hchart')[0];
// Highcharts.setOptions({ colors: ['#8ED8A2', '#F6DCA2', '#F6CCA2', '#F6ACA2', '#eee'], });
// this.mychart = new Highcharts.chart({
// chart: {
// renderTo: hchart,
// type: 'pie',
// margin: 0
// },
// title: {
// text: '<span class="ca_target">'+
// self.values.target.toLocaleString('fr', { maximumFractionDigits: 0 }) + ' € </span>',
// align: 'center',
// verticalAlign: 'middle',
// style: { 'color': '#73879C', 'font-size': '11px' },
// y: -20,
// },
// plotOptions: {
// pie: {
// slicedOffset: 0,
// size: '100%',
// dataLabels: {
// enabled: false
// }
// },
// series: {
// states: {
// hover: {
// enabled: false
// }
// }
// }
// },
// tooltip: {
// pointFormat: '<p class="point"><span class="point_percent">{point.percentage:.0f}% </span><br/> {point.y} €</p>',
// backgroundColor: "rgba(255,255,255,0.85)",
// borderColor: null,
// borderRadius: 0,
// borderWidth: 0,
// useHTML: true,
// shadow: false,
// },
// series: [{
// type: 'pie',
// innerSize: '85%',
// data: [ ['Facturé', this.pfact2], ['Commandes', this.pcomm2], ['Gagné', this.ppipe2_win], ['Pipe', this.ppipe2_to_win], ['To Do', this.ptarg2], ],
// slicedOffset: 0,
// }],
// });
// this.mychart.reflow();
/////////////////////////////////////////
// Etat d'avancement -> Bar Chart //
/////////////////////////////////////////
this.ctx = this.$el.find('#target')[0].getContext('2d');
var dataset_stacked = [
{ label: 'Facturé', data: [this.pfact2], backgroundColor: '#8ED8A2', },
{ label: 'Commandes', data: [this.pcomm2], backgroundColor: '#F6DCA2', },
{ label: 'Gagné', data: [this.ppipe2_win], backgroundColor: '#F6CCA2', },
{ label: 'Pipe', data: [this.ppipe2_to_win], backgroundColor: '#F6ACA2', },
{ label: 'To Do', data: [this.ptarg2], backgroundColor: '#eee', }];
var label = 'Année ' + moment(Date.now()).format('YYYY');
this.targetData = {
labels : [label],
datasets : dataset_stacked
};
var options = {
legend: {
display: false,
position: 'bottom',
fullWidth: false,
},
layout: {
padding: { left:0, right: 0, bottom: 20, top: 20, },
},
scales: {
xAxes: [{
stacked: true,
scaleShowLabels: false,
display : false ,
}],
yAxes: [{
stacked: true,
scaleShowLabels: false,
display : false ,
}]
},
tooltips: {
backgroundColor: 'rgba(255,255,255,0.8)',
titleFontStyle: 'normal',
titleFontColor: '#999',
bodyFontColor: '#777',
callbacks: {
label: function(tooltipItems, data) {
return (tooltipItems.xLabel / 1000).toLocaleString('fr', { maximumFractionDigits: 2 }) + ' K€';
}
}
},
responsive: true,
}
var myLineChart = new Chart(this.ctx, { type: 'horizontalBar', data: this.targetData, options } );
},
render_monetary: function(value) {
value = value.toLocaleString('fr', { maximumFractionDigits: 0 }) + ' €';
return value;
},
render_keur: function(value) {
value = (value / 1000).toLocaleString('fr', { maximumFractionDigits: 0 }) + ' K€';
return value;
},
render_percent: function(value) {
value = value.toLocaleString('fr', { maximumFractionDigits: 1 }) + ' %';
return value;
},
render_date: function(value) {
var dateFormat = new Date(value);
var new_value = moment(dateFormat).format('Do MMM YYYY');
return new_value;
},
render_monetary_color: function(value) {
if (value >= 0)
value = '<span class="positive">'+value.toLocaleString('fr', { maximumFractionDigits: 0 }) + ' €</span>';
else
value = '<span class="negative">'+value.toLocaleString('fr', { maximumFractionDigits: 0 }) + ' €</span>';
return value;
},
facture: function() {
var self = this;
var context = { 'user_id': this.session.uid, }
var action = ({
type: 'ir.actions.act_window',
res_model: 'account.invoice',
view_type: 'form',
view_mode: 'tree,form',
views: [[false, 'list'], [false, 'form']],
domain: [['state','=','open'],['type','=','out_invoice']],
target:'current',
name: 'Factures en cours',
context: context
})
this.do_action(action);
},
commandes: function() {
var self = this;
var context = { 'user_id': this.session.uid, }
var action = ({
type: 'ir.actions.act_window',
res_model: 'sale.order',
view_type: 'form',
view_mode: 'tree,form',
views: [[false, 'list'], [false, 'form']],
domain: [['invoice_status','=','to invoice']],
target:'current',
name: 'Commandes en cours',
context: context
})
this.do_action(action);
},
});
core.action_registry.add('lefilament_tdb.dashboard_year', YearDashboardView);
});