Commit | Line | Data |
---|---|---|
ca1a7b76 EMS |
1 | # coding: utf-8 |
2 | ||
68f6108d | 3 | from datetime import datetime |
ca1a7b76 EMS |
4 | from decimal import Decimal |
5 | ||
6 | from django.contrib.auth.models import User | |
7 | from django.core.management.base import BaseCommand | |
8 | from django.db import connection | |
68f6108d | 9 | from django.db.models import Q, Max |
ca1a7b76 EMS |
10 | |
11 | from project.legacy import models as legacy | |
12 | from project.rh import models as rh | |
13 | ||
14 | ||
15 | class Command(BaseCommand): | |
16 | help = 'Importe les données du système RH legacy' | |
17 | ||
18 | def handle(self, *args, **options): | |
19 | self.stdout.write("Import de rh_classement...\n") | |
20 | sync_classement() | |
21 | self.stdout.write("Import de rh_employe...\n") | |
22 | sync_employe() | |
23 | self.stdout.write("Import de rh_familleemploi...\n") | |
24 | sync_familleemploi() | |
25 | self.stdout.write("Import de rh_typeposte...\n") | |
26 | sync_typeposte() | |
27 | self.stdout.write("Import de rh_service...\n") | |
28 | sync_service() | |
29 | self.stdout.write("Import de rh_poste...\n") | |
30 | sync_poste() | |
31 | self.stdout.write("Import de rh_organismebstg...\n") | |
32 | sync_organismebstg() | |
33 | self.stdout.write("Import de rh_statut...\n") | |
34 | sync_statut() | |
35 | self.stdout.write("Import de rh_tauxchange...\n") | |
36 | sync_tauxchange() | |
37 | self.stdout.write("Import de rh_valeurpoint...\n") | |
38 | sync_valeurpoint() | |
39 | self.stdout.write("Import de rh_typecontrat...\n") | |
40 | sync_typecontrat() | |
41 | self.stdout.write("Import de rh_typerevalorisation...\n") | |
42 | sync_typerevalorisation() | |
43 | self.stdout.write("Import de rh_typeremuneration...\n") | |
44 | sync_typeremuneration() | |
45 | self.stdout.write("Import de rh_dossier...\n") | |
46 | sync_dossier() | |
47 | self.stdout.write("Import de rh_ayantdroit...\n") | |
48 | sync_ayantdroit() | |
49 | ||
50 | ||
51 | def sync_classement(): | |
52 | connection.cursor().execute('TRUNCATE rh_classement') | |
53 | for classement in legacy.Classement.objects.all(): | |
54 | rh.Classement.objects.create( | |
55 | id=classement.id_classement, | |
56 | type=classement.type_classement, | |
57 | echelon=classement.echelon or 0, | |
58 | degre=classement.degre or 0, | |
59 | coefficient=classement.coefficient, | |
60 | commentaire=classement.commentaire, | |
61 | date_modification=classement.date_modif, | |
e4cec79e | 62 | #actif=classement.actif |
ca1a7b76 EMS |
63 | ) |
64 | ||
65 | def sync_employe(): | |
66 | cursor = connection.cursor() | |
67 | cursor.execute('TRUNCATE rh_employe') | |
68 | cursor.execute('TRUNCATE rh_employecommentaire') | |
69 | odette = User.objects.get(username='odette.tremblay') | |
68f6108d | 70 | for fiche in legacy.Fiches.objects.extra(): |
ca1a7b76 EMS |
71 | employe = rh.Employe.objects.create( |
72 | id=fiche.no_employe, | |
73 | nom=fiche.nom, | |
74 | prenom=fiche.prenom, | |
75 | nationalite_id=fiche.nationalite, | |
76 | date_naissance=fiche.date_naissance if fiche.date_naissance else None, | |
77 | genre=fiche.sexe.upper(), | |
78 | situation_famille=None if fiche.situation_famille == '-1' else fiche.situation_famille, | |
79 | date_entree=fiche.date_entree, | |
80 | tel_domicile=fiche.tel_domicile, | |
81 | tel_cellulaire=fiche.tel_cellulaire, | |
82 | adresse=fiche.no_rue, | |
83 | ville=fiche.ville, | |
84 | province=fiche.etat_province, | |
85 | code_postal=fiche.code_postal_cedex, | |
b15a6add | 86 | pays_id=fiche.pays_iso2 if fiche.pays_iso2 != '-1' else None, |
ca1a7b76 EMS |
87 | date_creation=fiche.date_ouverture, |
88 | date_modification=fiche.date_maj, | |
e4cec79e OL |
89 | supprime=False, |
90 | nb_postes=None, # meta | |
ca1a7b76 EMS |
91 | ) |
92 | if fiche.remarque: | |
93 | rh.EmployeCommentaire.objects.create( | |
94 | employe=employe, | |
95 | texte=fiche.remarque, | |
96 | owner=odette | |
97 | ) | |
98 | ||
99 | def sync_familleemploi(): | |
100 | cursor = connection.cursor() | |
101 | cursor.execute('TRUNCATE rh_familleemploi') | |
102 | for famille in legacy.FamilleEmploi.objects.all(): | |
103 | rh.FamilleEmploi.objects.create( | |
104 | id=famille.id_famille_emploi, | |
105 | nom=famille.famille_emploi, | |
e4cec79e | 106 | #actif=famille.actif |
ca1a7b76 EMS |
107 | ) |
108 | ||
109 | def sync_typeposte(): | |
110 | cursor = connection.cursor() | |
111 | cursor.execute('TRUNCATE rh_typeposte') | |
112 | for type in legacy.Postes.objects.all(): | |
113 | rh.TypePoste.objects.create( | |
114 | id=type.id_poste, | |
115 | nom=type.titre_poste_m, | |
116 | nom_feminin=type.titre_poste_f, | |
117 | is_responsable=bool(int(type.poste_responsable)), | |
118 | famille_emploi_id=type.id_famille_emploi, | |
119 | date_modification = type.datemaj, | |
e4cec79e | 120 | #actif=bool(int(type.actif)) |
ca1a7b76 EMS |
121 | ) |
122 | ||
123 | def sync_service(): | |
124 | cursor = connection.cursor() | |
125 | cursor.execute('TRUNCATE rh_service') | |
126 | for service in legacy.DirectionService.objects.all(): | |
127 | rh.Service.objects.create( | |
128 | id=service.id_direction_service, | |
129 | nom=service.direction_service, | |
e4cec79e | 130 | #actif=bool(service.actif) |
ca1a7b76 EMS |
131 | ) |
132 | ||
133 | def sync_poste(): | |
134 | cursor = connection.cursor() | |
135 | cursor.execute('TRUNCATE rh_poste') | |
136 | for poste in legacy.ImplantationPostes.objects.select_related('type_poste'): | |
137 | ||
d48f0922 OL |
138 | #legacy.Fiches.objects.filter(prenom='Odette')[0].dossiers.all()[0].ids_direction_service |
139 | ||
ca1a7b76 EMS |
140 | # Aller chercher certaines informations dans le dernier dossier |
141 | # associé à ce poste | |
142 | dossiers = legacy.Dossiers.objects.filter( | |
143 | Q(poste_1=poste.id_implantation_postes) | Q(poste_2=poste.id_implantation_postes) | |
144 | ).order_by('-id_dossier') | |
ca1a7b76 | 145 | complement = '' |
d48f0922 OL |
146 | |
147 | if dossiers.count() == 0: | |
148 | service = None | |
149 | poste_du_responsable = None | |
150 | ||
ca1a7b76 | 151 | if dossiers.count() > 0: |
d48f0922 OL |
152 | |
153 | for d in dossiers: | |
154 | if d.ids_direction_service not in (None, ''): | |
155 | dossier = d | |
156 | break | |
ca1a7b76 EMS |
157 | |
158 | # Déterminer le service | |
159 | services = dossier.ids_direction_service | |
160 | service = int(services.split('|')[0]) if services else 1 | |
161 | if poste.id_implantation_postes == dossier.poste_1: | |
162 | complement = dossier.complement_1 | |
163 | else: | |
164 | complement = dossier.complement_2 | |
165 | complement = ' ' + complement if complement else '' | |
166 | ||
167 | # Déterminer le poste du responsable | |
168 | try: | |
169 | responsable = dossier.responsable | |
ca1a7b76 EMS |
170 | dossiers_du_responsable = responsable.dossiers.order_by('-id_dossier') |
171 | if dossiers_du_responsable.count() > 0: | |
172 | poste_du_responsable = dossiers_du_responsable[0].poste_1 | |
d48f0922 OL |
173 | except: |
174 | poste_du_responsable = None | |
ca1a7b76 EMS |
175 | |
176 | # Créer le poste | |
d48f0922 | 177 | rh_poste = rh.Poste.objects.create( |
ca1a7b76 EMS |
178 | id=poste.id_implantation_postes, |
179 | nom=poste.type_poste.titre_poste_m + complement, | |
180 | nom_feminin=poste.type_poste.titre_poste_f + complement, | |
181 | implantation_id=poste.id_implantation, | |
182 | type_poste_id=poste.type_poste_id, | |
183 | date_modification=poste.date_maj, | |
ca1a7b76 EMS |
184 | service_id=service, |
185 | supprime=False, | |
e4cec79e | 186 | responsable_id=poste_du_responsable, |
ca1a7b76 EMS |
187 | ) |
188 | ||
d48f0922 OL |
189 | if service is None and poste.actif in ('0', 0, False): |
190 | rh_poste.date_fin = rh_poste.date_modification | |
191 | rh_poste.save() | |
192 | ||
193 | ||
ca1a7b76 EMS |
194 | def sync_organismebstg(): |
195 | connection.cursor().execute('TRUNCATE rh_organismebstg') | |
196 | for organisme in legacy.OrganismesBstg.objects.all(): | |
197 | rh.OrganismeBstg.objects.create( | |
198 | id=organisme.id_bstg, | |
199 | nom=organisme.organisme_nom, | |
200 | type=organisme.bstg_type, | |
e4cec79e | 201 | #actif=bool(organisme.actif) |
ca1a7b76 EMS |
202 | ) |
203 | ||
204 | def sync_statut(): | |
205 | connection.cursor().execute('TRUNCATE rh_statut') | |
206 | for statut in legacy.Statut.objects.all(): | |
207 | rh.Statut.objects.create( | |
208 | id=statut.id_statut, | |
209 | code=statut.statut_contractuel, | |
210 | nom=statut.description_statut_contractuel, | |
e4cec79e | 211 | #actif=bool(statut.actif) |
ca1a7b76 EMS |
212 | ) |
213 | ||
214 | def sync_tauxchange(): | |
215 | connection.cursor().execute('TRUNCATE rh_tauxchange') | |
216 | connection.cursor().execute('TRUNCATE rh_devise') | |
6c1ea828 EMS |
217 | |
218 | # Certaines devises ont besoin d'un id spécifique (#2581) | |
219 | rh.Devise.objects.create(id=1, code='AMD', nom='Dram arménien') | |
220 | rh.Devise.objects.create(id=2, code='CAD', nom='Dollar canadien') | |
221 | rh.Devise.objects.create(id=3, code='CAN', nom='Dollar canadien') | |
222 | rh.Devise.objects.create(id=4, code='DZD', nom='Dinar algérien') | |
223 | rh.Devise.objects.create(id=5, code='EUR', nom='Euro') | |
224 | rh.Devise.objects.create(id=6, code='GNF', nom='Franc Guinéen') | |
225 | rh.Devise.objects.create(id=7, code='KMF', nom='Franc comorien') | |
226 | rh.Devise.objects.create(id=8, code='LBP', nom='Livre libanaise') | |
227 | rh.Devise.objects.create(id=9, code='MAD', nom='Dirham marocain') | |
228 | rh.Devise.objects.create(id=10, code='MGF', nom='Franc Malgache') | |
229 | rh.Devise.objects.create(id=11, code='MRO', nom='Ouguiya') | |
230 | rh.Devise.objects.create(id=12, code='MUR', nom='Roupie mauricienne') | |
231 | rh.Devise.objects.create(id=13, code='SYP', nom='Livre syrienne') | |
232 | rh.Devise.objects.create(id=14, code='TND', nom='Dinar tunisien') | |
233 | rh.Devise.objects.create(id=15, code='US ', nom='Dollar américain') | |
234 | rh.Devise.objects.create(id=16, code='USD', nom='Dollar américain') | |
235 | rh.Devise.objects.create(id=17, code='VUV', nom='Vatu') | |
236 | rh.Devise.objects.create(id=18, code='XAF', nom='Franc CFA') | |
237 | rh.Devise.objects.create(id=19, code='XOF', nom='Franc CFA') | |
238 | ||
ca1a7b76 EMS |
239 | for taux in legacy.TauxChangeAnnuel.objects.exclude(taux_annuel=None): |
240 | ||
241 | # Créer la devise | |
68f6108d | 242 | devise, created = rh.Devise.objects.get_or_create(code=taux.code_devise) |
ca1a7b76 EMS |
243 | if created: |
244 | devise.nom=taux.nom_devise | |
245 | devise.save() | |
246 | ||
247 | # Créer le taux de change | |
248 | rh.TauxChange.objects.get_or_create( | |
249 | devise=devise, | |
250 | annee=taux.annee, | |
251 | taux=taux.taux_annuel, | |
ca1a7b76 EMS |
252 | ) |
253 | ||
254 | def sync_valeurpoint(): | |
255 | connection.cursor().execute('TRUNCATE rh_valeurpoint') | |
256 | for vp in legacy.ValeurPoint.objects.all(): | |
257 | ||
258 | # Trouver la devise associée à cette implantation | |
77ad307b | 259 | annee = vp.date_actif[:4] |
ca1a7b76 | 260 | try: |
77ad307b EMS |
261 | taux = legacy.TauxChangeAnnuel.objects.get(annee=annee, id_implantation=vp.id_implantation) |
262 | except: | |
2e31de9f EMS |
263 | continue |
264 | devise = rh.Devise.objects.get(code=taux.code_devise) | |
ca1a7b76 EMS |
265 | |
266 | rh.ValeurPoint.objects.create( | |
267 | id=vp.id_valeur_point, | |
268 | valeur=vp.valeur_point, | |
269 | implantation_id=vp.id_implantation, | |
270 | annee=vp.date_actif[:4], | |
ca1a7b76 EMS |
271 | devise=devise |
272 | ) | |
273 | ||
274 | def sync_typecontrat(): | |
275 | connection.cursor().execute('TRUNCATE rh_typecontrat') | |
276 | for type in legacy.TypeContrat.objects.all(): | |
277 | rh.TypeContrat.objects.create( | |
278 | id=type.id_type_contrat, | |
279 | nom=type.nom_contrat, | |
280 | nom_long=type.description_contrat, | |
e4cec79e | 281 | #actif=bool(type.actif_contrat) |
ca1a7b76 EMS |
282 | ) |
283 | ||
284 | def sync_typerevalorisation(): | |
285 | connection.cursor().execute('TRUNCATE rh_typerevalorisation') | |
286 | for type in legacy.TypeRevalorisation.objects.all(): | |
287 | rh.TypeRevalorisation.objects.create( | |
288 | id=type.id_type_revalorisation, | |
289 | nom=type.type_revalorisation, | |
e4cec79e | 290 | #actif=bool(type.actif) |
ca1a7b76 EMS |
291 | ) |
292 | ||
293 | def sync_typeremuneration(): | |
294 | connection.cursor().execute('TRUNCATE rh_typeremuneration') | |
295 | for type in legacy.TypeRemuneration.objects.all(): | |
296 | rh.TypeRemuneration.objects.create( | |
297 | id=type.id_type_remuneration, | |
298 | nom=type.type_remuneration, | |
299 | type_paiement=type.type_paiement, | |
300 | nature_remuneration=type.nature_remuneration, | |
e4cec79e | 301 | #actif=bool(type.actif) |
ca1a7b76 EMS |
302 | ) |
303 | ||
304 | def sync_dossier(): | |
305 | ||
306 | def clean_date(date): | |
307 | if date == '2003-06-31': # date inexistante (dossier 791-1) | |
308 | return '2003-06-30' | |
309 | elif date: | |
310 | return date | |
311 | else: | |
312 | return None | |
313 | ||
314 | taux_cache = {} | |
315 | def get_taux(annee, devise): | |
316 | taux = taux_cache.get((annee, devise)) | |
317 | if taux is not None: | |
318 | return taux | |
319 | taux = rh.TauxChange.objects.filter(annee__gte=annee).order_by('annee')[0].taux | |
320 | taux_cache[(annee, devise)] = taux | |
321 | return taux | |
322 | ||
323 | cursor = connection.cursor() | |
324 | cursor.execute('TRUNCATE rh_contrat') | |
325 | cursor.execute('TRUNCATE rh_dossier') | |
326 | cursor.execute('TRUNCATE rh_remuneration') | |
327 | cursor.execute('TRUNCATE rh_dossiercommentaire') | |
328 | odette = User.objects.get(username='odette.tremblay') | |
329 | type_contrat_inconnu = rh.TypeContrat.objects.create( | |
330 | nom='Inconnu', | |
331 | nom_long='Inconnu', | |
ca1a7b76 | 332 | ) |
68f6108d EMS |
333 | dossiers = legacy.Dossiers.objects.annotate(timestamp_modif=Max('historique__stamp')) |
334 | for dossier in dossiers: | |
335 | date_modification = datetime.fromtimestamp(dossier.timestamp_modif) \ | |
336 | if dossier.timestamp_modif else None | |
ca1a7b76 EMS |
337 | dossier1 = rh.Dossier.objects.create( |
338 | employe_id=dossier.employe_id, | |
339 | poste_id=dossier.poste_1, | |
340 | statut_id=dossier.id_statut, | |
341 | organisme_bstg_id=dossier.id_bstg, | |
342 | statut_residence='expat' if dossier.id_local_expatrie == 1 else 'local', | |
343 | classement_id=dossier.id_classement, | |
344 | regime_travail=dossier.regime_travail, | |
345 | date_debut=clean_date(dossier.date_debut_mandat), | |
346 | date_fin=clean_date(dossier.date_fin_mandat), | |
68f6108d | 347 | date_modification=date_modification, |
ca1a7b76 | 348 | remplacement=False, |
ca1a7b76 EMS |
349 | supprime=False |
350 | ) | |
351 | if dossier.remarque: | |
352 | rh.DossierCommentaire.objects.create( | |
353 | dossier=dossier1, | |
354 | texte=dossier.remarque, | |
355 | owner=odette | |
356 | ) | |
357 | rh.Contrat.objects.create( | |
358 | dossier=dossier1, | |
359 | type_contrat_id=dossier.id_type_contrat or type_contrat_inconnu.id, | |
360 | date_debut=clean_date(dossier.date_debut_contrat), | |
361 | date_fin=clean_date(dossier.date_fin_contrat), | |
ca1a7b76 EMS |
362 | supprime=False |
363 | ) | |
364 | ||
365 | ||
366 | remuns_precedentes = {} | |
367 | charges_precedentes = None | |
368 | pourcentage_charges = 0 | |
369 | devise_charges = rh.Devise.objects.get(code='EUR') | |
370 | for remun in legacy.HistoRemuneration.objects.filter(no_dossier=dossier.no_dossier) \ | |
371 | .order_by('id_histo_remuneration'): | |
372 | ||
373 | # Calcul de la période | |
374 | date_debut = remun.date_effective | |
375 | if date_debut == '200-08-09': | |
376 | date_debut = '2000-08-09' | |
377 | elif date_debut == '2003-06-31': | |
378 | date_debut = '2003-06-30' | |
379 | if remun.type_remuneration.type_paiement == 'Ponctuel': | |
380 | date_fin = date_debut | |
381 | else: | |
382 | date_fin = None | |
383 | remun_precedente = remuns_precedentes.get(remun.type_remuneration_id) | |
384 | if remun_precedente: | |
385 | if str(remun_precedente.date_debut) == str(date_debut): | |
386 | remun_precedente.delete() | |
387 | else: | |
388 | remun_precedente.date_fin = date_debut | |
389 | remun_precedente.save() | |
390 | ||
391 | # Création de la ligne de rémunération | |
392 | if remun.type_remuneration.nature_remuneration != 'Charges' and remun.montant != 0: | |
393 | devise, created = rh.Devise.objects.get_or_create(code=remun.code_devise) | |
394 | ||
395 | rh_remun = rh.Remuneration.objects.create( | |
ca1a7b76 EMS |
396 | dossier=dossier1, |
397 | type_id=remun.type_remuneration_id, | |
398 | type_revalorisation_id=remun.id_type_revalorisation, | |
d48f0922 | 399 | montant=Decimal(str(remun.montant)), |
ca1a7b76 EMS |
400 | devise=devise, |
401 | supprime=False, | |
402 | date_debut=date_debut, | |
403 | date_fin=date_fin | |
404 | ) | |
405 | ||
406 | # Se souvenir de ce type de rémunération | |
407 | if remun.type_remuneration.type_paiement == u'Régulier': | |
408 | remuns_precedentes[remun.type_remuneration_id] = rh_remun | |
409 | ||
410 | # Charges patronales | |
411 | if remun.type_remuneration.nature_remuneration == 'Charges': | |
412 | pourcentage_charges = remun.pourcentage | |
413 | ||
414 | if remun.type_remuneration.nature_remuneration == 'Traitement': | |
415 | devise_charges = rh.Devise.objects.get(code=remun.code_devise) | |
416 | ||
417 | if remun.type_remuneration.type_paiement == u'Régulier': | |
418 | charges = 0 | |
419 | annee_charges = int(date_debut[:4]) | |
420 | taux2 = get_taux(annee_charges, devise_charges) | |
421 | if pourcentage_charges: | |
422 | for remun_precedente in remuns_precedentes.values(): | |
423 | montant = remun_precedente.montant | |
424 | devise = remun_precedente.devise | |
425 | if devise != devise_charges: | |
426 | taux1 = get_taux(annee_charges, devise) | |
427 | montant = montant * Decimal(str(taux1)) / Decimal(str(taux2)) | |
428 | if remun_precedente.type.nature_remuneration == 'Traitement': | |
429 | montant = montant * remun_precedente.dossier.regime_travail / 100 | |
430 | montant = montant * pourcentage_charges / 100 | |
431 | montant.quantize(remun_precedente.montant) | |
432 | charges += montant | |
433 | charges = charges * pourcentage_charges / 100 | |
434 | if charges_precedentes: | |
435 | if str(charges_precedentes.date_debut) == str(date_debut): | |
436 | charges_precedentes.delete() | |
437 | else: | |
438 | charges_precedentes.date_fin = date_debut | |
439 | charges_precedentes.save() | |
440 | if charges > 0 and \ | |
441 | (not charges_precedentes or charges_precedentes.montant != charges or | |
442 | str(charges_precedentes.date_debut) == str(date_debut)): | |
443 | charges_precedentes = rh.Remuneration.objects.create( | |
ca1a7b76 EMS |
444 | dossier=dossier1, |
445 | type_id=17, | |
446 | type_revalorisation_id=None, | |
d48f0922 | 447 | montant=Decimal(str(charges)), |
ca1a7b76 EMS |
448 | devise=devise_charges, |
449 | supprime=False, | |
450 | date_debut=date_debut, | |
451 | commentaire=u'Charges patronales: %s%%' % pourcentage_charges | |
452 | ) | |
453 | ||
454 | # Dossier différent pour le deuxième poste | |
455 | if dossier.poste_2: | |
456 | dossier2 = rh.Dossier.objects.create( | |
457 | employe_id=dossier.employe_id, | |
458 | poste_id=dossier.poste_2, | |
459 | statut_id=dossier.id_statut, | |
460 | organisme_bstg_id=dossier.id_bstg, | |
461 | statut_residence='expat' if dossier.id_local_expatrie == 1 else 'local', | |
462 | classement_id=dossier.id_classement, | |
463 | regime_travail=dossier.regime_travail, | |
464 | date_debut=clean_date(dossier.date_debut_mandat), | |
465 | date_fin=clean_date(dossier.date_fin_mandat), | |
466 | remplacement=False, | |
ca1a7b76 EMS |
467 | supprime=False |
468 | ) | |
68f6108d EMS |
469 | if dossier.remarque: |
470 | rh.DossierCommentaire.objects.create( | |
471 | dossier=dossier2, | |
472 | texte=dossier.remarque, | |
473 | owner=odette | |
474 | ) | |
475 | rh.Contrat.objects.create( | |
ca1a7b76 | 476 | dossier=dossier2, |
68f6108d EMS |
477 | type_contrat_id=dossier.id_type_contrat or type_contrat_inconnu.id, |
478 | date_debut=clean_date(dossier.date_debut_contrat), | |
479 | date_fin=clean_date(dossier.date_fin_contrat), | |
68f6108d | 480 | supprime=False |
ca1a7b76 | 481 | ) |
ca1a7b76 EMS |
482 | |
483 | def sync_ayantdroit(): | |
484 | connection.cursor().execute('TRUNCATE rh_ayantdroit') | |
485 | odette = User.objects.get(username='odette.tremblay') | |
486 | for ad in legacy.AyantDroit.objects.all(): | |
487 | rh_ad = rh.AyantDroit.objects.create( | |
488 | id=ad.id_ayant_droit, | |
489 | nom=ad.nom_ayant_droit, | |
490 | prenom=ad.prenom_ayant_droit, | |
491 | employe_id=ad.no_employe, | |
492 | lien_parente=None if ad.lien_parente == 'Autre' else ad.lien_parente, | |
e4cec79e | 493 | #actif=bool(ad.actif) |
ca1a7b76 EMS |
494 | ) |
495 | if ad.commentaire_ayant_droit: | |
496 | rh.AyantDroitCommentaire.objects.create( | |
497 | ayant_droit=rh_ad, | |
498 | texte=ad.commentaire_ayant_droit, | |
499 | owner=odette | |
500 | ) |