我正在写一个仓库管理模块,然后我进入了库存步骤 .
我需要分别为每个仓库分别制作库存,每个库存操作将作为主 - 细节关系保存在数据库中,即:
-
基本数据的一条记录,如id,date,warehouse_id等,这将记录在(inventory)对象创建的表中 .
-
许多记录将保留记录材料ID,库存ID,余额等的操作细节(每种材料一条记录),这将记录在表格(inventory_lines)中 .
在数据输入期间,当用户选择材料时,我需要检查其当前余额并将其显示在余额字段中 . 为了做到这一点,我需要知道仓库ID,因为每个仓库都应有单独的库存 .
我在很多仓库里存放了很多材料 . 例如:仓库A中可以有5个笔,仓库B中有10个笔,仓库C中有6个笔 .
首先,我选择仓库(A或B或C)---让我们说仓库B.
然后我选择材料(笔或笔记本或其他)---让我们说Pen
现在,我想搜索数据库以查找(仓库B)中的(笔)余额
我可以写一些东西 like 这个:
从inventory_lines中选择余额,其中material_id = mmmmmm和warehouse_id = wwwwww
所以,我需要获取材料ID(mmmmm)和仓库ID(wwwww)
这将由我选择的每种材料完成 .
仓库ID位于以下列中:对象中的inventory_id:inventory'storage_id':fields.many2one('makhazen.warehouse','仓库名称',required = True),
材质ID位于对象inventory_line的material_id中,如问题'material_id'中的图片所示:fields.many2one('makhazen.material','Material Name'),
我遇到了以下问题:
- 我可以在material_id字段的表单视图中使用(on_change)方法,并且可以触发一个方法来搜索数据库中的余额,但我需要找不到的warehouse_id .
问题是: - 如何在openerp中处理这种主 - 细节关系?如何在主表和详细信息表之间传递值? - 我们如何扩展warehouse_id的范围,以便可以从模块中的任何方法看到它? - 我可以通过调用方法并在字典中返回所需的值来更改字段的值,但是如何相反(读取它们)?
这对我来说非常重要 .
1 回答
首先,您不需要wh_inventory_line类中的warehouse_id字段 . 您始终可以通过父对象访问它:
其次,在您的情况下,您可以将warehouse_id值作为参数传递给
onchange
方法 . 像这样的东西:或者,如果您遵循我的第一个建议并从
wh_inventory_line
删除warehouse_id
:编辑
在OpenERP 6.0上测试后,我发现代码中存在一些错误 . 我只是想知道你是如何设法运行它的 .
首先,您错过了
wh.inventory
模型的warehouse_id
列定义中的引号('):其次,
fields.char()
字段定义除了提供的Field Name
之外还至少需要size
参数 . 再次,您错过了以下行的引用:这不是错误,而是您应该考虑的事项 - 您使用openerp-7标记标记了您的问题 . 在OpenERP v7中,不推荐继承
osv.osv
. 继承自osv.Model
.如果我坚持你的错误,那是因为我向你提出的解决方案在我身边工作得很好 . 因此,某处必须存在一些小错误,这会阻止您的代码执行预期的操作 .
这是我的测试代码 . 你可以尝试一下:
wh.py
wh_view.xml