~technofluid-team/openobject-addons/technofluid_multiple_installations

« back to all changes in this revision

Viewing changes to elneo_maintenance/wizard/wizard_import_timeofuse.py

  • Committer: dro
  • Date: 2014-07-31 07:46:46 UTC
  • Revision ID: dro-20140731074646-jlmfj4ymd3bszh4g
Ajout de la possibilité de recalculer automatiquement le temps attendu de fonctionnement d'un élément de maintenance

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
'''
 
2
Created on 29 juil. 2014
 
3
 
 
4
@author: elneo
 
5
'''
 
6
from osv import osv,fields
 
7
from datetime import datetime
 
8
 
 
9
class maintenance_element_timeofuse_wizard_detail(osv.osv_memory):
 
10
    _name = 'maintenance.element.timeofuse.wizard.detail'
 
11
    
 
12
    _columns = {
 
13
        'wizard_id':fields.many2one('maintenance.element.timeofuse.wizard.time_of_use', 'Wizard'),
 
14
        'date':fields.datetime('Date'),
 
15
        'time_of_use':fields.float('Time of Use'),
 
16
        
 
17
        
 
18
    }
 
19
maintenance_element_timeofuse_wizard_detail()
 
20
 
 
21
class import_timeofuse(osv.osv_memory):
 
22
    _name = 'maintenance.element.timeofuse.wizard'
 
23
    
 
24
    def calculate(self,cr,uid,ids,context=None):
 
25
        
 
26
        res={'nodestroy':True}
 
27
        
 
28
        
 
29
        for element in self.browse(cr,uid,ids,context=context):
 
30
            if (len(element.history) == 2):
 
31
                days_diff = abs((datetime.strptime(element.history[0]['date'],'%Y-%m-%d %H:%M:%S')-datetime.strptime(element.history[1]['date'],'%Y-%m-%d %H:%M:%S')).days)
 
32
                counters_diff = abs(element.history[0]['time_of_use']-element.history[1]['time_of_use'])
 
33
                real_hours = int((counters_diff/days_diff) * 365)
 
34
                data={}
 
35
                
 
36
                
 
37
                self.write(cr,uid,ids,{'calc_time':real_hours},context=context)
 
38
 
 
39
        return res
 
40
    
 
41
    def _get_history(self,cr,uid,context=None):
 
42
        res = []
 
43
        
 
44
        if(context and context.has_key('active_ids')):
 
45
            element_ids = context['active_ids']
 
46
            elements = self.pool.get('maintenance.element').browse(cr,uid,element_ids,context=context)
 
47
            tmp=[]
 
48
            for element in elements:
 
49
                for timeofuse in element.timeofuse_history:
 
50
                    tmp.append({'date':timeofuse.date,'time_of_use':timeofuse.time_of_use})
 
51
            res=tmp
 
52
            
 
53
            res.sort(key=lambda x: x['date'],reverse=True)
 
54
            
 
55
            res = res[0:2]
 
56
            
 
57
        return res
 
58
    
 
59
    _columns={
 
60
              'history':fields.one2many('maintenance.element.timeofuse.wizard.detail','wizard_id','Time of Use'),
 
61
              'calc_time':fields.float('Calculated Time')
 
62
              }
 
63
    
 
64
    _defaults={
 
65
               'history':_get_history,
 
66
               'calc_time':0
 
67
               }
 
68
    def import_time(self,cr,uid,ids,context=None):
 
69
        res={}
 
70
        
 
71
        for el in self.browse(cr,uid,ids,context=context):
 
72
            self.pool.get('maintenance.element').write(cr,uid,context['active_ids'],{'expected_time_of_use':el.calc_time})
 
73
            
 
74
        return res
 
75
    
 
76
    
 
77
 
 
78
import_timeofuse()