Commit 4fcc1afd authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

La constatation d'heures réalisées à partir du prévisionnel tient maintenant...

La constatation d'heures réalisées à partir du prévisionnel tient maintenant compte des horaires et des motifs de non paiements (#39202)
parent 099fcbbf
......@@ -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
......
......@@ -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
......
......@@ -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;
......@@ -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,
];
$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;
}
foreach ($periodes as $periode) {
$prevus->setPeriode($periode);
$realises->setPeriode($periode);
foreach ($typesIntervention as $typeIntervention) {
$prevus->setTypeIntervention($typeIntervention);
$realises->setTypeIntervention($typeIntervention);
foreach ($listes as $liste) {
if (isset($liste['prev'])) {
$heures = $liste['prev']->getHeures();
} else {
$heures = 0;
}
$realises->setHeures($prevus->getHeures());
if (!isset($liste['real'])) {
$liste['real'] = $realises->createChild()->filterByVolumeHoraireListe($liste['prev']);
}
$liste['real']->setHeures($heures);
}
$this->save($service);
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment