ajout export jours facturés #56
This commit is contained in:
@@ -428,6 +428,10 @@ export_offers:
|
|||||||
path: /export/export_offers
|
path: /export/export_offers
|
||||||
defaults: { _controller: App\Controller\ExportController:export_offers }
|
defaults: { _controller: App\Controller\ExportController:export_offers }
|
||||||
|
|
||||||
|
export_month_charged_days:
|
||||||
|
path: /export/export_month_charged_days
|
||||||
|
defaults: { _controller: App\Controller\ExportController:export_month_charged_days }
|
||||||
|
|
||||||
|
|
||||||
#== Export ======================================================================================================
|
#== Export ======================================================================================================
|
||||||
app_stat_view:
|
app_stat_view:
|
||||||
|
@@ -473,5 +473,58 @@ class ExportController extends AbstractController
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function export_month_charged_days(Request $request,$access=null): Response {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$nbmonth=$this->get("session")->get("nbmonth");
|
||||||
|
|
||||||
|
$tbevents=[];
|
||||||
|
// On formate le tableau des event
|
||||||
|
$start=new \Datetime('first day of this month');
|
||||||
|
$start->sub(new \DateInterval('P'.$nbmonth.'M'));
|
||||||
|
$start->setTime(0,0,0);
|
||||||
|
$end = new \Datetime('first day of this month');
|
||||||
|
$end->add(new \DateInterval('P1M'));
|
||||||
|
$end->setTime(23,59,0);
|
||||||
|
|
||||||
|
$events = $em
|
||||||
|
->createQueryBuilder('event')
|
||||||
|
->select('event')
|
||||||
|
->from('App:Event','event')
|
||||||
|
->Where('event.start>=:start AND event.end <:end')
|
||||||
|
->setParameter('start',$start)
|
||||||
|
->setParameter('end',$end)
|
||||||
|
->getQuery()->getResult();
|
||||||
|
|
||||||
|
foreach($events as $event) {
|
||||||
|
if (!isset($tbevents[$event->getStart()->format("m")])) {
|
||||||
|
$tbevents[$event->getStart()->format("m")]["f"]=0;
|
||||||
|
$tbevents[$event->getStart()->format("m")]["nf"]=0;
|
||||||
|
}
|
||||||
|
if ($event->getTask()->getNature()->getName() == "Prestation") {
|
||||||
|
if (!isset($tbevents[$event->getStart()->format("m")])){
|
||||||
|
|
||||||
|
$tbevents[$event->getStart()->format("m")]['f'] = $event->getDuration();
|
||||||
|
}else{
|
||||||
|
$tbevents[$event->getStart()->format("m")]['f'] += $event->getDuration();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($event->getTask()->getNature()->getName() != "Prestation") {
|
||||||
|
if (!isset($tbevents[$event->getStart()->format("m")])){
|
||||||
|
$tbevents[$event->getStart()->format("m")]['nf'] = $event->getDuration();
|
||||||
|
}else{
|
||||||
|
$tbevents[$event->getStart()->format("m")]['nf'] += $event->getDuration();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$csv = $this->renderView('Export/export_month_charged_days.csv.twig', ["events" => $tbevents]);
|
||||||
|
$response = new Response($csv);
|
||||||
|
$response->headers->set('Content-Type', 'text/csv; charset=utf-8');
|
||||||
|
$response->headers->set('Content-Disposition', 'attachment; filename="export_month_charged_days.csv"');
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,6 @@
|
|||||||
|
{% block body %}
|
||||||
|
Mois;Jours_facturés;Jour_non_facturés
|
||||||
|
{% for month, event in events %}
|
||||||
|
{{month}};{{event.f}};{{event.nf}}
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
@@ -43,4 +43,14 @@ EXPORTS DE DONNEES
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p></p>
|
<p></p>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<a class="btn btn-success" href={{ path('export_month_charged_days') }}>Export des jours facturés/non-facturés</a>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<p>Exporter la liste du nombre de jours facturés et non-facturés par mois</p>
|
||||||
|
<p>Filtres utiles : Nombre de mois</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p></p>
|
||||||
{% endblock %}
|
{% endblock %}
|
Reference in New Issue
Block a user