page previsionnel
This commit is contained in:
parent
1497570c1b
commit
5acff1b274
|
@ -93,6 +93,18 @@
|
||||||
Import
|
Import
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<a class="btn {% if app.request.attributes.get('_route') == 'previsionnel' %}
|
||||||
|
btn-success
|
||||||
|
{% else %}
|
||||||
|
btn-default
|
||||||
|
{% endif %}" href="{{ path('previsionnel') }}"
|
||||||
|
>
|
||||||
|
<i class="fa fa-arrow-circle-o-up"></i>
|
||||||
|
Prévisionnel
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
<div class="previsionnel"
|
<div class="previsionnel"
|
||||||
ng-app="caisse"
|
ng-app="caisse"
|
||||||
ng-controller="PrevisionnelCtrl as pCtrl"
|
ng-controller="previsionnelCtrl as pCtrl"
|
||||||
>
|
>
|
||||||
<h1>Prévisionnel</h1>
|
<h1>Prévisionnel</h1>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -14,7 +14,8 @@
|
||||||
Configuration
|
Configuration
|
||||||
</h2>
|
</h2>
|
||||||
Euros disponibles au départ:
|
Euros disponibles au départ:
|
||||||
<input type="number" ng-model="start">
|
<input type="number" ng-model="disponibility">
|
||||||
|
Dépenses mensuelles: {{ sumMonthlyExpenses }}
|
||||||
</div>
|
</div>
|
||||||
<div class="postes">
|
<div class="postes">
|
||||||
<h2>Postes de dépenses</h2>
|
<h2>Postes de dépenses</h2>
|
||||||
|
@ -48,24 +49,46 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
<tr>
|
<tr ng-repeat="e in pCtrl.expenses">
|
||||||
<td>
|
<td>
|
||||||
|
{{ e.name }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ e.delay }}débute dans X mois
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ e.repeat }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ e.repeat * e.amount }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ e.amount }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ e.amount * 12 }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div class="well">
|
<div class="well">
|
||||||
Exemple:
|
<strong>
|
||||||
|
Exemples:
|
||||||
|
</strong>
|
||||||
appartement
|
appartement
|
||||||
resto au boulot
|
mutuelle
|
||||||
courses
|
transport en commun
|
||||||
|
assurance voiture
|
||||||
|
assurance moto
|
||||||
trucs de loisirs divers
|
trucs de loisirs divers
|
||||||
gaz
|
gaz
|
||||||
elec
|
elec
|
||||||
internet
|
internet
|
||||||
|
épargne
|
||||||
|
impots
|
||||||
|
cottisation URSSAF
|
||||||
|
resto au boulot
|
||||||
|
courses
|
||||||
serveur wouaibe
|
serveur wouaibe
|
||||||
assurance voiture
|
|
||||||
transport en commun
|
|
||||||
abonnement protonmail VPN
|
abonnement protonmail VPN
|
||||||
abonnement service audio, vidéo
|
abonnement service audio, vidéo
|
||||||
carburant véhicule
|
carburant véhicule
|
||||||
|
@ -82,12 +105,36 @@
|
||||||
<h2>Simulation sur 5 ans (60 mois)</h2>
|
<h2>Simulation sur 5 ans (60 mois)</h2>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
<tr>
|
||||||
|
<td>
|
||||||
|
Month in the future
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
date
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Dépenses
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Disponibilité
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="line in previsionTable">
|
||||||
|
<td>
|
||||||
|
{{ $index }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
-
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
|
{{ line.expense }}
|
||||||
|
</td>
|
||||||
|
<td ng-class="{ 'bg-warning' : line.available < 0}">
|
||||||
|
|
||||||
|
{{ line.available }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -226,11 +226,63 @@ angular
|
||||||
.controller('previsionnelCtrl', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
|
.controller('previsionnelCtrl', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
|
||||||
|
|
||||||
|
|
||||||
|
let exampleExpenses = [
|
||||||
|
{name: "appart", amount: 600},
|
||||||
|
{name: "assurance voiture", amount: 50},
|
||||||
|
{name: "internet", amount: 20},
|
||||||
|
{name: "elec", amount: 100},
|
||||||
|
{name: "transports", amount: 70},
|
||||||
|
{name: "chat", amount: 20},
|
||||||
|
];
|
||||||
|
/**
|
||||||
|
* expenses kind of the user
|
||||||
|
* @type {Array}
|
||||||
|
*/
|
||||||
|
$scope.disponibility=5000;
|
||||||
|
// $scope.expenses=[];
|
||||||
|
$scope.expenses=exampleExpenses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sum of all monthly expenses, ignoring delay
|
||||||
|
* @returns {number}
|
||||||
|
*/
|
||||||
|
$scope.sumMonthlyExpenses = ()=>{
|
||||||
|
let sum = 0;
|
||||||
|
$scope.expenses.forEach((elem)=>{
|
||||||
|
sum += elem.amount;
|
||||||
|
})
|
||||||
|
return sum;
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.previsionTable = ()=>{
|
||||||
|
let turns = 60;
|
||||||
|
let monthly = $scope.sumMonthlyExpenses();
|
||||||
|
let available = $scope.disponibility;
|
||||||
|
let previsionTable=[];
|
||||||
|
for (let i=0;i<=turns;i++){
|
||||||
|
// TODO take in account delays in expenses
|
||||||
|
let newLine = {
|
||||||
|
expense: monthly,
|
||||||
|
available: available - monthly,
|
||||||
|
};
|
||||||
|
previsionTable.push(newLine);
|
||||||
|
}
|
||||||
|
return previsionTable;
|
||||||
|
};
|
||||||
|
|
||||||
// http related calls
|
// http related calls
|
||||||
$scope.fetchProductsFromDB = function () {
|
$scope.fetchExpenses = ()=>{
|
||||||
console.log('fetch products...');
|
console.log('fetch expenses...');
|
||||||
$http.get('get-my-expenses').then((rep) => {
|
$http.get('get-my-expenses').then((rep) => {
|
||||||
console.log('get-my-expenses',rep);
|
console.log('get-my-expenses',rep);
|
||||||
})
|
})
|
||||||
}
|
};
|
||||||
|
// save
|
||||||
|
$scope.save = ()=>{
|
||||||
|
console.log('update expenses...');
|
||||||
|
$http.post('save-my-expenses', $scope.expenses)
|
||||||
|
.then((rep) => {
|
||||||
|
console.log('save-my-expenses',rep);
|
||||||
|
})
|
||||||
|
};
|
||||||
}]);
|
}]);
|
||||||
|
|
|
@ -424,6 +424,21 @@ class DefaultController extends Controller
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Route("/previsionnel", name="previsionnel")
|
||||||
|
*/
|
||||||
|
public function previsionnelAction()
|
||||||
|
{
|
||||||
|
// $currentUser = $this->getUser();
|
||||||
|
// $m = $this->getDoctrine()->getManager();
|
||||||
|
// $sellingRepo = $m->getRepository('AppBundle:SellRecord');
|
||||||
|
|
||||||
|
return $this->render('logged/previsionnel.html.twig',
|
||||||
|
[
|
||||||
|
'base_dir' => '',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* import lots of products at once
|
* import lots of products at once
|
||||||
* @Route("/mass-create", name="mass_create")
|
* @Route("/mass-create", name="mass_create")
|
||||||
|
|
Loading…
Reference in New Issue