def action_confirm(self): if not self.outbound_line: raise UserError('请录入出库明细!') for record in self.outbound_line: if record.quantity < record.available_inventory: database_dict = { "available_inventory": record.available_inventory - record.quantity } outbound = self.env['roke.warehouse.statistics'].search([('code', '=', record.code.id)]) outbound.write(database_dict) else: raise UserError('当前数量大于库存数量!') self.warehouse_state = 'confirm'这个在另一个表中没有数据
时间: 2024-02-10 15:10:07 浏览: 85
如果在 `roke.warehouse.statistics` 表中没有符合搜索条件的记录,则 `search()` 方法将返回空记录集,因此在尝试访问空记录集时会引发异常。您需要在执行 `write()` 操作之前检查是否存在符合条件的记录,如果没有,则需要进行相应的处理,例如创建新的记录或引发警告。
下面是一个可能的解决方案:
```
def action_confirm(self):
if not self.outbound_line:
raise UserError('请录入出库明细!')
for record in self.outbound_line:
if record.quantity < record.available_inventory:
database_dict = {
"available_inventory": record.available_inventory - record.quantity
}
# 检查是否存在符合条件的记录
outbound = self.env['roke.warehouse.statistics'].search([('code', '=', record.code.id)])
if outbound:
outbound.write(database_dict)
else:
# 如果不存在符合条件的记录,可以选择创建新的记录或引发警告
# 例如:
# self.env['roke.warehouse.statistics'].create({
# 'code': record.code.id,
# 'available_inventory': record.available_inventory - record.quantity
# })
raise UserError('找不到符合条件的记录!')
else:
raise UserError('当前数量大于库存数量!')
self.warehouse_state = 'confirm'
```
在上面的示例中,如果没有符合条件的记录,代码将引发一个警告,您也可以选择使用 `create()` 方法创建一个新的记录。请根据您的实际需求进行相应的处理。
阅读全文