2013-03-21 35 views
0

我正在为OpenERP制作Android应用程序,并试图创建新的销售订单。然而,其中一个必需字段是Order Reference,它通常是从序列中生成的。OpenERP - 如何通过XMLRPC创建新的销售订单时获取序列号

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

还是我必须在应用程序中创建自己的序列? ...但是,我怎样才能确保它不会与通过Web客户端生成的订单引用混淆?

谢谢。

+0

这不是[android]相关的问题。 – agamov 2013-03-21 20:16:17

+0

我删除了标签,即使对我来说这是一个[android]相关的问题...但我可以看到你的观点 – micromanc3r 2013-03-21 20:25:34

+0

没问题,你到目前为止试过了什么?这是什么意思'从序列产生?我们在谈论什么样的“序列”? – agamov 2013-03-21 20:37:16

回答

2

您不需要做任何特别的事情:只需拨打sale.ordercreate方法即可获得您的销售订单的内容。正如您在使用Web界面创建销售订单时注意到的,参考字段会自动填入适当的序列号。

发生这种情况是因为sale.order对参考字段(sale.ordername的字段,技术上而言)具有默认值。默认值的工作方式如下:

  • 它们被客户端UI提取以预先填充创建表单。客户端通过相应的模型调用default_get(这将值从_defaults字典获得
  • create方法被调用来创建一个新的记录这些值,系统会以完成值再次调用default_get对于有缺省值,并没有明确地传递给create

结果的所有字段,你不需要做任何事情,只要调用:create没有给出一个值的name领域,系统将自动将其值设置为有效的序列号,就像在UI中一样。或者,如果您想要公开通过电子方式处理默认值或精确模拟UI的作用,那么您应该通过XML-RPC自己调用default_get,并使用返回的值来准备要传递给create的参数。

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

+0

非常感谢您的回答,这正是我需要的。目前我正在使用6.1,但了解7.0中的不同行为很有价值。谢谢 – micromanc3r 2013-03-22 08:42:24

相关问题