From 5037b0945efd15357ee43851b3515c7a979ddb7e Mon Sep 17 00:00:00 2001 From: Matthieu Lamalle Date: Wed, 16 Dec 2020 16:33:57 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20export=20jours=20factur=C3=A9s=20#56?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/schedule-2.0/config/routes.yaml | 4 ++ .../src/Controller/ExportController.php | 53 +++++++++++++++++++ .../Export/export_month_charged_days.csv.twig | 6 +++ .../templates/Export/list.html.twig | 10 ++++ 4 files changed, 73 insertions(+) create mode 100644 src/schedule-2.0/templates/Export/export_month_charged_days.csv.twig diff --git a/src/schedule-2.0/config/routes.yaml b/src/schedule-2.0/config/routes.yaml index 870f7b1..bde9a61 100644 --- a/src/schedule-2.0/config/routes.yaml +++ b/src/schedule-2.0/config/routes.yaml @@ -428,6 +428,10 @@ export_offers: path: /export/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 ====================================================================================================== app_stat_view: diff --git a/src/schedule-2.0/src/Controller/ExportController.php b/src/schedule-2.0/src/Controller/ExportController.php index c5958ab..58d6e54 100644 --- a/src/schedule-2.0/src/Controller/ExportController.php +++ b/src/schedule-2.0/src/Controller/ExportController.php @@ -473,5 +473,58 @@ class ExportController extends AbstractController 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; + } } diff --git a/src/schedule-2.0/templates/Export/export_month_charged_days.csv.twig b/src/schedule-2.0/templates/Export/export_month_charged_days.csv.twig new file mode 100644 index 0000000..9a68e2e --- /dev/null +++ b/src/schedule-2.0/templates/Export/export_month_charged_days.csv.twig @@ -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 %} diff --git a/src/schedule-2.0/templates/Export/list.html.twig b/src/schedule-2.0/templates/Export/list.html.twig index 9d52def..284d40e 100644 --- a/src/schedule-2.0/templates/Export/list.html.twig +++ b/src/schedule-2.0/templates/Export/list.html.twig @@ -43,4 +43,14 @@ EXPORTS DE DONNEES

+
+ +
+

Exporter la liste du nombre de jours facturés et non-facturés par mois

+

Filtres utiles : Nombre de mois

+
+
+

{% endblock %} \ No newline at end of file