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: