Loading code/formules/testArrondisseurMassif.php 0 → 100644 +90 −0 Changes for code/formules/testArrondisseurMassif.php: 90 added lines, 0 removed lines. Original line number Diff line number Diff line <?php /** * @var $this \Application\View\Renderer\PhpRenderer * @var $container \Psr\Container\ContainerInterface */ use Unicaen\BddAdmin\Bdd; use Formule\Service\FormuleService; use Formule\Service\TestService; use Formule\Model\Arrondisseur\Testeur; use Formule\Entity\FormuleIntervenant; $bdd = $container->get(Bdd::class); $testTablename = 'TEST_ARR'; if (!$bdd->table()->exists($testTablename)) { $sql = "create table test_arr as select i.annee_id, fri.intervenant_id, fri.type_volume_horaire_id, fri.etat_volume_horaire_id, 0 passe, 0 err_none, 0 err_minimal, 0 err_full, 0 err_custom_min, 0 err_custom_full from formule_resultat_intervenant fri JOIN intervenant i ON i.id = fri.intervenant_id"; $bdd->exec($sql); } $fs = $container->get(FormuleService::class); $ts = $container->get(TestService::class); $testeur = new Testeur(); $sql = "SELECT * FROM test_arr WHERE annee_id = 2024 AND passe = 0"; $data = $bdd->select($sql, [], ['case' => CASE_LOWER]); $nb = 0; $count = count($data); foreach ($data as $d) { $nb++; echo "Item $nb / $count ...\n"; $intervenantId = (int)$d['intervenant_id']; $typeVolumeHoraireId = (int)$d['type_volume_horaire_id']; $etatVolumeHoraireId = (int)$d['etat_volume_horaire_id']; $fi = $fs->getFormuleServiceIntervenant($intervenantId, $typeVolumeHoraireId, $etatVolumeHoraireId); $resKey = [ 'INTERVENANT_ID' => $intervenantId, 'TYPE_VOLUME_HORAIRE_ID' => $typeVolumeHoraireId, 'ETAT_VOLUME_HORAIRE_ID' => $etatVolumeHoraireId, ]; $resData = [ 'PASSE' => 1, 'ERR_NONE' => 0, 'ERR_MINIMAL' => 0, 'ERR_FULL' => 0, 'ERR_CUSTOM_MIN' => 0, 'ERR_CUSTOM_FULL' => 0, ]; $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_NO); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_NONE'] = $testeur->tester($trace); $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_MINIMAL); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_MINIMAL'] = $testeur->tester($trace); $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_FULL); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_FULL'] = $testeur->tester($trace); $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_CUSTOM); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_CUSTOM_FULL'] = $testeur->tester($trace); $bdd->getTable($testTablename)->update($resData, $resKey); } module/Formule/src/Model/Arrondisseur/Arrondisseur.php +38 −6 Changes for module/Formule/src/Model/Arrondisseur/Arrondisseur.php: 38 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ class Arrondisseur protected function preparerCalculs(Ligne $data): void { $this->preparationHorizontale($data); $this->preparationVerticale($data); $this->preparationHorizontaleDescendante($data); $this->preparationVerticaleDescendante($data); } Loading @@ -76,7 +76,7 @@ class Arrondisseur { $services = $data->getSubs(); foreach ($services as $service) { $this->preparationVerticale($service); $this->preparationVerticaleDescendante($service); } } Loading @@ -84,12 +84,44 @@ class Arrondisseur protected function preparerCalculsCustom(Ligne $data): void { $services = $data->getSubs(); foreach ($services as $service) { $vhs = $service->getSubs(); foreach( $vhs as $vh ){ $this->preparationHorizontaleMontante($vh); } } } protected function preparationHorizontaleMontante(Ligne $data): void { // Sous-total par catégorie foreach (Ligne::CATEGORIES as $categorie) { // Sous-sous-total par enseignement FI/FA/FC $ceth = $this->addCalcul($data->getValeur($categorie . Ligne::TYPE_ENSEIGNEMENT)); foreach (Ligne::TYPES_ENSEIGNEMENT as $type) { $ceth->addValeur($data->getValeur($categorie . $type)); } // calcul par catégorie $cc = $this->addCalcul($data->getValeur($categorie)); $cc->addValeur($data->getValeur($categorie . Ligne::TYPE_ENSEIGNEMENT)); $cc->addValeur($data->getValeur($categorie . Ligne::TYPE_REFERENTIEL)); } /* le total général est recalculé */ $totalGeneral = $data->getValeur(Ligne::CAT_TYPE_PRIME)->getValueFinale(); foreach (Ligne::CATEGORIES as $categorie) { $totalGeneral += $data->getValeur($categorie)->getValueFinale(); } $data->getValeur(Ligne::TOTAL)->setValue(round($totalGeneral, 2)); } protected function preparationHorizontale(Ligne $data): void protected function preparationHorizontaleDescendante(Ligne $data): void { // Sous-total par catégorie foreach (Ligne::CATEGORIES as $categorie) { Loading @@ -114,7 +146,7 @@ class Arrondisseur protected function preparationVerticale(Ligne $data): void protected function preparationVerticaleDescendante(Ligne $data): void { $subs = $data->getSubs(); Loading Loading @@ -143,7 +175,7 @@ class Arrondisseur if ($sv->getDiff() !== 0) { $noDiff = false; } $this->preparationVerticale($sub); $this->preparationVerticaleDescendante($sub); } if ($noDiff) { $v->setDiff(0); Loading Loading
code/formules/testArrondisseurMassif.php 0 → 100644 +90 −0 Changes for code/formules/testArrondisseurMassif.php: 90 added lines, 0 removed lines. Original line number Diff line number Diff line <?php /** * @var $this \Application\View\Renderer\PhpRenderer * @var $container \Psr\Container\ContainerInterface */ use Unicaen\BddAdmin\Bdd; use Formule\Service\FormuleService; use Formule\Service\TestService; use Formule\Model\Arrondisseur\Testeur; use Formule\Entity\FormuleIntervenant; $bdd = $container->get(Bdd::class); $testTablename = 'TEST_ARR'; if (!$bdd->table()->exists($testTablename)) { $sql = "create table test_arr as select i.annee_id, fri.intervenant_id, fri.type_volume_horaire_id, fri.etat_volume_horaire_id, 0 passe, 0 err_none, 0 err_minimal, 0 err_full, 0 err_custom_min, 0 err_custom_full from formule_resultat_intervenant fri JOIN intervenant i ON i.id = fri.intervenant_id"; $bdd->exec($sql); } $fs = $container->get(FormuleService::class); $ts = $container->get(TestService::class); $testeur = new Testeur(); $sql = "SELECT * FROM test_arr WHERE annee_id = 2024 AND passe = 0"; $data = $bdd->select($sql, [], ['case' => CASE_LOWER]); $nb = 0; $count = count($data); foreach ($data as $d) { $nb++; echo "Item $nb / $count ...\n"; $intervenantId = (int)$d['intervenant_id']; $typeVolumeHoraireId = (int)$d['type_volume_horaire_id']; $etatVolumeHoraireId = (int)$d['etat_volume_horaire_id']; $fi = $fs->getFormuleServiceIntervenant($intervenantId, $typeVolumeHoraireId, $etatVolumeHoraireId); $resKey = [ 'INTERVENANT_ID' => $intervenantId, 'TYPE_VOLUME_HORAIRE_ID' => $typeVolumeHoraireId, 'ETAT_VOLUME_HORAIRE_ID' => $etatVolumeHoraireId, ]; $resData = [ 'PASSE' => 1, 'ERR_NONE' => 0, 'ERR_MINIMAL' => 0, 'ERR_FULL' => 0, 'ERR_CUSTOM_MIN' => 0, 'ERR_CUSTOM_FULL' => 0, ]; $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_NO); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_NONE'] = $testeur->tester($trace); $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_MINIMAL); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_MINIMAL'] = $testeur->tester($trace); $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_FULL); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_FULL'] = $testeur->tester($trace); $fi->setArrondisseur(FormuleIntervenant::ARRONDISSEUR_CUSTOM); $ts->getServiceFormule()->calculer($fi); $trace = $fi->getArrondisseurTrace(); $resData['ERR_CUSTOM_FULL'] = $testeur->tester($trace); $bdd->getTable($testTablename)->update($resData, $resKey); }
module/Formule/src/Model/Arrondisseur/Arrondisseur.php +38 −6 Changes for module/Formule/src/Model/Arrondisseur/Arrondisseur.php: 38 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ class Arrondisseur protected function preparerCalculs(Ligne $data): void { $this->preparationHorizontale($data); $this->preparationVerticale($data); $this->preparationHorizontaleDescendante($data); $this->preparationVerticaleDescendante($data); } Loading @@ -76,7 +76,7 @@ class Arrondisseur { $services = $data->getSubs(); foreach ($services as $service) { $this->preparationVerticale($service); $this->preparationVerticaleDescendante($service); } } Loading @@ -84,12 +84,44 @@ class Arrondisseur protected function preparerCalculsCustom(Ligne $data): void { $services = $data->getSubs(); foreach ($services as $service) { $vhs = $service->getSubs(); foreach( $vhs as $vh ){ $this->preparationHorizontaleMontante($vh); } } } protected function preparationHorizontaleMontante(Ligne $data): void { // Sous-total par catégorie foreach (Ligne::CATEGORIES as $categorie) { // Sous-sous-total par enseignement FI/FA/FC $ceth = $this->addCalcul($data->getValeur($categorie . Ligne::TYPE_ENSEIGNEMENT)); foreach (Ligne::TYPES_ENSEIGNEMENT as $type) { $ceth->addValeur($data->getValeur($categorie . $type)); } // calcul par catégorie $cc = $this->addCalcul($data->getValeur($categorie)); $cc->addValeur($data->getValeur($categorie . Ligne::TYPE_ENSEIGNEMENT)); $cc->addValeur($data->getValeur($categorie . Ligne::TYPE_REFERENTIEL)); } /* le total général est recalculé */ $totalGeneral = $data->getValeur(Ligne::CAT_TYPE_PRIME)->getValueFinale(); foreach (Ligne::CATEGORIES as $categorie) { $totalGeneral += $data->getValeur($categorie)->getValueFinale(); } $data->getValeur(Ligne::TOTAL)->setValue(round($totalGeneral, 2)); } protected function preparationHorizontale(Ligne $data): void protected function preparationHorizontaleDescendante(Ligne $data): void { // Sous-total par catégorie foreach (Ligne::CATEGORIES as $categorie) { Loading @@ -114,7 +146,7 @@ class Arrondisseur protected function preparationVerticale(Ligne $data): void protected function preparationVerticaleDescendante(Ligne $data): void { $subs = $data->getSubs(); Loading Loading @@ -143,7 +175,7 @@ class Arrondisseur if ($sv->getDiff() !== 0) { $noDiff = false; } $this->preparationVerticale($sub); $this->preparationVerticaleDescendante($sub); } if ($noDiff) { $v->setDiff(0); Loading