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

Proposed by Jonatan Cloutier
Status: Merged
Merged at revision: 5
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_industrial_design.py (+69/-0)
mrp_industrial_design_bom/report/bom_structure_industrial_design.rml (+158/-0)
To merge this branch: bzr merge lp:~savoirfairelinux-openerp/openerp-manufacturing/add-industrial-design-bom
Reviewer Review Type Date Requested Status
Stefan Rijnhart (Opener) Needs Fixing
Maxime Chambreuil (http://www.savoirfairelinux.com) lgtm, no test Approve
Alexandre Fayolle - camptocamp Pending
Review via email: mp+161126@code.launchpad.net

This proposal supersedes 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 : Posted in a previous version of this proposal

line 200: you have an indentation problem.

Otherwise, it looks good to me.

review: Needs Fixing (review, no test.)
Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) : Posted in a previous version of this proposal
review: Approve (review, no test.)
Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) wrote : Posted in a previous version of this proposal

Can you rename/replace bom_structure_custom by bom_structure_industrial_design everywhere in the report subdirectory ?

review: Needs Fixing
Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) :
review: Approve (lgtm, no test)
Revision history for this message
Stefan Rijnhart (Opener) (stefan-opener) wrote :

Maxime,

you merged this a bit too fast for my taste, two hours after the resubmit. Please allow a couple of days for other people to react.

This module deletes the original BOM report, and then redefines it. I assume that it contains a copy of the original report plus the additional fields that this module defines. I would advocate two changes;

Instead of deleting the report, just set the rml location on the existing report to the rml file in this module. Otherwise, this will impact models that refer to the original report, such as an email template.

The change of the location of the rml template should be stated in the module description.

If you agree to these changes, it is probably easier to submit a patch branch than to uncommit this hasty merge.

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

I agree, my bad.

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-26 13:46:31 +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-26 13:46:31 +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-26 13:46:31 +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-26 13:46:31 +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-26 13:46:31 +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-26 13:46:31 +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_industrial_design_bom_structure"
198+ model="mrp.bom"
199+ name="industrialdesign.bom.structure"
200+ rml="mrp_industrial_design_bom/report/bom_structure_industrial_design.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-26 13:46:31 +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_industrial_design
249
250=== added file 'mrp_industrial_design_bom/report/bom_structure_industrial_design.odt'
251Binary files mrp_industrial_design_bom/report/bom_structure_industrial_design.odt 1970-01-01 00:00:00 +0000 and mrp_industrial_design_bom/report/bom_structure_industrial_design.odt 2013-04-26 13:46:31 +0000 differ
252=== added file 'mrp_industrial_design_bom/report/bom_structure_industrial_design.py'
253--- mrp_industrial_design_bom/report/bom_structure_industrial_design.py 1970-01-01 00:00:00 +0000
254+++ mrp_industrial_design_bom/report/bom_structure_industrial_design.py 2013-04-26 13:46:31 +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.industrialdesign.bom.structure',
318+ 'mrp.bom',
319+ 'mrp_industrial_design_bom/report/bom_structure_industrial_design.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_industrial_design.rml'
327--- mrp_industrial_design_bom/report/bom_structure_industrial_design.rml 1970-01-01 00:00:00 +0000
328+++ mrp_industrial_design_bom/report/bom_structure_industrial_design.rml 2013-04-26 13:46:31 +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+