我正在为 OpenERP 制作一个 Android 应用程序,并且正在尝试创建新的销售订单。然而,必填字段之一是订单参考,它通常是从序列中生成的。
有没有办法通过 xmlrpc 获得这个序列?
还是我必须在应用程序中制作自己的序列?...但是我如何确保它不会与通过 Web 客户端生成的订单引用发生冲突?
谢谢你。
您不需要做任何特别的事情:只需使用您的销售订单的内容调用sale.order
'方法。create
正如您在使用 Web 界面创建销售订单时注意到的那样,参考字段会自动填写正确的序列号。
发生这种情况是因为引用字段(技术上是'字段)sale.order
有一个默认值。默认值的工作方式如下:sale.order
name
default_get
相应的模型(将从_defaults
字典中获取值)来获取这些值。因此,您无需执行任何操作:只需调用create
而不为name
字段提供值,系统将自动将其值设置为有效的序列号,就像在 UI 中一样。或者,如果您想预处理默认值或精确模仿 UI 所做的事情,那么您应该default_get
通过 XML-RPC 调用自己并使用返回的值来准备您将传递给的参数create
。
版本说明:您没有提及任何特定的 OpenERP 版本,实际行为可能会因版本而有所不同。在 OpenERP 6.1 中,该sale.order
模型完全按照我上面描述的方式进行,您可以在源代码中看到。然而,在 OpenERP 7.0 中,逻辑被稍微修改以避免消耗可能永远不会使用的序列号(如果用户在保存之前取消):而不是在 中生成新数字default_get
,该字段默认name
初始化为'/'
,并且该方法将其替换为一个新号码,正如您在源代码中看到的那样。净效果是一样的。create