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

时间:2017-03-02 17:48:43

标签: odoo-8 xml-rpc odoo-9 odoo-10

我正在开发一个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)])

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

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

感谢任何建议,谢谢!

1 个答案:

答案 0 :(得分:3)

未来的googlers。解决方案是我使用旧的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