mise en place des budgets
This commit is contained in:
@@ -22,6 +22,15 @@ class BudgetController extends AbstractController
|
|||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
// Rechercher de l'ensemble des exercices sauf du premier
|
||||||
|
$years = $em
|
||||||
|
->createQueryBuilder('year')
|
||||||
|
->select('year')
|
||||||
|
->from('App:Year','year')
|
||||||
|
->orderBy('year.start')
|
||||||
|
->setFirstResult(1)
|
||||||
|
->getQuery()->getResult();
|
||||||
|
|
||||||
// Rechercher l'exercice demandé sinon le dernier
|
// Rechercher l'exercice demandé sinon le dernier
|
||||||
if($id)
|
if($id)
|
||||||
$n2=$em->getRepository("App:Year")->find($id);
|
$n2=$em->getRepository("App:Year")->find($id);
|
||||||
@@ -253,7 +262,9 @@ class BudgetController extends AbstractController
|
|||||||
"domaines" => $tbdomaines,
|
"domaines" => $tbdomaines,
|
||||||
"n1" => $n1,
|
"n1" => $n1,
|
||||||
"n2" => $n2,
|
"n2" => $n2,
|
||||||
|
"years" => $years,
|
||||||
"fgprint" => true,
|
"fgprint" => true,
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return new PdfResponse(
|
return new PdfResponse(
|
||||||
@@ -268,6 +279,7 @@ class BudgetController extends AbstractController
|
|||||||
"domaines" => $tbdomaines,
|
"domaines" => $tbdomaines,
|
||||||
"n1" => $n1,
|
"n1" => $n1,
|
||||||
"n2" => $n2,
|
"n2" => $n2,
|
||||||
|
"years" => $years,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,7 +316,7 @@ class BudgetController extends AbstractController
|
|||||||
if(!$data) {
|
if(!$data) {
|
||||||
$data=new Yeardomaine;
|
$data=new Yeardomaine;
|
||||||
$data->setYear($year);
|
$data->setYear($year);
|
||||||
$data->setProject($domaine);
|
$data->setDomaine($domaine);
|
||||||
$em->persist($data);
|
$em->persist($data);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
}
|
}
|
||||||
|
@@ -33,17 +33,17 @@ class Yeardomaine
|
|||||||
/**
|
/**
|
||||||
* @ORM\Column(type="integer")
|
* @ORM\Column(type="integer")
|
||||||
*/
|
*/
|
||||||
private $nbdaybudget;
|
private $nbdaybudget=0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(type="integer")
|
* @ORM\Column(type="integer")
|
||||||
*/
|
*/
|
||||||
private $cabudget;
|
private $cabudget=0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(type="integer")
|
* @ORM\Column(type="integer")
|
||||||
*/
|
*/
|
||||||
private $careal;
|
private $careal=0;
|
||||||
|
|
||||||
public function getId(): ?int
|
public function getId(): ?int
|
||||||
{
|
{
|
||||||
|
63
src/schedule-2.0/src/Form/YeardomaineType.php
Normal file
63
src/schedule-2.0/src/Form/YeardomaineType.php
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Form;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\DateType;
|
||||||
|
|
||||||
|
use FOS\CKEditorBundle\Form\Type\CKEditorType;
|
||||||
|
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
|
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Doctrine\ORM\EntityManager;
|
||||||
|
|
||||||
|
class YeardomaineType extends AbstractType
|
||||||
|
{
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
$builder->add('submit',
|
||||||
|
SubmitType::class, [
|
||||||
|
"label" => "Valider",
|
||||||
|
"attr" => ["class" => "btn btn-success no-print"],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$builder->add('nbdaybudget',
|
||||||
|
IntegerType::class, [
|
||||||
|
"label" =>"Nombre de jours prévus pour l'exercice"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$builder->add('cabudget',
|
||||||
|
IntegerType::class, [
|
||||||
|
"label" =>"Budget prévu pour l'exercice"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$builder->add('careal',
|
||||||
|
IntegerType::class, [
|
||||||
|
"label" =>"Budget réel pour l'exercice"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefaults(array(
|
||||||
|
'data_class' => 'App\Entity\Yeardomaine',
|
||||||
|
'mode' => 'string',
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
@@ -10,6 +10,19 @@
|
|||||||
}
|
}
|
||||||
tr { page-break-inside: avoid; }
|
tr { page-break-inside: avoid; }
|
||||||
{%endif%}
|
{%endif%}
|
||||||
|
.group td{
|
||||||
|
font-size:120%;
|
||||||
|
text-transform: uppercase;
|
||||||
|
background-color:#212529;
|
||||||
|
color:#ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.total td{
|
||||||
|
font-size:120%;
|
||||||
|
background-color:#cdcdcd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
@@ -17,7 +30,19 @@
|
|||||||
BUDGET
|
BUDGET
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p><a class="btn btn-success" href={{ path('app_year_submit') }}>Ajouter</a></p>
|
<div class="form-group ">
|
||||||
|
<label class="control-label" for="project_active">Exercice</label>
|
||||||
|
|
||||||
|
<select id="exercice" class="form-control">
|
||||||
|
{% for year in years %}
|
||||||
|
{% set selected=""%}
|
||||||
|
{% if year.id==n2.id%}
|
||||||
|
{% set selected="selected" %}
|
||||||
|
{% endif %}
|
||||||
|
<option value="{{year.id}}" {{selected}}>{{year.start|date("m/Y")}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
@@ -26,7 +51,7 @@ BUDGET
|
|||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="dataTable_wrapper">
|
<div class="dataTable_wrapper">
|
||||||
<table class="table table-striped table-bordered table-hover" id="dataTables" style="width:100%">
|
<table class="table table-bordered" id="dataTables" style="width:100%">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th rowspan=2>Domaine</th>
|
<th rowspan=2>Domaine</th>
|
||||||
@@ -35,10 +60,10 @@ BUDGET
|
|||||||
<th class="text-center" style="width:150px" colspan=3>{{n2.start|date("m/Y")}}</th>
|
<th class="text-center" style="width:150px" colspan=3>{{n2.start|date("m/Y")}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th width="20px" class="no-sort no-print" rowspan=2></th>
|
<th width="20px" class="no-sort no-print"></th>
|
||||||
<th class="text-center" style="width:150px">Réel</th>
|
<th class="text-center" style="width:150px">Réel</th>
|
||||||
<th class="text-center" style="width:150px">Budget</th>
|
<th class="text-center" style="width:150px">Budget</th>
|
||||||
<th width="20px" class="no-sort no-print" rowspan=2></th>
|
<th width="20px" class="no-sort no-print"></th>
|
||||||
<th class="text-center" style="width:150px">Réel</th>
|
<th class="text-center" style="width:150px">Réel</th>
|
||||||
<th class="text-center" style="width:150px">Budget</th>
|
<th class="text-center" style="width:150px">Budget</th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -117,7 +142,7 @@ BUDGET
|
|||||||
<td>Hors Projet</td>
|
<td>Hors Projet</td>
|
||||||
|
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a href="{{path("app_budget_update",{type:"budget",id:domaine.id,year:n1.id})}}"><i class="fa fa-file"></i></a>
|
<a href="{{path("app_budget_update",{type:"budget",id:domaine.id,year:n1.id,returnto:n2.id})}}"><i class="fa fa-file"></i></a>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{{(domaine.nbdayrealn1-nbdayrealn1)}} jours<br>
|
{{(domaine.nbdayrealn1-nbdayrealn1)}} jours<br>
|
||||||
@@ -133,7 +158,7 @@ BUDGET
|
|||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a href="{{path("app_budget_update",{type:"budget",id:domaine.id,year:n2.id})}}"><i class="fa fa-file"></i></a>
|
<a href="{{path("app_budget_update",{type:"budget",id:domaine.id,year:n2.id,returnto:n2.id})}}"><i class="fa fa-file"></i></a>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{{(domaine.nbdayrealn2-nbdayrealn2)}} jours<br>
|
{{(domaine.nbdayrealn2-nbdayrealn2)}} jours<br>
|
||||||
@@ -150,7 +175,7 @@ BUDGET
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr class="total">
|
||||||
<td>{{domaine.name}}</td>
|
<td>{{domaine.name}}</td>
|
||||||
<td>TOTAL</td>
|
<td>TOTAL</td>
|
||||||
|
|
||||||
@@ -192,7 +217,7 @@ BUDGET
|
|||||||
|
|
||||||
{% block localjavascript %}
|
{% block localjavascript %}
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
var groupColumn = 1;
|
var groupColumn = 0;
|
||||||
var table = $('#dataTables').DataTable({
|
var table = $('#dataTables').DataTable({
|
||||||
"columnDefs": [
|
"columnDefs": [
|
||||||
{ "visible": false, "targets": groupColumn }
|
{ "visible": false, "targets": groupColumn }
|
||||||
@@ -207,7 +232,7 @@ BUDGET
|
|||||||
api.column(groupColumn, {page:'current'} ).data().each( function ( group, i ) {
|
api.column(groupColumn, {page:'current'} ).data().each( function ( group, i ) {
|
||||||
if ( last !== group ) {
|
if ( last !== group ) {
|
||||||
$(rows).eq( i ).before(
|
$(rows).eq( i ).before(
|
||||||
'<tr class="group"><td colspan="6">'+group+'</td></tr>'
|
'<tr class="group"><td colspan="7">'+group+'</td></tr>'
|
||||||
);
|
);
|
||||||
|
|
||||||
last = group;
|
last = group;
|
||||||
@@ -226,6 +251,13 @@ BUDGET
|
|||||||
table.order( [ groupColumn, 'asc' ] ).draw();
|
table.order( [ groupColumn, 'asc' ] ).draw();
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
$('#exercice').change(function() {
|
||||||
|
id=$(this).val();
|
||||||
|
url="{{ path('app_budget',{id:'xxx'}) }}";
|
||||||
|
url=url.replace("xxx",id);
|
||||||
|
document.location=url;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function myprint() {
|
function myprint() {
|
||||||
|
@@ -227,7 +227,7 @@
|
|||||||
{% set routeignore = ["app_home","app_event","app_customer_submit","app_project_submit","app_offer_submit","app_task_submit","app_service_submit","app_user_submit","app_nature_submit","app_nature_update","app_job_submit","app_breakday_submit","app_breakday_update"] %}
|
{% set routeignore = ["app_home","app_event","app_customer_submit","app_project_submit","app_offer_submit","app_task_submit","app_service_submit","app_user_submit","app_nature_submit","app_nature_update","app_job_submit","app_breakday_submit","app_breakday_update"] %}
|
||||||
{% if app.request.attributes.get('_route') not in routeignore %}
|
{% if app.request.attributes.get('_route') not in routeignore %}
|
||||||
<li>
|
<li>
|
||||||
<a onClick="myprint()" style="cursor:pointer"><i class="fa fa-print fa-fw"></i></a>
|
<a onClick="myprint()" style="cursor:pointer; color:#fff"><i class="fa fa-print fa-fw"></i></a>
|
||||||
</li>
|
</li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user