From ca3cb2d3294e1fb5c550e6178539f1b17c1ff1ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 13 May 2008 18:42:46 +0200 Subject: [PATCH] Add purchase report Add some submenus for purchase --- purchase.odt | Bin 0 -> 12479 bytes purchase.py | 18 +++++++++++++ purchase.xml | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 purchase.odt diff --git a/purchase.odt b/purchase.odt new file mode 100644 index 0000000000000000000000000000000000000000..bc1e3eff21c702c74042b0143b7b2fad2a3caf34 GIT binary patch literal 12479 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 H?(P2oojhX# literal 0 HcmV?d00001 diff --git a/purchase.py b/purchase.py index 32ff8c29c0..d5b1d555fd 100644 --- a/purchase.py +++ b/purchase.py @@ -4,6 +4,7 @@ from trytond.osv import fields, OSV from decimal import Decimal import datetime from trytond.netsvc import LocalService +from trytond.report import Report _STATES = { 'readonly': "state != 'draft'", @@ -686,6 +687,23 @@ class PurchaseLine(OSV): PurchaseLine() +class PurchaseReport(Report): + _name = 'purchase.purchase' + + def parse(self, cursor, user_id, report, objects, datas, context): + user_obj = self.pool.get('res.user') + + user = user_obj.browse(cursor, user_id, user_id, context) + if context is None: + context = {} + context = context.copy() + context['company'] = user.company + + return super(PurchaseReport, self).parse(cursor, user_id, report, + objects, datas, context) +PurchaseReport() + + class Template(OSV): _name = "product.template" diff --git a/purchase.xml b/purchase.xml index 41b65b99b3..7707f39744 100644 --- a/purchase.xml +++ b/purchase.xml @@ -142,6 +142,63 @@ + + Draft Purchases + purchase.purchase + form + [('state', '=', 'draft')] + + + + + + + + + + + + + + + Purchases in Quotation + purchase.purchase + form + [('state', '=', 'quotation')] + + + + + + + + + + + + + + + Confirmed Purchases + purchase.purchase + form + [('state', '=', 'confirmed')] + + + + + + + + + + + + + @@ -458,6 +515,19 @@ + + Purchase + purchase.purchase + purchase.purchase + purchase/purchase.odt + company/header_A4.odt + + + form_print + purchase.purchase,0 + + + purchase.line form