【发布时间】:2019-06-27 09:48:34
【问题描述】:
我正在使用https://www.npmjs.com/package/odoo-xmlrpc 在 odoo 10 中创建发票。我可以创建发票,但我无法将发票 line_items 添加到发票中。
//connect to odoo
var odoo = new Odoo({
url: "xxx",
port: 443,
db: "xxx",
username: 'apiuser123456',
password: 'xxx'
});
odoo.connect(function (err) {
if (err) { return console.log(err); }
console.log('Connected to Odoo server.');
var inParams = [];
inParams.push({
'partner_id': 119,
'account_id': 162,
'invoice_line': [(0, '', { 'account_id': 162, 'name': "AAA", 'quantity': parseFloat('3'), 'price_unit': parseFloat('5') })]
});
var params = [];
params.push(inParams);
odoo.execute_kw('account.invoice', 'create', params, function (err2, value2) {
if (err2) { return console.log(err2); }
});
});
此代码实际上在 odoo 中创建了一张发票,但它没有添加任何行。我认为 invoice_line 属性在某种程度上是错误的,但我没有找到问题所在。我本来希望在发票中看到一行,总金额为 15 欧元。
【问题讨论】:
-
我认为正确的字段名称是
invoice_line_ids而不是invoice_line -
更改为 invoice_line_ids 会导致执行错误。 XML_RPC 错误 - KeyError: 0 ,所以我认为这意味着未找到指向 invoice_line 正确方向的密钥
-
从odoo source code可以看到正确的字段名是
invoice_line_ids,模型中没有引用invoice_line。 “KeyError: 0”似乎表明 Odoo 无法解释您传递的值。我认为 JS 中没有元组类型。也许(0, '', { 'account_id': 162, [...]})的值没有意义...... -
也许可以试试
[0, '', { 'account_id': 162, ...}](用括号代替大括号) -
'invoice_line_ids': [[0, '', { 'account_id': 162, 'name': "AAA", 'quantity': parseFloat('3'), 'price_unit': parseFloat ('5') }],[0, '', { 'account_id': 162, 'name': "AAA", 'quantity': parseFloat('3'), 'price_unit': parseFloat('5') }]] - 这个可行,所以我想我需要使用 0 来表示需要先创建该行。
标签: node.js odoo xml-rpc invoice