# -=- encoding: utf-8 -=-
+import os
+from datetime import date, timedelta
+
import reversion
from auf.django.metadata.models import AUFMetadata
from django.conf import settings
from django.core.files.storage import FileSystemStorage
from django.db import models
+from django.db.models import Q
from project.dae.exporter import DossierCopier, PosteCopier
from project.dae.managers import \
copieur = PosteCopier(verbosity=verbosity, dry_run=dry_run)
return copieur.copy(self)
+ def importer_dans_rh(self):
+ poste_rh = self.id_rh or rh.Poste()
+ poste_rh.nom = self.nom
+ poste_rh.implantation = self.implantation
+ poste_rh.type_poste = self.type_poste
+ poste_rh.service = self.service
+ poste_rh.responsable = self.responsable
+ poste_rh.regime_travail = self.regime_travail
+ poste_rh.regime_travail_nb_heure_semaine = \
+ self.regime_travail_nb_heure_semaine
+ poste_rh.local = self.local
+ poste_rh.expatrie = self.expatrie
+ poste_rh.mise_a_disposition = self.mise_a_disposition
+ poste_rh.appel = self.appel
+ poste_rh.classement_min = self.classement_min
+ poste_rh.classement_max = self.classement_max
+ poste_rh.valeur_point_min = self.valeur_point_min
+ poste_rh.valeur_point_max = self.valeur_point_max
+ poste_rh.devise_min = self.devise_min
+ poste_rh.devise_max = self.devise_max
+ poste_rh.salaire_min = self.salaire_min
+ poste_rh.salaire_max = self.salaire_max
+ poste_rh.indemn_min = self.indemn_min
+ poste_rh.indemn_max = self.indemn_max
+ poste_rh.autre_min = self.autre_min
+ poste_rh.autre_max = self.autre_max
+ poste_rh.devise_comparaison = self.devise_comparaison
+ poste_rh.comp_locale_min = self.comp_locale_min
+ poste_rh.comp_locale_max = self.comp_locale_max
+ poste_rh.comp_universite_min = self.comp_universite_min
+ poste_rh.comp_universite_max = self.comp_universite_max
+ poste_rh.comp_fonctionpub_min = self.comp_fonctionpub_min
+ poste_rh.comp_fonctionpub_max = self.comp_fonctionpub_max
+ poste_rh.comp_ong_min = self.comp_ong_min
+ poste_rh.comp_ong_max = self.comp_ong_max
+ poste_rh.comp_autre_min = self.comp_autre_min
+ poste_rh.comp_autre_max = self.comp_autre_max
+ poste_rh.justification = self.justification
+ poste_rh.date_debut = self.date_debut
+ poste_rh.date_fin = self.date_fin
+ poste_rh.save()
+
+ for piece in self.dae_pieces.all():
+ piece_rh = poste_rh.rh_pieces.create(
+ poste=poste_rh,
+ nom=piece.nom
+ )
+ piece_rh.fichier.save(
+ os.path.basename(piece.fichier.name), piece.fichier
+ )
+
+ rh.PosteComparaison.objects.filter(poste=poste_rh).delete()
+ for comp in self.dae_comparaisons_internes.all():
+ poste_rh.rh_comparaisons_internes.create(
+ implantation=comp.implantation,
+ nom=comp.nom,
+ montant=comp.montant,
+ devise=comp.devise
+ )
+
+ rh.PosteFinancement.objects.filter(poste=poste_rh).delete()
+ for financement in self.dae_financements.all():
+ poste_rh.rh_financements.create(
+ type=financement.type,
+ pourcentage=financement.pourcentage,
+ commentaire=financement.commentaire
+ )
+
+ return poste_rh
+
def get_employe(self):
"""
Inspecte les modèles rh v1 pour trouver l'employé du dernier dossier.
def __unicode__(self):
return u'%s %s' % (self.prenom, self.nom.upper())
+ def importer_dans_rh(self):
+ return self.id_rh or rh.Employe.objects.create(
+ nom=self.nom,
+ prenom=self.prenom,
+ genre=self.genre
+ )
+
### DOSSIER
copieur = DossierCopier(verbosity=verbosity, dry_run=dry_run)
return copieur.copy(self)
+ def importer_dans_rh(self):
+ today = date.today()
+ poste_rh = self.poste.importer_dans_rh()
+ employe_rh = self.employe.importer_dans_rh()
+ try:
+ dossier_rh = rh.Dossier.objects.get(
+ Q(date_debut=None) | Q(date_debut__lte=today),
+ Q(date_fin=None) | Q(date_fin__gte=today),
+ poste=poste_rh,
+ employe=employe_rh
+ )
+ except rh.Dossier.DoesNotExist:
+ dossier_rh = rh.Dossier(poste=poste_rh, employe=employe_rh)
+
+ dossier_rh.statut = self.statut
+ dossier_rh.organisme_bstg = self.organisme_bstg
+ dossier_rh.remplacement = self.remplacement
+ dossier_rh.remplacement_de = self.remplacement_de
+ dossier_rh.statut_residence = self.statut_residence
+ dossier_rh.classement = self.classement
+ dossier_rh.regime_travail = self.regime_travail
+ dossier_rh.regime_travail_nb_heure_semaine = \
+ self.regime_travail_nb_heure_semaine
+ dossier_rh.date_debut = self.date_debut
+ dossier_rh.date_fin = self.date_fin
+ dossier_rh.save()
+
+ rh.DossierComparaison.objects.filter(dossier=dossier_rh).delete()
+ for comp in self.dae_comparaisons.all():
+ dossier_rh.rh_comparaisons.create(
+ implantation=comp.implantation,
+ poste=comp.poste,
+ personne=comp.personne,
+ montant=comp.montant,
+ devise=comp.devise
+ )
+
+ if not dossier_rh.rh_contrats.filter(
+ type_contrat=self.type_contrat,
+ date_debut=self.contrat_date_debut,
+ date_fin=self.contrat_date_fin
+ ).exists():
+ dossier_rh.rh_contrats.create(
+ type_contrat=self.type_contrat,
+ date_debut=self.contrat_date_debut,
+ date_fin=self.contrat_date_fin,
+ )
+
+ for piece in self.dae_dossierpieces.all():
+ piece_rh = dossier_rh.rh_dossierpieces.create(
+ nom=piece.nom
+ )
+ piece_rh.fichier.save(
+ os.path.basename(piece.fichier.name), piece.fichier
+ )
+
+ # Fermer les rémunérations qui commencent avant le début du contrat
+ dossier_rh.rh_remunerations.filter(
+ Q(date_debut=None) | Q(date_debut__lt=self.contrat_date_debut),
+ Q(date_fin=None) | Q(date_fin__gte=self.contrat_date_debut)
+ ).update(date_fin=self.contrat_date_debut - timedelta(1))
+
+ # Effacer les rémunérations qui commencent à la date du contrat
+ dossier_rh.rh_remunerations \
+ .filter(date_debut=self.contrat_date_debut) \
+ .delete()
+
+ for remun in self.dae_remunerations.all():
+ dossier_rh.rh_remunerations.get_or_create(
+ type=remun.type,
+ type_revalorisation=remun.type_revalorisation,
+ montant=remun.montant,
+ devise=remun.devise,
+ commentaire=remun.commentaire,
+ date_debut=self.contrat_date_debut,
+ date_fin=self.contrat_date_fin
+ )
+
+ return dossier_rh
+
def get_salaire_anterieur_euros(self):
if self.devise_anterieur is None:
return None