Ajout du nombre de jours plannifiés pour un mesurable
[OpenERP/cmmi.git] / axes.py
diff --git a/axes.py b/axes.py
index a48e86a..0dbbe80 100644 (file)
--- a/axes.py
+++ b/axes.py
@@ -15,6 +15,7 @@ class Mesurable(osv.Model):
                 ("termine", "Terminé"), ("abandonne", "Abandonné"),
                 ("suspendu", "Suspendu"), ("generique", "Générique")]
 
+
     def _nb_jours_init(self, cr, uid, ids, field, arg, context=None):
         result = {}
         for m in self.browse(cr, uid, ids, context=context):
@@ -26,6 +27,19 @@ class Mesurable(osv.Model):
                         datetime.strptime(m.date_init_fin, "%Y-%m-%d").date())
         return result
 
+
+    def _nb_jours_plan(self, cr, uid, ids, field, arg, context=None):
+        result = {}
+        for m in self.browse(cr, uid, ids, context=context):
+            if not m.date_plan_deb or not m.date_plan_fin:
+                result[m.id] = 0
+                continue
+            result[m.id] = Mesurable._nb_jours_ouvre_entre_2_dates(
+                        datetime.strptime(m.date_plan_deb, "%Y-%m-%d").date(),
+                        datetime.strptime(m.date_plan_fin, "%Y-%m-%d").date())
+        return result
+
+
     _columns = {
         "name": fields.char(string="Title", size=64, required=True),
         "description": fields.text(string="Description"),
@@ -39,9 +53,12 @@ class Mesurable(osv.Model):
         "date_plan_fin": fields.date(string="Plan fin"),
         "date_reel_deb": fields.date(string="Réel début"),
         "date_reel_fin": fields.date(string="Réel fin"),
-        "nb_jours_projets": fields.function(_nb_jours_init,
+        "nb_jours_init": fields.function(_nb_jours_init,
+                                            type="integer",
+                                            string="Nombre de jours initials"),
+        "nb_jours_plan": fields.function(_nb_jours_plan,
                                             type="integer",
-                                            string="Nombre de jour"),
+                                            string="Nombre de jours planifiés"),
     }
 
     _defaults = {
@@ -67,10 +84,10 @@ class Mesurable(osv.Model):
     ]
 
 
-    def commencer(self, cr, uid, ids, context=None):
+    def action_commencer(self, cr, uid, ids, context=None):
         if type(ids) == list:
             if len(ids) != 1:
-                return # TODO: message d'avertissement
+                return
             ids = ids[0]
 
         palier = self.read(cr, uid, ids, ['date_plan_deb', 'date_plan_fin', 'state'], context)
@@ -90,13 +107,13 @@ class Mesurable(osv.Model):
         return self
 
 
-    def suspendre(self, cr, uid, ids, context=None):
+    def action_suspendre(self, cr, uid, ids, context=None):
         if type(ids) == list:
             if len(ids) != 1:
                 return # TODO: message d'avertissement
             ids = ids[0]
 
-        mesurable = self.read(cr, uid, ids, ['state'], context, context)
+        mesurable = self.read(cr, uid, ids, ['state'], context)
         if mesurable['state'] != 'encours':
             return
         self.write(
@@ -106,8 +123,61 @@ class Mesurable(osv.Model):
             {'state': 'suspendu'},
             context,
         )
+        return self
+
+    def action_terminer(self, cr, uid, ids, context=None):
+        if type(ids) == list:
+            if len(ids) != 1:
+                return # TODO: message d'avertissement
+            ids = ids[0]
+
+        mesurable = self.read(cr, uid, ids, ['state'], context)
+        if mesurable['state'] != 'encours':
+            return
+        self.write(
+            cr,
+            uid,
+            ids,
+            {'state': 'termine'},
+            context,
+        )
+        return self
+
+    def action_abandonner(self, cr, uid, ids, context=None):
+        if type(ids) == list:
+            if len(ids) != 1:
+                return # TODO: message d'avertissement
+            ids = ids[0]
+
+        mesurable = self.read(cr, uid, ids, ['state'], context)
+        if not ('encours', 'cree').__contains__(mesurable['state']):
+            return
+        self.write(
+            cr,
+            uid,
+            ids,
+            {'state': 'abandonne'},
+            context,
+        )
+        return self
 
+    def action_reprendre(self, cr, uid, ids, context=None):
+        if type(ids) == list:
+            if len(ids) != 1:
+                return # TODO: message d'avertissement
+            ids = ids[0]
 
+        mesurable = self.read(cr, uid, ids, ['state'], context)
+        if mesurable['state'] != 'suspendu':
+            return
+        self.write(
+            cr,
+            uid,
+            ids,
+            {'state': 'encours'},
+            context,
+        )
+        return self
 
 #------------ TRAVAIL CALCUL JOURS OUVRES ------------
     @staticmethod
@@ -217,6 +287,9 @@ class Palier(osv.Model):
         phase_model = self.pool.get("cmmi.projet.phase")
         phases_ids = phase_model.search(cr, uid, [('selectionne', '=', True)])
 
+        palier_model = self.pool.get("cmmi.axes.palier")
+        palier = palier_model.read(cr, uid, palier_id, ['date_plan_deb', 'date_plan_fin'])
+
         # Création des PalierPhase
         palier_phase_model = self.pool.get("cmmi.axes.palier.phase")
         for phase_id in phases_ids:
@@ -226,6 +299,8 @@ class Palier(osv.Model):
                 {
                     'phase_id': phase_id,
                     'palier_id': palier_id,
+                    'date_plan_deb': palier['date_plan_deb'],
+                    'date_plan_fin': palier['date_plan_fin'],
                 }
             )
         return palier_id
@@ -276,7 +351,6 @@ class PalierPhase(osv.Model):
         return osv.Model.create(self, cr, uid, vals, context=context)
 
 
-
 # ================================ CHANTIER ================================= #
 class Chantier(osv.Model):
     _name = "cmmi.axes.chantier"