[#2518] Aller chercher la date de modification des dossiers
authorEric Mc Sween <eric.mcsween@auf.org>
Tue, 7 Feb 2012 16:26:57 +0000 (11:26 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Tue, 7 Feb 2012 16:26:57 +0000 (11:26 -0500)
project/legacy/management/commands/rh_import_legacy.py
project/legacy/models.py

index 1a5d996..c44b1c1 100644 (file)
@@ -1,11 +1,12 @@
 # coding: utf-8
 
+from datetime import datetime
 from decimal import Decimal
 
 from django.contrib.auth.models import User
 from django.core.management.base import BaseCommand
 from django.db import connection
-from django.db.models import Q
+from django.db.models import Q, Max
 
 from project.legacy import models as legacy
 from project.rh import models as rh
@@ -66,7 +67,7 @@ def sync_employe():
     cursor.execute('TRUNCATE rh_employe')
     cursor.execute('TRUNCATE rh_employecommentaire')
     odette = User.objects.get(username='odette.tremblay')
-    for fiche in legacy.Fiches.objects.all():
+    for fiche in legacy.Fiches.objects.extra():
         employe = rh.Employe.objects.create(
             id=fiche.no_employe,
             nom=fiche.nom,
@@ -226,10 +227,7 @@ def sync_tauxchange():
     for taux in legacy.TauxChangeAnnuel.objects.exclude(taux_annuel=None):
 
         # Créer la devise
-        try:
-            devise, created = rh.Devise.objects.get_or_create(code=taux.code_devise)
-        except:
-            import pdb; pdb.set_trace()
+        devise, created = rh.Devise.objects.get_or_create(code=taux.code_devise)
         if created:
             devise.nom=taux.nom_devise
             devise.save()
@@ -323,7 +321,10 @@ def sync_dossier():
         nom_long='Inconnu',
         actif=False
     )
-    for dossier in legacy.Dossiers.objects.all():
+    dossiers = legacy.Dossiers.objects.annotate(timestamp_modif=Max('historique__stamp'))
+    for dossier in dossiers:
+        date_modification = datetime.fromtimestamp(dossier.timestamp_modif) \
+                if dossier.timestamp_modif else None
         dossier1 = rh.Dossier.objects.create(
             employe_id=dossier.employe_id,
             poste_id=dossier.poste_1,
@@ -334,6 +335,7 @@ def sync_dossier():
             regime_travail=dossier.regime_travail,
             date_debut=clean_date(dossier.date_debut_mandat),
             date_fin=clean_date(dossier.date_fin_mandat),
+            date_modification=date_modification,
             remplacement=False,
             actif=True,
             supprime=False
@@ -460,20 +462,20 @@ def sync_dossier():
                 actif=True,
                 supprime=False
             )
-        if dossier.remarque:
-            rh.DossierCommentaire.objects.create(
+            if dossier.remarque:
+                rh.DossierCommentaire.objects.create(
+                    dossier=dossier2,
+                    texte=dossier.remarque,
+                    owner=odette
+                )
+            rh.Contrat.objects.create(
                 dossier=dossier2,
-                texte=dossier.remarque,
-                owner=odette
+                type_contrat_id=dossier.id_type_contrat or type_contrat_inconnu.id,
+                date_debut=clean_date(dossier.date_debut_contrat),
+                date_fin=clean_date(dossier.date_fin_contrat),
+                actif=True,
+                supprime=False
             )
-        rh.Contrat.objects.create(
-            dossier=dossier2,
-            type_contrat_id=dossier.id_type_contrat or type_contrat_inconnu.id,
-            date_debut=clean_date(dossier.date_debut_contrat),
-            date_fin=clean_date(dossier.date_fin_contrat),
-            actif=True,
-            supprime=False
-        )
 
 def sync_ayantdroit():
     connection.cursor().execute('TRUNCATE rh_ayantdroit')
index 0dfd48f..f08a581 100644 (file)
@@ -38,7 +38,7 @@ class Fiches(models.Model):
 
 class Dossiers(models.Model):
     id_dossier = models.IntegerField(primary_key=True)
-    no_dossier = models.CharField(max_length=10)
+    no_dossier = models.CharField(max_length=10, unique=True)
     employe = models.ForeignKey(Fiches, related_name='dossiers', db_column='no_employe')
     id_implantation_1 = models.SmallIntegerField()
     poste_1 = models.SmallIntegerField()
@@ -98,6 +98,72 @@ class HistoRemuneration(models.Model):
         db_table = u'histo_remuneration'
         managed = False
 
+class HistoFiches(models.Model):
+    id_histo = models.IntegerField(primary_key=True)
+    fiche = models.ForeignKey(Fiches, db_column='no_employe', related_name='historique')
+    nom = models.CharField(max_length=128)
+    prenom = models.CharField(max_length=128)
+    date_ouverture = models.CharField(max_length=10)
+    situation_famille = models.CharField(max_length=2)
+    nationalite = models.CharField(max_length=2)
+    tel_domicile = models.CharField(max_length=20)
+    tel_cellulaire = models.CharField(max_length=20)
+    no_rue = models.CharField(max_length=128)
+    ville = models.CharField(max_length=128)
+    etat_province = models.CharField(max_length=128)
+    code_postal_cedex = models.CharField(max_length=64)
+    pays_iso2 = models.CharField(max_length=2)
+    sexe = models.CharField(max_length=1)
+    date_entree = models.CharField(max_length=10)
+    remarque = models.TextField()
+    date_maj = models.CharField(max_length=10)
+    date_naissance = models.CharField(max_length=10)
+    stamp = models.IntegerField()
+    ip = models.CharField(max_length=15)
+    usager = models.IntegerField()
+    action = models.CharField(max_length=1)
+    requete = models.TextField()
+    class Meta:
+        db_table = u'histo_fiches'
+        managed = False
+
+class HistoDossiers(models.Model):
+    id_histo = models.IntegerField(primary_key=True)
+    dossier = models.ForeignKey(Dossiers, db_column='no_dossier',
+                                related_name='historique',
+                                to_field='no_dossier')
+    no_employe = models.IntegerField()
+    id_implantation_1 = models.SmallIntegerField()
+    poste_1 = models.SmallIntegerField()
+    complement_1 = models.CharField(max_length=128)
+    id_implantation_2 = models.SmallIntegerField()
+    poste_2 = models.SmallIntegerField()
+    complement_2 = models.CharField(max_length=128)
+    ids_direction_service = models.CharField(max_length=128)
+    remplacement_de = models.IntegerField()
+    responsable = models.IntegerField()
+    id_local_expatrie = models.IntegerField()
+    date_debut_mandat = models.CharField(max_length=10)
+    date_fin_mandat = models.CharField(max_length=10)
+    id_statut = models.IntegerField()
+    id_bstg = models.IntegerField()
+    id_classement = models.IntegerField()
+    id_type_contrat = models.IntegerField()
+    regime_travail = models.SmallIntegerField()
+    date_debut_contrat = models.CharField(max_length=10)
+    date_fin_contrat = models.CharField(max_length=10)
+    remarque = models.TextField()
+    stamp = models.IntegerField()
+    ip = models.CharField(max_length=15)
+    usager = models.IntegerField()
+    action = models.CharField(max_length=1)
+    requete = models.TextField()
+    responsable_implantation_1 = models.IntegerField()
+    responsable_implantation_2 = models.IntegerField()
+    class Meta:
+        db_table = u'histo_dossiers'
+        managed = False
+
 class FamilleEmploi(models.Model):
     id_famille_emploi = models.SmallIntegerField(primary_key=True)
     famille_emploi = models.CharField(max_length=64)