2017-03-02 70 views
1

我正在开发一个ruby应用程序,它通过XMLRCP API向Odoo发送一些命令。 我已经能够在此创建销售订单whayOdoo 8/9/10 API,如何通过XMLRPC从销售订单创建发票

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

未来的谷歌搜索引擎。解决方案是我使用的是旧的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 
相关问题