Commit cd62e119 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Corrections diverses sur les plafonds

parent 79e69ac7
Loading
Loading
Loading
Loading
Loading
+11 −2
Changes for module/Enseignement/src/Controller/EnseignementController.php: 11 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -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;
@@ -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) {
@@ -258,6 +263,10 @@ class EnseignementController extends AbstractController
            'validation_enseignement',
            'contrat',
            'service',
            'plafond_intervenant',
            'plafond_structure',
            'plafond_referentiel',
            'plafond_element',
        ], $intervenant);

        if (!$validation) {
+14 −2
Changes for module/Enseignement/src/Controller/VolumeHoraireController.php: 14 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -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é');
@@ -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);
    }

+1 −0
Changes for module/Plafond/src/Controller/DerogationController.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -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()),
                    ];
+14 −4
Changes for module/Plafond/src/Processus/PlafondProcessus.php: 14 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -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();
            }
+9 −6
Changes for module/Plafond/src/Service/PlafondService.php: 9 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -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:
@@ -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;
                        }
                    }
                }

@@ -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