Esempio n. 1
0
 public function createFromPassage(Passage $passage)
 {
     $rdv = $passage->getRendezVous();
     if ($rdv) {
         throw new \Exception('Le rendez vous est déjà créé');
     }
     $rdv = new RendezVous();
     $rdv->setPassage($passage);
     $rdv->setTitre(sprintf("%s (%s %s)", $passage->getEtablissementInfos()->getNom(), $passage->getEtablissementInfos()->getAdresse()->getCodePostal(), $passage->getEtablissementInfos()->getAdresse()->getCommune()));
     $rdv->setDescription(null);
     $rdv->setLieu(sprintf("%s %s %s", $passage->getEtablissementInfos()->getAdresse()->getAdresse(), $passage->getEtablissementInfos()->getAdresse()->getCodePostal(), $passage->getEtablissementInfos()->getAdresse()->getCommune()));
     $rdv->removeAllParticipants();
     foreach ($passage->getTechniciens() as $technicien) {
         $rdv->addParticipant($technicien);
     }
     $passage->setRendezVous($rdv);
     if ($passage->getDateDebut() && $passage->getDateFin()) {
         $rdv->setDateDebut($passage->getDateDebut());
         $rdv->setDateFin($passage->getDateFin());
     }
     return $rdv;
 }
Esempio n. 2
0
 /**
  * @Route("/passage/pdf-mission/{id}", name="passage_pdf_mission")
  * @ParamConverter("passage", class="AppBundle:Passage")
  */
 public function pdfMissionAction(Request $request, Passage $passage)
 {
     $pm = $this->get('passage.manager');
     $passagesHistory = $pm->getRepository()->findHistoriqueByEtablissementAndPrestationsAndNumeroContrat($passage->getContrat(), $passage->getEtablissement(), $passage->getPrestations());
     $filename = sprintf("suivi_client_%s_%s.pdf", $passage->getDateDebut()->format("Y-m-d_H:i"), strtoupper(Transliterator::urlize($passage->getTechniciens()->first()->getIdentite())));
     $html = $this->renderView('passage/pdfMission.html.twig', array('passage' => $passage, 'passagesHistory' => $passagesHistory));
     if ($request->get('output') == 'html') {
         return new Response($html, 200);
     }
     return new Response($this->get('knp_snappy.pdf')->getOutputFromHtml($html, $this->getPdfGenerationOptions()), 200, array('Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="' . $filename . '"'));
 }
Esempio n. 3
0
 public function generateAllPassagesForContrat($contrat)
 {
     $this->removeAllPassagesForContrat($contrat);
     $date_debut = $contrat->getDateDebut();
     $date_acceptation = $contrat->getDateAcceptation();
     if (!$date_debut || !$date_acceptation) {
         return false;
     }
     $date_debut = clone $contrat->getDateDebut();
     $passagesArray = $contrat->getPrevisionnel($date_debut);
     ksort($passagesArray);
     $firstEtb = true;
     foreach ($contrat->getEtablissements() as $etablissement) {
         $cpt = 0;
         foreach ($passagesArray as $datePassage => $passageInfos) {
             $datePrevision = new \DateTime($datePassage);
             $passage = new Passage();
             $passage->setEtablissement($etablissement);
             $passage->setEtablissementIdentifiant($etablissement->getIdentifiant());
             if ($contrat->getTechnicien()) {
                 $passage->addTechnicien($contrat->getTechnicien());
             }
             $passage->setDatePrevision($datePrevision);
             if (!$cpt) {
                 $passage->setDateDebut($datePrevision);
             }
             if ($firstEtb) {
                 $passage->setMouvementDeclenchable($passageInfos->mouvement_declenchable);
             }
             $passage->setContrat($contrat);
             $passage->setTypePassage(PassageManager::TYPE_PASSAGE_CONTRAT);
             foreach ($passageInfos->prestations as $prestationPrevu) {
                 $prestationObj = new Prestation();
                 $prestationObj->setNom($prestationPrevu->getNom());
                 $prestationObj->setNomCourt($prestationPrevu->getNomCourt());
                 $prestationObj->setIdentifiant($prestationPrevu->getIdentifiant());
                 $prestationObj->setNbPassages(0);
                 $passage->addPrestation($prestationObj);
             }
             foreach ($contrat->getProduits() as $produit) {
                 $produitNode = clone $produit;
                 $passage->addProduit($produitNode);
             }
             if ($passage) {
                 $contrat->addPassage($etablissement, $passage);
                 $this->dm->persist($passage);
             }
             $cpt++;
         }
         $firstEtb = false;
     }
     $contrat->updateNumeroOrdrePassage();
     //    $this->dm->flush();
 }
Esempio n. 4
0
 public function copyTechnicienFromPassage(Passage $p)
 {
     if (!count($this->getTechniciens()) && count($p->getTechniciens())) {
         foreach ($p->getTechniciens() as $technicien) {
             $this->addTechnicien($technicien);
         }
         return $this;
     }
     return false;
 }
Esempio n. 5
0
 public function getPassagesByNumeroArchiveContrat(Passage $passage, $reverse = false)
 {
     return $this->cm->getPassagesByNumeroArchiveContrat($passage->getContrat(), $reverse);
 }
