[REPORT] ~pos.receipt: client name and mobile
[burette/bikecoop_l10n_fr.git] / report / pos_receipt.py
diff --git a/report/pos_receipt.py b/report/pos_receipt.py
new file mode 100644 (file)
index 0000000..8379027
--- /dev/null
@@ -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)