0

我正在为 OpenERP 制作一个 Android 应用程序,并且正在尝试创建新的销售订单。然而,必填字段之一是订单参考,它通常是从序列中生成的。

有没有办法通过 xmlrpc 获得这个序列?

还是我必须在应用程序中制作自己的序列?...但是我如何确保它不会与通过 Web 客户端生成的订单引用发生冲突?

谢谢你。

4

1 回答 1

2

您不需要做任何特别的事情:只需使用您的销售订单的内容调用sale.order'方法。create正如您在使用 Web 界面创建销售订单时注意到的那样,参考字段会自动填写正确的序列号。

发生这种情况是因为引用字段(技术上是'字段)sale.order有一个默认值。默认值的工作方式如下:sale.ordername

  • 它们由客户端 UI 获取以预填充创建表单。客户端通过调用default_get相应的模型(将从_defaults字典中获取值)来获取这些值。
  • 当调用create方法创建新记录时,系统将再次调用default_get以完成所有具有默认值且未显式传递给create的字段的值

因此,您无需执行任何操作:只需调用create而不为name字段提供值,系统将自动将其值设置为有效的序列号,就像在 UI 中一样。或者,如果您想预处理默认值或精确模仿 UI 所做的事情,那么您应该default_get通过 XML-RPC 调用自己并使用返回的值来准备您将传递给的参数create

版本说明:您没有提及任何特定的 OpenERP 版本,实际行为可能会因版本而有所不同。在 OpenERP 6.1 中,该sale.order模型完全按照我上面描述的方式进行,您可以在源代码中看到。然而,在 OpenERP 7.0 中,逻辑被稍微修改以避免消耗可能永远不会使用的序列号(如果用户在保存之前取消):而不是在 中生成新数字default_get,该字段默认name初始化为'/',并且该方法将其替换为一个新号码,正如您在源代码中看到的那样。净效果是一样的。create

于 2013-03-22T08:36:15.843 回答