使用适用于PHP的Odoo(OpenERP)WebService API创建发票行

时间:2015-02-02 22:36:53

标签: php openerp odoo

我正在尝试使用下一代码创建发票行:

    // Invoice line creation
    $result = $models->execute_kw($db, $uid, $password,
        'account.invoice.line', 'create',
        array(array(
            'Invoice'=>$invoice, 
            'invoice_id'=>$invoice_id,
            'product_id'=>$product_id,
            'quantity'=>$product_quantity,
            'name'=>$product_name,
            'price_unit'=>$product_price,
            'invoice_line_tax_id'=>array($odoo_tax_id)
        )));

寄存器是在发票内创建的,但它没有任何税。

更新

用于发票行的产品是在使用之前创建的:

        // Product creation
        $product_id = $models->execute_kw($db, $uid, $password,
            'product.product', 'create',
            array(array(
                'default_code'=>$product_ref,
                'name'=>$product_name,
                'list_price'=>$product_price,
            ))
        );

发票是使用以下方式创建的:

    // Invoice creation
$invoice_id = $models->execute_kw($db, $uid, $password,
    'account.invoice', 'create',
    array(array('partner_id'=>$parter_id,'account_id'=>$odoo_invoice_account_id)));

$invoice = $models->execute_kw($db, $uid, $password,
    'account.invoice', 'read', array($invoice_id),
    array());

更新

根据Christophe Combelles给出的答案,我结束了这段代码:

'invoice_line_tax_id'=>array(array(4, $tax_id,false))

其他数组是必要的,因为此格式是三元组列表。

2 个答案:

答案 0 :(得分:2)

对于您的invoice_line_tax_id字段,请尝试将array($odoo_tax_id)替换为array(6, 0, array($odoo_tax_id))

不确定php语法,在python中它将是(6, 0, [tax_id])

https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model.write

中记录了这一点

答案 1 :(得分:0)

您是否添加了account.tax模块?
https://apps.openerp.com/apps/modules/7.0/account_tax_invoice/

  

您可以为产品分配多种税。假设你已经设置好了   适当的税,你会使用菜单销售‣产品‣   打开和编辑产品定义的产品,然后:

     

为您可能销售的任何产品选择一个或多个销售税,   其中可能包括销售税或增值税和销售生态税,

     

为您可能选择的任何产品选择一个或多个购买税   购买,可能包括购买税或进项增值税和购买   生态税。

     

通常,当您进行购买或销售时,分配的税额   该产品用于计算欠款或欠款。

有关odoo如何在https://doc.odoo.com/6.1/book/3/3_9/tax_structure/

处理税款的更多信息