- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 OpenERP 中定义了几个自定义对象,它们应该在多公司环境中使用。因此,每个对象都定义了一个“company_id”字段。这是所有设置和工作正常。只是,用户界面不是很友好,因为用户需要明确选择新对象实例应属于的公司。
company_id 字段按以下方式设置:
...
'company_id' : fields.many2one('res.company', string='Company', selection=compute_company_select, required=True)
...
def compute_company_select(self, cr, uid, context):
c_proxy = self.pool.get('res.company')
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
search = [('id', 'child_of', user.company_id.id)]
if uid == SUPERUSER_ID:
search = [] #superuser can assign any company
ids = c_proxy.search(cr, uid, search, context=context)
return [(c.id, c.name) for c in c_proxy.browse(cr, uid, ids, context=context)]
我还可以通过使用“compute_company_select”函数中的搜索域在字段定义中简单地定义一个域表达式来解决这个问题。除了 super 用户无法分配所有公司之外,如果他没有配置为可以访问所有公司的话。
我现在要做的是在用户创建新记录时,用用户公司预填充 company_id 字段。而这似乎是不可能的。我发现了几种使用静态值或已在模块 XML 中定义的值预填充字段的可能性。但是似乎没有选项可以使用仅在运行时可用的值,即当前用户记录。
我正在使用 OpenERP 6.1。
最佳答案
官方 OpenERP 插件中的许多文档都具有类似的多公司功能,因此您大概应该重用相同的实现技术,它似乎符合您的用例。
如果您搜索"company_id"
或"company_id.*fields.many2one"
,源代码中有大量示例,例如Sales Shops在 sale
模块中。
简而言之,您需要:
将 company_id
字段声明为 many2one
到 res.company
。默认 security record rules (定义 here )将负责动态地仅显示作为用户当前公司子公司的公司。用户可以随时在首选项中将他们当前的公司更改为任何他们允许的公司,以便在不同的公司环境中工作。由于安全记录规则不适用于特殊管理员用户,因此以管理员身份登录时始终可以选择任何公司。
'company_id': fields.many2one('res.company', 'Company', required=False)
创建新记录时自动选择用户当前的公司作为默认公司。该框架提供了一种方法来实现这一点:res.company._company_default_get()
。可以定义自定义规则来为每种文档选择默认公司,但默认将是用户当前的公司。因此,只需将此代码段添加到模型的 _defaults
中即可:
'company_id': lambda self,cr,uid,ctx: self.pool['res.company']._company_default_get(cr,uid,object='<your_model>',context=ctx)
将 company_id
字段添加到模型的表单 View 中。通常你想将它限制在 multi-company
组,只显示给真正需要它的用户:
<field name="company_id" groups="base.group_multi_company"/>
应该就是这么简单。
关于python - 如何在 OpenERP 中定义多公司感知模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462993/
我在 OpenERP 7 中开发了一个自定义模块,我的管理员用户只能看到这个模块。 1-如何让普通用户访问我的自定义模块? 2-解决此问题的步骤是什么。 请举一个详细的例子。 最佳答案 创建一个Sec
我在 OpenERP 7 中开发了一个自定义模块,我的管理员用户只能看到这个模块。 1-如何让普通用户访问我的自定义模块? 2-解决此问题的步骤是什么。 请举一个详细的例子。 最佳答案 创建一个Sec
我是 OpenERP 新手。我需要禁用一些菜单而不卸载添加菜单的模块。我尝试搜索要禁用其菜单的模块,然后删除所有搜索结果,结果却得到一个非常杂乱无章的菜单。请问我该如何实现?我只需要在菜单栏和主页上隐
有没有办法向在项目中分配任务的人发送电子邮件或在任务完成后向项目经理发送电子邮件? 我正在研究 OpenERP v6.1。 感谢您的回复 最佳答案 您可以覆盖按钮对象方法, obj_mail_
我正在使用 Odoo v.8。我想找出 Odoo 在哪里找到模块所在的信息,以加载它们。我知道文件 openerp-server.conf 中有一个变量 addons_path。我在其中找到变量的唯一
如何在 OpenERP 中创建看板 View ? developer book似乎没有关于新看板 View 的任何信息,而且我在 OpenERP forum 中没有看到任何有用的信息。 . 最佳答案
我在 openerp 中创建了一个新模块,现在我想为该模块提供安全性,因为我在模块文件夹中创建了一个名为“security”的文件夹,并在其中创建了一个 xml 文件和 ir.model.access
我知道 openerp 域中的运营商很少。我没有得到可用域的详细信息及其解释。特别是对于这些否定域。谁能告诉我详细 list ? 最佳答案 这给出了一个概述: 名单域名运营商:! (不是),| (或)
我想自定义报告文件名。 例如,当我下载一张发票时,我会有类似“Invoice.pdf”的文件名。我想要的是“invoice_number.pdf”之类的东西,但我不知道如何使用动态文件名? 最佳答案
我想将一些产品导入 odoo/openerp 用于销售点模块。但是我有一个名为“Chalet”的类别,在导入过程中找不到。在哪里可以找到产品类别的外部 ID? 这是我要导入的 .csv: Ex
我正在尝试从 OpenERP 的 web gui 和字段类型创建一个字段作为引用 第一,没有更好的引用文档 第二我想要的是,当有人选择该字段时,它应该提供另一个未发生的选择选项(尽管它提供了一些字段,
刚开始深入研究 OpenERP v7。以前在 v6.1 中,可以在每个表单的右侧轻松定义特定表单的默认值。例如,产品类型我需要将其设置为“Stockable Product”作为默认值而不是“Cons
我搜索并修改了一个简单的openerp自定义模块的源代码,我给出下面的代码 初始化 .py import sim 开瓶器 .py { 'name': 'Student Information Mana
OpenERP 和 Odoo 之间有什么区别。 我知道 Odoo(v8) 是 OpenERP(v7) 的最新版本 并解释一些关于 Odoo V9 的信息。这里的差异意味着 Odoo 中可用的所有附加功
如何在 OpenERP v7 中进行调试? 在以前的 OpenERP 版本中,它很容易调试。但是在最新版本中很难调试。 最佳答案 要在 eclipse 中调试 OpenERP+python 代码,请在
我正在尝试比较 OpenERP 和 Dynamics AX。有谁可以告诉我编程 OpenErp 和 Dynamics AX 时的区别?例如,我知道 Dynamics AX 中存在一个自定义层,并且所有
有人可以告诉我,根据记录的状态,我可以通过什么方式在具有特定颜色的 View 看板中显示项目。 我正在尝试这样的事情 但我查看了所有元素,而不仅仅是那些在“预定”中的元素。 谢谢 :) 最佳答案 如
我已经为用户创建了安全访问权限。创建后,我得到了如下图所示的 View 。 通过在 .csv 文件中授予权限,如 1、1、1、1,如下图所示。 我的问题是这个权限应该被带到前端。管理员可以向不同的用户
我想在修改记录时显示一个弹出窗口。更像是一个自定义验证对话框,用户将在最终保存之前在其中输入一些额外的数据。 我的问题是我无法显示带有“ir.actions.act_window”的弹出对话框。 我尝
如何在新选项卡上打开 url 链接而不是在单击按钮时在 OpenERP 中弹出? 最佳答案 在 V7 中,按住 Ctrl 键并单击大多数链接会按预期工作(即在新选项卡中打开链接)。 在 6.1 中,您
我是一名优秀的程序员,十分优秀!