2017-03-02 4 views
1

XMLRCP API를 통해 Odoo에 몇 가지 명령을 보내는 루비 애플리케이션을 개발 중입니다. 나는Odoo 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 

지금, 나는 송장 생성을 시작할 것입니다 whay이있는 판매 오더를 생성 할 수있었습니다. 나는 송장이 생성되는 경우에도이

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

그러나처럼 할 수있는 방법을 발견, 판매 순서는 STIL "열기"내가 "송장 만들기"에 Odoo 인터페이스 클릭에서 다른 송장을 만들 수 있습니다 버튼 (분명히 틀렸다). API를 통해 해당 동작을 시뮬레이션 할 수있는 방법이 있습니까?

디버그 모드에 툴팁에 아무 방법도 표시되지 않습니다.

의견을 보내 주시면 감사하겠습니다.

답변

1

미래의 Google 직원을 위해. 해결 방법은 이전 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