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

OpenERP(Odoo)与外部系统的集成,openerp,odoo,Openerp,Odoo,是否有一种简单的方法将OpenERP(oodo)中的新自定义字段(在客户记录或订单项中)与外部链接(即描述或iframe)关联起来,以便它可以链接到不同的系统 在创建记录时,是否有一种简单的方法使用(新)GUID初始化此链接 有没有一种简单的方法将客户端JavaScript注入标准OpenERP页面 是否需要为此创建新模块?用于OpenERP 7.0+ 您可以为指向任何对象(如sale.order/purchase.order/any other对象)的链接添加额外的链接。每个模块或webcli

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

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

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

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

用于OpenERP 7.0+

  • 您可以为指向任何对象(如sale.order/purchase.order/any other对象)的链接添加额外的链接。每个模块或webclient都可以这样做(如果您拥有技术权限)

  • 每当创建记录时,创建GUID的最简单方法是扩展该记录并重写构造函数:

  • 是的,您可以直接将脚本/html添加到视图中,如OpenERP Bay博客上所述(我不能添加超过2个链接..垃圾邮件保护可能,您可以在大多数搜索引擎中轻松找到该块)。可以使用web客户端和UI部分中的技术权限,或者使用修改视图的模块,或者使用小部件或另一个扩展点来进行与视图相关的修改(可以使用JS)

  • 关键部分是将GUID创建放在记录创建逻辑的何处。如果您可以在JS中实现这一点——例如,创建一个新的GUID,并在使用表单创建新记录时将其放在字段中——并且您知道对象始终是按照web客户端表单创建的,那么就可以了。为了一个黑客。 编写一个模块并将逻辑放入业务对象是一个干净的解决方案。OERP模块的开发文档足以解决这一问题,并且可以在网上解决一些小问题,比如只添加一个额外的字段。 OpenERP模块程序员可能只是

    • 创建一个模块
    • 继承应修改的模型/对象
    • 添加保存guid/链接的字段
    • (可选)创建一个计算字段,该字段从guid字段生成链接,因此您只需保存guid或创建任意html,该html应插入视图中
    • 向构造函数添加一些逻辑以创建和保存guid
    • 继承应放置链接的视图
    • 添加应该显示的字段/内容,例如,使用xpath表达式将新的viewpart/字段/内容放在其他字段后面
    • 安装并测试它
      • 只要更改python代码,就重新启动服务器
      • 只要xml发生更改,就更新模块
  • 或short,是的,如果您对OpenERP的技术部分有足够的了解,那么这些修改很简单,是的,您应该将其放入模块中以保持其干净

    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