Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
odoo.define('lefilament_tdb.previ_tresorerie', 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 TresorerieView = Widget.extend({
template: 'Tresorerie',
init: function() {
var result = this._super.apply(this, arguments);
return result;
},
willStart: function() {
var deferred = new jQuery.Deferred();
var self = this;
this.values = {};
var dash_model = new Model('lefilament.dashboard');
dash_model.call('previ_tresorerie')
.then(function(results) {
self.values = results;
deferred.resolve();
});
return jQuery.when(this._super.apply(this, arguments),deferred);
},
start: function() {
console.log(this.values);
return this.render_chart();
},
render_chart: function(chart) {
self = this;
/////////////////////////////////////////
// Trésorerie -> Bar Chart //
/////////////////////////////////////////
this.ctx = this.$el.find('#tresorerie')[0].getContext('2d');
var labels = [];
var data_months = [];
var data_year = [];
var month = moment().month();
for (var i = -5; i < 7; i++) {
labels.push(moment().month(month + i).format("MMM YYYY"));
data_months.push(moment().month(month + i).format("MM"));
data_year.push(moment().month(month + i).format("YYYY-MM"));
}
var treso_r = this.reverse_array(this.values.tresorerie);
var treso = [];
var cca = [];
var fonds_propres = [];
var charges_an = 0;
var charges_fixes_an = [];
var charges_fixes = [];
var client = 0;
var f_client = [];
var fournisseur = 0;
var f_fournisseur = [];
var previsionnel = [];
for (var i = 0; i < 12 ; i++) {
// CCA + Fonds Propres
cca.push(this.values.fonds_propres.cca);
fonds_propres.push(this.values.fonds_propres.cca+this.values.fonds_propres.capital);
// Trésorerie
if (treso_r[i]) { treso.push(treso_r[i].treso); }
// Calcul des factures
_.each( this.values.factures, function(value, key) {
if (value.mois == data_year[i] ) {
client = value.f_client;
fournisseur = value.f_fournisseur;
}
});
if ( client > 0 ) { f_client.push(client); client = 0; } else { f_client.push(0); }
if ( fournisseur > 0 ) { f_fournisseur.push(fournisseur); fournisseur = 0; } else { f_fournisseur.push(0); }
// Calcul des fixes annuelles
_.each( this.values.charges_fixes, function(value, key) {
if (value.mois == data_year[i] ) {
charges_an = value.sum;
}
});
if ( charges_an > 0 ) { charges_fixes_an.push(charges_an); charges_an = 0; } else { charges_fixes_an.push(0); }
// Calcul charges fixes
if ( i < 5 ) { charges_fixes.push(null); }
else if ( i == 5 ) { charges_fixes.push(treso_r[5].treso); }
else {
charges_fixes.push( this.values.charges_periode[0].sum + this.values.charges_periode[1].sum );
}
}
}
for (var i = 0; i < 12 ; i++) {
if (i > 4 ) {
previsionnel.push( previsionnel[i-1] + charges_fixes[i]+f_client[i]-f_fournisseur[i]-charges_fixes_an[i]);
} else {
previsionnel.push(null);
}
}
var datasets = [
{ label: 'Trésorerie', data: treso, backgroundColor: 'transparent',borderColor: '#5E8ED5', },
{ label: 'Prévisionnel', data: previsionnel, backgroundColor: 'transparent',borderColor: 'rgba(94,142,213,0.5)', borderDash: [5,5] },
{ label: 'Client', data: f_client, backgroundColor: 'transparent',borderColor: '#51d2b7', borderWidth: 1.5, radius: 1, },
{ label: 'Fournisseur', data: f_fournisseur, backgroundColor: 'transparent',borderColor: '#FCA7B3', borderWidth: 1.5, radius: 1, },
{ label: 'CCA', data: cca, backgroundColor: 'transparent',borderColor: '#FFDFA9', borderWidth: 1.5, radius: 0, },
{ label: 'Fonds Propres', data: fonds_propres, backgroundColor: 'transparent',borderColor: '#A2BFEA', borderWidth: 1.5, radius: 0, },
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
];
var options = {
scales: {
yAxes: [{
ticks: {
beginAtZero:true,
}
}]
},
tooltips: {
backgroundColor: 'rgba(255,255,255,0.8)',
titleFontStyle: 'normal',
titleFontColor: '#999',
bodyFontColor: '#777',
callbacks: {
label: function(tooltipItems, data) {
return ' ' + (tooltipItems.yLabel / 1000).toLocaleString('fr', { maximumFractionDigits: 1 }) + ' k€';
}
}
},
responsive: true,
}
this.targetData = {
labels : labels,
datasets : datasets
};
var myChart = new Chart(this.ctx, { type: 'line', data: this.targetData, options: options } );
},
reverse_array: function(array) {
var tabLength = array.length - 1;
var new_array = [];
for (var i = tabLength; i > -1; i--) {
new_array.push(array[i]);
}
return new_array;
},
});
core.action_registry.add('lefilament_tdb.previ_tresorerie', TresorerieView);
});