使用 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))
我正在尝试使用 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))