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

Proposed by Jonatan Cloutier
Status: Superseded
Proposed branch: lp:~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom
Merge into: lp:openerp-manufacturing
Diff against target: 487 lines (+438/-0)
9 files modified
mrp_industrial_design_bom/__init__.py (+24/-0)
mrp_industrial_design_bom/__openerp__.py (+39/-0)
mrp_industrial_design_bom/i18n/fr.po (+32/-0)
mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot (+32/-0)
mrp_industrial_design_bom/industrial_design.py (+32/-0)
mrp_industrial_design_bom/mrp_industrial_design.xml (+29/-0)
mrp_industrial_design_bom/report/__init__.py (+23/-0)
mrp_industrial_design_bom/report/bom_structure_custom.py (+69/-0)
mrp_industrial_design_bom/report/bom_structure_custom.rml (+158/-0)
To merge this branch: bzr merge lp:~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom
Reviewer Review Type Date Requested Status
Maxime Chambreuil (http://www.savoirfairelinux.com) review, no test. Needs Fixing
Alexandre Fayolle - camptocamp Pending
Review via email: mp+157680@code.launchpad.net

This proposal supersedes a proposal from 2013-04-03.

This proposal has been superseded by a proposal from 2013-04-11.

Description of the change

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.

To post a comment you must log in.
Revision history for this message
Alexandre Fayolle - camptocamp (alexandre-fayolle-c2c) wrote : Posted in a previous version of this proposal

The diff is empty.

review: Needs Resubmitting
Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) wrote :

line 200: you have an indentation problem.

Otherwise, it looks good to me.

review: Needs Fixing (review, no test.)
6. By Jonatan Cloutier

Fix xml indentation

7. By Jonatan Cloutier

