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; }
/** * @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 . '"')); }
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(); }
public function copyTechnicienFromPassage(Passage $p) { if (!count($this->getTechniciens()) && count($p->getTechniciens())) { foreach ($p->getTechniciens() as $technicien) { $this->addTechnicien($technicien); } return $this; } return false; }
public function getPassagesByNumeroArchiveContrat(Passage $passage, $reverse = false) { return $this->cm->getPassagesByNumeroArchiveContrat($passage->getContrat(), $reverse); }
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(); }