Esempio n. 6
0
 public function import($file, OutputInterface $output)
 {
     $csvFile = new CsvFile($file);
     $csv = $csvFile->getCsv();
     $i = 0;
     $cptTotal = 0;
     $progress = new ProgressBar($output, 100);
     $progress->start();
     $configuration = $this->dm->getRepository('AppBundle:Configuration')->findConfiguration();
     $produitsArray = $configuration->getProduitsArray();
     $prestationsType = $this->dm->getRepository('AppBundle:Configuration')->findConfiguration()->getPrestationsArray();
     foreach ($csv as $data) {
         if ($data[self::CSV_ETABLISSEMENT_ID] == "000000") {
             continue;
         }
         if (!preg_match('/^[0-9]+$/', $data[self::CSV_ETABLISSEMENT_ID])) {
             $output->writeln(sprintf("<error>établissement dont le numéro %s n'est pas correct</error>", $data[self::CSV_ETABLISSEMENT_ID]));
             continue;
         }
         $etablissement = $this->em->getRepository()->findOneByIdentifiantReprise($data[self::CSV_ETABLISSEMENT_ID]);
         if (!$etablissement) {
             $output->writeln(sprintf("<error>L'établissement %s n'existe pas</error>", $data[self::CSV_ETABLISSEMENT_ID]));
             continue;
         }
         $passage = new Passage();
         $passage->setEtablissement($etablissement);
         if (!$data[self::CSV_DATE_PREVISION]) {
             $output->writeln(sprintf("<error>Le passage %s ne possède aucune date de prévision!</error>", $data[self::CSV_OLD_ID]));
             continue;
         }
         $passage->setDatePrevision(new \DateTime($data[self::CSV_DATE_PREVISION]));
         $passage->setIdentifiantReprise($data[self::CSV_OLD_ID]);
         $passage->setNumeroArchive($data[self::CSV_OLD_ID]);
         $contrat = $this->cm->getRepository()->findOneByIdentifiantReprise($data[self::CSV_CONTRAT_ID]);
         if (!$contrat) {
             //$output->writeln(sprintf("<error>Le contrat %s n'existe pas</error>", $data[self::CSV_CONTRAT_ID]));
             continue;
         }
         $this->dm->persist($passage);
         $doublonPassage = $this->pm->getRepository()->findOneById($passage->getId());
         if ($doublonPassage) {
             $output->writeln(sprintf("<comment>Le passage d'id %s existe déjà en base (%s)!</comment>", $passage->getId(), $data[self::CSV_OLD_ID]));
         }
         $resultStatut = $this->generateStatut($data, $passage, $output);
         $passage->updateStatut();
         if (!$resultStatut) {
             $output->writeln(sprintf("<error>Aucun statut déterminable pour le passage d'id %s (%s)!</error>", $passage->getId(), $data[self::CSV_OLD_ID]));
             continue;
         }
         $passage->setLibelle($data[self::CSV_LIBELLE]);
         $passage->setTypePassage($data[self::CSV_TYPE_PASSAGE]);
         $passage->setDescription(str_replace('#', "\n", $data[self::CSV_DESCRIPTION]));
         if (!preg_match('/^[0-9]+$/', $data[self::CSV_CONTRAT_ID])) {
             $output->writeln(sprintf("<error>Passage dont le numéro %s n'est pas correct</error>", $data[self::CSV_CONTRAT_ID]));
             continue;
         }
         if ($data[self::CSV_PRESTATIONS]) {
             $prestations = explode('#', $data[self::CSV_PRESTATIONS]);
             foreach ($prestations as $prestationNom) {
                 if (trim($prestationNom) != "") {
                     $prestationIdentifiant = strtoupper(Transliterator::urlize($prestationNom));
                     if (!array_key_exists($prestationIdentifiant, $prestationsType)) {
                         $output->writeln(sprintf("<comment>La prestation : %s n'existe pas dans la configuration </comment>", $prestationIdentifiant));
                         continue;
                     }
                     $prestation = $prestationsType[$prestationIdentifiant];
                     $passage->addPrestation($prestation);
                     $this->dm->persist($passage);
                 }
             }
         } else {
             $output->writeln(sprintf("<comment>Le passage : %s n'a aucune presta </comment>", $data[self::CSV_OLD_ID]));
         }
         $identifiantRepriseTechnicien = $data[self::CSV_TECHNICIEN];
         if (!is_null($identifiantRepriseTechnicien)) {
             $compte = $this->um->getRepository()->findOneByIdentifiantReprise($identifiantRepriseTechnicien);
             if (!is_null($compte)) {
                 $passage->addTechnicien($compte);
             }
         }
         $passage->setContrat($contrat);
         $passage->setNumeroContratArchive($contrat->getNumeroArchive());
         $produits = explode('#', $data[self::CSV_PRODUITS]);
         foreach ($produits as $produitStr) {
             if ($produitStr) {
                 $produitdetail = explode('~', $produitStr);
                 $produitQte = 0;
                 $produitLib = $produitdetail[0];
                 if (count($produitdetail) > 1) {
                     $produitQte = $produitdetail[1];
                 }
                 if ($produitLib) {
                     $produitToAdd = clone $produitsArray[strtoupper(Transliterator::urlize($produitLib))];
                     $produitToAdd->setNbUtilisePassage(0);
                     $produitToAdd->setNbTotalContrat(null);
                     $produitToAdd->setNbUtilisePassage($produitQte);
                     $passage->addProduit($produitToAdd);
                     $this->dm->persist($passage);
                 }
             }
         }
         $contrat->addEtablissement($etablissement);
         $contrat->addPassage($etablissement, $passage);
         $i++;
         $cptTotal++;
         if ($cptTotal % (count($csv) / 100) == 0) {
             $progress->advance();
         }
         if ($i >= 2000) {
             $this->dm->flush();
             $this->dm->clear();
             gc_collect_cycles();
             $i = 0;
         }
     }
     $this->dm->flush();
     $progress->finish();
 }