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() 与 Go 脚本相同的参数吗?

调用create_invoice方法时不需要传递列表,还需要使用with_context()方法传递上下文。

尝试以下代码:

ctx = {
    'active_id'   :  so['id'],
    'active_ids'  : [so['id']],
    'active_model': 'sales.order'
}
paymentInAdv.with_context(ctx).create_invoices()

希望对您有所帮助。