[FIX] Schedule jobs even if their next time has passed.
[odoo/odoo.git] / addons / report_analytic_planning / report_analytic_planning.py
index 6cd4f16..04ae316 100644 (file)
@@ -1,30 +1,22 @@
 # -*- encoding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (c) 2004-2008 TINY SPRL. (http://tiny.be) All Rights Reserved.
+#    OpenERP, Open Source Management Solution  
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    $Id$
 #
-# $Id$
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
 #
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
 #
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 ##############################################################################
 
@@ -45,7 +37,7 @@ class report_account_analytic_planning(osv.osv):
         'stat_ids': fields.one2many('report_account_analytic.planning.stat', 'planning_id', 'Planning analysis', readonly=True),
         'stat_user_ids': fields.one2many('report_account_analytic.planning.stat.user', 'planning_id', 'Planning by user', readonly=True),
         'stat_account_ids': fields.one2many('report_account_analytic.planning.stat.account', 'planning_id', 'Planning by account', readonly=True),
-        'state': fields.selection([('open','Open'),('done','Done')], 'State', required=True)
+        'state': fields.selection([('open','Open'),('done','Done')], 'Status', required=True)
     }
     _defaults = {
         'name': lambda *a: time.strftime('%Y-%m-%d'),
@@ -81,7 +73,7 @@ class report_account_analytic_planning_stat_account(osv.osv):
     def _sum_amount_real(self, cr, uid, ids, name, args, context):
         result = {}
         for line in self.browse(cr, uid, ids, context):
-            cr.execute('select sum(unit_amount) from account_analytic_line where account_id=%d and date>=%s and date<=%s', (line.account_id.id,line.planning_id.date_from,line.planning_id.date_to))
+            cr.execute('select sum(unit_amount) from account_analytic_line where account_id=%s and date>=%s and date<=%s', (line.account_id.id,line.planning_id.date_from,line.planning_id.date_to))
             result[line.id] = cr.fetchone()[0]
         return result
     _columns = {
@@ -118,30 +110,32 @@ class report_account_analytic_planning_stat(osv.osv):
         result = {}
         for line in self.browse(cr, uid, ids, context):
             if line.user_id:
-                cr.execute('select sum(unit_amount) from account_analytic_line where user_id=%d and account_id=%d and date>=%s and date<=%s', (line.user_id.id,line.account_id.id,line.planning_id.date_from,line.planning_id.date_to))
+                cr.execute('select sum(unit_amount) from account_analytic_line where user_id=%s and account_id=%s and date>=%s and date<=%s', (line.user_id.id,line.account_id.id,line.planning_id.date_from,line.planning_id.date_to))
             else:
-                cr.execute('select sum(unit_amount) from account_analytic_line where account_id=%d and date>=%s and date<=%s', (line.account_id.id,line.planning_id.date_from,line.planning_id.date_to))
+                cr.execute('select sum(unit_amount) from account_analytic_line where account_id=%s and date>=%s and date<=%s', (line.account_id.id,line.planning_id.date_from,line.planning_id.date_to))
             result[line.id] = cr.fetchone()[0]
         return result
     def _sum_amount_tasks(self, cr, uid, ids, name, args, context):
         result = {}
         for line in self.browse(cr, uid, ids, context):
             where = ''
+            sqlarg = ()
             if line.user_id:
-                where='user_id='+str(line.user_id.id)+' and '
+                where='user_id=%s and '
+                sqlarg = (line.user_id.id,)
             cr.execute('''select
                     sum(planned_hours)
                 from
                     project_task
                 where
                 '''+where+'''
-                    project_id in (select id from project_project where category_id=%d) and
+                    project_id in (select id from project_project where category_id=%s) and
                     date_close>=%s and
-                    date_close<=%s''', (
-                line.account_id.id,
-                line.planning_id.date_from,
-                line.planning_id.date_to)
-            )
+                    date_close<=%s''',
+                        sqlarg + (
+                           line.account_id.id,
+                           line.planning_id.date_from,
+                           line.planning_id.date_to))
             result[line.id] = cr.fetchone()[0]
         return result
     _columns = {
@@ -187,7 +181,7 @@ class report_account_analytic_planning_stat_user(osv.osv):
         for line in self.browse(cr, uid, ids, context):
             result[line.id] = 0.0
             if line.user_id:
-                cr.execute('select sum(unit_amount) from account_analytic_line where user_id=%d and date>=%s and date<=%s', (line.user_id.id,line.planning_id.date_from,line.planning_id.date_to))
+                cr.execute('select sum(unit_amount) from account_analytic_line where user_id=%s and date>=%s and date<=%s', (line.user_id.id,line.planning_id.date_from,line.planning_id.date_to))
                 result[line.id] = cr.fetchone()[0]
         return result
     _columns = {