X-Git-Url: https://git.cyclocoop.org/?p=burette%2Fbikecoop_l10n_fr.git;a=blobdiff_plain;f=report%2Fpos_receipt.py;fp=report%2Fpos_receipt.py;h=837902783849f7625c7be20e6cba88a503cdf4bf;hp=0000000000000000000000000000000000000000;hb=e3a28836abc2a8203f8a5b3bf70ce41c32c7b65a;hpb=ed4edcf88d99b21586818116c84c915cdc68c21c diff --git a/report/pos_receipt.py b/report/pos_receipt.py new file mode 100644 index 0000000..8379027 --- /dev/null +++ b/report/pos_receipt.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- + +import time +from openerp.report import report_sxw +from openerp import pooler + +def titlize(journal_name): + words = journal_name.split() + while words.pop() != 'journal': + continue + return ' '.join(words) + +class order(report_sxw.rml_parse): + + def __init__(self, cr, uid, name, context): + super(order, self).__init__(cr, uid, name, context=context) + + user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context) + partner = user.company_id.partner_id + + self.localcontext.update({ + 'time': time, + 'disc': self.discount, + 'net': self.netamount, + 'get_journal_amt': self._get_journal_amt, + 'address': partner or False, + 'titlize': titlize + }) + + def netamount(self, order_line_id): + sql = 'select (qty*price_unit) as net_price from pos_order_line where id = %s' + self.cr.execute(sql, (order_line_id,)) + res = self.cr.fetchone() + return res[0] + + def discount(self, order_id): + sql = 'select discount, price_unit, qty from pos_order_line where order_id = %s ' + self.cr.execute(sql, (order_id,)) + res = self.cr.fetchall() + dsum = 0 + for line in res: + if line[0] != 0: + dsum = dsum +(line[2] * (line[0]*line[1]/100)) + return dsum + + def _get_journal_amt(self, order_id): + data={} + sql = """ select aj.name,absl.amount as amt from account_bank_statement as abs + LEFT JOIN account_bank_statement_line as absl ON abs.id = absl.statement_id + LEFT JOIN account_journal as aj ON aj.id = abs.journal_id + WHERE absl.pos_statement_id =%d"""%(order_id) + self.cr.execute(sql) + data = self.cr.dictfetchall() + return data + + + +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)