diff --git a/jikimo_purchase_tier_validation/models/models.py b/jikimo_purchase_tier_validation/models/models.py
index 39e41e1f..34d33d32 100644
--- a/jikimo_purchase_tier_validation/models/models.py
+++ b/jikimo_purchase_tier_validation/models/models.py
@@ -27,7 +27,17 @@ class jikimo_purchase_tier_validation(models.Model):
raise ValidationError(_('请先完成审批。'))
# if record.state == 'approved':
# record.state = 'purchase'
- return super().button_confirm()
+ res = super(jikimo_purchase_tier_validation, self).button_confirm()
+ for record in self:
+ if record.state == 'approved':
+ record.order_line._validate_analytic_distribution()
+ record._add_supplier_to_product()
+ # Deal with double validation process
+ if record._approval_allowed():
+ record.button_approve()
+ if record.partner_id not in record.message_partner_ids:
+ record.message_subscribe([record.partner_id.id])
+ return res
# def button_confirm(self):
# self = self.with_context(skip_validation=True)
@@ -87,15 +97,14 @@ class jikimo_purchase_tier_validation(models.Model):
def _validate_tier(self, tiers=False):
res = super(jikimo_purchase_tier_validation, self)._validate_tier(tiers)
- tier_reviews = tiers or self.review_ids
# 检查是否所有审批都已通过
all_approved = all(
tier_review.status == 'approved'
- for tier_review in tier_reviews
+ for tier_review in self.review_ids
)
- if all_approved and tier_reviews: # 确保有审批记录
+ if self.review_ids and all_approved: # 确保有审批记录
self.state = 'approved'
return res
diff --git a/jikimo_workorder_exception/views/mrp_workorder_views.xml b/jikimo_workorder_exception/views/mrp_workorder_views.xml
index e589adb4..55ee0aa7 100644
--- a/jikimo_workorder_exception/views/mrp_workorder_views.xml
+++ b/jikimo_workorder_exception/views/mrp_workorder_views.xml
@@ -7,6 +7,7 @@
+
diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py
index d7181fdf..1bfa5f07 100644
--- a/sf_manufacturing/models/mrp_production.py
+++ b/sf_manufacturing/models/mrp_production.py
@@ -350,7 +350,7 @@ class MrpProduction(models.Model):
if any((wo.test_results == '返工' and wo.state == 'done' and
(production.programming_state in ['已编程'] or wo.individuation_page_PTD is True))
or (wo.is_rework is True and wo.state == 'done' and production.programming_state in ['编程中', '已编程'])
- for wo in production.workorder_ids):
+ for wo in production.workorder_ids) or production.is_rework is True:
production.state = 'rework'
if any(wo.test_results == '报废' and wo.state == 'done' for wo in production.workorder_ids):
production.state = 'scrap'
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index 67f9443d..505d0c41 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -126,9 +126,9 @@
mrp.workorder
-
+
-
+
@@ -312,6 +312,7 @@
+
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index 73837271..31681932 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -130,7 +130,10 @@ class ReSaleOrder(models.Model):
'order_id': self.id,
'product_id': product.id,
'name': '%s/%s/%s/%s/%s/%s' % (
- product.model_long, product.model_width, product.model_height, product.model_volume,
+ self.format_float(product.model_long),
+ self.format_float(product.model_width),
+ self.format_float(product.model_height),
+ self.format_float(product.model_volume),
machining_accuracy_name,
product.materials_id.name),
'price_unit': product.list_price,
@@ -143,6 +146,20 @@ class ReSaleOrder(models.Model):
}
return self.env['sale.order.line'].with_context(skip_procurement=True).create(vals)
+ def format_float(self, value):
+ # 将浮点数转换为字符串
+ value_str = str(value)
+ # 检查小数点的位置
+ if '.' in value_str:
+ # 获取小数部分
+ decimal_part = value_str.split('.')[1]
+ # 判断小数位数是否超过2位
+ if len(decimal_part) > 2:
+ # 超过2位则保留2位小数
+ return "{:.2f}".format(value)
+ # 否则保持原来的位数
+ return float(value_str)
+
@api.constrains('order_line')
def check_order_line(self):
for item in self: