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

#22979

parent 48e88ce5
......@@ -11619,6 +11619,16 @@
'nullable' => false,
'default' => '0',
),
'PLAFOND_HC_FI_HORS_EAD' =>
array (
'name' => 'PLAFOND_HC_FI_HORS_EAD',
'type' => 'FLOAT',
'length' => 0,
'scale' => NULL,
'precision' => 126,
'nullable' => false,
'default' => '9999',
),
),
),
'STATUT_PRIVILEGE' =>
......@@ -11801,7 +11811,7 @@
'nullable' => true,
'default' => NULL,
),
'AFF_ADRESSE_CONTRAT' =>
'AFF_ADRESSE_CONTRAT' =>
array (
'name' => 'AFF_ADRESSE_CONTRAT',
'type' => 'NUMBER',
......@@ -1768,7 +1768,8 @@ CREATE TABLE "STATUT_INTERVENANT"
"PEUT_CLOTURER_SAISIE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
"PEUT_SAISIR_SERVICE_EXT" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
"TEM_ATV" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
"TEM_BIATSS" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE
"TEM_BIATSS" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
"PLAFOND_HC_FI_HORS_EAD" FLOAT(126) DEFAULT 9999 NOT NULL ENABLE
);
/
 
......@@ -1792,7 +1793,8 @@ CREATE TABLE "STRUCTURE"
"HISTO_MODIFICATEUR_ID" NUMBER(*,0) NOT NULL ENABLE,
"HISTO_DESTRUCTION" DATE,
"HISTO_DESTRUCTEUR_ID" NUMBER(*,0),
"PLAFOND_REFERENTIEL" FLOAT(126)
"PLAFOND_REFERENTIEL" FLOAT(126),
"AFF_ADRESSE_CONTRAT" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE
);
/
 
......@@ -28,7 +28,8 @@ FROM
WHERE
fr.heures_compl_fc_majorees > ROUND( (COALESCE(si.plafond_hc_remu_fc,0) - COALESCE(i.montant_indemnite_fc,0)) / a.taux_hetd, 2 )
/*i.id*/
UNION
UNION ALL
-- Heures max. de référentiel par intervenant selon son statut
SELECT
......@@ -47,7 +48,8 @@ FROM
WHERE
fr.SERVICE_REFERENTIEL + fr.HEURES_COMPL_REFERENTIEL > si.plafond_referentiel
/*i.id*/
UNION
UNION ALL
-- Heures max. de référentiel par intervenant et par fonction référentielle
SELECT
......@@ -87,7 +89,7 @@ GROUP BY
i.annee_id,
t.intervenant_id
UNION
UNION ALL
-- Heures max. de référentiel par intervenant et par fonction référentielle mère
SELECT
......@@ -128,7 +130,7 @@ GROUP BY
i.annee_id,
t.intervenant_id
UNION
UNION ALL
-- Heures max. de référentiel par structure
SELECT
......@@ -161,7 +163,7 @@ WHERE
t.heures > t.plafond
/*i.id*/
UNION
UNION ALL
-- Nombre maximum d'heures équivalent TD par intervenant selon son statut
SELECT
......@@ -181,7 +183,7 @@ WHERE
fr.total - fr.heures_compl_fc_majorees > si.maximum_hetd
/*i.id*/
UNION
UNION ALL
-- Nombre d'heures complémentaires maximum (hors rémunération au titre de l'article d714-60 du code de l'éducation)
SELECT
......@@ -201,6 +203,51 @@ WHERE
(fr.heures_compl_fi + fr.heures_compl_fc + fr.heures_compl_fa + fr.heures_compl_referentiel) > si.plafond_hc_hors_remu_fc
/*i.id*/
UNION ALL
-- HETD max. en formation initiale hors EAD
SELECT
'hc-fi-hors-ead' plafond_code,
null plafond_libelle,
t.type_volume_horaire_id,
t.annee_id,
t.intervenant_id,
si.plafond_hc_fi_hors_ead plafond,
t.heures
FROM
(
SELECT
fr.type_volume_horaire_id type_volume_horaire_id,
i.annee_id annee_id,
i.id intervenant_id,
i.statut_id statut_intervenant_id,
si.plafond_hc_fi_hors_ead plafond,
SUM(frvh.heures_compl_fi) heures
FROM
intervenant i
JOIN etat_volume_horaire evh ON evh.code = 'saisi'
JOIN formule_resultat fr ON fr.intervenant_id = i.id AND fr.etat_volume_horaire_id = evh.id
JOIN formule_resultat_vh frvh ON frvh.formule_resultat_id = fr.id
JOIN volume_horaire vh ON vh.id = frvh.volume_horaire_id
JOIN type_intervention ti ON ti.id = vh.type_intervention_id
JOIN statut_intervenant si ON si.id = i.statut_id
WHERE
ti.regle_foad = 0
/*i.id*/
GROUP BY
fr.type_volume_horaire_id,
i.annee_id,
i.id,
i.statut_id,
si.plafond_hc_fi_hors_ead
) t
JOIN statut_intervenant si ON si.id = t.statut_intervenant_id
WHERE
t.heures > si.plafond_hc_fi_hors_ead
) b
JOIN plafond p ON p.code = b.plafond_code
......@@ -208,4 +255,4 @@ WHERE
JOIN plafond_etat pe ON pe.id = pa.plafond_etat_id
JOIN type_volume_horaire tvh ON tvh.id = b.type_volume_horaire_id
WHERE
pe.code IN ('bloquant','informatif')
pe.code IN ('bloquant','informatif')
\ No newline at end of file
......@@ -11619,6 +11619,16 @@
'nullable' => false,
'default' => '0',
),
'PLAFOND_HC_FI_HORS_EAD' =>
array (
'name' => 'PLAFOND_HC_FI_HORS_EAD',
'type' => 'FLOAT',
'length' => 0,
'scale' => NULL,
'precision' => 126,
'nullable' => false,
'default' => '9999',
),
),
),
'STATUT_PRIVILEGE' =>
......@@ -11801,7 +11811,7 @@
'nullable' => true,
'default' => NULL,
),
'AFF_ADRESSE_CONTRAT' =>
'AFF_ADRESSE_CONTRAT' =>
array (
'name' => 'AFF_ADRESSE_CONTRAT',
'type' => 'NUMBER',
......@@ -25,6 +25,7 @@
<field name="plafondReferentiel" type="float" column="PLAFOND_REFERENTIEL" precision="126" scale="0" nullable="false"/>
<field name="plafondHcHorsRemuFc" type="float" column="PLAFOND_HC_HORS_REMU_FC" precision="126" scale="0" nullable="false"/>
<field name="plafondHcRemuFc" type="float" column="PLAFOND_HC_REMU_FC" precision="126" scale="0" nullable="false"/>
<field name="plafondHcFiHorsEad" type="float" column="PLAFOND_HC_FI_HORS_EAD" precision="126" scale="0" nullable="false"/>
<field name="maximumHETD" type="float" column="MAXIMUM_HETD" precision="126" scale="0" nullable="false"/>
<field name="sourceCode" type="string" column="SOURCE_CODE" length="100" nullable="false"/>
<field name="nonAutorise" type="boolean" column="NON_AUTORISE" nullable="false"/>
......
......@@ -159,6 +159,11 @@ class StatutIntervenant implements HistoriqueAwareInterface, RoleInterface, Impo
*/
protected $plafondHcRemuFc;
/**
* @var float
*/
protected $plafondHcFiHorsEad = 9999;
/**
* @var boolean
*/
......@@ -862,6 +867,30 @@ class StatutIntervenant implements HistoriqueAwareInterface, RoleInterface, Impo
/**
* @return float
*/
public function getPlafondHcFiHorsEad(): float
{
return $this->plafondHcFiHorsEad;
}
/**
* @param float $plafondHcFiHorsEad
*
* @return StatutIntervenant
*/
public function setPlafondHcFiHorsEad(float $plafondHcFiHorsEad): StatutIntervenant
{
$this->plafondHcFiHorsEad = $plafondHcFiHorsEad;
return $this;
}
public function getRoleId()
{
return 'statut/' . $this->getSourceCode();
......
......@@ -129,7 +129,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
$this->add([
'name' => 'service-statutaire',
'options' => [
'label' => "Service statutaire",
'label' => "Service statutaire",
'suffix' => 'HETD',
],
'attributes' => [
......@@ -141,7 +141,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
$this->add([
'name' => 'maximum-HETD',
'options' => [
'label' => "Plafond des HETD",
'label' => "Plafond des HETD",
'suffix' => 'HETD',
],
'attributes' => [
......@@ -153,7 +153,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
$this->add([
'name' => 'plafond-referentiel',
'options' => [
'label' => "Plafond du référentiel",
'label' => "Plafond du référentiel",
'suffix' => 'HETD',
],
'attributes' => [
......@@ -166,8 +166,8 @@ class StatutIntervenantSaisieForm extends AbstractForm
$this->add([
'name' => 'plafond-h-h-c',
'options' => [
'label' => "Plafond des HC (hors prime FC D714-60)",
'suffix' => 'HETD'
'label' => "Plafond des HC (hors prime FC D714-60)",
'suffix' => 'HETD',
],
'attributes' => [
'title' => "Nombre maximal d'heures complémentaires (hors heures relevant de la prime de formation continue au titre de l'article D714-60 du code de l'éducation)",
......@@ -178,8 +178,20 @@ class StatutIntervenantSaisieForm extends AbstractForm
$this->add([
'name' => 'plafond-h-c',
'options' => [
'label' => "Plafond prime FC D714-60",
'suffix' => '&euro;'
'label' => "Plafond prime FC D714-60",
'suffix' => '&euro;',
],
'attributes' => [
'title' => "Montant maximal de la prime de formation continue relevant de l'article D714-60 du code de l'éducation",
],
'type' => 'Text',
]);
$this->add([
'name' => 'plafond-hc-fi-hors-ead',
'options' => [
'label' => "Plafond HC en FI hors EAD",
'suffix' => 'HETD',
],
'attributes' => [
'title' => "Montant maximal de la prime de formation continue relevant de l'article D714-60 du code de l'éducation",
......@@ -214,16 +226,26 @@ class StatutIntervenantSaisieForm extends AbstractForm
public function getInputFilterSpecification()
{
return [
'libelle' => [
'libelle' => [
'required' => true,
],
'type-intervenant' => [
'type-intervenant' => [
'required' => true,
],
'code' => [
'code' => [
'required' => true,
],
'plafond-h-c' => [
'plafond-h-c' => [
'required' => true,
'validators' => [
new \Zend\Validator\Callback([
'messages' => [\Zend\Validator\Callback::INVALID_VALUE => '%value% doit être >= 0'],
'callback' => function ($value) {
return (FloatFromString::run($value) >= 0.0 ? true : false);
}]),
],
],
'plafond-h-h-c' => [
'required' => true,
'validators' => [
new \Zend\Validator\Callback([
......@@ -233,7 +255,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
}]),
],
],
'plafond-h-h-c' => [
'service-statutaire' => [
'required' => true,
'validators' => [
new \Zend\Validator\Callback([
......@@ -243,7 +265,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
}]),
],
],
'service-statutaire' => [
'plafond-referentiel' => [
'required' => true,
'validators' => [
new \Zend\Validator\Callback([
......@@ -253,7 +275,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
}]),
],
],
'plafond-referentiel' => [
'maximum-HETD' => [
'required' => true,
'validators' => [
new \Zend\Validator\Callback([
......@@ -263,7 +285,7 @@ class StatutIntervenantSaisieForm extends AbstractForm
}]),
],
],
'maximum-HETD' => [
'plafond-hc-fi-hors-ead' => [
'required' => true,
'validators' => [
new \Zend\Validator\Callback([
......@@ -337,6 +359,7 @@ class StatutIntervenantHydrator implements HydratorInterface
$object->setSourceCode($data['code']);
$object->setPlafondHcHorsRemuFc(FloatFromString::run($data['plafond-h-h-c']));
$object->setPlafondHcRemuFc(FloatFromString::run($data['plafond-h-c']));
$object->setPlafondHcFiHorsEad(FloatFromString::run($data['plafond-hc-fi-hors-ead']));
$object->setPeutChoisirDansDossier($data['peut-choisir-dans-dossier']);
$object->setMaximumHETD(FloatFromString::run($data['maximum-HETD']));
$object->setDepassementSDSHC($data['depassement-sdshc']);
......@@ -358,11 +381,11 @@ class StatutIntervenantHydrator implements HydratorInterface
$data = [
'id' => $object->getId(),
'libelle' => $object->getLibelle(),
'depassement' => $object->getDepassement(),
'depassement' => $object->getDepassement(),
'service-statutaire' => StringFromFloat::run($object->getServiceStatutaire()),
'plafond-referentiel' => StringFromFloat::run($object->getPlafondReferentiel()),
'peut-choisir-dans-dossier' => $object->getPeutChoisirDansDossier(),
'peut-saisir-dossier' => $object->getPeutSaisirDossier(),
'peut-choisir-dans-dossier' => $object->getPeutChoisirDansDossier(),
'peut-saisir-dossier' => $object->getPeutSaisirDossier(),
'non-autorise' => $object->getNonAutorise(),
'peut-saisir-service' => $object->getPeutSaisirService(),
'peut-saisir-referentiel' => $object->getPeutSaisirReferentiel(),
......@@ -376,6 +399,7 @@ class StatutIntervenantHydrator implements HydratorInterface
'code' => $object->getSourceCode(),
'plafond-h-h-c' => StringFromFloat::run($object->getPlafondHcHorsRemuFc()),
'plafond-h-c' => StringFromFloat::run($object->getPlafondHcRemuFc()),
'plafond-hc-fi-hors-ead' => StringFromFloat::run($object->getPlafondHcFiHorsEad()),
'maximum-HETD' => StringFromFloat::run($object->getMaximumHETD()),
'depassement-sdshc' => $object->getDepassementSDSHC(),
];
......
......@@ -93,6 +93,7 @@ echo $this->form()->openTag($form); ?>
<?= $this->formControlGroup($form->get('plafond-referentiel')); ?>
<?= $this->formControlGroup($form->get('maximum-HETD')); ?>
<?= $this->formControlGroup($form->get('plafond-h-h-c')); ?>
<?= $this->formControlGroup($form->get('plafond-hc-fi-hors-ead')); ?>
<?= $this->formControlGroup($form->get('plafond-h-c')); ?>
</div>
</div>
......
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