使用 Odoo create 方法创建批记录

Create batch records with Odoo create method

我正在尝试使用 odoo13 中的创建值从一组字典创建多张发票。 一次创建一个记录是可以的,但是当我尝试使用批记录时,我收到错误 can't adapt to type dict

我尝试遍历数组并为其中的每一项创建一条记录,但此错误仍然存​​在。

我目前正在检查 @api.model_create_multi 装饰器,但还没有完全掌握它。

我想要的是,对于 visa_line 中的每一行(与订单行相同),从中创建一张发票。创建发票时缺少某些字段,但这应该不是问题所在。

当我打印记录时,在最终函数中,它正确地打印了带有值的管道。

这是我的代码,提前谢谢你

    def _prepare_invoice(self):
        journal = self.env['account.move'].with_context(
            default_type='out_invoice')._get_default_journal()

        invoice_vals = {
            'type': 'out_invoice',
            'invoice_user_id': self.csa_id and self.csa_id.id,
            'source_id': self.id,
            'journal_id': journal.id,
            'state': 'draft',
            'invoice_date': self.date,
            'invoice_line_ids': []
        }
        return invoice_vals

    def prepare_create_invoice(self):
        invoice_val_dicts = []
        invoice_val_list = self._prepare_invoice()
        for line in self.visa_line:
            invoice_val_list['invoice_partner_bank_id'] = line.partner_id.bank_ids[:1].id,
            invoice_val_list['invoice_line_ids'] = [0, 0, {
                'name': line.code,
                'account_id': 1,
                'quantity': 1,
                'price_unit': line.amount,
            }]
            invoice_val_dicts.append(invoice_val_list)
        return invoice_val_dicts

    @api.model_create_multi
    def create_invoice(self, invoices_dict):
        invoices_dict = self.prepare_create_invoice()
        for record in invoices_dict:
            print(record)
            records = self.env['account.move'].create(record)

我通过使用 duct 显式键入修复记录解决了这个问题。使用没有 @api.model_create_multi.

的普通创建方法
def create_invoice(self):
   invoices_dict = self.prepare_create_invoice()
   for record in invoices_dict:
       records = self.env['account.move'].create(dict(record))