OpenERP - 如何通过XMLRPC创建新的销售订单时获取序列号

时间:2013-03-21 20:11:48

标签: xml-rpc openerp sequences

我正在为OpenERP制作Android应用,我正在尝试创建新的销售订单。然而,必需字段之一是Order Reference,它是从序列中正常生成的。

有没有办法通过xmlrpc获取此序列?

或者我是否必须在应用中制作自己的序列? ...但是,我怎样才能确保它不会与通过Web客户端生成的订单引用相对应?

谢谢。

1 个答案:

答案 0 :(得分:2)

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

这是因为create具有参考字段的默认值(技术上是sale.order的{​​{1}}字段)。默认值的工作方式如下:

  • 客户端UI提取它们以预先填充创建表单。客户端通过调用相应模型上的default_get来获取这些值(这将采用sale.order字典中的值。
  • 当调用create方法创建新记录时,系统将再次调用default_get,以便为具有默认值且未明确传递给{{的所有字段的值完成3}}

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

版本说明:您没有提及任何特定的OpenERP版本,实际行为可能会有所不同,具体取决于版本。在OpenERP 6.1中,name模型正如我上面所描述的那样,正如您在create中看到的那样。但是在OpenERP 7.0中,稍微修改了逻辑以避免使用可能永远不会使用的序列号(如果用户在保存之前取消):而不是在default_get中生成新号码,create字段已初始化如source所示,sale.order方法会将default_get方法替换为新号码。default。净效果是一样的。