【发布时间】:2015-08-26 09:48:10
【问题描述】:
对于 Odoo 仓库模块,当质量控制想要将产品转移到库存时,我必须检查所有必填字段是否已填写。 目前一切正常,但质量控制的位置目前是硬编码的。这意味着当有人使用另一个库存位置进行质量控制时,他们将不得不更改代码。
我已经通过 Odoo 文档进行了搜索,据我所知,对于新的 api,我必须使用 self.env 而不是 self.pool.get。 (我添加了旧代码作为注释。) 调试时,stock.warehouse 似乎在 self.pool 而不是 self.env 中(但我想这可能只是那些“Odoo”的东西之一)。
第二件事是我已经硬编码了当前的 company_id “1”。 我认为如果那是一个变量也是最好的,那将是最好的。
我希望有人可以帮助我解决这个问题。
提前致谢
class stock_transfer_details(models.TransientModel):
_inherit = "stock.transfer_details"
@api.one
def do_detailed_transfer(self):
res = super(stock_transfer_details, self).do_detailed_transfer()
# Check if all the required lot additional fields have been filled.
# Else raise warning.
# TODO Replace hardcoded Quality location by database reference
warehouse = self.env("stock.warehouse").search([("company_id", "=", "1")])
# self.pool.get("stock.warehouse").browse(cr, uid, item["wh_qc_stock_loc_id"], context=context)
qc_location = warehouse.wh_qc_stock_loc_id
missing_mandatory_fields = []
if self.picking_source_location_id.id == 14:
item_ids = self.mapped("item_ids")
for item in item_ids:
additional_fields = item.lot_id.mapped("lot_lot_additional_fields")
for field in additional_fields:
if field.lot_additional_fields.mandatory and not field.value:
if item.lot_id.name not in missing_mandatory_fields:
missing_mandatory_fields.append(item.lot_id.name)
if missing_mandatory_fields:
error_message = "All required fields for the serial numbers must be filled! \n"
error_message += "Serial numbers: \n"
for item in missing_mandatory_fields:
error_message += item + "\n"
raise exceptions.Warning(error_message)
return res
【问题讨论】:
标签: python database search odoo-8