Odoo 11 - `create_invoices()` 错误,需要一个参数,而以前使用两个参数
Odoo11 - `create_invoices()` Error, Needs One Argument whereas Previosly Used with Two Arguments
我在为我公司的Odoo项目工作。
我之前的一位工程师(现已辞职)制作了一个 Go 脚本,该脚本会定期启动以根据销售订单创建发票。这个 Go 脚本工作正常。
现在,我们意识到也可以通过 Odoo 的 Automated/Scheduled 操作来创建发票。
我目前的任务是将他的 Go 脚本翻译成 Odoo 的自动化操作。
但是,我有一个问题....
在他的Go脚本中有这样的代码:
param := []interface{}{
c.cred.Db,
c.uid,
c.cred.Password,
"sale.advance.payment.inv",
"create_invoices",
[]int{
paymentID,
},
map[string]interface{}{
"context": map[string]interface{}{
"active_id": salesOrderID,
"active_ids": []int{salesOrderID},
"active_model": "sales.order",
},
},
}
代码基本上是从模型 "sale.advance.payment.inv"
开始工作,然后调用方法 create_invoices
。
第一个参数是支付对象。
第二个参数是一个 JSON/Python 完全像这样的字典:
{
'context':
{
'active_id' : so['id'],
'active_ids' : [so['id']],
'active_model': 'sales.order'
}
}
我的自动操作是这样的:
paymentInAdvModel = env["sale.advance.payment.inv"]
paymentInAdv = paymentInAdvModel.create(
{
'advance_payment_method': 'delivered',
'amount': 0,
}
)
paymentInAdv.create_invoices(
[paymentInAdv],
{
'context':
{
'active_id' : so['id'],
'active_ids' : [so['id']],
'active_model': 'sales.order'
}
}
)
自动操作出现此错误:
ValueError: : "create_invoices() takes 1 positional argument but 3 were given" while evaluating
注意事项:
- 说
"create_invoices"
的方法只需要一个参数。我提供了两个参数,但错误说我输入了三个参数。我假设另一个参数是 Python 的 self
.
- 我唯一的文档是在这个 link 中查看 Odoo GitHub 存储库:https://github.com/odoo/odoo/search?q=create_invoices&unscoped_q=create_invoices
- 只引用一个名为
create_invoices
的函数,它只接受一个参数。
- Go 脚本工作正常。但是这个错误阻止我将 Go 代码转换为 Python Odoo 的自动操作。
任何人都有解决方案因此,我可以使用 create_invoices()
与 Go 脚本相同的参数吗?
调用create_invoice方法时不需要传递列表,还需要使用with_context()方法传递上下文。
尝试以下代码:
ctx = {
'active_id' : so['id'],
'active_ids' : [so['id']],
'active_model': 'sales.order'
}
paymentInAdv.with_context(ctx).create_invoices()
希望对您有所帮助。
我在为我公司的Odoo项目工作。
我之前的一位工程师(现已辞职)制作了一个 Go 脚本,该脚本会定期启动以根据销售订单创建发票。这个 Go 脚本工作正常。
现在,我们意识到也可以通过 Odoo 的 Automated/Scheduled 操作来创建发票。
我目前的任务是将他的 Go 脚本翻译成 Odoo 的自动化操作。
但是,我有一个问题....
在他的Go脚本中有这样的代码:
param := []interface{}{
c.cred.Db,
c.uid,
c.cred.Password,
"sale.advance.payment.inv",
"create_invoices",
[]int{
paymentID,
},
map[string]interface{}{
"context": map[string]interface{}{
"active_id": salesOrderID,
"active_ids": []int{salesOrderID},
"active_model": "sales.order",
},
},
}
代码基本上是从模型 "sale.advance.payment.inv"
开始工作,然后调用方法 create_invoices
。
第一个参数是支付对象。 第二个参数是一个 JSON/Python 完全像这样的字典:
{
'context':
{
'active_id' : so['id'],
'active_ids' : [so['id']],
'active_model': 'sales.order'
}
}
我的自动操作是这样的:
paymentInAdvModel = env["sale.advance.payment.inv"]
paymentInAdv = paymentInAdvModel.create(
{
'advance_payment_method': 'delivered',
'amount': 0,
}
)
paymentInAdv.create_invoices(
[paymentInAdv],
{
'context':
{
'active_id' : so['id'],
'active_ids' : [so['id']],
'active_model': 'sales.order'
}
}
)
自动操作出现此错误:
ValueError: : "create_invoices() takes 1 positional argument but 3 were given" while evaluating
注意事项:
- 说
"create_invoices"
的方法只需要一个参数。我提供了两个参数,但错误说我输入了三个参数。我假设另一个参数是 Python 的self
. - 我唯一的文档是在这个 link 中查看 Odoo GitHub 存储库:https://github.com/odoo/odoo/search?q=create_invoices&unscoped_q=create_invoices
- 只引用一个名为
create_invoices
的函数,它只接受一个参数。
- 只引用一个名为
- Go 脚本工作正常。但是这个错误阻止我将 Go 代码转换为 Python Odoo 的自动操作。
任何人都有解决方案因此,我可以使用 create_invoices()
与 Go 脚本相同的参数吗?
调用create_invoice方法时不需要传递列表,还需要使用with_context()方法传递上下文。
尝试以下代码:
ctx = {
'active_id' : so['id'],
'active_ids' : [so['id']],
'active_model': 'sales.order'
}
paymentInAdv.with_context(ctx).create_invoices()
希望对您有所帮助。