diff --git a/CHANGELOG.md b/CHANGELOG.md index a8cfe92cab3bdbd316b4f70380c8c20175ea11fd..0ff3c1da0e63b31cdc6efc0bc2c6890708173d0b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ title: "Changements intervenus sur OSE" author: Laurent Lécluse - DSI - Unicaen --- -# OSE 8.1.1 (à venir) +# OSE 8.1.1 ## Corrections de bugs @@ -14,6 +14,7 @@ author: Laurent Lécluse - DSI - Unicaen ## Nouveautés * Possibilité de récupérer des attributs multivalués pour faire la correspondance d'identifiant entre le LDAP et le code utilisateur indiqué dans la fiche Intervenant +* Possibilité de modifier les données liées aux charges d'enseignement sur des éléments pédagogiques qui ne sont plus synchronisés avec Apogée. ## Notes de mise à jour diff --git a/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php b/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php index 0cfcc6d3fbf096f1966e1759a68a0160e40469b1..5c1e0d9aa428ea9baf847ded7592b100fad07140 100755 --- a/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php +++ b/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php @@ -2,6 +2,7 @@ namespace Application\Assertion; +use Application\Entity\Db\Annee; use Application\Entity\Db\TypeIntervention; use Application\Entity\Db\VolumeHoraireEns; use Application\Provider\Privilege\Privileges; @@ -9,6 +10,7 @@ use Application\Entity\Db\CentreCoutEp; use Application\Entity\Db\ElementModulateur; use Application\Entity\Db\ElementPedagogique; use Application\Entity\Db\Etape; +use Application\Service\Traits\ContextServiceAwareTrait; use UnicaenImport\Entity\Db\Source; use Application\Entity\Db\Structure; use UnicaenAuth\Assertion\AbstractAssertion; @@ -23,6 +25,8 @@ use Zend\Permissions\Acl\Resource\ResourceInterface; */ class OffreDeFormationAssertion extends AbstractAssertion { + use ContextServiceAwareTrait; + protected function assertEntity(ResourceInterface $entity = null, $privilege = null) { $role = $this->getRole(); @@ -108,7 +112,7 @@ class OffreDeFormationAssertion extends AbstractAssertion { return $this->asserts([ $this->assertStructureSaisie($role, $elementPedagogique->getStructure()), - $this->assertSourceSaisie($elementPedagogique->getSource()), + $this->assertSourceSaisie($elementPedagogique->getSource(), $elementPedagogique->getAnnee()), ]); } @@ -117,7 +121,7 @@ class OffreDeFormationAssertion extends AbstractAssertion protected function assertEtapeSaisie(Role $role, Etape $etape) { return $this->assertStructureSaisie($role, $etape->getStructure()) - && $this->assertSourceSaisie($etape->getSource()); + && $this->assertSourceSaisie($etape->getSource(), $etape->getAnnee()); } @@ -182,7 +186,7 @@ class OffreDeFormationAssertion extends AbstractAssertion { return $this->asserts([ $this->assertStructureSaisie($role, $elementPedagogique->getStructure()), - $this->assertSourceSaisie($elementPedagogique->getSource()), + $this->assertSourceSaisie($elementPedagogique->getSource(), $elementPedagogique->getAnnee()), ]); } @@ -198,7 +202,7 @@ class OffreDeFormationAssertion extends AbstractAssertion protected function assertVolumeHoraireEnsSaisieVH(Role $role, VolumeHoraireEns $volumeHoraireEns) { return $this->asserts([ - $volumeHoraireEns->getSource() ? $this->assertSourceSaisie($volumeHoraireEns->getSource()) : true, + $volumeHoraireEns->getSource() ? $this->assertSourceSaisie($volumeHoraireEns->getSource(), $volumeHoraireEns->getElementPedagogique()->getAnnee()) : true, $volumeHoraireEns->getElementPedagogique() ? $this->assertElementPedagogiqueSaisieVH($role, $volumeHoraireEns->getElementPedagogique()) : true, $volumeHoraireEns->getTypeIntervention() ? $this->assertTypeInterventionSaisieVH($role, $volumeHoraireEns->getTypeIntervention()) : true, ]); @@ -241,8 +245,12 @@ class OffreDeFormationAssertion extends AbstractAssertion - protected function assertSourceSaisie(Source $source) + protected function assertSourceSaisie(Source $source, Annee $annee) { + if ($annee->getId() < $this->getServiceContext()->getAnneeImport()->getId()){ + return true; + }; + return !$source->getImportable(); } } \ No newline at end of file diff --git a/module/Application/src/Application/Service/ContextService.php b/module/Application/src/Application/Service/ContextService.php index fc85fd73d91744fcf967d63d564f5bc19c41e25d..7605447081dac70a3b47ed24e116d5a7af190f83 100755 --- a/module/Application/src/Application/Service/ContextService.php +++ b/module/Application/src/Application/Service/ContextService.php @@ -48,6 +48,11 @@ class ContextService extends AbstractService */ protected $annee; + /** + * @var Annee + */ + protected $anneeImport; + /** * @var \Application\Entity\Db\Intervenant */ @@ -268,6 +273,30 @@ class ContextService extends AbstractService + /** + * Retourne l'année courante d'import. + * C'est à dire : + * - celle mémorisée en session (car sélectionnée par l'utilisateur) si elle existe ; + * - ou sinon celle spécifiée dans les paramètres de l'appli. + * + * @return Annee + */ + public function getAnneeImport() + { + if (!$this->anneeImport) { + $sc = $this->getSessionContainer(); + if (!$sc->offsetExists('anneeImport')) { + $sc->anneeImport = (int)$this->getServiceParametres()->get('annee_import'); + } + + $this->anneeImport = $this->getServiceAnnee()->get($sc->anneeImport); + } + + return $this->anneeImport; + } + + + /** * Retourne l'année N - x, N étant l'année courante. * diff --git a/module/Application/src/Application/Service/VolumeHoraireEnsService.php b/module/Application/src/Application/Service/VolumeHoraireEnsService.php index 89147e41a9ef2631b54ff63bb3798127bb758cbc..54c4f2b58bb6f02c5a4d4f75f2ceab09bb98ad71 100755 --- a/module/Application/src/Application/Service/VolumeHoraireEnsService.php +++ b/module/Application/src/Application/Service/VolumeHoraireEnsService.php @@ -96,6 +96,7 @@ class VolumeHoraireEnsService extends AbstractEntityService if ($toDelete) { $this->delete($volumeHoraireEns); } else { + $volumeHoraireEns->setSource($this->getServiceSource()->getOse()); $this->save($volumeHoraireEns); } }