rename bom_structure_custom by bom_structure_industrial_design

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'mrp_industrial_design_bom'
2=== added file 'mrp_industrial_design_bom/__init__.py'
3--- mrp_industrial_design_bom/__init__.py 1970-01-01 00:00:00 +0000
4+++ mrp_industrial_design_bom/__init__.py 2013-04-11 20:49:20 +0000
5@@ -0,0 +1,24 @@
6+# -*- encoding: utf-8 -*-
7+##############################################################################
8+#
9+# OpenERP, Open Source Management Solution
10+# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
11+#
12+# This program is free software: you can redistribute it and/or modify
13+# it under the terms of the GNU General Public License as
14+# published by the Free Software Foundation, either version 3 of the
15+# License, or (at your option) any later version.
16+#
17+# This program is distributed in the hope that it will be useful,
18+# but WITHOUT ANY WARRANTY; without even the implied warranty of
19+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20+# GNU General Public License for more details.
21+#
22+# You should have received a copy of the GNU General Public License
23+# along with this program. If not, see <http://www.gnu.org/licenses/>.
24+#
25+##############################################################################
26+
27+import industrial_design
28+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
29+
30
31=== added file 'mrp_industrial_design_bom/__openerp__.py'
32--- mrp_industrial_design_bom/__openerp__.py 1970-01-01 00:00:00 +0000
33+++ mrp_industrial_design_bom/__openerp__.py 2013-04-11 20:49:20 +0000
34@@ -0,0 +1,39 @@
35+# -*- encoding: utf-8 -*-
36+
37+##############################################################################
38+#
39+# OpenERP, Open Source Management Solution
40+# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
41+#
42+# This program is free software: you can redistribute it and/or modify
43+# it under the terms of the GNU Affero General Public License as
44+# published by the Free Software Foundation, either version 3 of the
45+# License, or (at your option) any later version.
46+#
47+# This program is distributed in the hope that it will be useful,
48+# but WITHOUT ANY WARRANTY; without even the implied warranty of
49+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
50+# GNU Affero General Public License for more details.
51+#
52+# You should have received a copy of the GNU Affero General Public License
53+# along with this program. If not, see <http://www.gnu.org/licenses/>.
54+#
55+##############################################################################
56+
57+{
58+ 'name' : 'Industrial design specification in BoM',
59+ 'version' : '1.0',
60+ "author" : "Savoir-faire Linux",
61+ "website" : "http://www.savoirfairelinux.com",
62+ 'license': 'AGPL-3',
63+ 'category' : 'Specific Industry Applications',
64+ 'depends' : ['mrp'],
65+ "data" : ['mrp_industrial_design.xml'],
66+ 'description': """
67+Add the fields 'Bubble Number' and 'RefDes' (reference description) to a component in BoM view.
68+""",
69+ 'auto_install': False,
70+ 'installable': True
71+}
72+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
73+
74
75=== added directory 'mrp_industrial_design_bom/i18n'
76=== added file 'mrp_industrial_design_bom/i18n/fr.po'
77--- mrp_industrial_design_bom/i18n/fr.po 1970-01-01 00:00:00 +0000
78+++ mrp_industrial_design_bom/i18n/fr.po 2013-04-11 20:49:20 +0000
79@@ -0,0 +1,32 @@
80+# Translation of OpenERP Server.
81+# This file contains the translation of the following modules:
82+# * mrp_industrial_design_bom
83+#
84+msgid ""
85+msgstr ""
86+"Project-Id-Version: OpenERP Server 7.0\n"
87+"Report-Msgid-Bugs-To: \n"
88+"POT-Creation-Date: 2013-03-26 16:23+0000\n"
89+"PO-Revision-Date: 2013-03-26 14:00-0500\n"
90+"Last-Translator: Marc Cassuto <marc.cassuto@savoirfairelinux.com>\n"
91+"Language-Team: \n"
92+"MIME-Version: 1.0\n"
93+"Content-Type: text/plain; charset=UTF-8\n"
94+"Content-Transfer-Encoding: 8bit\n"
95+"Plural-Forms: \n"
96+
97+#. module: mrp_industrial_design_bom
98+#: model:ir.model,name:mrp_industrial_design_bom.model_mrp_bom
99+msgid "Bill of Material"
100+msgstr "Nomenclature"
101+
102+#. module: mrp_industrial_design_bom
103+#: field:mrp.bom,refdes:0
104+msgid "Notes"
105+msgstr "notes"
106+
107+#. module: mrp_industrial_design_bom
108+#: field:mrp.bom,bubble_number:0
109+msgid "No"
110+msgstr "N°"
111+
112
113=== added file 'mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot'
114--- mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot 1970-01-01 00:00:00 +0000
115+++ mrp_industrial_design_bom/i18n/mrp_industrial_design_bom.pot 2013-04-11 20:49:20 +0000
116@@ -0,0 +1,32 @@
117+# Translation of OpenERP Server.
118+# This file contains the translation of the following modules:
119+# * mrp_industrial_design_bom
120+#
121+msgid ""
122+msgstr ""
123+"Project-Id-Version: OpenERP Server 7.0\n"
124+"Report-Msgid-Bugs-To: \n"
125+"POT-Creation-Date: 2013-03-26 16:23+0000\n"
126+"PO-Revision-Date: 2013-03-26 16:23+0000\n"
127+"Last-Translator: <>\n"
128+"Language-Team: \n"
129+"MIME-Version: 1.0\n"
130+"Content-Type: text/plain; charset=UTF-8\n"
131+"Content-Transfer-Encoding: \n"
132+"Plural-Forms: \n"
133+
134+#. module: mrp_industrial_design_bom
135+#: model:ir.model,name:mrp_industrial_design_bom.model_mrp_bom
136+msgid "Bill of Material"
137+msgstr ""
138+
139+#. module: mrp_industrial_design_bom
140+#: field:mrp.bom,refdes:0
141+msgid "Notes"
142+msgstr ""
143+
144+#. module: mrp_industrial_design_bom
145+#: field:mrp.bom,bubble_number:0
146+msgid "No"
147+msgstr ""
148+
149
150=== added file 'mrp_industrial_design_bom/industrial_design.py'
151--- mrp_industrial_design_bom/industrial_design.py 1970-01-01 00:00:00 +0000
152+++ mrp_industrial_design_bom/industrial_design.py 2013-04-11 20:49:20 +0000
153@@ -0,0 +1,32 @@
154+# -*- encoding: utf-8 -*-
155+##############################################################################
156+#
157+# OpenERP, Open Source Management Solution
158+# Copyright (C) 2010 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
159+#
160+# This program is free software: you can redistribute it and/or modify
161+# it under the terms of the GNU General Public License as
162+# published by the Free Software Foundation, either version 3 of the
163+# License, or (at your option) any later version.
164+#
165+# This program is distributed in the hope that it will be useful,
166+# but WITHOUT ANY WARRANTY; without even the implied warranty of
167+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
168+# GNU General Public License for more details.
169+#
170+# You should have received a copy of the GNU General Public License
171+# along with this program. If not, see <http://www.gnu.org/licenses/>.
172+#
173+##############################################################################
174+
175+from openerp.osv import fields, orm
176+
177+class mrp_bom(orm.Model):
178+ _inherit = 'mrp.bom'
179+ _columns = {
180+ 'bubble_number': fields.integer('No'),
181+ 'refdes': fields.text('Notes'),
182+ }
183+
184+ _order = "bubble_number"
185+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
186
187=== added file 'mrp_industrial_design_bom/mrp_industrial_design.xml'
188--- mrp_industrial_design_bom/mrp_industrial_design.xml 1970-01-01 00:00:00 +0000
189+++ mrp_industrial_design_bom/mrp_industrial_design.xml 2013-04-11 20:49:20 +0000
190@@ -0,0 +1,29 @@
191+<?xml version="1.0" ?>
192+<openerp>
193+ <data>
194+ <delete model="ir.actions.report.xml" search="[('name', '=', 'bom.structure')]" />
195+ <report auto="True"
196+ header="False"
197+ id="report_custom_bom_structure"
198+ model="mrp.bom"
199+ name="custom.bom.structure"
200+ rml="mrp_industrial_design_bom/report/bom_structure_custom.rml"
201+ string="BOM Structure"/>
202+
203+ <record model="ir.ui.view" id="mrp_bom_form_view_inherit">
204+ <field name="name">mrp.bom.form.inherit</field>
205+ <field name="model">mrp.bom</field>
206+ <field name="inherit_id" ref="mrp.mrp_bom_form_view" />
207+ <field name="arch" type="xml">
208+ <xpath expr="/form/notebook/page/field/tree/field[@name='product_id']" position="before">
209+ <field name="bubble_number" />
210+ </xpath>
211+ <xpath expr="/form/notebook/page/field/tree/field[@name='date_stop']" position="after">
212+ <field name="refdes" />
213+ </xpath>
214+ </field>
215+ </record>
216+
217+ </data>
218+</openerp>
219+
220
221=== added directory 'mrp_industrial_design_bom/report'
222=== added file 'mrp_industrial_design_bom/report/__init__.py'
223--- mrp_industrial_design_bom/report/__init__.py 1970-01-01 00:00:00 +0000
224+++ mrp_industrial_design_bom/report/__init__.py 2013-04-11 20:49:20 +0000
225@@ -0,0 +1,23 @@
226+# -*- coding: utf-8 -*-
227+
228+##############################################################################
229+#
230+# OpenERP, Open Source Management Solution
231+# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
232+#
233+# This program is free software: you can redistribute it and/or modify
234+# it under the terms of the GNU Affero General Public License as
235+# published by the Free Software Foundation, either version 3 of the
236+# License, or (at your option) any later version.
237+#
238+# This program is distributed in the hope that it will be useful,
239+# but WITHOUT ANY WARRANTY; without even the implied warranty of
240+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
241+# GNU Affero General Public License for more details.
242+#
243+# You should have received a copy of the GNU Affero General Public License
244+# along with this program. If not, see <http://www.gnu.org/licenses/>.
245+#
246+##############################################################################
247+
248+import bom_structure_custom
249
250=== added file 'mrp_industrial_design_bom/report/bom_structure_custom.odt'
251Binary 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:49:20 +0000 differ
252=== added file 'mrp_industrial_design_bom/report/bom_structure_custom.py'
253--- mrp_industrial_design_bom/report/bom_structure_custom.py 1970-01-01 00:00:00 +0000
254+++ mrp_industrial_design_bom/report/bom_structure_custom.py 2013-04-11 20:49:20 +0000
255@@ -0,0 +1,69 @@
256+## -*- coding: utf-8 -*-
257+##############################################################################
258+#
259+# OpenERP, Open Source Management Solution
260+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
261+#
262+# This program is free software: you can redistribute it and/or modify
263+# it under the terms of the GNU Affero General Public License as
264+# published by the Free Software Foundation, either version 3 of the
265+# License, or (at your option) any later version.
266+#
267+# This program is distributed in the hope that it will be useful,
268+# but WITHOUT ANY WARRANTY; without even the implied warranty of
269+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
270+# GNU Affero General Public License for more details.
271+#
272+# You should have received a copy of the GNU Affero General Public License
273+# along with this program. If not, see <http://www.gnu.org/licenses/>.
274+#
275+##############################################################################
276+
277+import time
278+from openerp.report import report_sxw
279+from openerp.osv import osv
280+from openerp import pooler
281+
282+class bom_structure(report_sxw.rml_parse):
283+ def __init__(self, cr, uid, name, context):
284+ super(bom_structure, self).__init__(cr, uid, name, context=context)
285+ self.localcontext.update({
286+ 'time': time,
287+ 'get_children':self.get_children,
288+ })
289+
290+ def get_children(self, object, level=0):
291+ result = []
292+
293+ def _get_rec(object, level):
294+ for l in object:
295+ res = {}
296+ res['name'] = l.name
297+ res['pname'] = l.product_id.name
298+ res['pcode'] = l.product_id.default_code
299+ res['pqty'] = l.product_qty
300+ res['uname'] = l.product_uom.name
301+ res['code'] = l.code
302+ res['level'] = level
303+ res['bnumber'] = l.bubble_number
304+ result.append(res)
305+ if l.child_complete_ids:
306+ if level<6:
307+ level += 1
308+ _get_rec(l.child_complete_ids,level)
309+ if level>0 and level<6:
310+ level -= 1
311+ return result
312+
313+ children = _get_rec(object,level)
314+
315+ return children
316+
317+report_sxw.report_sxw('report.custom.bom.structure',
318+ 'mrp.bom',
319+ 'mrp_industrial_design_bom/report/bom_structure_custom.rml',
320+ parser=bom_structure,
321+ header='internal')
322+
323+
324+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
325
326=== added file 'mrp_industrial_design_bom/report/bom_structure_custom.rml'
327--- mrp_industrial_design_bom/report/bom_structure_custom.rml 1970-01-01 00:00:00 +0000
328+++ mrp_industrial_design_bom/report/bom_structure_custom.rml 2013-04-11 20:49:20 +0000
329@@ -0,0 +1,158 @@
330+<?xml version="1.0"?>
331+<document filename="test.pdf">
332+ <template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
333+ <pageTemplate id="first">
334+ <frame id="first" x1="31.0" y1="30.0" width="532" height="781"/>
335+ </pageTemplate>
336+ </template>
337+ <stylesheet>
338+ <blockTableStyle id="Standard_Outline">
339+ <blockAlignment value="LEFT"/>
340+ <blockValign value="TOP"/>
341+ </blockTableStyle>
342+ <blockTableStyle id="Table2">
343+ <blockAlignment value="LEFT"/>
344+ <blockValign value="TOP"/>
345+ <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
346+ <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
347+ <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
348+ <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
349+ <lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
350+ </blockTableStyle>
351+ <blockTableStyle id="Table1">
352+ <blockAlignment value="LEFT"/>
353+ <blockValign value="TOP"/>
354+ <lineStyle kind="LINEBELOW" colorName="#999999" start="0,-1" stop="0,-1"/>
355+ <lineStyle kind="LINEBELOW" colorName="#999999" start="1,-1" stop="1,-1"/>
356+ <lineStyle kind="LINEBELOW" colorName="#999999" start="2,-1" stop="2,-1"/>
357+ <lineStyle kind="LINEBELOW" colorName="#999999" start="3,-1" stop="3,-1"/>
358+ <lineStyle kind="LINEBELOW" colorName="#999999" start="4,-1" stop="4,-1"/>
359+ </blockTableStyle>
360+ <blockTableStyle id="Table3">
361+ <blockAlignment value="LEFT"/>
362+ <blockValign value="TOP"/>
363+ <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
364+ <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
365+ <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
366+ <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
367+ <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
368+ </blockTableStyle>
369+ <initialize>
370+ <paraStyle name="all" alignment="justify"/>
371+ </initialize>
372+ <paraStyle name="P1" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
373+ <paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
374+ <paraStyle name="P3" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
375+ <paraStyle name="Standard" fontName="Helvetica"/>
376+ <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
377+ <paraStyle name="Text_20_body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
378+ <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
379+ <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
380+ <paraStyle name="Index" fontName="Helvetica"/>
381+ <paraStyle name="Table_20_Contents" fontName="Helvetica" fontSize="6.0" leading="8" alignment="LEFT"/>
382+ <paraStyle name="Table_20_Heading" fontName="Helvetica" fontSize="6.0" leading="8" alignment="CENTER"/>
383+ <paraStyle name="terp_5f_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
384+ <paraStyle name="terp_5f_default_5f_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
385+ <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"/>
386+ <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"/>
387+ <paraStyle name="terp_5f_default_5f_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
388+ <paraStyle name="terp_5f_tblheader_5f_General" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
389+ <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"/>
390+ <paraStyle name="terp_5f_default_5f_Centre_5f_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
391+ <paraStyle name="terp_5f_tblheader_5f_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
392+ <paraStyle name="Footer" fontName="Helvetica"/>
393+ <paraStyle name="Horizontal_20_Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
394+ <paraStyle name="Heading_20_9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
395+ <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"/>
396+ <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"/>
397+ <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"/>
398+ <paraStyle name="terp_5f_default_5f_Right_5f_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
399+ <paraStyle name="terp_5f_header_5f_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
400+ <paraStyle name="terp_5f_header_5f_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
401+ <paraStyle name="terp_5f_default_5f_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
402+ <paraStyle name="terp_5f_default_5f_Centre_5f_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
403+ <paraStyle name="terp_5f_default_5f_Right_5f_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
404+ <paraStyle name="terp_5f_default_5f_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
405+ <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"/>
406+ <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"/>
407+ <paraStyle name="Heading_20_2" fontName="Helvetica-BoldOblique" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
408+ <paraStyle name="terp_5f_remove_5f_space" fontName="Helvetica" fontSize="2.0" leading="3" spaceBefore="0.0" spaceAfter="0.0"/>
409+ <images/>
410+ </stylesheet>
411+ <story>
412+ <para style="terp_5f_header_5f_Centre">BOM Structure</para>
413+ <blockTable colWidths="141.0,74.0,213.0,52.0,52.0" style="Table2">
414+ <tr>
415+ <td>
416+ <para style="terp_5f_tblheader_5f_Details">BOM Name</para>
417+ </td>
418+ <td>
419+ <para style="P3">
420+ <font face="Helvetica">Bubble Number</font>
421+ </para>
422+ </td>
423+ <td>
424+ <para style="terp_5f_tblheader_5f_Details">Product Name</para>
425+ </td>
426+ <td>
427+ <para style="terp_5f_tblheader_5f_Details_5f_Right">Quantity</para>
428+ </td>
429+ <td>
430+ <para style="terp_5f_tblheader_5f_General_5f_Centre">BOM Ref</para>
431+ </td>
432+ </tr>
433+ </blockTable>
434+ <section>
435+ <para style="terp_5f_default_5f_8">[[ repeatIn(objects, 'o') ]]</para>
436+ <blockTable colWidths="141.0,74.0,213.0,52.0,52.0" style="Table1">
437+ <tr>
438+ <td>
439+ <para style="terp_5f_default_5f_Bold_5f_9">[[ o.name ]]</para>
440+ </td>
441+ <td>
442+ <para style="P1">
443+ <font face="Helvetica">[[ o.bubble_number ]]</font>
444+ </para>
445+ </td>
446+ <td>
447+ <para style="terp_5f_default_5f_Bold_5f_9">[ [[ (o.product_id.default_code) or removeParentNode('font') ]] ] [[ o.product_id.name ]]</para>
448+ </td>
449+ <td>
450+ <para style="terp_5f_default_5f_Right_5f_9_5f_Bold">[[ o.product_qty ]] [[ o.product_uom.name ]]</para>
451+ </td>
452+ <td>
453+ <para style="terp_5f_tblheader_5f_Details_5f_Centre">[[ o.code ]]</para>
454+ </td>
455+ </tr>
456+ </blockTable>
457+ <section>
458+ <para style="terp_5f_default_5f_8">[[ repeatIn(get_children(o.bom_lines), 'l') ]]</para>
459+ <blockTable colWidths="141.0,74.0,213.0,52.0,52.0" style="Table3">
460+ <tr>
461+ <td>
462+ <para style="terp_5f_default_5f_9"><font face="Helvetica" size="8.0">[[ '... '*(l['level']) ]]</font> - [[ l['name'] ]]</para>
463+ </td>
464+ <td>
465+ <para style="P2">
466+ <font face="Helvetica">[[ l['bnumber'] ]]</font>
467+ </para>
468+ </td>
469+ <td>
470+ <para style="terp_5f_default_5f_9">[ [[ (l['pcode']) or removeParentNode('font') ]] ] [[ l['pname'] ]]</para>
471+ </td>
472+ <td>
473+ <para style="terp_5f_default_5f_Right_5f_9">[[ l['pqty'] ]] [[ l['uname'] ]]</para>
474+ </td>
475+ <td>
476+ <para style="terp_5f_default_5f_Centre_5f_9">[[ l['code'] ]]</para>
477+ </td>
478+ </tr>
479+ </blockTable>
480+ <para style="terp_5f_default_5f_1">
481+ <font color="white"> </font>
482+ </para>
483+ </section>
484+ </section>
485+ </story>
486+</document>
487+