[MERGE] Merged demo homepage improvements
[odoo/odoo.git] / addons / mrp / report / bom_structure.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 import time
23 from openerp.report import report_sxw
24
25 class bom_structure(report_sxw.rml_parse):
26     def __init__(self, cr, uid, name, context):
27         super(bom_structure, self).__init__(cr, uid, name, context=context)
28         self.localcontext.update({
29             'time': time,
30             'get_children':self.get_children,
31         })
32
33     def get_children(self, object, level=0):
34         result = []
35
36         def _get_rec(object, level):
37             for l in object:
38                 res = {}
39                 res['name'] = l.name
40                 res['pname'] = l.product_id.name
41                 res['pcode'] = l.product_id.default_code
42                 res['pqty'] = l.product_qty
43                 res['uname'] = l.product_uom.name
44                 res['code'] = l.code
45                 res['level'] = level
46                 result.append(res)
47                 if l.child_complete_ids:
48                     if level<6:
49                         level += 1
50                     _get_rec(l.child_complete_ids,level)
51                     if level>0 and level<6:
52                         level -= 1
53             return result
54
55         children = _get_rec(object,level)
56
57         return children
58
59 report_sxw.report_sxw('report.bom.structure','mrp.bom','mrp/report/bom_structure.rml',parser=bom_structure,header='internal')
60
61
62 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: