OpenERP(Odoo)与外部系统的集成

时间:2014-07-09 18:33:23

标签: openerp odoo

是否有一种简单的方法可以将OpenERP(oodo)中的新自定义字段(在客户记录或订单项中)与外部链接(即Description或iframe)相关联,以便它可以链接到不同的系统?

在创建记录时,是否有一种使用(新)GUID初始化此链接的简单方法?

是否有一种将客户端JavaScript注入标准OpenERP页面的简单方法?

我是否需要为此创建一个新模块?

1 个答案:

答案 0 :(得分:5)

对于OpenERP 7.0 +

  1. 您可以为任何对象添加额外的field of type text/char,例如sale.order / purchase.order /任何其他对象。这对于每个模块或webclient都是可能的(如果您有技术权利)。

  2. 创建记录时创建GUID的最简单方法是扩展该记录并覆盖构造函数:

    class extended_sale_order(osv.osv):
      _name = 'sale.order'    # override current sale.order by replacing it (same name)
      _inherit = 'sale.order' # inherit from "original" sale.order
      _columns = {
                  'GUID': field.text('GUID') # add GUID textfield
      }
    
      def create(self, cr, uid, vals, context=None):
         '''
           On sale.order construction create a GUID and replace the GUID field in
           sale.order with the generated value.
         '''
         guid = generate_guid() # implement this or use oerp sequences
         vals['GUID'] = guid
         result = super(extended_sale_order,self).create(cr,uid,vals,context)
         return result
    
  3. 是的,您可以将脚本/ html直接添加到OpenERP Bay博客中描述的视图中(我无法添加2个以上的链接..垃圾邮件保护可能,您可以轻松找到最多的块搜索引擎)。可以使用UI部分中的Web客户端和技术权限或使用修改视图的模块来完成修改 - 或者通过使用窗口小部件或其他扩展点进行可以使用JS的视图相关修改。

  4. 关键部分是将GUID创建放在记录创建逻辑上的位置。如果你可以在JS中做到这一点 - 例如通过创建一个新的GUID并在每次使用表单创建新记录时将其放在字段中 - 并且你知道对象总是按照每个web-client表单创建它是可以的。对于一个黑客。 编写模块并将逻辑放入Business对象是一个干净的解决方案。 OERP模块的开发文档对于此问题已足够,there are good Tutorials可以解决网络中出现的小问题,例如只添加一个额外的字段。 OpenERP模块程序员可能只是

    • 创建模块
    • 继承应修改的Model / Object
    • 添加一个包含guid / link
    • 的字段
    • 可选地创建一个计算字段,用于从guid字段构建链接,因此您只需要保存guid或创建应插入到视图中的任意html
    • 为构造函数添加一些逻辑以创建和保存guid
    • 继承应放置链接的视图
    • 添加应显示的字段/内容f.e.使用xpath表达式将新的viewpart / field / content置于其他字段后面
    • 安装并测试它
      • 每当更改python代码时重新启动服务器
      • 每当更改xml时更新模块
  5. 或简短,是的,如果您对OpenERP的技术部分有足够的了解,这些修改很简单,是的,您应该将其放在模块中以保持其清洁。