[REPORT] ~pos.receipt: client name and mobile
[burette/bikecoop_l10n_fr.git] / report / pos_receipt.py
1 # -*- coding: utf-8 -*-
2
3 import time
4 from openerp.report import report_sxw
5 from openerp import pooler
6
7 def titlize(journal_name):
8 words = journal_name.split()
9 while words.pop() != 'journal':
10 continue
11 return ' '.join(words)
12
13 class order(report_sxw.rml_parse):
14
15 def __init__(self, cr, uid, name, context):
16 super(order, self).__init__(cr, uid, name, context=context)
17
18 user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context)
19 partner = user.company_id.partner_id
20
21 self.localcontext.update({
22 'time': time,
23 'disc': self.discount,
24 'net': self.netamount,
25 'get_journal_amt': self._get_journal_amt,
26 'address': partner or False,
27 'titlize': titlize
28 })
29
30 def netamount(self, order_line_id):
31 sql = 'select (qty*price_unit) as net_price from pos_order_line where id = %s'
32 self.cr.execute(sql, (order_line_id,))
33 res = self.cr.fetchone()
34 return res[0]
35
36 def discount(self, order_id):
37 sql = 'select discount, price_unit, qty from pos_order_line where order_id = %s '
38 self.cr.execute(sql, (order_id,))
39 res = self.cr.fetchall()
40 dsum = 0
41 for line in res:
42 if line[0] != 0:
43 dsum = dsum +(line[2] * (line[0]*line[1]/100))
44 return dsum
45
46 def _get_journal_amt(self, order_id):
47 data={}
48 sql = """ select aj.name,absl.amount as amt from account_bank_statement as abs
49 LEFT JOIN account_bank_statement_line as absl ON abs.id = absl.statement_id
50 LEFT JOIN account_journal as aj ON aj.id = abs.journal_id
51 WHERE absl.pos_statement_id =%d"""%(order_id)
52 self.cr.execute(sql)
53 data = self.cr.dictfetchall()
54 return data
55
56
57
58 report_sxw.report_sxw('report.bikecoop_l10n_fr.receipt', 'pos.order', 'addons/bikecoop_l10n_fr/report/pos_receipt_bikecoop_l10n_fr.rml', parser=order, header=False)