Skip to content
Snippets Groups Projects
Commit 22bbaa0e authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

#46387

on peut saisir des dérogations avant d'avoir des heures à plafonner
parent 284e438a
Branches
Tags
No related merge requests found
......@@ -107,25 +107,43 @@ class PlafondService extends AbstractEntityService
/**
* @param TypeVolumeHoraire $typeVolumeHoraire
* @param Structure|Intervenant|ElementPedagogique|VolumeHoraire|FonctionReferentiel $entity
*
* @return PlafondControle[]
*/
public function derogations(TypeVolumeHoraire $typeVolumeHoraire, Intervenant $intervenant): array
{
$sqls = [];
$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, null, false, false, false);
//$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::STRUCTURE, false, false, false);
//$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::ELEMENT, false, false, false);
//$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::REFERENTIEL, false, false, false);
//$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::VOLUME_HORAIRE, false, false, false);
$sql = "
SELECT
p.id id,
p.numero numero,
p.libelle libelle,
p.message message,
pp.code perimetre,
pe.code etat,
CASE pe.code WHEN 'bloquant' THEN 1 ELSE 0 END bloquant,
CASE WHEN COALESCE(tpi.heures,0) - ps.heures > 0 THEN 1 ELSE 0 END depassement,
COALESCE(tpi.heures,0) heures,
ps.heures plafond,
COALESCE(pd.heures,0) derogation
FROM
intervenant i
JOIN type_volume_horaire tvh ON 1=1
JOIN statut s ON s.id = i.statut_id
JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.histo_destruction IS NULL
JOIN plafond p ON p.id = ps.plafond_id
JOIN plafond_perimetre pp ON pp.id = p.plafond_perimetre_id
JOIN plafond_etat pe ON pe.id = CASE tvh.code WHEN 'PREVU' THEN ps.plafond_etat_prevu_id WHEN 'REALISE' THEN ps.plafond_etat_realise_id ELSE 0 END
LEFT JOIN tbl_plafond_intervenant tpi ON tpi.intervenant_id = i.id AND tpi.plafond_id = p.id AND tpi.type_volume_horaire_id = tvh.id
LEFT JOIN plafond_derogation pd ON pd.histo_destruction IS NULL AND pd.intervenant_id = i.id AND pd.plafond_id = p.id
WHERE
i.id = :intervenant
AND tvh.id = :typeVolumeHoraire
AND pe.code NOT IN ('desactive', 'indicateur')
";
$sql = implode("\n\nUNION ALL\n\n", $sqls);
$params = [
'intervenant' => $intervenant->getId(),
'typeVolumeHoraire' => $typeVolumeHoraire->getId(),
];
$res = $this->getEntityManager()->getConnection()->fetchAllAssociative($sql, $params);
$res = $this->getEntityManager()->getConnection()->fetchAllAssociative($sql);
$depassements = [];
foreach ($res as $r) {
$depassements[] = PlafondControle::fromArray($r);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment