← Back to team overview

savoirfairelinux-openerp team mailing list archive

lp:~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom into lp:openerp-manufacturing

 

Jonatan Cloutier has proposed merging lp:~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom into lp:openerp-manufacturing.

Requested reviews:
  Alexandre Fayolle - camptocamp (alexandre-fayolle-c2c)
  Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903): review, no test.

For more details, see:
https://code.launchpad.net/~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom/+merge/158486

Add a module that add the fields 'Bubble Number' and 'RefDes' (reference description) to a component in BoM view that is useful for some industrial design.
-- 
https://code.launchpad.net/~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom/+merge/158486
Your team Savoir-faire Linux' OpenERP is subscribed to branch lp:~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom.
=== added directory 'mrp_industrial_design_bom'
=== added file 'mrp_industrial_design_bom/__init__.py'
--- mrp_industrial_design_bom/__init__.py	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/__init__.py	2013-04-11 20:48:25 +0000
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
+#
+##############################################################################
+
+import industrial_design
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'mrp_industrial_design_bom/__openerp__.py'
--- mrp_industrial_design_bom/__openerp__.py	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/__openerp__.py	2013-04-11 20:48:25 +0000
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    'name' : 'Industrial design specification in BoM',
+    'version' : '1.0',
+    "author" : "Savoir-faire Linux",
+    "website" : "http://www.savoirfairelinux.com";,
+    'license': 'AGPL-3',
+    'category' : 'Specific Industry Applications',
+    'depends' : ['mrp'],
+    "data" : ['mrp_industrial_design.xml'],
+    'description': """
+Add the fields 'Bubble Number' and 'RefDes' (reference description) to a component in BoM view.
+""",
+    'auto_install': False,
+    'installable': True
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added directory 'mrp_industrial_design_bom/i18n'
=== added file 'mrp_industrial_design_bom/i18n/fr.po'
--- mrp_industrial_design_bom/i18n/fr.po	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/i18n/fr.po	2013-04-11 20:48:25 +0000
@@ -0,0 +1,32 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* mrp_industrial_design_bom
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-03-26 16:23+0000\n"
+"PO-Revision-Date: 2013-03-26 14:00-0500\n"
+"Last-Translator: Marc Cassuto <marc.cassuto@xxxxxxxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+
+#. module: mrp_industrial_design_bom
+#: model:ir.model,name:mrp_industrial_design_bom.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Nomenclature"
+
+#. module: mrp_industrial_design_bom
+#: field:mrp.bom,refdes:0
+msgid "Notes"
+msgstr "notes"
+
+#. module: mrp_industrial_design_bom
+#: field:mrp.bom,bubble_number:0
+msgid "No"
+msgstr "N°"
+

=== added file 'mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot'
--- mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot	2013-04-11 20:48:25 +0000
@@ -0,0 +1,32 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* mrp_industrial_design_bom
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-03-26 16:23+0000\n"
+"PO-Revision-Date: 2013-03-26 16:23+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: mrp_industrial_design_bom
+#: model:ir.model,name:mrp_industrial_design_bom.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: mrp_industrial_design_bom
+#: field:mrp.bom,refdes:0
+msgid "Notes"
+msgstr ""
+
+#. module: mrp_industrial_design_bom
+#: field:mrp.bom,bubble_number:0
+msgid "No"
+msgstr ""
+

=== added file 'mrp_industrial_design_bom/industrial_design.py'
--- mrp_industrial_design_bom/industrial_design.py	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/industrial_design.py	2013-04-11 20:48:25 +0000
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2010 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
+#
+##############################################################################
+
+from openerp.osv import fields, orm
+
+class mrp_bom(orm.Model):
+    _inherit = 'mrp.bom'
+    _columns = {
+        'bubble_number': fields.integer('No'),
+        'refdes': fields.text('Notes'),
+    }
+    
+    _order = "bubble_number"
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'mrp_industrial_design_bom/mrp_industrial_design.xml'
--- mrp_industrial_design_bom/mrp_industrial_design.xml	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/mrp_industrial_design.xml	2013-04-11 20:48:25 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data>
+    <delete model="ir.actions.report.xml" search="[('name', '=', 'bom.structure')]" />
+        <report auto="True" 
+        header="False"
+        id="report_custom_bom_structure"
+        model="mrp.bom"
+        name="custom.bom.structure"
+        rml="mrp_industrial_design_bom/report/bom_structure_custom.rml"
+        string="BOM Structure"/>
+
+        <record model="ir.ui.view" id="mrp_bom_form_view_inherit">
+            <field name="name">mrp.bom.form.inherit</field>
+            <field name="model">mrp.bom</field>
+            <field name="inherit_id" ref="mrp.mrp_bom_form_view" />
+            <field name="arch" type="xml">
+                <xpath expr="/form/notebook/page/field/tree/field[@name='product_id']" position="before">
+                    <field name="bubble_number" />
+                </xpath>
+                <xpath expr="/form/notebook/page/field/tree/field[@name='date_stop']" position="after">
+                    <field name="refdes" />
+                </xpath>
+            </field>
+        </record>
+        
+    </data>
+</openerp>
+

