Beispiel #1
0
 function create(Etablissement $etablissement, Contrat $contrat)
 {
     $passage = new Passage();
     $passage->setEtablissement($etablissement);
     foreach ($contrat->getPrestations() as $prestationContrat) {
         $prestation = clone $prestationContrat;
         $prestation->setNbPassages(0);
         $passage->addPrestation($prestation);
     }
     $previousPassage = null;
     foreach ($contrat->getPassagesEtablissementNode($etablissement)->getPassagesSorted(true) as $p) {
         if ($p->getId() != $passage->getId() && count($p->getTechniciens())) {
             $previousPassage = $p;
             break;
         }
     }
     if ($previousPassage) {
         foreach ($previousPassage->getTechniciens() as $tech) {
             $passage->addTechnicien($tech);
         }
     } elseif ($contrat->getTechnicien()) {
         $passage->addTechnicien($contrat->getTechnicien());
     }
     foreach ($contrat->getProduits() as $produitContrat) {
         $produit = clone $produitContrat;
         $produit->setNbUtilisePassage(0);
         $passage->addProduit($produit);
     }
     $passage->setContrat($contrat);
     return $passage;
 }
Beispiel #2
0
 public function findHistoriqueByEtablissementAndPrestationsAndNumeroContrat(Contrat $contrat, $etablissement, $prestations = array(), $limit = 2)
 {
     $passagesHistorique = array();
     $contratsNumArchive = $this->dm->getRepository('AppBundle:Contrat')->findByNumeroArchive($contrat->getNumeroArchive());
     $contratsNumArchiveArray = array();
     foreach ($contratsNumArchive as $contratNumArchive) {
         $contratsNumArchiveArray[$contratNumArchive->getId()] = $contratNumArchive->getId();
     }
     foreach ($prestations as $prestation) {
         $passages = array();
         foreach ($contratsNumArchiveArray as $idContrat) {
             $passages = array_merge($passages, $this->findBy(array('contrat' => $idContrat, 'etablissement' => $etablissement->getId(), 'statut' => PassageManager::STATUT_REALISE, 'prestations.identifiant' => $prestation->getIdentifiant()), array('dateDebut' => 'DESC'), $limit));
             foreach ($passages as $passage) {
                 $passagesHistorique[$passage->getDateDebut()->format('YmdHi') . "_" . $passage->getId()] = $passage;
             }
         }
     }
     krsort($passagesHistorique);
     $passagesHistorique = array_slice($passagesHistorique, 0, 2);
     return $passagesHistorique;
 }
Beispiel #3
0
 /**
  * @Route("/contrat/{id}/force-reconduction", name="contrat_force_reconduction")
  * @ParamConverter("contrat", class="AppBundle:Contrat")
  */
 public function typePonctuelAction(Request $request, Contrat $contrat)
 {
     $dm = $this->get('doctrine_mongodb')->getManager();
     $contrat->setReconduit(true);
     $dm->flush();
     if ($request->isXmlHttpRequest()) {
         return new Response();
     }
     return $this->redirectToRoute('contrats_reconduction_massive');
 }
Beispiel #4
0
 public function getPassagesByNumeroArchiveContrat(Contrat $contrat, $reverse = false)
 {
     $contratsByNumero = $this->getRepository()->findByNumeroArchive($contrat->getNumeroArchive());
     $passagesByNumero = array();
     foreach ($contratsByNumero as $contrat) {
         foreach ($contrat->getContratPassages() as $contratPassages) {
             $idEtb = $contratPassages->getEtablissement()->getId();
             if (!array_key_exists($idEtb, $passagesByNumero)) {
                 $passagesByNumero[$idEtb] = array();
             }
             foreach ($contratPassages->getPassages() as $passage) {
                 $passagesByNumero[$idEtb][$passage->getDatePrevision()->format('Ymd')] = $passage;
             }
         }
     }
     foreach ($passagesByNumero as $idEtb => $passagesByNumeroAndEtb) {
         $passages = $passagesByNumeroAndEtb;
         if ($reverse) {
             krsort($passages);
         } else {
             ksort($passages);
         }
         $passagesByNumero[$idEtb] = $passages;
     }
     return $passagesByNumero;
 }
Beispiel #5
0
 /**
  * @Route("/facturer/{id}/{identifiant}", name="facture_defacturer")
  * @ParamConverter("contrat", class="AppBundle:Contrat")
  */
 public function defacturerAction(Request $request, Contrat $contrat, $identifiant)
 {
     $dm = $this->get('doctrine_mongodb')->getManager();
     $contrat->resetFacturableMouvement($identifiant);
     $dm->flush();
     return $this->redirectToRoute('facture_societe', array('id' => $contrat->getSociete()->getId()));
 }
