openerp 可以删除 需求单吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openerp 可以删除 需求单吗相关的知识,希望对你有一定的参考价值。
产品是OpenERP很基础的元素,如果需要删除,由于其关联的东西较多,系统不允许随便删除(新建立的没有关联使用的可以很容易删除),这也正是ERP系统严谨性的表现.所以 ,对于ERP的使用,一定要严谨,尽量不要出现需要删除的情况发生.如果确实要删除,请先考虑下是否可以通过更改其信息变为一个可用的产品.实践中,我试了试删除一个已经有库存调拨发生的物料.只能进数据库操作,即使在数据表中操作,数据库的检查也不允许在有关联数据时删除记录.
涉及到3张表:
product_template
stock_inventory_line
stock_move
先在product_template找到该产品ID,通过特定关键词(如特意修改为一个特殊的描述)排序,找到ID后在stock_inventory_line stock_move中排序将所有该ID的记录删除.
这只是我实践的一种方式, 可能存在关联处未删除干净导致后续的一些问题,所以还是那句,不到万不得已不要操作数据库.有可能引来不可预料的结果,操作前备份很重要. 参考技术A 通常有删除权限的人,就可以删除单据。
OpenERP - 使用外部 ID 比较字段?
【中文标题】OpenERP - 使用外部 ID 比较字段?【英文标题】:OpenERP - Compare fields using external id? 【发布时间】:2013-08-13 12:13:02 【问题描述】:是否可以使用外部 ID(不是内部 ID)比较视图中的字段。我需要这个,因为我需要根据其他字段隐藏一些字段。我可以使用内部数据库 ID 完成这项工作。因此,如果用户选择例如国家(在视图中检查国家 ID),如果 id 匹配以进行比较,则显示另一个字段。比如这样:
<field name="some_field"
attrs="'invisible': [('country_id','!=',10)]"
/>
这个可行,但并不可靠。想象一下,如果ID会改变(例如安装我的模块,该模块将被其他国家的ID拍摄),那么它将在将选择不同的国家/地区some_field
987654324。这不是故意的。
因此,我考虑使用外部 id,您在将数据添加到 xml 文件中的表时提供。该 id 是静态的,实际上对于您将安装该模块的任何数据库都应该是相同的(因为该 id 是在模块本身中提供的,而不是由数据库自动创建的)。
有没有办法使用相同的功能,但使用外部 id?
当然,也许有人知道解决此类问题的更好方法?
附:添加另一个字段(如 boolean)以显示隐藏 some_field
不是一个选项,因为它完全取决于将在模块安装时添加的特定值。
【问题讨论】:
对于非常特定于 OpenERP 的问题,请考虑 help.openerp.com 我在那里问过。我在 *** 中询问,因为它有更大的社区,所以希望也许有人知道答案,因为在 help.openerp.com 中没有得到任何答案.. 如果你这样做,最好链接到任何早期的相关问题。 和那里的问题一样。给你:help.openerp.com/question/27939/… 【参考方案1】:您可以使用 fields_view_get 添加此功能。例如
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
if context is None:context =
res = super(your_osv_class_name, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=False)
doc = etree.XML(res['arch'])
nodes = doc.xpath("//field[@name='some_field']")
id_found = self.pool.get('res.country').search(cr, uid,[('name','=','India')])[0]
#or try to search for the id using the external id
for node in nodes:
node.set('attrs', "'invisible':[('country_id','=',%s)]"%id_found)
setup_modifiers(node, res['fields']['some_field'])
res['arch'] = etree.tostring(doc)
return res
【讨论】:
以上是关于openerp 可以删除 需求单吗的主要内容,如果未能解决你的问题,请参考以下文章