from odoo import models, fields from odoo.exceptions import ValidationError class SfProductCategory(models.Model): _inherit = 'product.category' negative_inventory_allowed = fields.Boolean('可负库存', default=True) class SfProductTemplate(models.Model): _inherit = 'product.product' def verify_product_repertory(self, location_id): """ 验证产品 负库存 """ if not location_id: raise ValidationError('当前位置为空!!') elif len(location_id) != 1: raise ValidationError(f'存在多个当前位置{[item.name for item in location_id]}') elif location_id.usage == 'supplier': return True for pp in self: if not pp.categ_id.negative_inventory_allowed: sq = pp.stock_quant_ids.filtered(lambda sq: sq.quantity < 0 and sq.location_id == location_id) if sq: raise ValidationError( f'产品{pp.name}的产品类型设置为不可负库存,当前操作会导致产品{pp.name}在库存{location_id.name}上的库存数量为负!!!')