2009-10-13 05:58:37 +00:00
# -*- coding: utf-8 -*-
2006-12-07 13:41:40 +00:00
##############################################################################
2009-10-14 11:15:34 +00:00
#
# OpenERP, Open Source Management Solution
2010-01-12 09:18:39 +00:00
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
2008-11-03 19:18:56 +00:00
#
# This program is free software: you can redistribute it and/or modify
2009-10-14 11:15:34 +00:00
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
2008-11-03 19:18:56 +00:00
#
# 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
2009-10-14 11:15:34 +00:00
# GNU Affero General Public License for more details.
2008-11-03 19:18:56 +00:00
#
2009-10-14 11:15:34 +00:00
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
2006-12-07 13:41:40 +00:00
#
##############################################################################
2009-10-14 11:15:34 +00:00
2006-12-07 13:41:40 +00:00
import time
import pooler
from report import report_sxw
#
# Use period and Journal for selection or resources
#
class account_analytic_journal ( report_sxw . rml_parse ) :
2008-07-22 15:11:28 +00:00
def __init__ ( self , cr , uid , name , context ) :
2009-10-09 11:49:00 +00:00
super ( account_analytic_journal , self ) . __init__ ( cr , uid , name , context = context )
2008-07-22 15:11:28 +00:00
self . localcontext . update ( {
' time ' : time ,
' lines ' : self . _lines ,
' lines_a ' : self . _lines_a ,
' sum_general ' : self . _sum_general ,
' sum_analytic ' : self . _sum_analytic ,
} )
2006-12-07 13:41:40 +00:00
2008-07-22 15:11:28 +00:00
def _lines ( self , journal_id , date1 , date2 ) :
2008-12-10 14:29:55 +00:00
self . cr . execute ( ' SELECT DISTINCT move_id FROM account_analytic_line WHERE (date>= %s ) AND (date<= %s ) AND (journal_id= %s ) AND (move_id is not null) ' , ( date1 , date2 , journal_id , ) )
2008-07-22 15:11:28 +00:00
ids = map ( lambda x : x [ 0 ] , self . cr . fetchall ( ) )
return self . pool . get ( ' account.move.line ' ) . browse ( self . cr , self . uid , ids )
2006-12-07 13:41:40 +00:00
2008-07-22 15:11:28 +00:00
def _lines_a ( self , move_id , journal_id , date1 , date2 ) :
ids = self . pool . get ( ' account.analytic.line ' ) . search ( self . cr , self . uid , [ ( ' move_id ' , ' = ' , move_id ) , ( ' journal_id ' , ' = ' , journal_id ) , ( ' date ' , ' >= ' , date1 ) , ( ' date ' , ' <= ' , date2 ) ] )
if not ids :
return [ ]
return self . pool . get ( ' account.analytic.line ' ) . browse ( self . cr , self . uid , ids )
def _sum_general ( self , journal_id , date1 , date2 ) :
2008-12-10 14:29:55 +00:00
self . cr . execute ( ' SELECT SUM(debit-credit) FROM account_move_line WHERE id IN (SELECT move_id FROM account_analytic_line WHERE (date>= %s ) AND (date<= %s ) AND (journal_id= %s ) AND (move_id is not null)) ' , ( date1 , date2 , journal_id , ) )
2008-07-22 15:11:28 +00:00
return self . cr . fetchall ( ) [ 0 ] [ 0 ] or 0
2006-12-07 13:41:40 +00:00
2008-07-22 15:11:28 +00:00
def _sum_analytic ( self , journal_id , date1 , date2 ) :
2008-12-10 14:29:55 +00:00
self . cr . execute ( " SELECT SUM(amount) FROM account_analytic_line WHERE date>= %s AND date<= %s AND journal_id= %s " , ( date1 , date2 , journal_id ) )
2008-07-22 15:11:28 +00:00
res = self . cr . dictfetchone ( )
return res [ ' sum ' ] or 0
2006-12-07 13:41:40 +00:00
2008-10-15 04:54:33 +00:00
report_sxw . report_sxw ( ' report.account.analytic.journal ' , ' account.analytic.journal ' , ' addons/account/project/report/analytic_journal.rml ' , parser = account_analytic_journal , header = False )
2006-12-07 13:41:40 +00:00
2008-07-23 14:41:47 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: