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 可以删除 需求单吗的主要内容,如果未能解决你的问题,请参考以下文章

OpenERP - 报告创建

Openerp 7 openerp-server.conf 自定义 addons_path

使用xml-rpc调试openerp模块中的函数

如何翻译 OpenERP 模块?

OpenERP 7 服务启动问题

OpenERP (XML) - 根据访问权限组隐藏视图