Launchpad automatic translations update.
[odoo/odoo.git] / addons / crm / crm_operators.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #    
4 #    OpenERP, Open Source Management Solution
5 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU Affero General Public License as
9 #    published by the Free Software Foundation, either version 3 of the
10 #    License, or (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU Affero General Public License for more details.
16 #
17 #    You should have received a copy of the GNU Affero General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
19 #
20 ##############################################################################
21
22 import time
23
24 def som(cr, uid, partner_id, args):
25     result = args['som_interval_default']
26     max = args['som_interval_max'] or 4
27     factor = args['som_interval_decrease']
28     date_start=time.time() - args['som_interval']*3600*24*max
29     for i in range(max):
30         next_date = date_start + args['som_interval']*3600*24
31         cr.execute(
32              '''
33              select s.factor from res_partner_event e
34              left join res_partner_som s
35              on (e.som=s.id) where partner_id=%s and date>=%s and date<%s''', 
36              (partner_id, 
37               time.strftime('%Y-%m-%d', time.gmtime(date_start)),
38               time.strftime('%Y-%m-%d', time.gmtime(next_date))))
39
40         soms = cr.fetchall()
41         if len(soms):
42             c = 0
43             nbr = 0.0
44             for som in soms:
45                 if som[0]:
46                     c+=1
47                     nbr+=som[0]
48             if c:
49                 avg = nbr/c
50             else:
51                 avg = result
52             result = result*(1-factor) + (avg*factor)
53         else:
54             avg = args['som_interval_default']
55         date_start = next_date
56     return result
57
58
59
60 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
61