diff --git a/__init__.py b/__init__.py
index 72ffb34..0508d27 100644
--- a/__init__.py
+++ b/__init__.py
@@ -9,3 +9,6 @@ def register():
Pool.register(
NutritionProgram,
module='nutrition_program', type_='model')
+ Pool.register(
+ OpenBOM,
+ module='nutrition_program', type_='wizard')
diff --git a/nutrition_program.py b/nutrition_program.py
index 407eea8..d413631 100644
--- a/nutrition_program.py
+++ b/nutrition_program.py
@@ -1,9 +1,12 @@
#The COPYRIGHT file at the top level of this repository contains the full
#copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Eval
+from trytond.pool import Pool
+from trytond.pyson import Eval, PYSONEncoder
+from trytond.wizard import Wizard, StateAction
+from trytond.transaction import Transaction
-__all__ = ['NutritionProgram']
+__all__ = ['NutritionProgram', 'OpenBOM']
class NutritionProgram(ModelSQL, ModelView):
@@ -13,12 +16,40 @@ class NutritionProgram(ModelSQL, ModelView):
start_weight = fields.Float('Start Weight')
end_weight = fields.Float('End Weight')
product = fields.Many2One('product.product', 'Product', required=True)
- bom = fields.Many2One('production.bom', 'BOM',
+ bom = fields.Function(fields.Many2One('production.bom', 'BOM',
domain=[
('output_products', '=', Eval('product', 0)),
],
- depends=['product'])
+ depends=['product']), 'get_bom')
+
+ def get_bom(self, name):
+ if self.product and self.product.boms:
+ return self.product.boms[0].bom.id
def get_rec_name(self, name=None):
return ' %s ( %s - %s) ' % (self.product.rec_name,
self.start_weight or '', self.end_weight or '')
+
+
+class OpenBOM(Wizard):
+ 'Open BOM'
+ __name__ = 'nutrition.program.open.bom'
+ start_state = 'open_'
+ open_ = StateAction('production.act_bom_list')
+
+ def do_open_(self, action):
+ pool = Pool()
+ NutritionProgram = pool.get('nutrition.program')
+
+ program = NutritionProgram(Transaction().context.get('active_id'))
+
+ bom_ids = []
+ if program.product.boms:
+ bom_ids = [bom.bom.id for bom in program.product.boms]
+ action['pyson_domain'] = PYSONEncoder().encode(
+ [('id', 'in', bom_ids)])
+
+ return action, {}
+
+ def transition_open_(self):
+ return 'end'
diff --git a/nutrition_program.xml b/nutrition_program.xml
index 689a4fc..fe2abe3 100644
--- a/nutrition_program.xml
+++ b/nutrition_program.xml
@@ -70,5 +70,16 @@
+
+ BOMs
+ nutrition.program.open.bom
+
+
+ form_relate
+ nutrition.program,-1
+
+
+