From e68dfe0ef94b25e3975738e50ed7610ba7952324 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Thu, 26 Jan 2017 11:33:32 -0700 Subject: [PATCH] Allow more than 6 levels of indentation --- .../report/bom_structure_xls.py | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/mrp_bom_structure_xls/report/bom_structure_xls.py b/mrp_bom_structure_xls/report/bom_structure_xls.py index 4808c1b4..a296f52c 100644 --- a/mrp_bom_structure_xls/report/bom_structure_xls.py +++ b/mrp_bom_structure_xls/report/bom_structure_xls.py @@ -10,6 +10,38 @@ from openerp.tools.translate import _ +class bom_structure_inh(bom_structure): + def __init__(self, cr, uid, name, context): + super(bom_structure, self).__init__(cr, uid, name, context=context) + self.localcontext.update({ + 'get_children': self.get_children, + }) + + def get_children(self, object, level=0): + result = [] + + def _get_rec(object, level): + for l in object: + res = {} + res['pname'] = l.product_id.name + res['pcode'] = l.product_id.default_code + res['pqty'] = l.product_qty + res['uname'] = l.product_uom.name + res['level'] = level + res['code'] = l.bom_id.code + result.append(res) + if l.child_line_ids: + level += 1 + _get_rec(l.child_line_ids, level) + if level > 0: + level -= 1 + return result + + children = _get_rec(object,level) + + return children + + class BomStructureXls(report_xls): column_sizes = [40, 20, 20, 40, 20, 20, 20] @@ -122,4 +154,4 @@ def generate_xls_report(self, _p, _xs, data, objects, wb): # main function _p, data) -BomStructureXls('report.bom.structure.xls', 'mrp.bom', parser=bom_structure) +BomStructureXls('report.bom.structure.xls', 'mrp.bom', parser=bom_structure_inh)