Launchpad automatic translations update.
[odoo/odoo.git] / addons / account / report / common_report_header.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 from openerp import pooler
23 from openerp.tools.translate import _
24
25 class common_report_header(object):
26
27     def _sum_debit(self, period_id=False, journal_id=False):
28         if journal_id and isinstance(journal_id, int):
29             journal_id = [journal_id]
30         if period_id and isinstance(period_id, int):
31             period_id = [period_id]
32         if not journal_id:
33             journal_id = self.journal_ids
34         if not period_id:
35             period_id = self.period_ids
36         if not (period_id and journal_id):
37             return 0.0
38         self.cr.execute('SELECT SUM(debit) FROM account_move_line l '
39                         'WHERE period_id IN %s AND journal_id IN %s ' + self.query_get_clause + ' ',
40                         (tuple(period_id), tuple(journal_id)))
41         return self.cr.fetchone()[0] or 0.0
42
43     def _sum_credit(self, period_id=False, journal_id=False):
44         if journal_id and isinstance(journal_id, int):
45             journal_id = [journal_id]
46         if period_id and isinstance(period_id, int):
47             period_id = [period_id]
48         if not journal_id:
49             journal_id = self.journal_ids
50         if not period_id:
51             period_id = self.period_ids
52         if not (period_id and journal_id):
53             return 0.0
54         self.cr.execute('SELECT SUM(credit) FROM account_move_line l '
55                         'WHERE period_id IN %s AND journal_id IN %s '+ self.query_get_clause+'',
56                         (tuple(period_id), tuple(journal_id)))
57         return self.cr.fetchone()[0] or 0.0
58
59     def _get_start_date(self, data):
60         if data.get('form', False) and data['form'].get('date_from', False):
61             return data['form']['date_from']
62         return ''
63
64     def _get_target_move(self, data):
65         if data.get('form', False) and data['form'].get('target_move', False):
66             if data['form']['target_move'] == 'all':
67                 return _('All Entries')
68             return _('All Posted Entries')
69         return ''
70
71     def _get_end_date(self, data):
72         if data.get('form', False) and data['form'].get('date_to', False):
73             return data['form']['date_to']
74         return ''
75
76     def get_start_period(self, data):
77         if data.get('form', False) and data['form'].get('period_from', False):
78             return pooler.get_pool(self.cr.dbname).get('account.period').browse(self.cr,self.uid,data['form']['period_from']).name
79         return ''
80
81     def get_end_period(self, data):
82         if data.get('form', False) and data['form'].get('period_to', False):
83             return pooler.get_pool(self.cr.dbname).get('account.period').browse(self.cr, self.uid, data['form']['period_to']).name
84         return ''
85
86     def _get_account(self, data):
87         if data.get('form', False) and data['form'].get('chart_account_id', False):
88             return pooler.get_pool(self.cr.dbname).get('account.account').browse(self.cr, self.uid, data['form']['chart_account_id']).name
89         return ''
90
91     def _get_sortby(self, data):
92         raise (_('Error!'), _('Not implemented.'))
93
94     def _get_filter(self, data):
95         if data.get('form', False) and data['form'].get('filter', False):
96             if data['form']['filter'] == 'filter_date':
97                 return self._translate('Date')
98             elif data['form']['filter'] == 'filter_period':
99                 return self._translate('Periods')
100         return self._translate('No Filters')
101
102     def _sum_debit_period(self, period_id, journal_id=None):
103         journals = journal_id or self.journal_ids
104         if not journals:
105             return 0.0
106         self.cr.execute('SELECT SUM(debit) FROM account_move_line l '
107                         'WHERE period_id=%s AND journal_id IN %s '+ self.query_get_clause +'',
108                         (period_id, tuple(journals)))
109
110         return self.cr.fetchone()[0] or 0.0
111
112     def _sum_credit_period(self, period_id, journal_id=None):
113         journals = journal_id or self.journal_ids
114         if not journals:
115             return 0.0
116         self.cr.execute('SELECT SUM(credit) FROM account_move_line l '
117                         'WHERE period_id=%s AND journal_id IN %s ' + self.query_get_clause +' ',
118                         (period_id, tuple(journals)))
119         return self.cr.fetchone()[0] or 0.0
120
121     def _get_fiscalyear(self, data):
122         if data.get('form', False) and data['form'].get('fiscalyear_id', False):
123             return pooler.get_pool(self.cr.dbname).get('account.fiscalyear').browse(self.cr, self.uid, data['form']['fiscalyear_id']).name
124         return ''
125
126     def _get_company(self, data):
127         if data.get('form', False) and data['form'].get('chart_account_id', False):
128             return pooler.get_pool(self.cr.dbname).get('account.account').browse(self.cr, self.uid, data['form']['chart_account_id']).company_id.name
129         return ''
130
131     def _get_journal(self, data):
132         codes = []
133         if data.get('form', False) and data['form'].get('journal_ids', False):
134             self.cr.execute('select code from account_journal where id IN %s',(tuple(data['form']['journal_ids']),))
135             codes = [x for x, in self.cr.fetchall()]
136         return codes
137
138     def _get_currency(self, data):
139         if data.get('form', False) and data['form'].get('chart_account_id', False):
140             return pooler.get_pool(self.cr.dbname).get('account.account').browse(self.cr, self.uid, data['form']['chart_account_id']).company_id.currency_id.symbol
141         return ''
142
143 #vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
144
145 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: