Loading data/ddl/view/V_TBL_CONTRAT_VOLUME_HORAIRE.sql +1 −1 Changes for data/ddl/view/V_TBL_CONTRAT_VOLUME_HORAIRE.sql: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -173,7 +173,7 @@ SELECT tm.taux_remu_majore_id taux_remu_majore_id, m.date_fin date_fin_mission, m.date_debut date_debut_mission, 0 cm, 0 td, 0 tp, Loading module/Contrat/src/Tbl/Process/ContratProcess.php +102 −3 Changes for module/Contrat/src/Tbl/Process/ContratProcess.php: 102 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -3,10 +3,11 @@ declare(strict_types=1); namespace Contrat\Tbl\Process; use Application\Entity\Db\Annee; use Application\Entity\Db\Parametre; use Application\Service\Traits\AnneeServiceAwareTrait; use Application\Service\Traits\ParametresServiceAwareTrait; use Contrat\Entity\Db\TblContrat; use Contrat\Entity\Db\TypeContrat; use Contrat\Service\TypeContratServiceAwareTrait; use Contrat\Tbl\Process\Model\Contrat; Loading Loading @@ -272,6 +273,7 @@ class ContratProcess implements ProcessInterface $vh->tauxRemuId = (int)$data['taux_remu_id'] ?: null; $vh->tauxRemuMajoreId = (int)$data['taux_remu_majore_id'] ?: null; $vh->dateFinMission = $data['date_fin_mission'] ? new DateTime($data['date_fin_mission']) : null; $vh->dateDebutMission = $data['date_debut_mission'] ? new DateTime($data['date_debut_mission']) : null; $vh->cm = (float)$data['cm']; $vh->td = (float)$data['td']; $vh->tp = (float)$data['tp']; Loading @@ -298,6 +300,9 @@ class ContratProcess implements ProcessInterface $this->purgerMauvaisContratsSansHeures($contrats); $this->calculDateContrat($contrats); // ajout d'avenants vides pour les missions avec des prolongations de dates $this->contratProlongationMission($contrats); Loading Loading @@ -386,8 +391,12 @@ class ContratProcess implements ProcessInterface $hasEnsRef = false; foreach ($contrat->volumesHoraires as $vh) { if ($vh->missionId) $hasMissions = true; if ($vh->serviceId || $vh->serviceReferentielId) $hasEnsRef = true; if ($vh->missionId) { $hasMissions = true; } if ($vh->serviceId || $vh->serviceReferentielId) { $hasEnsRef = true; } } if ($hasMissions && $hasEnsRef) { Loading Loading @@ -635,6 +644,34 @@ class ContratProcess implements ProcessInterface /** * @param array|Contrat[] $contrats */ public function calculDateContrat(array $contrats): void { foreach ($contrats as $contrat) { /** @var Contrat $contrat */ if ($contrat->finValidite != null && $contrat->debutValidite != null) { continue; } if ($contrat->isMission) { $this->calculDateContratMission($contrat); } else { if ($contrat->debutValidite == null) { $contrat->debutValidite = $contrat->annee->getDateDebut(); } if ($contrat->finValidite == null) { $contrat->finValidite = $contrat->annee->getDateFin(); } } } } /** * @param array|Contrat[] $contrats */ Loading Loading @@ -1177,4 +1214,66 @@ class ContratProcess implements ProcessInterface } public function calculDateContratMission(Contrat $contrat): void { $dateDebut = null; $dateFin = null; foreach ($contrat->volumesHoraires as $vh) { if ($contrat->debutValidite == null || $dateDebut > $vh->dateDebutMission) { $dateDebut = $vh->dateDebutMission; } if ($contrat->finValidite == null || $dateFin > $vh->dateFinMission) { $dateFin = $vh->dateFinMission; } } if ($contrat->parent != null) { // On ajoute les heures des autres avenants liés au même contrat déjà contractualisé avec un numéro d'avenant infèrieur foreach ($contrat->parent->avenants as $contratParser) { //On ne s'occupe que des avenants déjà contractualisés if (!$contratParser->id || !$contratParser->edite || $contratParser->numeroAvenant >= $contrat->numeroAvenant) { continue; } foreach ($contratParser->volumesHoraires as $vh) { if ($contrat->debutValidite == null || $dateDebut > $vh->dateDebutMission) { $dateDebut = $vh->dateDebutMission; } if ($contrat->finValidite == null || $dateFin > $vh->dateFinMission) { $dateFin = $vh->dateFinMission; } } } //On ajoute les volumes horaires liés au contrat parent foreach ($contrat->parent->volumesHoraires as $vh) { if ($contrat->debutValidite == null || $dateDebut > $vh->dateDebutMission) { $dateDebut = $vh->dateDebutMission; } if ($contrat->finValidite == null || $dateFin > $vh->dateFinMission) { $dateFin = $vh->dateFinMission; } } } if ($dateDebut == null) { $dateDebut = $contrat->annee->getDateDebut(); } if ($dateFin == null) { $dateFin = $contrat->annee->getDateFin(); } if ($contrat->debutValidite == null) { $contrat->debutValidite = $dateDebut; } if ($contrat->finValidite == null) { $contrat->finValidite = $dateFin; } } } module/Contrat/src/Tbl/Process/Model/VolumeHoraire.php +1 −0 Changes for module/Contrat/src/Tbl/Process/Model/VolumeHoraire.php: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ class VolumeHoraire public ?int $tauxRemuId = null; public ?int $tauxRemuMajoreId = null; public ?\DateTime $dateFinMission = null; public ?\DateTime $dateDebutMission = null; public float $cm = 0.0; public float $td = 0.0; public float $tp = 0.0; Loading Loading
data/ddl/view/V_TBL_CONTRAT_VOLUME_HORAIRE.sql +1 −1 Changes for data/ddl/view/V_TBL_CONTRAT_VOLUME_HORAIRE.sql: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -173,7 +173,7 @@ SELECT tm.taux_remu_majore_id taux_remu_majore_id, m.date_fin date_fin_mission, m.date_debut date_debut_mission, 0 cm, 0 td, 0 tp, Loading
module/Contrat/src/Tbl/Process/ContratProcess.php +102 −3 Changes for module/Contrat/src/Tbl/Process/ContratProcess.php: 102 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -3,10 +3,11 @@ declare(strict_types=1); namespace Contrat\Tbl\Process; use Application\Entity\Db\Annee; use Application\Entity\Db\Parametre; use Application\Service\Traits\AnneeServiceAwareTrait; use Application\Service\Traits\ParametresServiceAwareTrait; use Contrat\Entity\Db\TblContrat; use Contrat\Entity\Db\TypeContrat; use Contrat\Service\TypeContratServiceAwareTrait; use Contrat\Tbl\Process\Model\Contrat; Loading Loading @@ -272,6 +273,7 @@ class ContratProcess implements ProcessInterface $vh->tauxRemuId = (int)$data['taux_remu_id'] ?: null; $vh->tauxRemuMajoreId = (int)$data['taux_remu_majore_id'] ?: null; $vh->dateFinMission = $data['date_fin_mission'] ? new DateTime($data['date_fin_mission']) : null; $vh->dateDebutMission = $data['date_debut_mission'] ? new DateTime($data['date_debut_mission']) : null; $vh->cm = (float)$data['cm']; $vh->td = (float)$data['td']; $vh->tp = (float)$data['tp']; Loading @@ -298,6 +300,9 @@ class ContratProcess implements ProcessInterface $this->purgerMauvaisContratsSansHeures($contrats); $this->calculDateContrat($contrats); // ajout d'avenants vides pour les missions avec des prolongations de dates $this->contratProlongationMission($contrats); Loading Loading @@ -386,8 +391,12 @@ class ContratProcess implements ProcessInterface $hasEnsRef = false; foreach ($contrat->volumesHoraires as $vh) { if ($vh->missionId) $hasMissions = true; if ($vh->serviceId || $vh->serviceReferentielId) $hasEnsRef = true; if ($vh->missionId) { $hasMissions = true; } if ($vh->serviceId || $vh->serviceReferentielId) { $hasEnsRef = true; } } if ($hasMissions && $hasEnsRef) { Loading Loading @@ -635,6 +644,34 @@ class ContratProcess implements ProcessInterface /** * @param array|Contrat[] $contrats */ public function calculDateContrat(array $contrats): void { foreach ($contrats as $contrat) { /** @var Contrat $contrat */ if ($contrat->finValidite != null && $contrat->debutValidite != null) { continue; } if ($contrat->isMission) { $this->calculDateContratMission($contrat); } else { if ($contrat->debutValidite == null) { $contrat->debutValidite = $contrat->annee->getDateDebut(); } if ($contrat->finValidite == null) { $contrat->finValidite = $contrat->annee->getDateFin(); } } } } /** * @param array|Contrat[] $contrats */ Loading Loading @@ -1177,4 +1214,66 @@ class ContratProcess implements ProcessInterface } public function calculDateContratMission(Contrat $contrat): void { $dateDebut = null; $dateFin = null; foreach ($contrat->volumesHoraires as $vh) { if ($contrat->debutValidite == null || $dateDebut > $vh->dateDebutMission) { $dateDebut = $vh->dateDebutMission; } if ($contrat->finValidite == null || $dateFin > $vh->dateFinMission) { $dateFin = $vh->dateFinMission; } } if ($contrat->parent != null) { // On ajoute les heures des autres avenants liés au même contrat déjà contractualisé avec un numéro d'avenant infèrieur foreach ($contrat->parent->avenants as $contratParser) { //On ne s'occupe que des avenants déjà contractualisés if (!$contratParser->id || !$contratParser->edite || $contratParser->numeroAvenant >= $contrat->numeroAvenant) { continue; } foreach ($contratParser->volumesHoraires as $vh) { if ($contrat->debutValidite == null || $dateDebut > $vh->dateDebutMission) { $dateDebut = $vh->dateDebutMission; } if ($contrat->finValidite == null || $dateFin > $vh->dateFinMission) { $dateFin = $vh->dateFinMission; } } } //On ajoute les volumes horaires liés au contrat parent foreach ($contrat->parent->volumesHoraires as $vh) { if ($contrat->debutValidite == null || $dateDebut > $vh->dateDebutMission) { $dateDebut = $vh->dateDebutMission; } if ($contrat->finValidite == null || $dateFin > $vh->dateFinMission) { $dateFin = $vh->dateFinMission; } } } if ($dateDebut == null) { $dateDebut = $contrat->annee->getDateDebut(); } if ($dateFin == null) { $dateFin = $contrat->annee->getDateFin(); } if ($contrat->debutValidite == null) { $contrat->debutValidite = $dateDebut; } if ($contrat->finValidite == null) { $contrat->finValidite = $dateFin; } } }
module/Contrat/src/Tbl/Process/Model/VolumeHoraire.php +1 −0 Changes for module/Contrat/src/Tbl/Process/Model/VolumeHoraire.php: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ class VolumeHoraire public ?int $tauxRemuId = null; public ?int $tauxRemuMajoreId = null; public ?\DateTime $dateFinMission = null; public ?\DateTime $dateDebutMission = null; public float $cm = 0.0; public float $td = 0.0; public float $tp = 0.0; Loading