Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ Objectif : Plafonds personnalisables * Correction sur la complétude des données personnelles lorsque la case 'INSEE provisoire' est cochée (#41141). * Les modifications de motifs de non paiement fonctionnement de nouveau en mode calendaire (#40037) * L'autovalidation fonctionne maintenant pour le référentiel (#41149) * La constatation d'heures réalisées à partir du prévisionnel tient maintenant compte des horaires et des motifs de non paiements (#39202) ## Notes de mise à jour Loading module/Application/src/Application/Entity/VolumeHoraireListe.php +50 −0 Original line number Diff line number Diff line Loading @@ -654,6 +654,56 @@ class VolumeHoraireListe /** * @param VolumeHoraireListe $vhl * @param array $filtres * * @return VolumeHoraireListe */ public function filterByVolumeHoraireListe(VolumeHoraireListe $vhl, array $filtres = []): VolumeHoraireListe { if (in_array(self::FILTRE_CONTRAT, $filtres)) { $this->setContrat($vhl->getContrat()); } if (in_array(self::FILTRE_ETAT_VOLUME_HORAIRE, $filtres)) { $this->setEtatVolumeHoraire($vhl->getEtatVolumeHoraire()); } if (in_array(self::FILTRE_HISTORIQUE, $filtres)) { $this->setFilterByHistorique($vhl->getFilterByHistorique()); } if (in_array(self::FILTRE_NEW, $filtres)) { $this->setNew($vhl->getNew()); } if (in_array(self::FILTRE_HORAIRE_DEBUT, $filtres)) { $this->setHoraireDebut($vhl->getHoraireDebut()); } if (in_array(self::FILTRE_HORAIRE_FIN, $filtres)) { $this->setHoraireFin($vhl->getHoraireFin()); } if (in_array(self::FILTRE_MOTIF_NON_PAIEMENT, $filtres)) { $this->setMotifNonPaiement($vhl->getMotifNonPaiement()); } if (in_array(self::FILTRE_PERIODE, $filtres)) { $this->setPeriode($vhl->getPeriode()); } if (in_array(self::FILTRE_SOURCE, $filtres)) { $this->setSource($vhl->getSource()); } if (in_array(self::FILTRE_TYPE_INTERVENTION, $filtres)) { $this->setTypeIntervention($vhl->getTypeIntervention()); } if (in_array(self::FILTRE_TYPE_VOLUME_HORAIRE, $filtres)) { $this->setTypeVolumeHoraire($vhl->getTypeVolumeHoraire()); } if (in_array(self::FILTRE_VALIDATION, $filtres)) { $this->setValidation($vhl->getValidation()); } return $this; } /** * * @return type Loading module/Application/src/Application/Service/ServiceService.php +29 −9 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ use Application\Entity\Db\TypeIntervenant; use Application\Entity\Db\TypeVolumeHoraire; use Application\Entity\NiveauEtape; use Application\Entity\Service\Recherche; use Application\Entity\VolumeHoraireListe; use Application\Form\Service\RechercheHydrator; use Application\Hydrator\Service\Traits\RechercheHydratorAwareTrait; use Application\Provider\Privilege\Privileges; Loading Loading @@ -762,19 +763,38 @@ class ServiceService extends AbstractEntityService ->setTypeVolumeHoraire($this->getServiceTypeVolumeHoraire()->getRealise()) ->setEtatVolumeHoraire($this->getServiceEtatVolumeHoraire()->getSaisi()); $typesIntervention = $prevus->getTypesIntervention() + $realises->getTypesIntervention(); $periodes = $prevus->getPeriodes() + $realises->getPeriodes(); $filtres = [ VolumeHoraireListe::FILTRE_PERIODE, VolumeHoraireListe::FILTRE_TYPE_INTERVENTION, VolumeHoraireListe::FILTRE_MOTIF_NON_PAIEMENT, VolumeHoraireListe::FILTRE_HORAIRE_DEBUT, VolumeHoraireListe::FILTRE_HORAIRE_FIN, ]; foreach ($periodes as $periode) { $prevus->setPeriode($periode); $realises->setPeriode($periode); foreach ($typesIntervention as $typeIntervention) { $prevus->setTypeIntervention($typeIntervention); $realises->setTypeIntervention($typeIntervention); $listes = []; $prevListes = $prevus->getSousListes($filtres); foreach ($prevListes as $id => $prevListe) { $listes[$id]['prev'] = $prevListe; } $realListes = $realises->getSousListes($filtres); foreach ($realListes as $id => $realListe) { $listes[$id]['real'] = $realListe; } $realises->setHeures($prevus->getHeures()); foreach ($listes as $liste) { if (isset($liste['prev'])) { $heures = $liste['prev']->getHeures(); } else { $heures = 0; } if (!isset($liste['real'])) { $liste['real'] = $realises->createChild()->filterByVolumeHoraireListe($liste['prev']); } $liste['real']->setHeures($heures); } $this->save($service); } Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ Objectif : Plafonds personnalisables * Correction sur la complétude des données personnelles lorsque la case 'INSEE provisoire' est cochée (#41141). * Les modifications de motifs de non paiement fonctionnement de nouveau en mode calendaire (#40037) * L'autovalidation fonctionne maintenant pour le référentiel (#41149) * La constatation d'heures réalisées à partir du prévisionnel tient maintenant compte des horaires et des motifs de non paiements (#39202) ## Notes de mise à jour Loading
module/Application/src/Application/Entity/VolumeHoraireListe.php +50 −0 Original line number Diff line number Diff line Loading @@ -654,6 +654,56 @@ class VolumeHoraireListe /** * @param VolumeHoraireListe $vhl * @param array $filtres * * @return VolumeHoraireListe */ public function filterByVolumeHoraireListe(VolumeHoraireListe $vhl, array $filtres = []): VolumeHoraireListe { if (in_array(self::FILTRE_CONTRAT, $filtres)) { $this->setContrat($vhl->getContrat()); } if (in_array(self::FILTRE_ETAT_VOLUME_HORAIRE, $filtres)) { $this->setEtatVolumeHoraire($vhl->getEtatVolumeHoraire()); } if (in_array(self::FILTRE_HISTORIQUE, $filtres)) { $this->setFilterByHistorique($vhl->getFilterByHistorique()); } if (in_array(self::FILTRE_NEW, $filtres)) { $this->setNew($vhl->getNew()); } if (in_array(self::FILTRE_HORAIRE_DEBUT, $filtres)) { $this->setHoraireDebut($vhl->getHoraireDebut()); } if (in_array(self::FILTRE_HORAIRE_FIN, $filtres)) { $this->setHoraireFin($vhl->getHoraireFin()); } if (in_array(self::FILTRE_MOTIF_NON_PAIEMENT, $filtres)) { $this->setMotifNonPaiement($vhl->getMotifNonPaiement()); } if (in_array(self::FILTRE_PERIODE, $filtres)) { $this->setPeriode($vhl->getPeriode()); } if (in_array(self::FILTRE_SOURCE, $filtres)) { $this->setSource($vhl->getSource()); } if (in_array(self::FILTRE_TYPE_INTERVENTION, $filtres)) { $this->setTypeIntervention($vhl->getTypeIntervention()); } if (in_array(self::FILTRE_TYPE_VOLUME_HORAIRE, $filtres)) { $this->setTypeVolumeHoraire($vhl->getTypeVolumeHoraire()); } if (in_array(self::FILTRE_VALIDATION, $filtres)) { $this->setValidation($vhl->getValidation()); } return $this; } /** * * @return type Loading
module/Application/src/Application/Service/ServiceService.php +29 −9 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ use Application\Entity\Db\TypeIntervenant; use Application\Entity\Db\TypeVolumeHoraire; use Application\Entity\NiveauEtape; use Application\Entity\Service\Recherche; use Application\Entity\VolumeHoraireListe; use Application\Form\Service\RechercheHydrator; use Application\Hydrator\Service\Traits\RechercheHydratorAwareTrait; use Application\Provider\Privilege\Privileges; Loading Loading @@ -762,19 +763,38 @@ class ServiceService extends AbstractEntityService ->setTypeVolumeHoraire($this->getServiceTypeVolumeHoraire()->getRealise()) ->setEtatVolumeHoraire($this->getServiceEtatVolumeHoraire()->getSaisi()); $typesIntervention = $prevus->getTypesIntervention() + $realises->getTypesIntervention(); $periodes = $prevus->getPeriodes() + $realises->getPeriodes(); $filtres = [ VolumeHoraireListe::FILTRE_PERIODE, VolumeHoraireListe::FILTRE_TYPE_INTERVENTION, VolumeHoraireListe::FILTRE_MOTIF_NON_PAIEMENT, VolumeHoraireListe::FILTRE_HORAIRE_DEBUT, VolumeHoraireListe::FILTRE_HORAIRE_FIN, ]; foreach ($periodes as $periode) { $prevus->setPeriode($periode); $realises->setPeriode($periode); foreach ($typesIntervention as $typeIntervention) { $prevus->setTypeIntervention($typeIntervention); $realises->setTypeIntervention($typeIntervention); $listes = []; $prevListes = $prevus->getSousListes($filtres); foreach ($prevListes as $id => $prevListe) { $listes[$id]['prev'] = $prevListe; } $realListes = $realises->getSousListes($filtres); foreach ($realListes as $id => $realListe) { $listes[$id]['real'] = $realListe; } $realises->setHeures($prevus->getHeures()); foreach ($listes as $liste) { if (isset($liste['prev'])) { $heures = $liste['prev']->getHeures(); } else { $heures = 0; } if (!isset($liste['real'])) { $liste['real'] = $realises->createChild()->filterByVolumeHoraireListe($liste['prev']); } $liste['real']->setHeures($heures); } $this->save($service); } Loading