Commit 3c636cef authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Finalisation de la gestion durée vie des agréments. Testé avec les données...

Finalisation de la gestion durée vie des agréments. Testé avec les données réelles de la base de test.
parent f297ec61
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -35962,7 +35962,7 @@ FROM
      'name' => 'V_TBL_AGREMENT',
      'definition' => 'CREATE OR REPLACE FORCE VIEW V_TBL_AGREMENT AS
WITH i_s AS (
  SELECT DISTINCT
  SELECT
    fr.intervenant_id,
    ep.structure_id
  FROM
@@ -35977,7 +35977,7 @@ WITH i_s AS (
    frs.total > 0
),
avi AS (
    SELECT DISTINCT
    SELECT
        i.code                code_intervenant,
        i.annee_id            annee_id,
        a.type_agrement_id    type_agrement,
@@ -35988,8 +35988,8 @@ avi AS (
    JOIN type_agrement_statut tas ON tas.statut_intervenant_id = i.statut_id
    JOIN agrement a ON a.intervenant_id = i.id AND tas.type_agrement_id = a.type_agrement_id AND a.histo_destruction IS NULL
)
SELECT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE","RANK" FROM (
    SELECT DISTINCT
SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE","RANK" FROM (
    SELECT
      i.annee_id                     annee_id,
      CASE
        WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
@@ -36003,7 +36003,7 @@ SELECT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INT
      NVL(a.id, avi.agrement_id)                 agrement_id,
      tas.duree_vie                              duree_vie,
      RANK() OVER(
        PARTITION BY i.annee_id ORDER BY
        PARTITION BY i.code,i.annee_id ORDER BY
        CASE
        WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
        THEN NULL
@@ -36036,8 +36036,8 @@ WHERE
  rank = 1
UNION ALL
SELECT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE","RANK" FROM (
    SELECT DISTINCT
SELECT DISTINCT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INTERVENANT","STRUCTURE_ID","OBLIGATOIRE","AGREMENT_ID","DUREE_VIE","RANK" FROM (
    SELECT
      i.annee_id                                  annee_id,
      CASE
        WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
@@ -36046,12 +36046,12 @@ SELECT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INT
      tas.type_agrement_id                        type_agrement_id,
      i.id                                        intervenant_id,
      i.code                                      code_intervenant,
      i_s.structure_id                            structure_id,
      a.structure_id                            structure_id,
      tas.obligatoire                             obligatoire,
      NVL(a.id, avi.agrement_id)                  agrement_id,
      tas.duree_vie                               duree_vie,
      RANK() OVER(
        PARTITION BY i.annee_id ORDER BY
        PARTITION BY i.code,i.annee_id ORDER BY
        CASE
        WHEN NVL(NVL(a.id, avi.agrement_id),0) = 0
        THEN NULL
@@ -36069,7 +36069,6 @@ SELECT "ANNEE_ID","ANNEE_AGREMENT","TYPE_AGREMENT_ID","INTERVENANT_ID","CODE_INT
      LEFT JOIN agrement               a ON a.type_agrement_id = ta.id
                                        AND a.intervenant_id = i.id
                                        AND a.structure_id = i_s.structure_id
                                        AND a.histo_destruction IS NULL
      LEFT JOIN                      avi ON i.code = avi.code_intervenant
+16 −37
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
            'type'       => 'Text',
        ]);

        //Gestion des agréments
        //Gestion des agréments de façon dynamique par rapport au contenu de la table type_agrement
        $qb = $this->getServiceTypeAgrement()->finderByHistorique();
        $typesAgrement = $this->getServiceTypeAgrement()->getList($qb);

@@ -434,7 +434,8 @@ class StatutIntervenantHydrator implements HydratorInterface
        $object->setDepassementSDSHC($data['depassement-sdshc']);
        $object->setChargesPatronales(FloatFromString::run($data['charges-patronales']) / 100);

        //Récupération des types d'agrément possible
        //Gestion de la durée de vie des agréments par statut d'intervenant
        //On récupére les types d'agrement
        $qb = $this->getServiceTypeAgrement()->finderByHistorique();
        $typesAgrements = $this->getServiceTypeAgrement()->getList($qb);
        //Type agrement par statut d'intervenant
@@ -446,57 +447,35 @@ class StatutIntervenantHydrator implements HydratorInterface
        {
            $typesAgrementsStatusByCode[$tas->getType()->getCode()] = $tas;
        }

        //On boucle pour faire ensuite de l'insert, update ou delete
        foreach($typesAgrements as $ta)
        {
            if(array_key_exists($ta->getCode(), $data))
            {
                //update
                if(!$data[$ta->getCode()] && array_key_exists($ta->getCode(), $typesAgrementsStatusByCode))
                {
                    $object->removeTypeAgrementStatut($tas);
                    $this->getServiceTypeAgrementStatut()->delete($tas);
                    $tasToDelete = $typesAgrementsStatusByCode[$ta->getCode()];
                    $object->removeTypeAgrementStatut($tasToDelete);
                    $this->getServiceTypeAgrementStatut()->delete($tasToDelete);
                }
                elseif($data[$ta->getCode()] && array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)){
                    $tas = $typesAgrementsStatusByCode[$ta->getCode()];
                    $tasToUpdate = $typesAgrementsStatusByCode[$ta->getCode()];
                    $dureeVie = $data[$ta->getCode().'-DUREE_VIE'];
                    $tas->setDureeVie($dureeVie);
                    $this->getServiceTypeAgrementStatut()->save($tas);
                    $tasToUpdate->setDureeVie($dureeVie);
                    $this->getServiceTypeAgrementStatut()->save($tasToUpdate);
                }
                elseif($data[$ta->getCode()] && !array_key_exists($ta->getCode(), $typesAgrementsStatusByCode)){
                    $dureeVie = $data[$ta->getCode().'-DUREE_VIE'];
                    $tas = new TypeAgrementStatut();
                    $tas->setDureeVie($dureeVie);
                    $tas->setObligatoire(1);
                    $tas->setType($ta);
                    $tas->setStatut($object);
                    $this->getServiceTypeAgrementStatut()->save($tas);

                }
            }
        }
                    $tasToCreate = new TypeAgrementStatut();
                    $tasToCreate->setDureeVie($dureeVie);
                    $tasToCreate->setObligatoire(1);
                    $tasToCreate->setType($ta);
                    $tasToCreate->setStatut($object);
                    $this->getServiceTypeAgrementStatut()->save($tasToCreate);

        //Delete or update existing agrement statut
        /*foreach($typesAgrementsStatuts as $tas)
        {
            if(in_array($tas->getType()->getCode(), $typeAgrementCodeToDesactivate))
            {
                $object->removeTypeAgrementStatut($tas);
                $this->getServiceTypeAgrementStatut()->delete($tas);
                }
            elseif(in_array($tas->getType()->getCode(), $typeAgrementCodeToActivate))
            {
                $dureeVie = $data[$tas->getType()->getCode().'-DUREE_VIE'];
                $tas->setDureeVie($dureeVie);
                $this->getServiceTypeAgrementStatut()->save($tas);

            }
            else{
                $newTas = new TypeAgrementStatut();
                $newTas->setDureeVie();
        }
        }*/


        return $object;
    }