=== added directory 'mrp_industrial_design_bom/report'
=== added file 'mrp_industrial_design_bom/report/__init__.py'
--- mrp_industrial_design_bom/report/__init__.py	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/report/__init__.py	2013-04-11 20:48:25 +0000
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import bom_structure_custom

=== added file 'mrp_industrial_design_bom/report/bom_structure_custom.odt'
Binary files mrp_industrial_design_bom/report/bom_structure_custom.odt	1970-01-01 00:00:00 +0000 and mrp_industrial_design_bom/report/bom_structure_custom.odt	2013-04-11 20:48:25 +0000 differ
=== added file 'mrp_industrial_design_bom/report/bom_structure_custom.py'
--- mrp_industrial_design_bom/report/bom_structure_custom.py	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/report/bom_structure_custom.py	2013-04-11 20:48:25 +0000
@@ -0,0 +1,69 @@
+## -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+from openerp.report import report_sxw
+from openerp.osv import osv
+from openerp import pooler
+
+class bom_structure(report_sxw.rml_parse):
+    def __init__(self, cr, uid, name, context):
+        super(bom_structure, self).__init__(cr, uid, name, context=context)
+        self.localcontext.update({
+            'time': time,
+            'get_children':self.get_children,
+        })
+
+    def get_children(self, object, level=0):
+        result = []
+
+        def _get_rec(object, level):
+            for l in object:
+                res = {}
+                res['name'] = l.name
+                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['code'] = l.code
+                res['level'] = level
+                res['bnumber'] = l.bubble_number
+                result.append(res)
+                if l.child_complete_ids:
+                    if level<6:
+                        level += 1
+                    _get_rec(l.child_complete_ids,level)
+                    if level>0 and level<6:
+                        level -= 1
+            return result
+
+        children = _get_rec(object,level)
+
+        return children
+
+report_sxw.report_sxw('report.custom.bom.structure',
+                      'mrp.bom',
+                      'mrp_industrial_design_bom/report/bom_structure_custom.rml',
+                      parser=bom_structure,
+                      header='internal')
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'mrp_industrial_design_bom/report/bom_structure_custom.rml'
--- mrp_industrial_design_bom/report/bom_structure_custom.rml	1970-01-01 00:00:00 +0000
+++ mrp_industrial_design_bom/report/bom_structure_custom.rml	2013-04-11 20:48:25 +0000
@@ -0,0 +1,158 @@
+<?xml version="1.0"?>
+<document filename="test.pdf">
+  <template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
+    <pageTemplate id="first">
+      <frame id="first" x1="31.0" y1="30.0" width="532" height="781"/>
+    </pageTemplate>
+  </template>
+  <stylesheet>
+    <blockTableStyle id="Standard_Outline">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table2">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table1">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBELOW" colorName="#999999" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#999999" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#999999" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#999999" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#999999" start="4,-1" stop="4,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table3">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
+    </blockTableStyle>
+    <initialize>
+      <paraStyle name="all" alignment="justify"/>
+    </initialize>
+    <paraStyle name="P1" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P3" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="Standard" fontName="Helvetica"/>
+    <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="Text_20_body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
+    <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
+    <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="Index" fontName="Helvetica"/>
+    <paraStyle name="Table_20_Contents" fontName="Helvetica" fontSize="6.0" leading="8" alignment="LEFT"/>
+    <paraStyle name="Table_20_Heading" fontName="Helvetica" fontSize="6.0" leading="8" alignment="CENTER"/>
+    <paraStyle name="terp_5f_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_default_5f_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_Bold_5f_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_Bold_5f_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_tblheader_5f_General" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_tblheader_5f_General_5f_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_default_5f_Centre_5f_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_tblheader_5f_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="Footer" fontName="Helvetica"/>
+    <paraStyle name="Horizontal_20_Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
+    <paraStyle name="Heading_20_9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_tblheader_5f_General_5f_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_tblheader_5f_Details_5f_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_tblheader_5f_Details_5f_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_default_5f_Right_5f_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_header_5f_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_header_5f_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_default_5f_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_Centre_5f_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_Right_5f_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_Right_5f_9_5f_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_5f_default_5f_8_5f_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="Heading_20_2" fontName="Helvetica-BoldOblique" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_5f_remove_5f_space" fontName="Helvetica" fontSize="2.0" leading="3" spaceBefore="0.0" spaceAfter="0.0"/>
+    <images/>
+  </stylesheet>
+  <story>
+    <para style="terp_5f_header_5f_Centre">BOM Structure</para>
+    <blockTable colWidths="141.0,74.0,213.0,52.0,52.0" style="Table2">
+      <tr>
+        <td>
+          <para style="terp_5f_tblheader_5f_Details">BOM Name</para>
+        </td>
+        <td>
+          <para style="P3">
+            <font face="Helvetica">Bubble Number</font>
+          </para>
+        </td>
+        <td>
+          <para style="terp_5f_tblheader_5f_Details">Product Name</para>
+        </td>
+        <td>
+          <para style="terp_5f_tblheader_5f_Details_5f_Right">Quantity</para>
+        </td>
+        <td>
+          <para style="terp_5f_tblheader_5f_General_5f_Centre">BOM Ref</para>
+        </td>
+      </tr>
+    </blockTable>
+    <section>
+      <para style="terp_5f_default_5f_8">[[ repeatIn(objects, 'o') ]]</para>
+      <blockTable colWidths="141.0,74.0,213.0,52.0,52.0" style="Table1">
+        <tr>
+          <td>
+            <para style="terp_5f_default_5f_Bold_5f_9">[[ o.name ]]</para>
+          </td>
+          <td>
+            <para style="P1">
+              <font face="Helvetica">[[ o.bubble_number ]]</font>
+            </para>
+          </td>
+          <td>
+            <para style="terp_5f_default_5f_Bold_5f_9">[ [[ (o.product_id.default_code) or removeParentNode('font') ]] ] [[ o.product_id.name ]]</para>
+          </td>
+          <td>
+            <para style="terp_5f_default_5f_Right_5f_9_5f_Bold">[[ o.product_qty ]] [[ o.product_uom.name ]]</para>
+          </td>
+          <td>
+            <para style="terp_5f_tblheader_5f_Details_5f_Centre">[[ o.code ]]</para>
+          </td>
+        </tr>
+      </blockTable>
+      <section>
+        <para style="terp_5f_default_5f_8">[[ repeatIn(get_children(o.bom_lines), 'l') ]]</para>
+        <blockTable colWidths="141.0,74.0,213.0,52.0,52.0" style="Table3">
+          <tr>
+            <td>
+              <para style="terp_5f_default_5f_9"><font face="Helvetica" size="8.0">[[ '... '*(l['level']) ]]</font> - [[ l['name'] ]]</para>
+            </td>
+            <td>
+              <para style="P2">
+                <font face="Helvetica">[[ l['bnumber'] ]]</font>
+              </para>
+            </td>
+            <td>
+              <para style="terp_5f_default_5f_9">[ [[ (l['pcode']) or removeParentNode('font') ]] ] [[ l['pname'] ]]</para>
+            </td>
+            <td>
+              <para style="terp_5f_default_5f_Right_5f_9">[[ l['pqty'] ]] [[ l['uname'] ]]</para>
+            </td>
+            <td>
+              <para style="terp_5f_default_5f_Centre_5f_9">[[ l['code'] ]]</para>
+            </td>
+          </tr>
+        </blockTable>
+        <para style="terp_5f_default_5f_1">
+          <font color="white"> </font>
+        </para>
+      </section>
+    </section>
+  </story>
+</document>
+


Follow ups