<?php
namespace App\Controller;
use App\Entity\Article;
use App\Entity\ArticleProd;
use App\Entity\Bpu;
use App\Entity\BpuProd;
use App\Entity\BpuValeur;
use App\Entity\BpuValeurProdArticle;
use App\Entity\BpuValueSav;
use App\Entity\Etr;
use App\Entity\EtrMois;
use App\Entity\EtrProd;
use App\Entity\FichierPenalites;
use App\Entity\Infra;
use App\Entity\InterventionProduction;
use App\Entity\InterventionSav;
use App\Entity\MoisEtr;
use App\Entity\MoisIntervention;
use App\Entity\MoisInterventionsProd;
use App\Entity\Penalite;
use App\Entity\PlanningEtr;
use App\Entity\PlanningEtrProd;
use App\Filter\ChunkReadFilter;
use App\Form\EtrProdType;
use App\Form\EtrType;
use App\Repository\ArticleProdRepository;
use App\Repository\ArticleRepository;
use App\Repository\BpuProdRepository;
use App\Repository\BpuRepository;
use App\Repository\BpuValeurProdArticleRepository;
use App\Repository\BpuValeurRepository;
use App\Repository\BpuValueSavRepository;
use App\Repository\EtrMoisRepository;
use App\Repository\EtrProdRepository;
use App\Repository\EtrRepository;
use App\Repository\FichierPenalitesRepository;
use App\Repository\InfraRepository;
use App\Repository\InterventionProductionRepository;
use App\Repository\InterventionSavRepository;
use App\Repository\MoisEtrRepository;
use App\Repository\MoisInterventionRepository;
use App\Repository\MoisInterventionsProdRepository;
use App\Repository\PenaliteRepository;
use App\Repository\PlanningEtrProdRepository;
use App\Repository\PlanningEtrRepository;
use App\Repository\SocieteRepository;
use DateTime;
use DateTimeImmutable;
use Exception;
use PhpOffice\PhpSpreadsheet\IOFactory;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/*
Creer par b.labdaa
-L'importation des donnees sous format Excel(Intervention-SH.COM - Original)
Detecter les techniciens et les articles avec leur prix"
*/
/*
utiliser la bubliotheque phpoffice/phpspreadsheet pour lire et ecrire dans les fichiers Excel
https://packagist.org/packages/phpoffice/phpspreadsheet
*/
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use Symfony\Component\HttpFoundation\JsonResponse;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\StreamedResponse;
class ImportationController extends AbstractController
{
private $moisInterventionRepository;
private $interventionSavRepository;
private $planningEtrRepository;
private $articleRepository;
private $bpuRepository;
private $etrRepository;
private $etrMoisRepository;
private $bpuValueSavRepository;
private $interventionProductionRepository;
private $articleProdRepository;
private $bpuProdRepository;
private $bpuValeurRepository;
private $etrProdRepository;
private $infraRepository;
private $moisEtrRepository;
private $moisInterventionsProdRepository;
private $planningEtrProdRepository;
private $societeRepository;
private $bpuValeurProdArticleRepository;
private $penaliteRepository;
private $fichierPenalitesRepository;
public function __construct(MoisInterventionRepository $moisInterventionRepository,
InterventionSavRepository $interventionSavRepository,
PlanningEtrRepository $planningEtrRepository,
ArticleRepository $articleRepository,
BpuRepository $bpuRepository,
EtrRepository $etrRepository,
EtrMoisRepository $etrMoisRepository,
BpuValueSavRepository $bpuValueSavRepository,
// Prod
InterventionProductionRepository $interventionProductionRepository,
ArticleProdRepository $articleProdRepository,
BpuProdRepository $bpuProdRepository,
BpuValeurRepository $bpuValeurRepository,
EtrProdRepository $etrProdRepository,
InfraRepository $infraRepository,
MoisEtrRepository $moisEtrRepository,
MoisInterventionsProdRepository $moisInterventionsProdRepository,
PlanningEtrProdRepository $planningEtrProdRepository,
SocieteRepository $societeRepository,
BpuValeurProdArticleRepository $bpuValeurProdArticleRepository,
PenaliteRepository $penaliteRepository,
FichierPenalitesRepository $fichierPenalitesRepository
)
{
$this->moisInterventionRepository=$moisInterventionRepository;
$this->interventionSavRepository=$interventionSavRepository;
$this->planningEtrRepository=$planningEtrRepository;
$this->articleRepository=$articleRepository;
$this->bpuRepository=$bpuRepository;
$this->etrRepository=$etrRepository;
$this->etrMoisRepository=$etrMoisRepository;
$this->bpuValueSavRepository=$bpuValueSavRepository;
// Prod
$this->interventionProductionRepository=$interventionProductionRepository;
$this->articleProdRepository=$articleProdRepository;
$this->bpuProdRepository=$bpuProdRepository;
$this->bpuValeurRepository=$bpuValeurRepository;
$this->etrProdRepository=$etrProdRepository;
$this->infraRepository=$infraRepository;
$this->moisEtrRepository=$moisEtrRepository;
$this->moisInterventionsProdRepository=$moisInterventionsProdRepository;
$this->planningEtrProdRepository=$planningEtrProdRepository;
$this->societeRepository=$societeRepository;
$this->bpuValeurProdArticleRepository=$bpuValeurProdArticleRepository;
$this->penaliteRepository=$penaliteRepository;
$this->fichierPenalitesRepository=$fichierPenalitesRepository;
}
#[Route('/app_redirect/{contenu?0}/{file_name?}/{extension_file?}/{debutCount?0}/{idMois?}/{delete?}', name: 'app_redirect',methods:["POST","GET"])]
public function app_redirect(Request $request,$contenu,$file_name,$extension_file,$debutCount,$idMois): Response
{
return $this->render('importation/redirect.html.twig', [
'contenu'=>1,
'file_name'=>$file_name,
'extension_file'=>$extension_file,
'debutCount'=>$debutCount,
'idMois'=>$idMois
]);
}
#[Route('/importation/{contenu?0}/{file_name?}/{extension_file?}/{debutCount?1}/{idMois?}/{delete?}', name: 'app_importation',methods:["POST","GET"])]
public function index(Request $request,$contenu,$file_name,$extension_file,int $debutCount,$idMois,$delete,SessionInterface $session): Response
{
//Verifier la memoire de serveur
//$memory_limit = ini_get('memory_limit');
$longeurTraiter=500;
$countFichier=0;
$avancement=2000;
$listeNouveauxTechniciens=[];
$listeNouveauxTechniciensId=[];
$listeEntreprise=[];
$typeIntervention='';
$inputFileType = '';
// Remplir un tableau avec les colonne oblegatoire existe dans le fichier
$colonnesFichier=[];
$firstBoocle=true;
//try{
if($contenu=="0"){
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if($extension == 'xlsx') {
$reader = new Xlsx();
$inputFileType = 'Xlsx';
} else {
/* Les entree de type csv */
$reader = new Csv();
$inputFileType = 'Csv';
}
}else{
$newFilename=$file_name;
$extension=$extension_file;
if($extension_file == 'xlsx') {
$reader = new Xlsx();
$inputFileType = 'Xlsx';
} else {
$this->addFlash('erreur','Veuillez importer un fichier avec l\'extention xlsx');
return $this->redirect($request->headers->get('referer'));
/* Les entree de type csv */
$reader = new Csv();
$inputFileType = 'Csv';
}
}
if($debutCount==1){
$session->set('listeNouveauxTechniciens',[]);
$session->set('listeNouveauxTechniciensId',[]);
$session->set('listeEntreprise',[]);
$session->set('colonnesFichier',[]);
$session->set('typeIntervention','');
}else{
$listeNouveauxTechniciens=(array)$session->get('listeNouveauxTechniciens');
$listeNouveauxTechniciensId=(array)$session->get('listeNouveauxTechniciensId');
$listeEntreprise=(array)$session->get('listeEntreprise');
$colonnesFichier=(array)$session->get('colonnesFichier');
$session->set('mois',$idMois);
//$typeIntervention=$session->get('typeIntervention');
}
// Definir la date de prestation
$dateInterventionFichie=new DateTime();
$dateInterventionFichie->setDate((int)$request->get('annee'), (int)$request->get('mois'), 1);
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$chunkFilter = new ChunkReadFilter();
$reader->setReadEmptyCells(false);
$reader->setReadFilter($chunkFilter);
for ($startRow = $debutCount+1; $startRow < $avancement+$debutCount+1 ; $startRow += $longeurTraiter) {//65536
$chunkFilter->setRows($startRow,$longeurTraiter);
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet();
$countFichier=$feuilleInterventions->getHighestRow();
//Definir le type de fichier
if($typeIntervention==""){
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
$colonnesFichier[$keyCell]=$cell->getValue();
}
$session->set('colonnesFichier',$colonnesFichier);
}
if ($key==2) {
if (in_array('InterventionID',$colonnesFichier)==true) {
$typeIntervention='sav';
$nb=$this->planningEtrRepository->count(['annee'=>(int)$request->get('annee'),'mois'=>(int)$request->get('mois')]);
if($nb==0){
return $this->render('importation/erreur.html.twig',[
'message'=>'Veuillez configurer premièrement les techniciens..'
]);
}
}elseif (in_array('Jeton / RC',$colonnesFichier)==true) {
$typeIntervention='prod';
$nb=$this->planningEtrProdRepository->count(['annee'=>(int)$request->get('annee'),'mois'=>(int)$request->get('mois')]);
if($nb==0){
return $this->render('importation/erreur.html.twig',[
'message'=>'Veuillez configurer premièrement les techniciens..'
]);
}
}else{
return $this->render('importation/erreur.html.twig',[
'message'=>'Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.'
]);
}
$session->set('typeIntervention',$typeIntervention);
/* foreach ($cellIterator as $keyCell => $cell) {
if($typeIntervention=='sav'){
if ($colonnesFichier[$keyCell]=='date') {
$dateInterventionFichie=$cell->getValue();
break;
}
}elseif($typeIntervention=='prod'){
if ($colonnesFichier[$keyCell]=='Date d\'intervention') {
$dateInterventionFichie=$cell->getValue();
break;
}
}
} */
break;
}
}
}
if($contenu=="0" && $firstBoocle==true){
//Date
$firstBoocle=false;
//$dateIntervention = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($dateInterventionFichie);
//$dateInterventionFichie=null;
//$dateIntervention=$dateInterventionFichie;
//$moisInterventionInt=date_format($dateIntervention, "m");
//$yearInterventionInt=date_format($dateIntervention, "Y");
if ($typeIntervention=='sav') {
$moisIntervention=new MoisIntervention();
$moisIntervention=$this->moisInterventionRepository->findOneBy([
'mois'=>(int)$request->get('mois'),
'annee'=>(int)$request->get('annee')
]);
if ($moisIntervention) {
$session->set('mois',$moisIntervention->getId());
// Si le mois deja exister donc supprimer tout les intervention de ce mois
return $this->render('importation/confirm_delete_mois.html.twig',[
'contenu'=>1,
'file_name'=>$newFilename,
'extension_file'=>$extension,
'debutCount'=>1,
'idMois'=>$moisIntervention
]);
} else {
// Creer un nouveau mois
$moisIntervention=new MoisIntervention();
$dateIntervention=$dateInterventionFichie;
//$dateIntervention->setDate($yearInterventionInt, $moisInterventionInt, 1);
$moisIntervention->setMois((int)$request->get('mois'));
$moisIntervention->setAnnee((int)$request->get('annee'));
$moisIntervention->setDateIntervention($dateIntervention);
$dateIntervention=new DateTime();
$moisIntervention->setCreateAt($dateIntervention);
$moisIntervention->setNomFichier($newFilename);
$moisIntervention->setTypeInterventions($typeIntervention);
$this->moisInterventionRepository->add($moisIntervention, true);
}
$session->set('mois',$moisIntervention->getId());
}elseif ($typeIntervention=='prod') {
$moisIntervention=new MoisInterventionsProd();
$moisIntervention=$this->moisInterventionsProdRepository->findOneBy([
'mois'=>(int)$request->get('mois'),
'annee'=>(int)$request->get('annee')
]);
if ($moisIntervention) {
$session->set('mois',$moisIntervention->getId());
// Si le mois deja exister donc supprimer tout les intervention de ce mois
return $this->render('importation/confirm_delete_mois.html.twig',[
'contenu'=>1,
'file_name'=>$newFilename,
'extension_file'=>$extension,
'debutCount'=>1,
'idMois'=>$moisIntervention
]);
} else {
// Creer un nouveau mois
$moisIntervention=new MoisInterventionsProd();
$dateIntervention=$dateInterventionFichie;//new DateTime();
//$dateIntervention->setDate($yearInterventionInt, $moisInterventionInt, 1);
$moisIntervention->setMois((int)$request->get('mois'));
$moisIntervention->setAnnee((int)$request->get('annee'));
$moisIntervention->setDateIntervention($dateIntervention);
$dateIntervention=new DateTimeImmutable();
$moisIntervention->setCreatedAt($dateIntervention);
$moisIntervention->setNomFichier($newFilename);
$this->moisInterventionsProdRepository->add($moisIntervention, true);
}
$session->set('mois',$moisIntervention->getId());
}
}else{
if ($typeIntervention=='sav' && $firstBoocle==true) {
$moisIntervention=new MoisIntervention();
$moisIntervention=$this->moisInterventionRepository->find($idMois);
if ($delete=="1") {
$file = $this->getParameter('kernel.project_dir') . '/public/fichier_importe/'.$moisIntervention->getNomFichier();
if(is_file($file)) unlink($file);
$moisIntervention->setNomFichier($newFilename);
$this->moisInterventionRepository->add($moisIntervention, true);
$firstBoocle=false;
$this->bpuRepository->removeEnsemble($moisIntervention->getId());
$this->interventionSavRepository->removeEnsemble($moisIntervention->getId());
$this->etrMoisRepository->removeEnsemble($moisIntervention->getId());
}
}elseif ($typeIntervention=='prod' && $firstBoocle==true) {
$moisIntervention=new MoisIntervention();
$moisIntervention=$this->moisInterventionsProdRepository->find($idMois);
if ($delete=="1") {
$file = $this->getParameter('kernel.project_dir') . '/public/fichier_importe/'.$moisIntervention->getNomFichier();
if(is_file($file)) unlink($file);
$moisIntervention->setNomFichier($newFilename);
$this->moisInterventionsProdRepository->add($moisIntervention, true);
$firstBoocle=false;
$this->bpuProdRepository->removeEnsemble($moisIntervention->getId());
$this->interventionProductionRepository->removeEnsemble($moisIntervention->getId());
$this->moisEtrRepository->removeEnsemble($moisIntervention->getId());
}
}
}
if($typeIntervention=='sav'){
if(in_array('InterventionID',$colonnesFichier)==false || in_array('dpt',$colonnesFichier)==false || in_array('NRO',$colonnesFichier)==false || in_array('jeton',$colonnesFichier)==false || in_array('etat',$colonnesFichier)==false || in_array('RDV',$colonnesFichier)==false || in_array('type',$colonnesFichier)==false || in_array('date',$colonnesFichier)==false || in_array('TechIdent',$colonnesFichier)==false || in_array('BoiteIdent',$colonnesFichier)==false || in_array('Entit? Factu',$colonnesFichier)==false || in_array('Article',$colonnesFichier)==false || in_array('Qté',$colonnesFichier)==false || in_array('P.U.',$colonnesFichier)==false || in_array('TOTAL',$colonnesFichier)==false || in_array('Zone',$colonnesFichier)==false){
//Erreur
$file = $this->getParameter('kernel.project_dir') . '/public/fichier_importe/'.$moisIntervention->getNomFichier();
if(is_file($file)) unlink($file);
$firstBoocle=false;
$this->bpuRepository->removeEnsemble($moisIntervention->getId());
$this->interventionSavRepository->removeEnsemble($moisIntervention->getId());
$this->etrMoisRepository->removeEnsemble($moisIntervention->getId());
$this->moisInterventionRepository->remove($moisIntervention,true);
return $this->render('importation/erreur.html.twig',[
'message'=>'Il manque des colonnes, veuillez vérifier le fichier que vous avez importé.'
]);
}
$etrs=$this->etrRepository->findAll();
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if($key>=$startRow){
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
/* Traiter les enregistrements et enregistre dans la base de donnees */
$interventionSav=new InterventionSav();
$interventionSav->setRemoved(false);
$technicien=new PlanningEtr();
$entreprise=new Etr();
$bpu = new Bpu();
$articleLibelle='';
$article=new Article();
$quantiteIntervention=0;
$marge=0;
foreach ($cellIterator as $keyCell=>$cell) {
if ($colonnesFichier[$keyCell]=='InterventionID') {
$interventionSav->setInterventionId($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='NRO') {
$interventionSav->setNro($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='dpt') {
$interventionSav->setDbt($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='jeton') {
$interventionSav->setJeton($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='etat') {
$interventionSav->setEtat($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='RDV') {
$interventionSav->setRdv($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='type') {
$interventionSav->setType1($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='date') {
$dateIntervention = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($cell->getValue());
$interventionSav->setDate($dateIntervention);
} elseif ($colonnesFichier[$keyCell]=='TechIdent') {
//$technicien=$this->planningEtrRepository->findOneBy(['techId'=>$cell->getValue()]);
$technicien=$this->planningEtrRepository->findOneBy(['techId'=>$cell->getValue(),'mois'=>$moisIntervention->getMois(),'annee'=>$moisIntervention->getAnnee()]);
$entreprise=null;
if ($technicien) {
$entreprise= $technicien->getEtr();
if ($entreprise==null && in_array($technicien->getId(), $listeNouveauxTechniciensId)==false) {
array_push($listeNouveauxTechniciens, $technicien);
array_push($listeNouveauxTechniciensId, $technicien->getId());
}
} else {
$technicien = new PlanningEtr();
$technicien->setMois($moisIntervention->getMois());
$technicien->setAnnee($moisIntervention->getAnnee());
$technicien->setTechId($cell->getValue());
if (in_array($technicien->getId(), $listeNouveauxTechniciensId)==false) {
$this->planningEtrRepository->add($technicien, true);
array_push($listeNouveauxTechniciens, $technicien);
array_push($listeNouveauxTechniciensId, $technicien->getId());
}
}
$interventionSav->setPlanningEtr($technicien);
} elseif ($colonnesFichier[$keyCell]=='BoiteIdent') {
$interventionSav->setBoiteIdent($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Entit? Factu') {
$interventionSav->setEntitFactu($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Article') {
$article=$this->articleRepository->findOneBy(['libelle'=>$cell->getValue()]);
$articleLibelle=$cell->getValue();
} elseif ($colonnesFichier[$keyCell]=='Qté') {
$interventionSav->setQte($cell->getValue());
$quantiteIntervention = (is_numeric($cell->getValue())) ? $cell->getValue() : 0;
}
elseif ($colonnesFichier[$keyCell]=='P.U.') {
$interventionSav->setPu($cell->getValue());
$interventionSav->setArticle($article);
if ($article==null) {
$article=new Article();
$article->setLibelle($articleLibelle);
$article->setPuFree($cell->getValue());
$this->articleRepository->add($article,true);
foreach ($etrs as $key => $etr) {
$etrArticle=new BpuValueSav();
$etrArticle->setPuEtr($cell->getValue()-($etr->getReduction()*$cell->getValue()/100));
$etrArticle->setEtr($etr);
$etrArticle->setMarge($etr->getReduction());
$etrArticle->setArticle($article);
$this->bpuValueSavRepository->add($etrArticle,true);
}
}
if ($entreprise) {
$marge=$entreprise->getReduction();
$bpu->setArticle($article);
$bpu->setInterventionSav($interventionSav);
$bpu->setMoisIntervention($moisIntervention->getId());
$bpu->setEtr($entreprise);
$bpu->setArticleEtr($entreprise->getRaisonSociale()." ".$articleLibelle);
$bpuValueSav=$this->bpuValueSavRepository->findOneBy([
'etr'=>$entreprise,
'article'=>$article
]);
if($bpuValueSav==null){
$bpuValueSav=new BpuValueSav();
$bpuValueSav->setPuEtr($cell->getValue()-($entreprise->getReduction()*$cell->getValue()/100));
$bpuValueSav->setEtr($entreprise);
$bpuValueSav->setMarge($entreprise->getReduction());
$bpuValueSav->setArticle($article);
$this->bpuValueSavRepository->add($bpuValueSav,true);
}
$bpu->setPu($bpuValueSav->getPuEtr());
$bpu->setMontant($bpuValueSav->getPuEtr()*$quantiteIntervention);
$this->bpuRepository->add($bpu);
if (in_array($entreprise->getId(), $listeEntreprise)==false) {
$etrMois=new EtrMois();
$etrMois->setMoisIntervention($moisIntervention);
$etrMois->setEtr($entreprise);
$etrMois->setMarge($marge);
$this->etrMoisRepository->add($etrMois,true);
array_push($listeEntreprise, $entreprise->getId());
}
}
} elseif ($colonnesFichier[$keyCell]=='TOTAL') {
$interventionSav->setTotal($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Zone') {
$interventionSav->setZone($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='') {
$interventionSav->setType2($cell->getValue());
}
}
$interventionSav->setMoisIntervention($moisIntervention);
$this->interventionSavRepository->add($interventionSav);
if ($key==$countFichier) {
$this->interventionSavRepository->add($interventionSav, true);
}
}
}
$moisIntervention->setNomFichier($newFilename);
$this->moisInterventionRepository->add($moisIntervention, true);
}
elseif($typeIntervention=='prod'){
if(in_array('Jeton / RC',$colonnesFichier)==false || in_array('Code du département abonné',$colonnesFichier)==false || in_array('Nom du département abonné',$colonnesFichier)==false || in_array('Code de la commune abonné',$colonnesFichier)==false ||
in_array('Nom de la commune abonné',$colonnesFichier)==false || in_array('Zone',$colonnesFichier)==false || in_array('Technologie',$colonnesFichier)==false || in_array('Nom du NRO',$colonnesFichier)==false || in_array('Opérateur d\'immeuble',$colonnesFichier)==false || in_array('Type de PBO',$colonnesFichier)==false || in_array('Type de PTO',$colonnesFichier)==false ||
in_array('Identifiant de l\'intervention',$colonnesFichier)==false || in_array('Type d\'intervention',$colonnesFichier)==false || in_array('Date d\'intervention',$colonnesFichier)==false || in_array('Nom du prestataire',$colonnesFichier)==false || in_array('Login du technicien',$colonnesFichier)==false || in_array('Identité du technicien',$colonnesFichier)==false ||
in_array('Code du débriefing',$colonnesFichier)==false || in_array('Libellé du débriefing',$colonnesFichier)==false || in_array('Référence de l\'article',$colonnesFichier)==false || in_array('Prix unitaire HT',$colonnesFichier)==false || in_array('Quantité',$colonnesFichier)==false || in_array('Montant HT',$colonnesFichier)==false || in_array('Commentaires',$colonnesFichier)==false){
//Erreur
$file = $this->getParameter('kernel.project_dir') . '/public/fichier_importe/'.$moisIntervention->getNomFichier();
if(is_file($file)) unlink($file);
$firstBoocle=false;
$this->bpuProdRepository->removeEnsemble($moisIntervention->getId());
$this->interventionProductionRepository->removeEnsemble($moisIntervention->getId());
$this->moisEtrRepository->removeEnsemble($moisIntervention->getId());
$this->moisInterventionsProdRepository->remove($moisIntervention,true);
return $this->render('importation/erreur.html.twig',[
'message'=>'Il manque des colonnes, veuillez vérifier le fichier que vous avez importé.'
]);
}
$etrs=$this->etrProdRepository->findAll();
$btelecom=$this->etrProdRepository->findOneBy(['raisonSociale'=>'BTELECOM']);
$arrInfr=[];
foreach ($btelecom->getBpuValeurs() as $key => $bpuValue) {
$arrInfr[$bpuValue->getInfra()->getLibelle()]=$bpuValue->getPrix();
}
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if($key>=$startRow){
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$interventionProd =new InterventionProduction();
// Traiter les enregistrements et enregistre dans la base de donnees
$interventionProd->setMoisInterventionsProd($moisIntervention);
$interventionProd->setRemoved(false);
$technicien=new PlanningEtrProd();
$entreprise=new EtrProd();
$bpu = new BpuProd();
$quantiteIntervention=0;
$marge=0;
$pvType='';
$loginTechnicien=null;
$article=new ArticleProd();
$newArticle=false;
$libelleArt="";
$infra=new Infra();
$persiste=false;
$idTechnicien='';
foreach ($cellIterator as $keyCell=>$cell) {
if ($colonnesFichier[$keyCell]=='Jeton / RC') {
$interventionProd->setJetonRc($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Code du département abonné') {
$interventionProd->setCodeDuDepartementAbonne($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Nom du département abonné') {
$interventionProd->setNomDuDepartementAbonne($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Code de la commune abonné') {
$interventionProd->setCodeDeLaCommuneAbonne($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Nom de la commune abonné') {
$interventionProd->setNomDeLaCommuneAbonne($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Zone') {
$pvType= $cell->getValue()=='ZTD' ?'FREE INFRA-ZTD':'FREE SAS-ZMD-RIP';
$interventionProd->setZone($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Technologie') {
$interventionProd->setTechnologie($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Nom du NRO') {
$interventionProd->setNomDuNro($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Opérateur d\'immeuble') {
$interventionProd->setOperateurImmeuble($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Type de PBO') {
$interventionProd->setTypeDePbo($cell->getValue());
//infrastructure
if($cell->getValue()=='Poteau'){
$infra=$this->infraRepository->findOneBy(['libelle'=>'Hauteur']);
}else{
$infra=$this->infraRepository->findOneBy(['libelle'=>$cell->getValue()]);
}
if ($infra==null) {
if($cell->getValue()!=null){
$infra=new Infra();
$infra->setLibelle($cell->getValue());
$this->infraRepository->add($infra,true);
}//brahim 2
}
} elseif ($colonnesFichier[$keyCell]=='Type de PTO') {
$interventionProd->setTypeDePto($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Identifiant de l\'intervention') {
$interventionProd->setInteventionId($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Type d\'intervention') {
$interventionProd->setTypeIntervention($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Date d\'intervention') {
$dateIntervention = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($cell->getValue());
$interventionProd->setDateIntervention($dateIntervention);
if((int)date_format($dateIntervention,'m')==$moisIntervention->getMois() && (int)date_format($dateIntervention,'Y')==$moisIntervention->getAnnee()){
$persiste=true;
}
} elseif ($colonnesFichier[$keyCell]=='Nom du prestataire') {
$interventionProd->setNomDuPrestataire($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Login du technicien') {
$loginTechnicien=$cell->getValue();
} elseif ($colonnesFichier[$keyCell]=='Identité du technicien') {
$idTechnicien=$cell->getValue();
} elseif ($colonnesFichier[$keyCell]=='Code du débriefing') {
$interventionProd->setCodeDuDebriefing($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Libellé du débriefing') {
$interventionProd->setLibelleDuDebriefing($cell->getValue());
} elseif ($colonnesFichier[$keyCell]=='Référence de l\'article') {
$interventionProd->setReferenceDeArticle($cell->getValue());
$libelleArt=$cell->getValue();
} elseif ($colonnesFichier[$keyCell]=='Prix unitaire HT') {
if($cell->getValue() < 0){
$persiste=true;
}
/* PU */
if ($persiste) {
$technicien=$this->planningEtrProdRepository->findOneBy(['loginTechnicien'=>$loginTechnicien,'mois'=>$moisIntervention->getMois(),'annee'=>$moisIntervention->getAnnee()]);
$entreprise=null;
if ($technicien) {
$entreprise= $technicien->getEtrProd();
if ($entreprise==null and in_array($technicien->getId(), $listeNouveauxTechniciensId)==false) {
array_push($listeNouveauxTechniciens, $technicien);
array_push($listeNouveauxTechniciensId, $technicien->getId());
}
} else {
$technicien = new PlanningEtrProd();
$technicien->setMois($moisIntervention->getMois());
$technicien->setAnnee($moisIntervention->getAnnee());
$technicien->setTechId($idTechnicien);
$technicien->setLoginTechnicien($loginTechnicien);
if (in_array($technicien->getId(), $listeNouveauxTechniciensId)==false) {
$this->planningEtrProdRepository->add($technicien, true);
array_push($listeNouveauxTechniciens, $technicien);
array_push($listeNouveauxTechniciensId, $technicien->getId());
}
}
$interventionProd->setPlanningEtrProd($technicien);
$interventionProd->setPu($cell->getValue());
if($cell->getValue()>0){
$article=$this->articleProdRepository->findOneBy(['libelle'=>$libelleArt,'infra'=>$infra]);
}else{
$article=$this->articleProdRepository->findOneBy(['libelle'=>$libelleArt]);
}
if ($article==null) {
$article=new ArticleProd();
$article->setLibelle($libelleArt);
$article->setPuFree($cell->getValue());
$article->setInfra($infra);
if ($cell->getValue() >= 0) {
$article->settype('article');
} else {
$article->settype('penalite');
}
$newArticle=true;
$this->articleProdRepository->add($article, true);
}
$interventionProd->setArticleProd($article);
$bpu->setArticleProd($article);
$bpu->setPvType($pvType);
$bpu->setInterventionProduction($interventionProd);
$bpu->setMoisIntervention($moisIntervention);
if ($entreprise) {
$bpu->setEtrProd($entreprise);
$bpu->setArticleEtr($entreprise->getRaisonSociale()." ".$cell->getValue());
} else {
$bpu->setArticleEtr($cell->getValue());
}
}elseif($cell->getValue()!=null){
//dump($key,$cell->getValue(),$colonnesFichier,$colonnesFichier[$keyCell],$keyCell,$interventionProd);
//dd();
//Supprimer le mois
$file = $this->getParameter('kernel.project_dir') . '/public/fichier_importe/'.$moisIntervention->getNomFichier();
if(is_file($file)) unlink($file);
$this->bpuProdRepository->removeEnsemble($moisIntervention->getId());
$this->interventionProductionRepository->removeEnsemble($moisIntervention->getId());
$this->moisEtrRepository->removeEnsemble($moisIntervention->getId());
//$this->moisInterventionsProdRepository->remove($moisIntervention,true);
$this->moisInterventionsProdRepository->remove1($moisIntervention);
$this->addFlash('erreur','Une ou plusieurs interventions n\'appartiennent pas au mois en question. En effet,
l\'importation a été interrompue. Veuillez vérifier votre fichier avant de le réimporter.');
return $this->redirectToRoute('app_repertoire');
}
} elseif ($colonnesFichier[$keyCell]=='Quantité') {
$interventionProd->setQte($cell->getValue());
$quantiteIntervention=$cell->getValue();
$interventionProd->setMontant($interventionProd->getPu()*$quantiteIntervention);
if ($entreprise && $persiste) {
if($newArticle){
foreach ($etrs as $key => $etr) {
$bpuValue = $this->bpuValeurRepository->findOneBy([
'etrProd'=>$etr,
'infra'=>$infra
]);
$infraBtelecom= array_key_exists($infra->getLibelle(),$arrInfr)?$arrInfr[$infra->getLibelle()]:0;
$cof= ($infraBtelecom != 0 && $bpuValue) ? 1-($bpuValue->getPrix()/$infraBtelecom) : 0;
if($article->gettype()=='penalite'){
$prixFinal=$interventionProd->getPu();
$cof=0;
}else{
$prixFinal=$interventionProd->getPu()-$interventionProd->getPu()*$cof;
}
$etrArticle=new BpuValeurProdArticle();
$etrArticle->setEtrProd($etr);
$etrArticle->setPrix($prixFinal);
$etrArticle->setMarge($cof);
$etrArticle->setArticle($article);
$this->bpuValeurProdArticleRepository->add($etrArticle, true);
}
}
$bpuValeurProd=$this->bpuValeurProdArticleRepository->findOneBy([
'etrProd'=>$entreprise,
'article'=>$article
]);
if($bpuValeurProd==null){
$bpuValeurProd = new BpuValeurProdArticle();
$bpuValeurProd->setMarge($entreprise->getReduction());
// Applique le coffecient
$bpuValue = $this->bpuValeurRepository->findOneBy([
'etrProd'=>$entreprise,
'infra'=>$infra
]);
$infraBtelecom= array_key_exists($infra->getLibelle(),$arrInfr)?$arrInfr[$infra->getLibelle()]:0;
$cof= ($infraBtelecom != 0 and $bpuValue!=null ) ? 1-($bpuValue->getPrix()/$infraBtelecom) : 0;
if($cof==0 || $interventionProd->getPu() < 0){
$prixFinal=$article->getPuFree();
}else{
$prixFinal=$article->getPuFree()-$article->getPuFree()*$cof;
}
$bpuValeurProd->setPrix($prixFinal);
$bpuValeurProd->setEtrProd($entreprise);
$bpuValeurProd->setArticle($article);
$this->bpuValeurProdArticleRepository->add($bpuValeurProd);
}
if($interventionProd->getPu() < 0){
$bpu->setPu($article->getPuFree());
$bpu->setMontant($article->getPuFree()*$quantiteIntervention);
}else{
if($bpuValeurProd->getPrix()==0){
$bpu->setPu($article->getPuFree());
$bpu->setMontant($article->getPuFree()*$quantiteIntervention);
}else{
$bpu->setPu($bpuValeurProd->getPrix());
$bpu->setMontant($bpuValeurProd->getPrix()*$quantiteIntervention);
}
}
$bpu->setEcart($interventionProd->getMontant() - $bpu->getMontant());
$bpu->setInfra($infra);
$marge=(is_numeric($entreprise->getReduction())) ? $entreprise->getReduction() : 0;
if ($persiste) {
$this->bpuProdRepository->add($bpu);
}
if (in_array($entreprise->getId(), $listeEntreprise)==false) {
$etrMois=new MoisEtr();
$etrMois->setMoisInterventionsProd($moisIntervention);
$etrMois->setEtrProd($entreprise);
$etrMois->setMarge($marge);
$this->moisEtrRepository->add($etrMois,true);//dd($etrMois);
array_push($listeEntreprise, $entreprise->getId());
}
}
} elseif ($colonnesFichier[$keyCell]=='Montant HT') {
if ($cell->getValue()!=null) {
$interventionProd->setMontant($cell->getValue());
}else{
$interventionProd->setMontant($interventionProd->getPu()*$quantiteIntervention);
}
} elseif ($colonnesFichier[$keyCell]=='Commentaires') {
$interventionProd->setCommentaire($cell->getValue());
}
}
if($persiste){
$this->interventionProductionRepository->add($interventionProd);
}
if ($key==$countFichier) {
$this->interventionProductionRepository->flush2();
}
}
}
$moisIntervention->setNomFichier($newFilename);
$this->moisInterventionsProdRepository->add($moisIntervention, true);
}else{
if($session->get('typeIntervention')=='sav'){
$etr = new Etr();
$form = $this->createForm(EtrType::class, $etr);
if (count($listeNouveauxTechniciens)>0) {
return $this->render('importation/effectuer_technicien.html.twig', [
'listeNouveauxTechniciens' => $listeNouveauxTechniciens,
'entreprises'=>$this->etrRepository->findBy([],['raisonSociale'=>'ASC']),
'idMois'=>$idMois,
'form' => $form->createView()
]);
}else{
return $this->redirectToRoute('app_repertoire');
}
}
if($session->get('typeIntervention')=='prod'){
$etr = new EtrProd();
$form = $this->createForm(EtrProdType::class, $etr);
if (count($listeNouveauxTechniciens)>0) {
return $this->render('importation/effectuer_technicien_prod.html.twig', [
'listeNouveauxTechniciens' => $listeNouveauxTechniciens,
'entreprises'=>$this->etrProdRepository->findBy([],['raisonSociale'=>'ASC']),
'idMois'=>$idMois,
'form' => $form->createView()
]);
}else{
return $this->redirectToRoute('app_repertoire',['type'=>'prod']);
}
}
}
$spreadsheet->__destruct();
$feuilleInterventions = null;
$spreadsheet = null;
gc_collect_cycles();
//dump("<br>{$startRow}-row-afterClear:" . memory_get_usage()."<br>");
}
$session->set('listeNouveauxTechniciens',$listeNouveauxTechniciens);
$session->set('listeNouveauxTechniciensId',$listeNouveauxTechniciensId);
$session->set('listeEntreprise',$listeEntreprise);
//}catch(Exception $ex){
/* Supprimer le mois */
// throw new Exception("Error Processing Request ".$ex->getMessage(), 1);
//}
return $this->redirectToRoute('app_redirect',[
'contenu'=>1,
'file_name'=>$newFilename,
'extension_file'=>$extension,
'debutCount'=>$debutCount+$avancement,
'idMois'=>$moisIntervention->getId()
]);
}
#[Route('/importation_complete/{mois<\d+>}',name:'app_importation_complete',methods:["POST"])]
public function completeImportation(MoisIntervention $mois,Request $request): Response
{
$listTechniciens=[];
$listTechniciens=$request->get('techniciens');
$listEntreprises=$request->get('entreprises');
$listeEntreprise=[];
if($listTechniciens!=null)
foreach ($listTechniciens as $key => $value) {
$entreprise=$this->etrRepository->find((int)$listEntreprises[$key]);
$technicien=$this->planningEtrRepository->find((int)$value);
$technicien->setEtr($entreprise);
$this->planningEtrRepository->add($technicien);
// Creer des bpu de les interventions qui n'ont pas un Entreprise
$interventionsSav= $technicien->getInterventionSav();
foreach ($interventionsSav as $key => $intervention) {
if ($entreprise) {
$bpu = new Bpu();
$bpu->setEtr($entreprise);
$bpu->setArticle($intervention->getArticle());
$bpu->setInterventionSav($intervention);
$bpu->setMoisIntervention($mois->getId());
$bpu->setArticleEtr($entreprise->getRaisonSociale()." ".$intervention->getArticle()->getLibelle());
$bpuValueSav=$this->bpuValueSavRepository->findOneBy([
'etr'=>$entreprise,
'article'=>$intervention->getArticle()
]);
if($bpuValueSav==null){
$bpuValueSav=new BpuValueSav();
$bpuValueSav->setPuEtr($intervention->getPu()-($entreprise->getReduction()*$intervention->getPu()/100));
$bpuValueSav->setEtr($entreprise);
$bpuValueSav->setMarge($entreprise->getReduction());
$bpuValueSav->setArticle($intervention->getArticle());
$this->bpuValueSavRepository->add($bpuValueSav,true);
}
$bpu->setPu($bpuValueSav->getPuEtr());
$bpu->setMontant($bpuValueSav->getPuEtr()*$intervention->getQte());
$this->bpuRepository->add($bpu);
if(in_array($entreprise,$listeEntreprise)==false){
$etrMois=$this->etrMoisRepository->findOneBy(['etr'=>$entreprise,'moisIntervention'=>$mois]);
if($etrMois==null){
$marge=(is_numeric($entreprise->getReduction())) ? $entreprise->getReduction() : 0;
$etrMois=new EtrMois();
$etrMois->setMoisIntervention($mois);
$etrMois->setEtr($entreprise);
$etrMois->setMarge($marge);
$this->etrMoisRepository->add($etrMois,true);
}
array_push($listeEntreprise,$entreprise);
}
}
}
}
$mois->setMessageStatut('Toutes les techniciens que vous avez importées est déjà effectuée à une entreprise.');
$this->interventionSavRepository->flush();
return $this->redirectToRoute('app_repertoire');
}
#[Route('/importation_complete/prod/{mois<\d+>}',name:'app_importation_complete_prod',methods:["POST"])]
public function completeImportationProd(MoisInterventionsProd $mois,Request $request): Response
{
$listTechniciens=[];
$listTechniciens=$request->get('techniciens');
$listEntreprises=$request->get('entreprises');
$listeEntreprise=[];
if($listTechniciens!=null){
$btelecom=$this->etrProdRepository->findOneBy(['raisonSociale'=>'BTELECOM']);
$arrInfr=[];
foreach ($btelecom->getBpuValeurs() as $key => $bpuValue) {
$arrInfr[$bpuValue->getInfra()->getLibelle()]=$bpuValue->getPrix();
}
foreach ($listTechniciens as $key => $value) {
$entreprise=$this->etrProdRepository->find((int)$listEntreprises[$key]);
$technicien=$this->planningEtrProdRepository->find((int)$value);
$technicien->setEtrProd($entreprise);
$this->planningEtrProdRepository->add($technicien);
/* Creer des bpu de les interventions qui n'ont pas un Entreprise */
$interventionsSav= $technicien->getInterventionProduction();
foreach ($interventionsSav as $key => $intervention) {
$bpu=$this->bpuProdRepository->findOneBy(['interventionProduction'=>$intervention->getId()]);
if($bpu==null){
$bpu = new BpuProd();
}
$bpu->setArticleProd($intervention->getArticleProd());
$bpu->setInterventionProduction($intervention);
$bpu->setInfra($intervention->getArticleProd()->getInfra());
$bpu->setMoisIntervention($mois);
$bpu->setArticleEtr($entreprise->getRaisonSociale()." ".$intervention->getArticleProd()->getLibelle());
if ($entreprise) {
$marge=(is_numeric($entreprise->getReduction())) ? $entreprise->getReduction() : 0;
if(in_array($entreprise,$listeEntreprise)==false){
$moisEtr=$this->moisEtrRepository->findOneBy(['etrProd'=>$entreprise,'moisInterventionsProd'=>$mois]);
if($moisEtr==null){
$moisEtr=new MoisEtr();
$moisEtr->setMoisInterventionsProd($mois);
$moisEtr->setEtrProd($entreprise);
$moisEtr->setMarge($marge);
$this->moisEtrRepository->add($moisEtr);
}
array_push($listeEntreprise,$entreprise);
}
$bpuValeurProd=$this->bpuValeurProdArticleRepository->findOneBy([
'etrProd'=>$entreprise,
'article'=>$intervention->getArticleProd()
]);
if($bpuValeurProd==null){
$bpuValeurProd = new BpuValeurProdArticle();
// Applique le coffecient
$bpuValue = $this->bpuValeurRepository->findOneBy([
'etrProd'=>$entreprise,
'infra'=>$intervention->getArticleProd()->getInfra()
]);
$infraBtelecom= array_key_exists($intervention->getArticleProd()->getInfra()->getLibelle(),$arrInfr)?$arrInfr[$intervention->getArticleProd()->getInfra()->getLibelle()]:0;
$cof= ($infraBtelecom != 0 && $bpuValue ) ? 1-($bpuValue->getPrix()/$infraBtelecom) : 0;
if($cof==0){
//Applique le marge de societe
$prixFinal=$intervention->getPu()-($entreprise->getReduction()*$intervention->getPu()/100);
}else{
$prixFinal=$intervention->getPu()-$intervention->getPu()*$cof;
}
$bpuValeurProd->setPrix($prixFinal);
$bpuValeurProd->setEtrProd($entreprise);
$bpuValeurProd->setArticle($intervention->getArticleProd());
$this->bpuValeurProdArticleRepository->add($bpuValeurProd);
}
$bpu->setPu($bpuValeurProd->getPrix());
$bpu->setEtrProd($entreprise);
$bpu->setMontant($bpuValeurProd->getPrix()*$intervention->getQte());
$bpu->setEcart($intervention->getMontant() - $bpu->getMontant());
$pvType= $intervention->getZone() =='ZTD' ?'FREE INFRA-ZTD':'FREE SAS-ZMD-RIP';
$bpu->setPvType($pvType);
$this->bpuProdRepository->add($bpu);
}
}
}
}
$this->interventionSavRepository->flush();
return $this->redirectToRoute('app_repertoire',['type'=>'prod']);
}
#[Route('/add_entr_json', name: 'add_entr_json', methods: ['GET', 'POST'])]
public function newEnt(Request $request): Response
{
$etr = new Etr();
$data = $request->getContent();
$data = json_decode($data, true);
$etr->setRaisonSociale($data['raisonSociale']);
$etr->setVoie($data['vois']);
$etr->setAdresse($data['adresse']);
$etr->setSiret($data['siret']);
$etr->setPrenom($data['prenom']);
$etr->setNom($data['nom']);
$etr->setEmail($data['email']);
$etr->setEntrepriseFact($data['entrepriseFact']);
$etr->setTva((float)$data['tva']);
$etr->setContact($data['contact']);
$etr->setReduction((float)$data['reduction']);
$this->etrRepository->add($etr, true);
$articles=$this->articleRepository->findAll();
foreach ($articles as $key => $article) {
$bpuValueSav=new BpuValueSav();
$bpuValueSav->setPuEtr($article->getPuFree()-($etr->getReduction()*$article->getPuFree()/100));
$bpuValueSav->setEtr($etr);
$bpuValueSav->setMarge($etr->getReduction());
$bpuValueSav->setArticle($article);
$this->bpuValueSavRepository->add($bpuValueSav,true);
}
return new JsonResponse($etr->getId());
}
#[Route('/add_entr_json_prod', name: 'add_entr_json_prod', methods: ['GET', 'POST'])]
public function newEntProd(Request $request): Response
{
$etr = new EtrProd();
$data = $request->getContent();
$data = json_decode($data, true);
$etr->setRaisonSociale($data['raisonSociale']);
$etr->setVoie($data['vois']);
$etr->setAdresse($data['adresse']);
$etr->setSiret($data['siret']);
$etr->setPrenom($data['prenom']);
$etr->setNom($data['nom']);
$etr->setEmail($data['email']);
$etr->setEntrepriseFact($data['entrepriseFact']);
$etr->setTva((float)$data['tva']);
$etr->setContrat($data['contact']);
$etr->setReduction((float)$data['reduction']);
if($data['societe']){
$etr->setSociete($this->societeRepository->find($data['societe']));
}
$this->etrProdRepository->add($etr, true);
$infras = $this->infraRepository->findAll();
foreach ($infras as $infra) {
$bpuValeur = new BpuValeur();
$bpuValeur->setEtrProd($etr);
$bpuValeur->setInfra($infra);
$bpuValeur->setPrix(0.0);
$this->bpuValeurRepository->add($bpuValeur, true);
}
return new JsonResponse($etr->getId());
}
#[Route('/bpu/mois/{mois}', name: 'app_bpu_list',methods:["GET","POST"])]
public function Bpu(MoisIntervention $mois, Request $request): Response
{
return $this->render('importation/bpu.html.twig',
['moisIntervention'=>$mois]
);
}
#[Route('/liste-entreprise/{sans_ssh?}', name: 'liste-entreprise',methods:["GET","POST"])]
public function ListeEntreprise($sans_ssh)
{
return $this->render('importation/liste_entreprises.html.twig',[
'entreprises'=>$this->etrRepository->findBy([],['raisonSociale'=>'ASC']),
'sans_ssh'=>$sans_ssh
]);
}
#[Route('/liste-entreprise-prod/{sans_btelecom?}', name: 'liste-entreprise-prod',methods:["GET","POST"])]
public function ListeEntrepriseProd($sans_btelecom)
{
return $this->render('importation/liste_entreprises.html.twig',[
'entreprises'=>$this->etrProdRepository->findBy([],['raisonSociale'=>'ASC']),
'sans_btelecom'=>$sans_btelecom
]);
}
#[Route('/supprimer/sav/{mois}/{entreprise?0}/{technicien?0}' ,name:'supprimer_sav',methods:['POST'])]
public function SupprimerSav(Request $request,MoisIntervention $mois,$entreprise,$technicien)
{
/* Annuler la supprission de tout */
if ($technicien!="0") {
$delete=$this->interventionSavRepository->removeToFalseTechnicien($mois->getId(),(int)$technicien);
}elseif ($entreprise !="0") {
$etr= $this->etrRepository->find((int)$entreprise);
foreach ($etr->getPlanningEtrs() as $tech) {
$this->interventionSavRepository->removeToFalseTechnicien($mois->getId(),$tech);
}
//$this->interventionSavRepository->removeToFalseEntreprise($mois->getId(),(int)$entreprise);
}
if ($request->get('idsSav')) {
foreach ($request->get('idsSav') as $savId) {
$SavObj=$this->interventionSavRepository->find($savId);
$SavObj->setRemoved(true);
$this->interventionSavRepository->add($SavObj,true);
}
//$this->interventionSavRepository->add($SavObj,true);
}
return $this->redirect($request->headers->get('referer'));
}
#[Route('/supprimer/prod/{mois}/{entreprise?0}/{technicien?0}' ,name:'supprimer_prod',methods:['POST'])]
public function SupprimerProd(Request $request,MoisInterventionsProd $mois,$entreprise,$technicien)
{
/* Annuler la supprission de tout */
if ($technicien!="0") {
$delete=$this->interventionProductionRepository->removeToFalseTechnicien($mois->getId(),(int)$technicien);
}elseif ($entreprise !="0") {
$etr= $this->etrProdRepository->find((int)$entreprise);
foreach ($etr->getPlanningEtrProd() as $tech) {
$this->interventionSavRepository->removeToFalseTechnicien($mois->getId(),$tech);
}
}
if ($request->get('idsProd')) {
foreach ($request->get('idsProd') as $savId) {
$SavObj=$this->interventionProductionRepository->find($savId);
$SavObj->setRemoved(true);
$this->interventionProductionRepository->add($SavObj,true);
}
}
return $this->redirect($request->headers->get('referer'));
}
//app_importation_penalites
//app_effectation_penalites
#[Route('/app_effectation_penalites',name:'app_effectation_penalites',methods:["POST"])]
public function app_effectation_penalites(Request $request): Response
{
$listTechniciens=[];
$listTechniciens=$request->get('techniciens');
$listEntreprises=$request->get('entreprises');
if($listTechniciens!=null){
foreach ($listTechniciens as $key => $value) {
$entreprise=$this->etrProdRepository->find((int)$listEntreprises[$key]);
$technicien=$this->planningEtrProdRepository->find((int)$value);
//dd($technicien);
$technicien->setEtrProd($entreprise);
$this->planningEtrProdRepository->add($technicien,true);
foreach($technicien->getPenalites() as $penalite){
$penalite->setEtrProd($technicien->getEtrProd());
$this->penaliteRepository->add($penalite,true);
}
}
}
return $this->redirectToRoute('app_repertoire',['type'=>'prod']);
}
#[Route('/importerPenalites', name: 'app_importation_penalites')]
public function ImporterPenalites(Request $request): Response
{
/* Importer le fichier */
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
$moisParam=(int)$request->get('mois');
$anneeParam=(int)$request->get('annee');
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if('xlsx' == $extension) {
$reader = new Xlsx();
} else {
/* Les entree de type csv */
$reader = new Csv();
}
/* lire depuis le fichier */
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet();
$ColonnesOblegatoirSav=['STT','TECHNICIEN','RC','ANOMALIE CONSTATEE','DATE RDV','MOIS','PENALITE','NOM'];
/* Remplir un tableau avec les colonne oblegatoire existe dans le fichier */
$colonnesFichier=[];
/* Remplir le les colonnes et les information de mois */
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
//if (in_array($cell->getValue(), $ColonnesOblegatoirSav)) {
$colonnesFichier[$keyCell]=$cell->getValue();
//}
}
}
}
//return new Response($colonnesFichier);
//dd($colonnesFichier);
$colonnesFichier['H']='';
$colonnesFichier['I']='';
$fichierPenalite=new FichierPenalites();
$listeTechniciens=[];
$mois=$this->moisInterventionsProdRepository->findOneBy(['mois'=>$moisParam,'annee'=>$anneeParam]);
if ($mois) {
//
if($mois->getFichierPenalites()){
$fichierPenalite=$mois->getFichierPenalites();
//Supprimer toutes les penalites
$this->penaliteRepository->removeEnsemble($fichierPenalite);
}else{
$fichierPenalite=new FichierPenalites();
$fichierPenalite->setMoisInterventionsProd($mois);
$fichierPenalite->setNomFichier($newFilename);
$this->fichierPenalitesRepository->add($fichierPenalite,true);
}
}else{
$this->addFlash('erreur','Veuillez d\'abord importer le fichier des interventions du mois en question.');
goto FINIR;
}
try{
if(in_array('STT',$colonnesFichier)){
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if ($key>1) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$penalite=new Penalite();
$etr=null;
foreach ($cellIterator as $keyCell=> $cell) {
if ($colonnesFichier[$keyCell]=='STT') {
}elseif ($colonnesFichier[$keyCell]=='TECHNICIEN') {
$technicien=$this->planningEtrProdRepository->findOneBy(['loginTechnicien'=>$cell->getValue(),'mois'=>$moisParam,'annee'=>$anneeParam]);
if ($technicien==null) {
$technicien=new PlanningEtrProd();
$technicien->setMois($moisParam);
$technicien->setAnnee($anneeParam);
$technicien->setLoginTechnicien($cell->getValue());
$this->planningEtrProdRepository->add($technicien,true);
array_push($listeTechniciens,$technicien);
}else{
$etr=$technicien->getEtrProd();
}
$penalite->setEtrProd($technicien->getEtrProd());
$penalite->setPlanningEtrProd($technicien);
}
elseif($colonnesFichier[$keyCell]=='RC'){
$penalite->setRc($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='ANOMALIE CONSTATEE'){
$penalite->setAnomalie($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='NOM'){
$penalite->setNomPenalite($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='DATE RDV'){
if(is_string($cell->getValue())){
$dateIntervention = new \DateTime($cell->getValue());
}else{
$dateIntervention = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($cell->getValue());
}
$penalite->setDateRdv($dateIntervention);
$penalite->setMois(date_format($dateIntervention,'m'));
$penalite->setAnnee(date_format($dateIntervention,'Y'));
}elseif($colonnesFichier[$keyCell]=='PENALITE'){
$penalite->setPenalite($cell->getValue());
}
}
if($etr!=null){
$moisEtr=$this->moisEtrRepository->findOneBy(['etrProd'=>$etr,'moisInterventionsProd'=>$mois]);
if($moisEtr==null){
$moisEtr=new MoisEtr();
$moisEtr->setMoisInterventionsProd($mois);
$moisEtr->setEtrProd($etr);
$moisEtr->setMarge(0);
$this->moisEtrRepository->add($moisEtr,true);
}
}
$penalite->setFichierPenalites($fichierPenalite);
$this->penaliteRepository->add($penalite,true);
}
}
}else{
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
}catch(Exception $ex){
$this->addFlash('erreur',$ex->getMessage());
}
if(count($listeTechniciens)>0){
$entreprises = $this->etrProdRepository->findAll();
$etr=new EtrProd();
$form = $this->createForm(EtrProdType::class, $etr);
return $this->render('importation/penalites_technicien.html.twig',[
'listeTechniciens'=>$listeTechniciens,
'entreprises'=>$entreprises,
'mois'=>$mois,
'form' => $form->createView()
]);
}
FINIR:
return $this->redirect($request->headers->get('referer'));
}
/*
* Importer des entreprises
*/
#[Route('/importerEntreprises', name: 'app_importation_entreprise',methods:["POST"])]
public function ImporterEntreprises(Request $request): Response
{
/* Importer le fichier */
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if('xlsx' == $extension) {
$reader = new Xlsx();
} else {
/* Les entree de type csv */
$reader = new Csv();
}
/* lire depuis le fichier */
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet(); //getSheetByName("BDD_ETR");//PLANNING ETR
$ColonnesOblegatoirSav=['Raison sociale','Voie','adresse','SIRET','Prénom','Nom','Email','ETR FACT_','TVA','Contrat'];
/* Remplir un tableau avec les colonne oblegatoire existe dans le fichier */
$colonnesFichier=[];
/* Remplir le les colonnes et les information de mois */
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
if (in_array($cell->getValue(), $ColonnesOblegatoirSav)) {
$colonnesFichier[$keyCell]=$cell->getValue();
}
}
}
}
$articles=$this->articleRepository->findAll();
$colonnesFichier['K']='';
//Definir le type de fichier
try{
if(in_array('Raison sociale',$colonnesFichier)){
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if ($key>1) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$etr=new Etr();
$EtrNouveau=false;
foreach ($cellIterator as $keyCell=> $cell) {
if ($colonnesFichier[$keyCell]=='Raison sociale') {
$etr=$this->etrRepository->findOneBy(['raisonSociale'=>$cell->getValue()]);
if ($etr==null) {
$etr=new Etr();
$etr->setRaisonSociale($cell->getValue());
$etr->setReduction(0);
//$EtrNouveau=true;
}
}elseif($colonnesFichier[$keyCell]=='Voie'){
$etr->setVoie($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='adresse'){
$etr->setAdresse($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='SIRET'){
$etr->setSiret($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='Prénom'){
$etr->setNom($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='Nom'){
$etr->setPrenom($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='Email'){
$etr->setEmail($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='ETR FACT_'){
$etr->setEntrepriseFact($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='TVA'){
if (is_float($cell->getValue())) {
$etr->setTva($cell->getValue());
}else{
$etr->setTva(0);
}
}elseif($colonnesFichier[$keyCell]=='Contrat'){
$etr->setContact($cell->getValue());
}
}
// $this->etrRepository->add($etr,true);
foreach ($articles as $key => $article) {
$bpuValueSav=new BpuValueSav();
$bpuValueSav->setPuEtr($article->getPuFree()-($etr->getReduction()*$article->getPuFree()/100));
$bpuValueSav->setEtr($etr);
$bpuValueSav->setMarge($etr->getReduction());
$bpuValueSav->setArticle($article);
$this->bpuValueSavRepository->add($bpuValueSav,true);
}
}
}
}else{
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
}catch(Exception $ex){
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
return $this->redirectToRoute('app_etr_index');
}
#[Route('/importerEntreprisesProd', name: 'app_importation_entreprise_prod',methods:["POST"])]
public function ImporterEntreprisesProd(Request $request): Response
{
/* Importer le fichier */
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if('xlsx' == $extension) {
$reader = new Xlsx();
} else {
/* Les entree de type csv */
$reader = new Csv();
}
/* lire depuis le fichier */
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet(); //getSheetByName("BDD_ETR");//PLANNING ETR
$ColonnesOblegatoirSav=['Raison sociale','Voie','adresse','SIRET','Prénom','Nom','Email','ETR FACT_','TVA','Contrat'];
/* Remplir un tableau avec les colonne oblegatoire existe dans le fichier */
$colonnesFichier=[];
/* Remplir le les colonnes et les information de mois */
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
if (in_array($cell->getValue(), $ColonnesOblegatoirSav)) {
$colonnesFichier[$keyCell]=$cell->getValue();
}
}
}
}
$colonnesFichier['K']='';
//dd($colonnesFichier);
//Definir le type de fichier
try{
if(in_array('Raison sociale',$colonnesFichier)){
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if ($key>1) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$etr=new EtrProd();
$EtrNouveau=false;
foreach ($cellIterator as $keyCell=> $cell) {
if ($colonnesFichier[$keyCell]=='Raison sociale') {
$etr=$this->etrProdRepository->findOneBy(['raisonSociale'=>$cell->getValue()]);
if ($etr==null) {
$etr=new EtrProd();
$etr->setRaisonSociale($cell->getValue());
$etr->setReduction(0);
//$EtrNouveau=true;
}
}elseif($colonnesFichier[$keyCell]=='Voie'){
$etr->setVoie($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='adresse'){
$etr->setAdresse($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='SIRET'){
$etr->setSiret($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='Prénom'){
$etr->setNom($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='Nom'){
$etr->setPrenom($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='Email'){
$etr->setEmail($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='ETR FACT_'){
$etr->setEntrepriseFact($cell->getValue());
}elseif($colonnesFichier[$keyCell]=='TVA'){
if(is_float($cell->getValue())){
$etr->setTva($cell->getValue());
}else{
$etr->setTva(0);
}
}elseif($colonnesFichier[$keyCell]=='Contrat'){
$etr->setContrat($cell->getValue());
}
}
$btelecom=$this->societeRepository->findOneBy(['raisonSociale'=>'BTELECOM']);
if ($btelecom) {
$etr->setSociete($btelecom);
}
$this->etrProdRepository->add($etr,true);
$infras = $this->infraRepository->findAll();
foreach ($infras as $infra) {
$bpuValeur = new BpuValeur();
$bpuValeur->setEtrProd($etr);
$bpuValeur->setInfra($infra);
$bpuValeur->setPrix(0.0);
$this->bpuValeurRepository->add($bpuValeur, true);
}
}
}
}else{
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
}catch(Exception $ex){
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
return $this->redirectToRoute('app_etr_prod_index');
}
/*
* Importer des techniciens
*/
#[Route('/importerTechniciens', name: 'app_importation_techniciens',methods:["POST"])]
public function ImporterTechniciens(Request $request): Response
{
/* Importer le fichier */
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if('xlsx' == $extension) {
$reader = new Xlsx();
} else {
/* Les entree de type csv */
$reader = new Csv();
}
/* lire depuis le fichier */
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet(); //getSheetByName("BDD_ETR");//PLANNING ETR
$ColonnesOblegatoirSav=['TechIdent','Entreprise','Planning','SOUS-TRAITANT','Login du technicien'];
/* Remplir un tableau avec les colonne oblegatoire existe dans le fichier */
//TechIdent Login du technicien Entreprise
$colonnesFichier=[];
/* Remplir le les colonnes et les information de mois */
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
if (in_array($cell->getValue(), $ColonnesOblegatoirSav)) {
$colonnesFichier[$keyCell]=$cell->getValue();
}
}
break;
}
}
//
/* $nbTestMois=0;
$lastMois=date('m')+1;
$lastAnnees=date('Y');
searchMois :
$nbTestMois++;
$lastMois=$lastMois-1;
if($lastMois==0){
$lastMois=12;
$lastAnnees--;
}
$nbTechniciens=$planningEtrProdRepository->count(['mois'=>$lastMois,'annee'=>$lastAnnees]);
if($nbTechniciens>0){
$techniciens = $planningEtrProdRepository->findBy(['mois'=>$lastMois,'annee'=>$lastAnnees]);
}else{
if($nbTestMois<12){
goto searchMois;
}else{
$techniciens = $planningEtrProdRepository->findBy(['mois'=>0,'annee'=>0]);
}
} */
//
try{
//Definir le type de fichier
if (in_array('TechIdent', $colonnesFichier)||in_array('Planning', $colonnesFichier)||in_array('Entreprise', $colonnesFichier)||in_array('SOUS-TRAITANT', $colonnesFichier)) {
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if ($key>1) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$technicien=new PlanningEtr();
$loginTechnicien='';
foreach ($cellIterator as $keyCell=> $cell) {
if ($colonnesFichier[$keyCell]=='Login du technicien') {
$loginTechnicien=$cell->getValue();
}
if ($colonnesFichier[$keyCell]=='TechIdent' || $colonnesFichier[$keyCell]=='Planning') {
$technicien=$this->planningEtrRepository->findOneBy(['techId'=>$cell->getValue()]);
if ($technicien==null) {
$technicien=new PlanningEtr();
$technicien->setMois(date('m'));
$technicien->setAnnee(date('Y'));
$technicien->setTechId($cell->getValue());
$technicien->setLoginTechnicien($loginTechnicien);
}
} elseif ($colonnesFichier[$keyCell]=='Entreprise' || $colonnesFichier[$keyCell]=='SOUS-TRAITANT') {
$etr=$this->etrRepository->findOneBy(['raisonSociale'=>$cell->getValue()]);
if ($etr) {
$technicien->setEtr($etr);
} else {
/* $etr=new Etr();
$etr->setRaisonSociale($cell->getValue());
$etr->setReduction(0);
$technicien->setEtr($etr);
$this->etrRepository->add($etr); */
}
}
}
$this->planningEtrRepository->add($technicien, true);
}
}
}else{
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
}catch(Exception $ex){
$this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
}
return $this->redirectToRoute('app_planning_etr_index');
}
/*
* Importer des techniciens
*/
#[Route('/importerTechniciensProd/{mois1}/{annee1}', name: 'app_importation_techniciens_prod',methods:["POST"])]
public function ImporterTechniciensProd(Request $request,$mois1,$annee1): Response
{
/* Importer le fichier */
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if('xlsx' == $extension) {
$reader = new Xlsx();
} else {
/* Les entree de type csv */
$reader = new Csv();
}
/* lire depuis le fichier */
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet(); //getSheetByName("BDD_ETR");//PLANNING ETR
$ColonnesOblegatoirSav=['TechIdent','Entreprise','Planning','SOUS-TRAITANT','Login du technicien'];
/* Remplir un tableau avec les colonne oblegatoire existe dans le fichier */
$colonnesFichier=[];
/* Remplir le les colonnes et les information de mois */
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
if (in_array($cell->getValue(), $ColonnesOblegatoirSav)) {
$colonnesFichier[$keyCell]=$cell->getValue();
}
}
break;
}
}
//$colonnesFichier['C']='';
$colonnesFichier['D']='';
/* dump($colonnesFichier);
dd(''); */
//
/* $nbTestMois=0;
$lastMois=date('m')+1;
$lastAnnees=date('Y');
searchMois :
$nbTestMois++;
$lastMois=$lastMois-1;
if($lastMois==0){
$lastMois=12;
$lastAnnees--;
}
$nbTechniciens=$planningEtrProdRepository->count(['mois'=>$lastMois,'annee'=>$lastAnnees]);
if($nbTechniciens>0){
$techniciens = $planningEtrProdRepository->findBy(['mois'=>$lastMois,'annee'=>$lastAnnees]);
}else{
if($nbTestMois<12){
goto searchMois;
}else{
$techniciens = $planningEtrProdRepository->findBy(['mois'=>0,'annee'=>0]);
}
} */
//
//dd( $colonnesFichier);
//try{
//if(in_array('TechIdent',$colonnesFichier)||in_array('Planning',$colonnesFichier)||in_array('Entreprise',$colonnesFichier)||in_array('SOUS-TRAITANT',$colonnesFichier)){
//Definir le type de fichier
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if ($key>1) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$technicien=new PlanningEtrProd();
$nomTechnicien='';
foreach ($cellIterator as $keyCell=> $cell) {
if ($colonnesFichier[$keyCell]=='TechIdent' || $colonnesFichier[$keyCell]=='Nom du technicien') {
$nomTechnicien=$cell->getValue();
}
if ( $colonnesFichier[$keyCell]=='Planning' || $colonnesFichier[$keyCell]=='Login du technicien') {
$technicien=$this->planningEtrProdRepository->findOneBy(['loginTechnicien'=>$cell->getValue(),'mois'=>$mois1,'annee'=>$annee1]);
if ($technicien==null) {
$technicien=new PlanningEtrProd();
$technicien->setMois($mois1);
$technicien->setAnnee($annee1);
//$technicien->setMois(1);
//$technicien->setAnnee(date('Y'));
$technicien->setTechId($nomTechnicien);
$technicien->setLoginTechnicien($cell->getValue());
}
}elseif($colonnesFichier[$keyCell]=='Entreprise' || $colonnesFichier[$keyCell]=='SOUS-TRAITANT') {
$etr=$this->etrProdRepository->findOneBy(['raisonSociale'=>$cell->getValue()]);
//dump($etr);
if($etr){
$technicien->setEtrProd($etr);
}
else{
$etr=new EtrProd();
$etr->setRaisonSociale($cell->getValue());
$etr->setReduction(0);
$technicien->setEtrProd($etr);
$btelecom=$this->societeRepository->findOneBy(['raisonSociale'=>'BTELECOM']);
if ($btelecom) {
$etr->setSociete($btelecom);
}
$this->etrProdRepository->add($etr);
$infras = $this->infraRepository->findAll();
foreach ($infras as $infra) {
$bpuValeur = new BpuValeur();
$bpuValeur->setEtrProd($etr);
$bpuValeur->setInfra($infra);
$bpuValeur->setPrix(0.0);
$this->bpuValeurRepository->add($bpuValeur, true);
}
}
}
}
//dd();
//dump($technicien);
$this->planningEtrProdRepository->add($technicien,true);
}
}
//}else{
// $this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
//}
//}catch(Exception $ex){
// $this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
//}
//dd();
//return $this->redirectToRoute('app_planning_etr_prod_index');
return $this->redirectToRoute('app_planning_etr_prod_index',['mois'=>$mois1,'annee'=>$annee1]);
}
/*
* Importer des techniciens
*/
#[Route('/ImporterBPU_twig', name: 'app_ImporterBPU_twig',methods:["GET"])]
public function ImporterBP(Request $request): Response
{
return $this->render('importation/bpu.html.twig');
}
#[Route('/ImporterBPU', name: 'app_ImporterBPU',methods:["POST"])]
public function ImporterBPU(Request $request): Response
{
/* Importer le fichier */
$excelFichier=$request->files->get('excelFichier');
$extension=$excelFichier->guessExtension();
$filename = pathinfo($excelFichier->getClientOriginalName(), PATHINFO_FILENAME );
$newFilename = $filename.'-'.uniqid().'.'.$extension;
try {
$excelFichier->move(
$this->getParameter('path_files'),
$newFilename
);
} catch (FileException $e) {}
/* Les entree de type xlsx */
if('xlsx' == $extension) {
$reader = new Xlsx();
} else {
/* Les entree de type csv */
$reader = new Csv();
}
/* lire depuis le fichier */
$spreadsheet = $reader->load('fichier_importe/'.$newFilename);
$feuilleInterventions = $spreadsheet->getActiveSheet(); //getSheetByName("BDD_ETR");//PLANNING ETR
/* Remplir un tableau avec les colonne oblegatoire existe dans le fichier */
$colonnesFichier=[];
/* Remplir le les colonnes et les information de mois */
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
if ($key==1) {
foreach ($cellIterator as $keyCell=> $cell) {
$colonnesFichier[$keyCell]=$cell->getValue();
}
break;
}
}
//try{
//Definir le type de fichier
foreach ($feuilleInterventions->getRowIterator() as $key=> $row) {
if ($key>1) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$etr=new EtrProd();
$infra=new Infra();
$article=new Infra();
$PuBTL=0;
$PuEtr=0;
$PuArt=0;
$designation='';
$libelleArt='';
$etrs=$this->etrProdRepository->findAll();
$infras = $this->infraRepository->findAll();
$articles = $this->articleProdRepository->findAll();
foreach ($cellIterator as $keyCell=> $cell) {
if ($colonnesFichier[$keyCell]=='Etr') {
$etr=$this->etrProdRepository->findOneBy(['raisonSociale'=>$cell->getValue()]);
if($etr==null){
$etr=new EtrProd();
$etr->setRaisonSociale($cell->getValue());
$etr->setReduction(0);
$this->etrProdRepository->add($etr,true);
foreach ($infras as $infra) {
$bpuValeur = new BpuValeur();
$bpuValeur->setEtrProd($etr);
$bpuValeur->setInfra($infra);
$bpuValeur->setPrix(0.0);
$this->bpuValeurRepository->add($bpuValeur);
}
foreach ($articles as $article1) {
$etrArticle=new BpuValeurProdArticle();
$etrArticle->setEtrProd($etr);
$etrArticle->setPrix(0);
$etrArticle->setMarge(0);
$etrArticle->setArticle($article1);
$this->bpuValeurProdArticleRepository->add($etrArticle);
}
$this->bpuValeurProdArticleRepository->add($etrArticle, true);
}
}//Brahim 1
elseif ($colonnesFichier[$keyCell]=='Infra') {
if($cell->getValue()=='Poteau'){
$infra=$this->infraRepository->findOneBy(['libelle'=>'Hauteur']);
}else{
$infra=$this->infraRepository->findOneBy(['libelle'=>$cell->getValue()]);
}
if ($infra==null) {
if($cell->getValue()!=null){
$infra=new Infra();
$infra->setLibelle($cell->getValue());
$this->infraRepository->add($infra,true);
}
}
}elseif ($colonnesFichier[$keyCell]=='Pu Btl') {
//BTELECOM
$PuBTL=$cell->getValue();
}elseif ($colonnesFichier[$keyCell]=='Pu') {
$PuEtr=$cell->getValue();
$bpuValeur=$this->bpuValeurRepository->findOneBy(['infra'=>$infra,'etrProd'=>$etr]);
if($bpuValeur==null){
$bpuValeur=new BpuValeur();
}
$bpuValeur->setPrix($PuEtr);
$this->bpuValeurRepository->add($bpuValeur, true);
}elseif ($colonnesFichier[$keyCell]=='Désignation') {
$designation=$cell->getValue();
}elseif ($colonnesFichier[$keyCell]=='Pu Article') {
$PuArt=$cell->getValue();
}
elseif ($colonnesFichier[$keyCell]=='article') {
$libelleArt=$cell->getValue();
}
elseif ($colonnesFichier[$keyCell]=='PuF') {
if($PuArt>0){
$article=$this->articleProdRepository->findOneBy(['libelle'=>$libelleArt,'infra'=>$infra]);
}else{
$article=$this->articleProdRepository->findOneBy(['libelle'=>$libelleArt]);
}
if ($article==null) {
$article=new ArticleProd();
$article->setLibelle($libelleArt);
$article->setDescription($designation);
$article->setPuFree($PuArt);
$article->setInfra($infra);
if ($cell->getValue() >= 0) {
$article->settype('article');
} else {
$article->settype('penalite');
}
$this->articleProdRepository->add($article, true);
foreach ($etrs as $key => $etr1) {
$infraBtelecom= $PuBTL;
$cof= ($infraBtelecom != 0 && $PuEtr!="") ? 1-($PuEtr/$infraBtelecom) : 0;
if($article->gettype()=='penalite'){
$prixFinal=$PuArt;
$cof=0;
}else{
$prixFinal=$PuArt-$PuArt*$cof;
}
$etrArticle=new BpuValeurProdArticle();
$etrArticle->setEtrProd($etr1);
$etrArticle->setPrix($prixFinal);
$etrArticle->setMarge($cof);
$etrArticle->setArticle($article);
$this->bpuValeurProdArticleRepository->add($etrArticle);
}
$this->bpuValeurProdArticleRepository->add($etrArticle, true);
}else{
$article->setLibelle($libelleArt);
$article->setDescription($designation);
$article->setPuFree($PuArt);
$article->setInfra($infra);
if ($cell->getValue() >= 0) {
$article->settype('article');
} else {
$article->settype('penalite');
}
$this->articleProdRepository->add($article, true);
}
//Calculer le bpuValeurProd
$bpuValeurProdArticle=$this->bpuValeurProdArticleRepository->findOneBy([
'etrProd'=>$etr,
'article'=>$article
]);
if($bpuValeurProdArticle==null){
$bpuValeurProdArticle=new BpuValeurProdArticle();
}
$bpuValeurProdArticle->setPrix($cell->getValue());
$bpuValeurProdArticle->setMarge(1-$cell->getValue()/$PuArt);
$this->bpuValeurProdArticleRepository->add($bpuValeurProdArticle,true);
}
}
}
}
//}catch(Exception $ex){
// $this->addFlash('erreur','Le fichier que vous avez importé n\'est pas bon. Veuillez importer le bon fichier.');
//}
dd('fin importation');
return $this->redirectToRoute('app_planning_etr_prod_index');
}
#[Route('/ExporterTechniciens', name: 'app_ExporterTechniciens',methods:["GET"])]
public function ExporterTechniciens(Request $request): Response
{
$nouvelleFeuilleDeCalcul = new Spreadsheet();
$FeuilleDeTravail = $nouvelleFeuilleDeCalcul->getActiveSheet();
$writer = new Xlsx($nouvelleFeuilleDeCalcul);
$writer = IOFactory::createWriter($nouvelleFeuilleDeCalcul, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$techniciens=$this->planningEtrRepository->findAll();
//dd($techniciens);
$liste=[];
$tech=[];
array_push($tech,"TechIdent","Login du technicien","Entreprise");
$liste[]=$tech;
foreach ($techniciens as $key => $technicien) {
$tech=[];
array_push($tech,$technicien->getTechId(),$technicien->getLoginTechnicien(),$technicien->getEtr()->getRaisonSociale());
$liste[]=$tech;
}
$FeuilleDeTravail->fromArray($liste, NULL, 'A1');
$name="ExporterTechnicienProd.xlsx";
$response = new StreamedResponse(
function () use ($writer) {
$writer->save('php://output');
}
);
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="'.$name);
$response->headers->set('Cache-Control','max-age=0');
return $response;
}
#[Route('/ExporterEtr', name: 'app_ExporterEtr',methods:["GET"])]
public function ExporterEtr(Request $request): Response
{
$nouvelleFeuilleDeCalcul = new Spreadsheet();
$FeuilleDeTravail = $nouvelleFeuilleDeCalcul->getActiveSheet();
$writer = new Xlsx($nouvelleFeuilleDeCalcul);
$writer = IOFactory::createWriter($nouvelleFeuilleDeCalcul, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
$etrs=$this->etrRepository->findAll();
// dd($etrs);
$liste=[];
$tech=[];
array_push($tech,'Raison sociale','Voie','adresse','SIRET','Prénom','Nom','Email','ETR FACT_','TVA','Contrat');
$liste[]=$tech;
foreach ($etrs as $key => $etr) {
$tech=[];
array_push($tech,$etr->getRaisonSociale(),$etr->getVoie(),$etr->getAdresse(),$etr->getSiret(),$etr->getPrenom(),$etr->getNom(),$etr->getEmail(),$etr->getEntrepriseFact(),$etr->getTva(),$etr->getContact());
$liste[]=$tech;
}
$FeuilleDeTravail->fromArray($liste, NULL, 'A1');
$name="ExporterEtr.xlsx";
$response = new StreamedResponse(
function () use ($writer) {
$writer->save('php://output');
}
);
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="'.$name);
$response->headers->set('Cache-Control','max-age=0');
return $response;
}
#[Route('/ExporterTechnicienProd/{mois}/{annee}', name: 'app_ExporterTechnicienProd',methods:["GET"])]
public function ExporterTechnicienProd(Request $request,$mois,$annee): Response
{
$nouvelleFeuilleDeCalcul = new Spreadsheet();
$FeuilleDeTravail = $nouvelleFeuilleDeCalcul->getActiveSheet();
$writer = new Xlsx($nouvelleFeuilleDeCalcul);
$writer = IOFactory::createWriter($nouvelleFeuilleDeCalcul, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$techniciens=$this->planningEtrProdRepository->findBy(['mois'=>$mois,'annee'=>$annee]);
//dd($techniciens);
$liste=[];
$tech=[];
array_push($tech,"TechIdent","Login du technicien","Entreprise");
$liste[]=$tech;
foreach ($techniciens as $key => $technicien) {
$tech=[];
array_push($tech,$technicien->getTechId(),$technicien->getLoginTechnicien(),$technicien->getEtrProd()?$technicien->getEtrProd()->getRaisonSociale():'');
$liste[]=$tech;
}
$FeuilleDeTravail->fromArray($liste, NULL, 'A1');
$name="ExporterTechnicienProd.xlsx";
$response = new StreamedResponse(
function () use ($writer) {
$writer->save('php://output');
}
);
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="'.$name);
$response->headers->set('Cache-Control','max-age=0');
return $response;
}
#[Route('/ExporterEtrProd', name: 'app_ExporterEtrProd',methods:["GET"])]
public function ExporterEtrProd(Request $request): Response
{
$nouvelleFeuilleDeCalcul = new Spreadsheet();
$FeuilleDeTravail = $nouvelleFeuilleDeCalcul->getActiveSheet();
$writer = new Xlsx($nouvelleFeuilleDeCalcul);
$writer = IOFactory::createWriter($nouvelleFeuilleDeCalcul, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('N')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('O')->setAutoSize(true);
$etrs=$this->etrProdRepository->findAll();
$infras=$this->infraRepository->findAll();
$liste=[];
$tech=[];
array_push($tech,'Raison sociale','Voie','adresse','SIRET','Prénom','Nom','Email','ETR FACT_','TVA','Contrat','Standard','Hauteur','Façade','Chambre','Plp');
$liste[]=$tech;
foreach ($etrs as $key => $etr) {
$tech=[];
array_push($tech,$etr->getRaisonSociale(),$etr->getVoie(),$etr->getAdresse(),$etr->getSiret(),$etr->getPrenom(),
$etr->getNom(),$etr->getEmail(),$etr->getEntrepriseFact(),$etr->getTva(),$etr->getContrat()
);
foreach($infras as $key => $infra){
if($key<5){
$bpuValue = $this->bpuValeurRepository->findOneBy([
'etrProd'=>$etr,
'infra'=>$infra
]);
if($bpuValue){
array_push($tech,$bpuValue->getPrix());
}else{
array_push($tech,'-');
}
}
}
$liste[]=$tech;
}
$FeuilleDeTravail->fromArray($liste, NULL, 'A1');
$name="ExporterEtrProd.xlsx";
$response = new StreamedResponse(
function () use ($writer) {
$writer->save('php://output');
}
);
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="'.$name);
$response->headers->set('Cache-Control','max-age=0');
return $response;
}
#[Route('/ExporterPenalites', name: 'app_ExporterPenalites',methods:["GET"])]
public function Exporter(Request $request): Response
{
$nouvelleFeuilleDeCalcul = new Spreadsheet();
$FeuilleDeTravail = $nouvelleFeuilleDeCalcul->getActiveSheet();
$writer = new Xlsx($nouvelleFeuilleDeCalcul);
$writer = IOFactory::createWriter($nouvelleFeuilleDeCalcul, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$nouvelleFeuilleDeCalcul->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$listeMois=[1=>"Janvier", 2=>"Février",3=> "Mars", 4=>"Avril", 5=>"Mai", 6=>"Juin", 7=>"Juillet", 8=>"Août",9=> "Septembre", 10=>"Octobre", 11=>"Novembre", 12=>"Décembre"];
$annee=$request->query->get('annee');
$mois=$request->query->get('mois');
if($annee==null || $annee=="0" || $annee==""){
$annee=date('Y');
}
if($mois==null || $mois=="0" || $mois==""){
$mois=date('m');
}else{
$mois=( strlen($mois)==1 ) ? "0".$mois:$mois;
}
//STT TECHNICIEN RC ANOMALIE CONSTATEE DATE RDV MOIS PENALITE
$penalites=$this->penaliteRepository->findBy(['annee'=>$annee,'mois'=>$mois]);
$etrs=$this->etrProdRepository->findAll();
$liste=[];
$tech=[];
array_push($tech,'STT','TECHNICIEN','RC','ANOMALIE CONSTATEE','DATE RDV','PENALITE','NOM');
$liste[]=$tech;
foreach ($etrs as $key => $etr) {
foreach ($penalites as $key => $penalite) {
if($penalite->getEtrProd()==$etr){
$tech=[];
array_push($tech,$etr->getRaisonSociale(),$penalite->getPlanningEtrProd()->getLoginTechnicien(),$penalite->getRc(),$penalite->getAnomalie(),$penalite->getDateRdv(),$penalite->getPenalite(),$penalite->getNomPenalite());
$liste[]=$tech;
}
}
}
$FeuilleDeTravail->fromArray($liste, NULL, 'A1');
$name="ExporterPenalites ".$mois."-".$annee.".xlsx";
$response = new StreamedResponse(
function () use ($writer) {
$writer->save('php://output');
}
);
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="'.$name);
$response->headers->set('Cache-Control','max-age=0');
return $response;
}
}