Loading module/Enseignement/src/Controller/EnseignementController.php +11 −2 Changes for module/Enseignement/src/Controller/EnseignementController.php: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -201,7 +201,8 @@ class EnseignementController extends AbstractController $form->saveToContext(); $this->getProcessusPlafond()->beginTransaction(); try { $this->em()->getConnection()->setAutoCommit(true); //Correction evite les autocommits pour un rollback fonctionnel. $this->em()->getConnection()->setAutoCommit(false); //Uniquement pour le service fait dans l'établissement $isExterne = false; Loading Loading @@ -229,7 +230,11 @@ class EnseignementController extends AbstractController $form->get('service')->get('id')->setValue($service->getId()); // transmet le nouvel ID $hFin = $service->getVolumeHoraireListe()->getHeures(); $this->updateTableauxBord($service->getIntervenant()); if (!$this->getProcessusPlafond()->endTransaction($service, $typeVolumeHoraire, $hFin < $hDeb)) { $entities = [$service]; foreach ($service->getVolumeHoraire() as $volumeHoraire) { $entities[] = $volumeHoraire; } if (!$this->getProcessusPlafond()->endTransaction($entities, $typeVolumeHoraire, $hFin < $hDeb)) { $this->updateTableauxBord($service->getIntervenant()); } } catch (\Exception $e) { Loading Loading @@ -258,6 +263,10 @@ class EnseignementController extends AbstractController 'validation_enseignement', 'contrat', 'service', 'plafond_intervenant', 'plafond_structure', 'plafond_referentiel', 'plafond_element', ], $intervenant); if (!$validation) { Loading module/Enseignement/src/Controller/VolumeHoraireController.php +14 −2 Changes for module/Enseignement/src/Controller/VolumeHoraireController.php: 14 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -144,7 +144,12 @@ class VolumeHoraireController extends AbstractController $this->getServiceService()->save($service); $hFin = $volumeHoraireListe->getHeures(); $this->updateTableauxBord($service->getIntervenant()); if (!$this->getProcessusPlafond()->endTransaction($service, $vhl->getTypeVolumeHoraire(), $hFin < $hDeb)) { $entities = [$service]; foreach ($service->getVolumeHoraire() as $volumeHoraire) { $entities[] = $volumeHoraire; } if (!$this->getProcessusPlafond()->endTransaction($entities, $vhl->getTypeVolumeHoraire(), $hFin < $hDeb)) { $this->updateTableauxBord($service->getIntervenant()); } else { $this->flashMessenger()->addSuccessMessage('Enregistrement effectué'); Loading Loading @@ -194,7 +199,14 @@ class VolumeHoraireController extends AbstractController private function updateTableauxBord(Intervenant $intervenant) { $this->getServiceWorkflow()->calculerTableauxBord([ 'formule', 'validation_enseignement', 'service', 'piece_jointe_fournie', 'formule', 'validation_enseignement', 'service', 'piece_jointe_fournie', 'plafond_intervenant', 'plafond_structure', 'plafond_referentiel', 'plafond_element', ], $intervenant); } Loading module/Plafond/src/Controller/DerogationController.php +1 −0 Changes for module/Plafond/src/Controller/DerogationController.php: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ class DerogationController extends AbstractController foreach ($reponse as $pc) { if (!isset($data[$pc->getId()])) { $data[$pc->getId()] = [ 'numero' => $pc->getNumero(), 'libelle' => $pc->getLibelle(), 'derogation' => floatToString($pc->getDerogation()), ]; Loading module/Plafond/src/Processus/PlafondProcessus.php +14 −4 Changes for module/Plafond/src/Processus/PlafondProcessus.php: 14 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -57,20 +57,30 @@ class PlafondProcessus extends AbstractProcessus * * @return bool */ public function endTransaction(PlafondDataInterface $entity, TypeVolumeHoraire $typeVolumeHoraire, bool $isDiminution = false): bool public function endTransaction(PlafondDataInterface|array $entities, TypeVolumeHoraire $typeVolumeHoraire, bool $isDiminution = false): bool { //$this->getEntityManager()->flush(); if (!is_array($entities)) { $entities = [$entities]; } if ($isDiminution) { $passed = true; // ça passe à tous les coups si on diminue le volume d'heures } else { $passed = $this->controle($entity, $typeVolumeHoraire, true); $passed = true; foreach ($entities as $entity) { if (!$this->controle($entity, $typeVolumeHoraire, true)) { $passed = false; } } } if ($passed) { try { $this->getEntityManager()->commit(); foreach ($entities as $entity) { $this->getServicePlafond()->calculerDepuisEntite($entity); // on met à jour les TBLs } }catch(ConnectionException $e){ $this->getEntityManager()->rollback(); } Loading module/Plafond/src/Service/PlafondService.php +9 −6 Changes for module/Plafond/src/Service/PlafondService.php: 9 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -341,13 +341,11 @@ class PlafondService extends AbstractEntityService $join .= "JOIN TYPE_INTERVENTION entity2 ON entity2.id = pd.TYPE_INTERVENTION_ID"; $libVal = "entity1.code || ' ' || entity2.code "; $groupBy = 'entity1.code, entity2.code'; //$filters[] = []; throw new \Exception('à finaliser'); foreach($entities as $entity){ $filters['pd.ELEMENT_PEDAGOGIQUE_ID'] = (int)$entity->getService()->getElementPedagogique()->getId(); $filters['pd.INTERVENANT_ID'] = (int)$entity->getService()->getIntervenant()->getId(); $filters['pd.TYPE_INTERVENTION_ID'] = (int)$entity->getTypeIntervention()->getId(); } $filters['pd.ELEMENT_PEDAGOGIQUE_ID'] = (int)$pqr->entity->getService()->getElementPedagogique()->getId(); $filters['pd.TYPE_INTERVENTION_ID'] = (int)$pqr->entity->getTypeIntervention()->getId(); break; case ServiceReferentiel::class: Loading @@ -360,6 +358,11 @@ class PlafondService extends AbstractEntityService } if ($fonction = $entity->getFonctionReferentiel()){ $fonctions[$fonction->getId()] = $fonction; //On regarde si la fonction referentiel à un parent $fonctionParent = $fonction->getParent() ?? null; if ($fonctionParent) { $fonctions[$fonctionParent->getId()] = $fonctionParent; } } } Loading Loading @@ -673,7 +676,7 @@ class PlafondService extends AbstractEntityService if ($entity instanceof VolumeHoraire) { if ($entity->getService()) { if ($entity->getService()->getElementPedagogique()) { $this->calculer(PlafondPerimetre::VOLUME_HORAIRE, 'ELEMENT_PEDAGOGIQUE_ID', $entity->getService()->getElementPedagogique()); $this->calculer(PlafondPerimetre::VOLUME_HORAIRE, 'ELEMENT_PEDAGOGIQUE_ID', $entity->getService()->getElementPedagogique()->getId()); } $this->calculerDepuisEntite($entity->getService()); Loading Loading
module/Enseignement/src/Controller/EnseignementController.php +11 −2 Changes for module/Enseignement/src/Controller/EnseignementController.php: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -201,7 +201,8 @@ class EnseignementController extends AbstractController $form->saveToContext(); $this->getProcessusPlafond()->beginTransaction(); try { $this->em()->getConnection()->setAutoCommit(true); //Correction evite les autocommits pour un rollback fonctionnel. $this->em()->getConnection()->setAutoCommit(false); //Uniquement pour le service fait dans l'établissement $isExterne = false; Loading Loading @@ -229,7 +230,11 @@ class EnseignementController extends AbstractController $form->get('service')->get('id')->setValue($service->getId()); // transmet le nouvel ID $hFin = $service->getVolumeHoraireListe()->getHeures(); $this->updateTableauxBord($service->getIntervenant()); if (!$this->getProcessusPlafond()->endTransaction($service, $typeVolumeHoraire, $hFin < $hDeb)) { $entities = [$service]; foreach ($service->getVolumeHoraire() as $volumeHoraire) { $entities[] = $volumeHoraire; } if (!$this->getProcessusPlafond()->endTransaction($entities, $typeVolumeHoraire, $hFin < $hDeb)) { $this->updateTableauxBord($service->getIntervenant()); } } catch (\Exception $e) { Loading Loading @@ -258,6 +263,10 @@ class EnseignementController extends AbstractController 'validation_enseignement', 'contrat', 'service', 'plafond_intervenant', 'plafond_structure', 'plafond_referentiel', 'plafond_element', ], $intervenant); if (!$validation) { Loading
module/Enseignement/src/Controller/VolumeHoraireController.php +14 −2 Changes for module/Enseignement/src/Controller/VolumeHoraireController.php: 14 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -144,7 +144,12 @@ class VolumeHoraireController extends AbstractController $this->getServiceService()->save($service); $hFin = $volumeHoraireListe->getHeures(); $this->updateTableauxBord($service->getIntervenant()); if (!$this->getProcessusPlafond()->endTransaction($service, $vhl->getTypeVolumeHoraire(), $hFin < $hDeb)) { $entities = [$service]; foreach ($service->getVolumeHoraire() as $volumeHoraire) { $entities[] = $volumeHoraire; } if (!$this->getProcessusPlafond()->endTransaction($entities, $vhl->getTypeVolumeHoraire(), $hFin < $hDeb)) { $this->updateTableauxBord($service->getIntervenant()); } else { $this->flashMessenger()->addSuccessMessage('Enregistrement effectué'); Loading Loading @@ -194,7 +199,14 @@ class VolumeHoraireController extends AbstractController private function updateTableauxBord(Intervenant $intervenant) { $this->getServiceWorkflow()->calculerTableauxBord([ 'formule', 'validation_enseignement', 'service', 'piece_jointe_fournie', 'formule', 'validation_enseignement', 'service', 'piece_jointe_fournie', 'plafond_intervenant', 'plafond_structure', 'plafond_referentiel', 'plafond_element', ], $intervenant); } Loading
module/Plafond/src/Controller/DerogationController.php +1 −0 Changes for module/Plafond/src/Controller/DerogationController.php: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ class DerogationController extends AbstractController foreach ($reponse as $pc) { if (!isset($data[$pc->getId()])) { $data[$pc->getId()] = [ 'numero' => $pc->getNumero(), 'libelle' => $pc->getLibelle(), 'derogation' => floatToString($pc->getDerogation()), ]; Loading
module/Plafond/src/Processus/PlafondProcessus.php +14 −4 Changes for module/Plafond/src/Processus/PlafondProcessus.php: 14 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -57,20 +57,30 @@ class PlafondProcessus extends AbstractProcessus * * @return bool */ public function endTransaction(PlafondDataInterface $entity, TypeVolumeHoraire $typeVolumeHoraire, bool $isDiminution = false): bool public function endTransaction(PlafondDataInterface|array $entities, TypeVolumeHoraire $typeVolumeHoraire, bool $isDiminution = false): bool { //$this->getEntityManager()->flush(); if (!is_array($entities)) { $entities = [$entities]; } if ($isDiminution) { $passed = true; // ça passe à tous les coups si on diminue le volume d'heures } else { $passed = $this->controle($entity, $typeVolumeHoraire, true); $passed = true; foreach ($entities as $entity) { if (!$this->controle($entity, $typeVolumeHoraire, true)) { $passed = false; } } } if ($passed) { try { $this->getEntityManager()->commit(); foreach ($entities as $entity) { $this->getServicePlafond()->calculerDepuisEntite($entity); // on met à jour les TBLs } }catch(ConnectionException $e){ $this->getEntityManager()->rollback(); } Loading
module/Plafond/src/Service/PlafondService.php +9 −6 Changes for module/Plafond/src/Service/PlafondService.php: 9 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -341,13 +341,11 @@ class PlafondService extends AbstractEntityService $join .= "JOIN TYPE_INTERVENTION entity2 ON entity2.id = pd.TYPE_INTERVENTION_ID"; $libVal = "entity1.code || ' ' || entity2.code "; $groupBy = 'entity1.code, entity2.code'; //$filters[] = []; throw new \Exception('à finaliser'); foreach($entities as $entity){ $filters['pd.ELEMENT_PEDAGOGIQUE_ID'] = (int)$entity->getService()->getElementPedagogique()->getId(); $filters['pd.INTERVENANT_ID'] = (int)$entity->getService()->getIntervenant()->getId(); $filters['pd.TYPE_INTERVENTION_ID'] = (int)$entity->getTypeIntervention()->getId(); } $filters['pd.ELEMENT_PEDAGOGIQUE_ID'] = (int)$pqr->entity->getService()->getElementPedagogique()->getId(); $filters['pd.TYPE_INTERVENTION_ID'] = (int)$pqr->entity->getTypeIntervention()->getId(); break; case ServiceReferentiel::class: Loading @@ -360,6 +358,11 @@ class PlafondService extends AbstractEntityService } if ($fonction = $entity->getFonctionReferentiel()){ $fonctions[$fonction->getId()] = $fonction; //On regarde si la fonction referentiel à un parent $fonctionParent = $fonction->getParent() ?? null; if ($fonctionParent) { $fonctions[$fonctionParent->getId()] = $fonctionParent; } } } Loading Loading @@ -673,7 +676,7 @@ class PlafondService extends AbstractEntityService if ($entity instanceof VolumeHoraire) { if ($entity->getService()) { if ($entity->getService()->getElementPedagogique()) { $this->calculer(PlafondPerimetre::VOLUME_HORAIRE, 'ELEMENT_PEDAGOGIQUE_ID', $entity->getService()->getElementPedagogique()); $this->calculer(PlafondPerimetre::VOLUME_HORAIRE, 'ELEMENT_PEDAGOGIQUE_ID', $entity->getService()->getElementPedagogique()->getId()); } $this->calculerDepuisEntite($entity->getService()); Loading