mise en place des budgets
This commit is contained in:
@@ -22,6 +22,15 @@ class BudgetController extends AbstractController
|
||||
{
|
||||
$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
|
||||
if($id)
|
||||
$n2=$em->getRepository("App:Year")->find($id);
|
||||
@@ -253,7 +262,9 @@ class BudgetController extends AbstractController
|
||||
"domaines" => $tbdomaines,
|
||||
"n1" => $n1,
|
||||
"n2" => $n2,
|
||||
"years" => $years,
|
||||
"fgprint" => true,
|
||||
|
||||
]);
|
||||
|
||||
return new PdfResponse(
|
||||
@@ -267,7 +278,8 @@ class BudgetController extends AbstractController
|
||||
"usesidebar" => true,
|
||||
"domaines" => $tbdomaines,
|
||||
"n1" => $n1,
|
||||
"n2" => $n2,
|
||||
"n2" => $n2,
|
||||
"years" => $years,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -304,7 +316,7 @@ class BudgetController extends AbstractController
|
||||
if(!$data) {
|
||||
$data=new Yeardomaine;
|
||||
$data->setYear($year);
|
||||
$data->setProject($domaine);
|
||||
$data->setDomaine($domaine);
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
}
|
||||
|
@@ -33,17 +33,17 @@ class Yeardomaine
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $nbdaybudget;
|
||||
private $nbdaybudget=0;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $cabudget;
|
||||
private $cabudget=0;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $careal;
|
||||
private $careal=0;
|
||||
|
||||
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,15 +10,40 @@
|
||||
}
|
||||
tr { page-break-inside: avoid; }
|
||||
{%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 %}
|
||||
|
||||
{% block body %}
|
||||
<h1 class="page-header">
|
||||
BUDGET
|
||||
</h1>
|
||||
|
||||
<p><a class="btn btn-success" href={{ path('app_year_submit') }}>Ajouter</a></p>
|
||||
</h1>
|
||||
|
||||
<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-header">
|
||||
<i class="fa fa-table fa-fw"></i> Budget
|
||||
@@ -26,7 +51,7 @@ BUDGET
|
||||
|
||||
<div class="card-body">
|
||||
<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>
|
||||
<tr>
|
||||
<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>
|
||||
</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">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">Budget</th>
|
||||
</tr>
|
||||
@@ -117,7 +142,7 @@ BUDGET
|
||||
<td>Hors Projet</td>
|
||||
|
||||
<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 class="text-center">
|
||||
{{(domaine.nbdayrealn1-nbdayrealn1)}} jours<br>
|
||||
@@ -133,7 +158,7 @@ BUDGET
|
||||
</td>
|
||||
|
||||
<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 class="text-center">
|
||||
{{(domaine.nbdayrealn2-nbdayrealn2)}} jours<br>
|
||||
@@ -150,7 +175,7 @@ BUDGET
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<tr class="total">
|
||||
<td>{{domaine.name}}</td>
|
||||
<td>TOTAL</td>
|
||||
|
||||
@@ -192,7 +217,7 @@ BUDGET
|
||||
|
||||
{% block localjavascript %}
|
||||
$(document).ready(function() {
|
||||
var groupColumn = 1;
|
||||
var groupColumn = 0;
|
||||
var table = $('#dataTables').DataTable({
|
||||
"columnDefs": [
|
||||
{ "visible": false, "targets": groupColumn }
|
||||
@@ -207,7 +232,7 @@ BUDGET
|
||||
api.column(groupColumn, {page:'current'} ).data().each( function ( group, i ) {
|
||||
if ( last !== group ) {
|
||||
$(rows).eq( i ).before(
|
||||
'<tr class="group"><td colspan="6">'+group+'</td></tr>'
|
||||
'<tr class="group"><td colspan="7">'+group+'</td></tr>'
|
||||
);
|
||||
|
||||
last = group;
|
||||
@@ -226,6 +251,13 @@ BUDGET
|
||||
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() {
|
||||
|
@@ -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"] %}
|
||||
{% if app.request.attributes.get('_route') not in routeignore %}
|
||||
<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>
|
||||
{%endif%}
|
||||
|
||||
|
Reference in New Issue
Block a user