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

Dans les demandes de mise en paiement par lot, on filtre maintenant les...

Dans les demandes de mise en paiement par lot, on filtre maintenant les intervenants trop payés pour une composante donnée (#56770)
parent d76a8fd3
Loading
Loading
Loading
Loading
+37 −18
Original line number Diff line number Diff line
@@ -75,24 +75,34 @@ class ServiceAPayerService extends AbstractService
        ORDER BY i.prenom ASC
        ";


        /** @var TblPaiement[] $meps */
        $annee = $this->getServiceContext()->getAnnee();

        $dmeps                   = $this->getEntityManager()->createQuery($dql)->setParameters(['structure' => $structure, 'annee' => $annee])->getResult();

        $dmep                    = [];

        $intervenantsTotalHeures = [];
        foreach ($dmeps as $value) {
            /**
             * @var TblPaiement $value
             */
            if (empty($value->getMiseEnPaiement())) {
            $intervenant = $value->getIntervenant();
            if (!array_key_exists($intervenant->getId(), $intervenantsTotalHeures)) {
                $intervenantsTotalHeures[$intervenant->getId()]['heuresDemandees'] = 0;
                $intervenantsTotalHeures[$intervenant->getId()]['heuresAPayer']    = 0;
            }
            $intervenantsTotalHeures[$intervenant->getId()] ['heuresDemandees'] += $value->getHeuresDemandees();
            $intervenantsTotalHeures[$intervenant->getId()] ['heuresAPayer']    += $value->getHeuresAPayer();


            if (empty($value->getMiseEnPaiement())) {
                $workflowEtape = $this->getServiceWorkflow()->getEtape(WfEtape::CODE_DEMANDE_MEP, $intervenant, $value->getStructure());
                //Si l'étape de demande de mise en paiement n'est pas atteignable alors on ne le propose pas
                if (!$workflowEtape || !$workflowEtape->isAtteignable()) {
                    continue;
                }
                //On ne prend pas le référentiel dans les demandes de mise en paiement en lot
                if (!$value->getFormuleResultatServiceReferentiel()) {
                    if (!array_key_exists($intervenant->getId(), $dmep)) {

                        $dmep[$intervenant->getId()]['datasIntervenant'] = [
@@ -106,7 +116,7 @@ class ServiceAPayerService extends AbstractService
                        ];
                    }
                    //On prend uniquement les heures ou hetd qui ne sont pas du référentiel
                if (!$value->getFormuleResultatServiceReferentiel()) {

                    $dmep[$intervenant->getId()]['heures'][] = [
                        'heuresAPayer'       => $value->getHeuresAPayerAC() + $value->getHeuresAPayerAA(),
                        'missionId'          => ($value->getMission()) ? $value->getMission()->getId() : '',
@@ -125,6 +135,15 @@ class ServiceAPayerService extends AbstractService
            }
        }

        //On enlève les intervenants dont le nombre d'heures demandées en paiement est supérieur au nombre d'heure à payer
        foreach ($intervenantsTotalHeures as $intervenantId => $heures) {
            if ($heures['heuresDemandees'] > $heures['heuresAPayer']) {
                if (array_key_exists($intervenantId, $dmep)) {
                    unset($dmep[$intervenantId]);
                }
            }
        }

        return $dmep;
    }
}
 No newline at end of file