30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
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}上的库存数量为负!!!')
|