Beispiel #6
0
 public function import($file, OutputInterface $output)
 {
     $csvFile = new CsvFile($file);
     $progress = new ProgressBar($output, 100);
     $progress->start();
     $csv = $csvFile->getCsv();
     $configuration = $this->dm->getRepository('AppBundle:Configuration')->findConfiguration();
     $produitsArray = $configuration->getProduitsArray();
     $i = 0;
     $cptTotal = 0;
     foreach ($csv as $data) {
         $societe = $this->sm->getRepository()->findOneBy(array('identifiantReprise' => $data[self::CSV_ID_SOCIETE]));
         if (!$societe) {
             $output->writeln(sprintf("<error>La societe %s n'existe pas</error>", $data[self::CSV_ID_SOCIETE]));
             continue;
         }
         $contrat = $this->cm->getRepository()->findOneBy(array('identifiantReprise', $data[self::CSV_ID_CONTRAT]));
         if (!$contrat) {
             $contrat = new Contrat();
         } else {
             $output->writeln(sprintf("<error>Le contrat : %s existe déjà en base?</error>", $data[self::CSV_ID_CONTRAT]));
         }
         $contrat->setDateCreation(new \DateTime($data[self::CSV_DATE_CREATION]));
         $contrat->setSociete($societe);
         $contrat->setTvaReduite(boolval($data[self::CSV_TVA_REDUITE]));
         $type_contrat = ContratManager::$types_contrat_import_index[$data[self::CSV_TYPE_CONTRAT]];
         $contrat->setTypeContrat($type_contrat);
         $contrat->setReconduit(false);
         if ($data[self::CSV_DATE_DEBUT]) {
             $contrat->setDateDebut(new \DateTime($data[self::CSV_DATE_DEBUT]));
         }
         if ($data[self::CSV_DATE_ACCEPTATION]) {
             $contrat->setDateAcceptation(new \DateTime($data[self::CSV_DATE_ACCEPTATION]));
             $contrat->setStatut(ContratManager::STATUT_EN_COURS);
         } else {
             $contrat->setStatut(ContratManager::STATUT_EN_ATTENTE_ACCEPTATION);
         }
         if (!preg_match("/^[0-9+]+\$/", $data[self::CSV_DUREE])) {
             $output->writeln(sprintf("<error>La durée du contrat %s n'est pas correct : %s</error>", $data[self::CSV_ID_CONTRAT], $data[self::CSV_DUREE]));
             continue;
         }
         $contrat->setDuree($data[self::CSV_DUREE]);
         $contrat->setDureeGarantie($data[self::CSV_GARANTIE]);
         $contrat->setDateDebut(new \DateTime($data[self::CSV_DATE_DEBUT]));
         $dateFin = clone $contrat->getDateDebut();
         $dateFin->modify("+ " . $contrat->getDuree() . " month");
         $contrat->setDateFin($dateFin);
         $contrat->setNomenclature(str_replace('#', "\n", $data[self::CSV_NOMENCLATURE]));
         $contrat->setPrixHt($data[self::CSV_PRIXHT]);
         $contrat->setIdentifiantReprise($data[self::CSV_ID_CONTRAT]);
         if (is_integer($data[self::CSV_ARCHIVAGE])) {
             $contrat->setNumeroArchive(0);
         }
         $contrat->setNumeroArchive($data[self::CSV_ARCHIVAGE]);
         if ($data[self::CSV_ID_COMMERCIAL]) {
             $commercial = $this->um->getRepository()->findOneByIdentifiantReprise($data[self::CSV_ID_COMMERCIAL]);
             if ($commercial) {
                 $contrat->setCommercial($commercial);
             }
         }
         if ($data[self::CSV_ID_TECHNICIEN]) {
             $technicien = $this->um->getRepository()->findOneByIdentifiantReprise($data[self::CSV_ID_TECHNICIEN]);
             if ($technicien) {
                 $contrat->setTechnicien($technicien);
             }
         }
         if ($data[self::CSV_DATE_RESILIATION]) {
             $contrat->setDateResiliation(new \DateTime($data[self::CSV_DATE_RESILIATION]));
             $contrat->setStatut(ContratManager::STATUT_RESILIE);
         }
         $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->setNbTotalContrat(0);
                     $produitToAdd->setNbTotalContrat($produitQte);
                     $contrat->addProduit($produitToAdd);
                 }
             }
         }
         $this->dm->persist($contrat);
         $i++;
         $cptTotal++;
         if ($cptTotal % (count($csv) / 100) == 0) {
             $progress->advance();
         }
         if ($i >= 1000) {
             $this->dm->flush();
             $this->dm->clear();
             gc_collect_cycles();
             $i = 0;
         }
     }
     $this->dm->flush();
     $progress->finish();
 }