7231_lxb_commit

This commit is contained in:
lixiaobin@jikimo.com
2025-07-10 16:33:43 +08:00
parent 559c6bfb1d
commit 7adaa7e79b
2 changed files with 17 additions and 9 deletions

View File

@@ -196,9 +196,13 @@ class SfDemandPlan(models.Model):
def button_production_release_plan(self):
line_ids = self.line_ids.filtered(lambda p: p.status == '30')
sum_product_uom_qty = sum(line_ids.mapped('plan_uom_qty'))
if sum_product_uom_qty > self.product_uom_qty and not self.overdelivery_allowed and line_ids.filtered(lambda p: p.location_id.name == '客户'):
raise ValidationError(f"已禁止向合作伙伴/客户超量发货,请更换“补货原因”或将“可超量发货”设置为“是”。")
elif sum_product_uom_qty > self.product_uom_qty:
customer_location_id = self.env['ir.model.data']._xmlid_to_res_id('stock.stock_location_customers')
if not self.overdelivery_allowed and line_ids.filtered(lambda p: p.location_id.id == customer_location_id):
if float_compare(sum_product_uom_qty, self.product_uom_qty,
precision_rounding=self.product_id.uom_id.rounding) == 1:
raise ValidationError(f"已禁止向合作伙伴/客户超量发货,请更换“补货原因”或将“可超量发货”设置为“是”。")
elif float_compare(sum_product_uom_qty, self.product_uom_qty,
precision_rounding=self.product_id.uom_id.rounding) == 1:
return {
'name': _('需求计划'),
'type': 'ir.actions.act_window',

View File

@@ -594,7 +594,8 @@ class SfProductionDemandPlan(models.Model):
raise UserError(_("没有需要下达的计划!"))
check_overdelivery_allowed = False
if not self.demand_plan_id.overdelivery_allowed:
if self.location_id.name == '客户':
customer_location_id = self.env['ir.model.data']._xmlid_to_res_id('stock.stock_location_customers')
if self.location_id.id == customer_location_id:
check_overdelivery_allowed = True
# 按产品分组并计算总数
product_data = {}
@@ -611,7 +612,8 @@ class SfProductionDemandPlan(models.Model):
# 检查需求超过计划数量的产品
warning_messages = []
for product, data in product_data.items():
if data['plan_uom_qty'] > data['product_uom_qty']:
if float_compare(data['plan_uom_qty'], data['product_uom_qty'],
precision_rounding=product.uom_id.rounding) == 1:
warning_messages.append(
_("您正在下达的产品 %s,计划量%s,需求数量为%s,已超过需求数量") %
(product.display_name, data['plan_uom_qty'], data['product_uom_qty'])
@@ -639,11 +641,13 @@ class SfProductionDemandPlan(models.Model):
raise ValidationError(f"供货方式不能为空!")
check_overdelivery_allowed = False
if not self.demand_plan_id.overdelivery_allowed:
if self.location_id.name == '客户':
customer_location_id = self.env['ir.model.data']._xmlid_to_res_id('stock.stock_location_customers')
if self.location_id.id == customer_location_id:
check_overdelivery_allowed = True
if self.plan_uom_qty > self.product_uom_qty and check_overdelivery_allowed:
raise ValidationError(f"已禁止向合作伙伴/客户超量发货,请更换“补货原因”或将“可超量发货”设置为“是”。")
elif self.plan_uom_qty > self.product_uom_qty:
if check_overdelivery_allowed:
if float_compare(self.plan_uom_qty, self.product_uom_qty,precision_rounding=self.product_id.uom_id.rounding) == 1:
raise ValidationError(f"已禁止向合作伙伴/客户超量发货,请更换“补货原因”或将“可超量发货”设置为“是”。")
elif float_compare(self.plan_uom_qty, self.product_uom_qty,precision_rounding=self.product_id.uom_id.rounding) == 1:
return {
'name': _('需求计划'),
'type': 'ir.actions.act_window',