Odoo 8/9/10 API,如何通过 XMLRPC 从销售订单创建发票

Odoo 8/9/10 API, how to create an invoice from a sale order via XMLRPC

我正在开发一个 ruby 应用程序,它通过 XMLRCP API 向 Odoo 发送一些命令。 我已经能够在此 whay

中创建销售订单
def execute_odoo_command(odoo_model, odoo_command, values)
  @models.execute_kw(ODOO_DB, @uid, ODOO_PASSWORD, odoo_model, odoo_command, values)
end

def create_order_sale
  order_reference = "SO #{@reference_code}_#{@customer_odoo_id}"
  values = {
    currency_id: 1,
    date_order: Date.today.to_s,
    name: order_reference,
    payment_term: 1,
    partner_id: @customer_odoo_id
  }
  order_id = execute_odoo_command('sale.order', 'create', [values])
  create_sale_order_lines(order_id)
  execute_odoo_command('sale.order', 'action_confirm', [order_id])
end

现在,我将启动发票创建。我找到了这样的方法

execute_odoo_command('account.invoice', 'create', [invoice_values(order_reference)])

但是,即使创建了发票,销售订单仍然是 "open",我可以通过单击 "Create Invoice" 按钮从 Odoo 界面创建另一个发票(这显然是错误的)。有没有办法通过 API 来模拟那个动作?

调试模式不在工具提示中显示任何方法。

欢迎任何建议,谢谢!

对于未来的谷歌员工。解决方案是我使用的是旧 API 版本。正确的命令调用是这个

  def create_invoice_from_sale_order(sale_order_id)
    sale_order_to_invoice_data = [sale_order_id, {context: {active_ids: sale_order_id}}]
    @odoo_rpc_client.execute_odoo_command('sale.order', 'action_invoice_create', sale_order_to_invoice_data)
  end