[#3059] Ne plus offrir l'importation une fois qu'une DAE a été importée.
[auf_rh_dae.git] / project / dae / models.py
index 147c41f..373d776 100644 (file)
@@ -53,9 +53,10 @@ class Poste(PosteWorkflow, rh.Poste_):
     )
 
     # Modèle existant
-    id_rh = models.ForeignKey(rh.Poste, null=True, related_name='+',
-                            editable=False,
-                            verbose_name=u"Mise à jour du poste")
+    id_rh = models.ForeignKey(
+        rh.Poste, null=True, related_name='+', editable=False,
+        verbose_name=u"Mise à jour du poste"
+    )
 
     # Rémunération
     indemn_expat_min = models.DecimalField(
@@ -115,9 +116,15 @@ class Poste(PosteWorkflow, rh.Poste_):
         return copieur.copy(self)
 
     def dans_rh(self):
-        return self.id_rh or None
+        """
+        Retourne le poste RH s'il existe.
+        """
+        return self.id_rh
 
     def importer_dans_rh(self):
+        """
+        Importe le poste DAE dans un poste RH existant ou nouveau.
+        """
         poste_rh = self.dans_rh() or rh.Poste()
         poste_rh.nom = self.nom
         poste_rh.implantation = self.implantation
@@ -185,6 +192,8 @@ class Poste(PosteWorkflow, rh.Poste_):
                 commentaire=financement.commentaire
             )
 
+        self.id_rh = poste_rh
+        self.save()
         return poste_rh
 
     def get_employe(self):
@@ -420,14 +429,23 @@ class Employe(AUFMetadata):
         return u'%s %s' % (self.prenom, self.nom.upper())
 
     def dans_rh(self):
-        return self.id_rh or None
+        """
+        Retourne l'employé RH associé à cet employé DAE.
+        """
+        return self.id_rh
 
     def importer_dans_rh(self):
-        return self.dans_rh() or rh.Employe.objects.create(
+        """
+        Importe l'employé DAE dans un employé RH existant ou nouveau.
+        """
+        employe_rh = self.dans_rh() or rh.Employe.objects.create(
             nom=self.nom,
             prenom=self.prenom,
             genre=self.genre
         )
+        self.id_rh = employe_rh
+        self.save()
+        return employe_rh
 
 
 ### DOSSIER
@@ -458,6 +476,11 @@ class Dossier(DossierWorkflow, rh.Dossier_):
         null=True,
         blank=True,)
 
+    # Lien avec le dossier
+    dossier_rh = models.ForeignKey(
+        rh.Dossier, related_name='dossiers_dae', null=True, blank=True
+    )
+
     # Données antérieures de l'employé
     statut_anterieur = models.ForeignKey(
             rh.Statut, related_name='+', null=True, blank=True,
@@ -591,6 +614,8 @@ class Dossier(DossierWorkflow, rh.Dossier_):
         Retourne le dossier associé dans le système RH ou ``None`` s'il n'y
         en a pas.
         """
+        if self.dossier_rh:
+            return self.dossier_rh
         today = date.today()
         poste_rh = self.poste.dans_rh()
         if poste_rh is None:
@@ -609,6 +634,10 @@ class Dossier(DossierWorkflow, rh.Dossier_):
             return None
 
     def importer_dans_rh(self):
+        """
+        Importe les données du dossier DAE dans un dossier RH existant ou
+        nouveau.
+        """
         poste_rh = self.poste.importer_dans_rh()
         employe_rh = self.employe.importer_dans_rh()
         dossier_rh = self.dans_rh() or \
@@ -678,6 +707,10 @@ class Dossier(DossierWorkflow, rh.Dossier_):
                 date_fin=self.contrat_date_fin
             )
 
+        # Enregistrer le lien avec le dossier RH
+        self.dossier_rh = dossier_rh
+        self.save()
+
         return dossier_rh
 
     def get_salaire_anterieur_euros(self):