Commit 4c068b29 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Séparation prévu/réalisé pour les volumes horaires

parent 4e65d2b7
Loading
Loading
Loading
Loading
+2 −2
Changes for front/Mission/Mission.vue: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@
                            {{ mission.contrat ? 'Contrat établi' : 'Pas de contrat' }}
                        </div>
                        <div>
                            Aucune heure réalisée
                            {{ mission.heuresRealisees}} heure{{ mission.heuresRealisees < 2 ? '' : 's' }} réalisée{{ mission.heuresRealisees < 2 ? '' : 's' }}
                        </div>
                    </div>
                </div>
@@ -111,7 +111,7 @@
                </tr>
                </thead>
                <tbody>
                <tr v-for="vh in mission.volumesHoraires" :key="vh.id">
                <tr v-for="vh in mission.volumesHorairesPrevus" :key="vh.id">
                    <td style="text-align: right">
                        <u-heures :valeur="vh.heures"/>
                    </td>
+40 −6
Changes for module/Mission/src/Entity/Db/Mission.php: 40 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -65,7 +65,8 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra
            'histoCreateur',
            'heures',
            'heuresValidees',
            'volumesHoraires',
            'heuresRealisees',
            'volumesHorairesPrevus',
            'contrat',
            'valide',
            'validation',
@@ -294,7 +295,7 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra
    public function addValidation(Validation $validation): self
    {
        $this->validations[] = $validation;
        foreach ($this->getVolumesHoraires() as $vh) {
        foreach ($this->getVolumesHorairesPrevus() as $vh) {
            if (!$vh->isValide()) {
                $vh->addValidation($validation);
            }
@@ -308,7 +309,7 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra
    public function removeValidation(Validation $validation): self
    {
        $this->validations->removeElement($validation);
        foreach ($this->getVolumesHoraires() as $vh) {
        foreach ($this->getVolumesHorairesPrevus() as $vh) {
            $vh->removeValidation($validation);
        }

@@ -366,9 +367,26 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra



    public function getVolumesHoraires(): Collection
    /**
     * @return Collection|VolumeHoraireMission[]
     */
    public function getVolumesHorairesPrevus(): Collection
    {
        return $this->volumesHoraires;
        return $this->volumesHoraires->filter(function(VolumeHoraireMission $vhm){
            return $vhm->getTypeVolumeHoraire()->isPrevu();
        });
    }



    /**
     * @return Collection|VolumeHoraireMission[]
     */
    public function getVolumesHorairesRealises(): Collection
    {
        return $this->volumesHoraires->filter(function(VolumeHoraireMission $vhm){
            return $vhm->getTypeVolumeHoraire()->isRealise();
        });
    }


@@ -394,7 +412,7 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra
    public function hasContrat(): bool
    {
        /** @var VolumeHoraireMission[] $vhs */
        $vhs = $this->getVolumesHoraires();
        $vhs = $this->getVolumesHorairesPrevus();

        foreach ($vhs as $vh) {
            if ($vh->estNonHistorise() && $vh->getContrat() && $vh->getContrat()->estNonHistorise()) {
@@ -406,6 +424,22 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra
    }


    public function heuresRealisees(): float
    {
        $vhs = $this->getVolumesHorairesRealises();

        $heures = 0;

        foreach ($vhs as $vh) {
            if ($vh->estNonHistorise()) {
                $heures += $vh->getHeures();
            }
        }

        return $heures;
    }



    public function canSaisie(): bool
    {
+4 −6
Changes for module/Mission/src/Service/MissionService.php: 4 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -54,15 +54,15 @@ class MissionService extends AbstractEntityService
    {
        $dql = "
        SELECT 
          m, tm, str, tr, valid, vh, vvh, ctr
          m, tm, str, tr, valid, vh, vvh, ctr, tvh
        FROM 
          " . Mission::class . " m
          JOIN m.typeMission tm
          JOIN m.structure str
          JOIN m.tauxRemu tr
          JOIN " . TypeVolumeHoraire::class . " tvh WITH tvh.code = :typeVolumeHorairePrevu
          LEFT JOIN m.validations valid WITH valid.histoDestruction IS NULL
          LEFT JOIN m.volumesHoraires vh WITH vh.histoDestruction IS NULL AND vh.typeVolumeHoraire = tvh
          LEFT JOIN m.volumesHoraires vh WITH vh.histoDestruction IS NULL
          LEFT JOIN vh.typeVolumeHoraire tvh
          LEFT JOIN vh.validations vvh WITH vvh.histoDestruction IS NULL
          LEFT JOIN vh.contrat ctr WITH ctr.histoDestruction IS NULL
        WHERE 
@@ -76,8 +76,6 @@ class MissionService extends AbstractEntityService
          vh.histoCreation
        ";

        $parameters['typeVolumeHorairePrevu'] = TypeVolumeHoraire::CODE_PREVU;

        return $this->getEntityManager()->createQuery($dql)->setParameters($parameters);
    }

@@ -140,7 +138,7 @@ class MissionService extends AbstractEntityService
     */
    public function save($entity)
    {
        foreach ($entity->getVolumesHoraires() as $vh) {
        foreach ($entity->getVolumesHorairesPrevus() as $vh) {
            $this->saveVolumeHoraire($vh);
        }