test rapport masse salariale
[auf_rh_dae.git] / project / rh / managers.py
index 48736fc..6b8da7e 100644 (file)
@@ -70,7 +70,8 @@ class ActifsQuerySet(QuerySet):
     debut_field = 'date_debut'
     fin_field = 'date_fin'
 
-    def get_q_actifs(self, date_min=None, date_max=None, annee=None):
+    def _actifs(self, debut_field, fin_field, date_min=None, date_max=None,
+            annee=None):
         q = Q()
         if annee:
             janvier = date(annee, 1, 1)
@@ -81,27 +82,34 @@ class ActifsQuerySet(QuerySet):
             date_min = date_max = date.today()
         if date_min:
             q = q & (
-                Q(**{self.fin_field + '__gte': date_min}) |
-                Q(**{self.fin_field: None}))
+                Q(**{fin_field + '__gte': date_min}) |
+                Q(**{fin_field: None}))
         if date_max:
             q = q & (
-                Q(**{self.debut_field + '__lte': date_max}) |
-                Q(**{self.debut_field: None}))
+                Q(**{debut_field + '__lte': date_max}) |
+                Q(**{debut_field: None}))
 
-        q_inconnus = self.get_q_inconnus()
+        q_inconnus = self._inconnus(debut_field, fin_field)
         return q & ~q_inconnus
 
+    def _inconnus(self, debut_field, fin_field):
+        q = Q(**{
+            debut_field + '__isnull': True,
+            fin_field + '__isnull': True,
+            })
+        return q
+
+    def get_q_actifs(self, date_min=None, date_max=None, annee=None):
+        return self._actifs(self.debut_field, self.fin_field,
+                date_min, date_max, annee)
+
     def actifs(self, date_min=None, date_max=None, annee=None):
         qs = self
         q = self.get_q_actifs(date_min, date_max, annee)
         return qs.filter(q)
 
     def get_q_inconnus(self, date_min=None, date_max=None, annee=None):
-        q = Q(**{
-            self.debut_field + '__isnull': True,
-            self.fin_field + '__isnull': True,
-            })
-        return q
+        return self._inconnus(self.debut_field, self.fin_field)
 
     def inconnus(self):
         qs = self
@@ -186,11 +194,10 @@ class DossierManager(SecurityManager):
 class RemunerationQuerySet(ActifsQuerySet):
 
     def actifs(self, *args, **kwargs):
-        return self \
-                ._actifs('date_debut', 'date_fin', *args, **kwargs) \
-                ._actifs(
-                    'dossier__date_debut', 'dossier__date_fin',
-                    *args, **kwargs)
+        remun_q = self._actifs('date_debut', 'date_fin', *args, **kwargs)
+        dossier_q = self._actifs('dossier__date_debut', 'dossier__date_fin',
+                *args, **kwargs)
+        return self.filter(remun_q & dossier_q)
 
 
 class RemunerationManager(models.Manager):