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