diff --git a/jikimo_purchase_tier_validation/models/models.py b/jikimo_purchase_tier_validation/models/models.py index 6f07f6d6..6108880d 100644 --- a/jikimo_purchase_tier_validation/models/models.py +++ b/jikimo_purchase_tier_validation/models/models.py @@ -18,6 +18,12 @@ class jikimo_purchase_tier_validation(models.Model): # 是否已上传合同文件 is_upload_contract_file = fields.Boolean(string='是否已上传合同文件', default=False) + def button_confirm(self): + for record in self: + if record.need_validation and record.validation_status != 'validated': + raise ValidationError(_('请先完成审批!')) + return super().button_confirm() + # def button_confirm(self): # self = self.with_context(skip_validation=True) # return super().button_confirm() @@ -33,17 +39,29 @@ class jikimo_purchase_tier_validation(models.Model): def request_validation(self): for record in self: - missing_fields = [] - if not record.partner_ref: - missing_fields.append('合同名称') - if not record.contract_number: - missing_fields.append('合同编号') + error_messages = [] + + # 检查必填字段 + required_fields = { + 'partner_ref': '合同名称', + 'contract_number': '合同编号' + } + + missing_fields = [ + name for field, name in required_fields.items() + if not record[field] + ] if missing_fields: - raise ValidationError(_('如下字段要求必须填写:%s') % '、'.join(missing_fields)) + error_messages.append('1、如下字段要求必须填写:%s' % '、'.join(missing_fields)) + # 检查合同文件 if not record.contract_document_id: - raise ValidationError(_('合同文件必须上传')) + error_messages.append('2、必须点击上传合同文件') + + # 如果有任何错误,一次性显示所有错误信息 + if error_messages: + raise ValidationError('\n'.join(error_messages)) return super(jikimo_purchase_tier_validation, self).request_validation()