使用 Odoo (OpenERP) Web Service API for PHP 创建发票行


Creating an invoice line using Odoo (OpenERP) WebService API for PHP

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

    // 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))

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

对于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

您是否添加了 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/税

的更多信息