ERPNext能否重命名DocType的Draft状态?物料申请状态修改咨询
无需修改后端代码重命名ERPNext物料申请的Draft状态
有几种不用改动核心后端代码的方案能实现你的需求,按操作复杂度排序如下:
方法1:自定义翻译(推荐,无代码)
ERPNext的状态文本是通过翻译系统渲染的,你可以针对物料申请(Material Request)这个DocType单独修改"Draft"的显示文本:
- 进入系统设置 > 自定义翻译
- 「语言」选择你当前使用的语言(比如中文),「参考文档类型」选Material Request
- 添加翻译条目:「源文本」填
"Draft",「目标文本」填"Under Review" - 保存后刷新页面,物料申请里的Draft状态就会显示为Under Review,其他DocType的Draft状态不受影响
方法2:客户端脚本(轻量代码)
如果自定义翻译满足不了更灵活的逻辑需求,可以给物料申请加客户端脚本替换状态显示:
- 进入自定义 > 客户端脚本,新建脚本,「参考文档类型」选Material Request
- 粘贴以下代码:
frappe.ui.form.on('Material Request', { refresh: function(frm) { // 页面刷新时,若状态为Draft则替换显示文本 if (frm.doc.status === 'Draft') { frm.fields_dict.status.$wrapper.find('.value').text('Under Review'); } }, status: function(frm) { // 状态变化时同步替换显示文本 if (frm.doc.status === 'Draft') { frm.fields_dict.status.$wrapper.find('.value').text('Under Review'); } } });
- 保存并刷新物料申请页面,提交后的Draft状态就会显示为Under Review
方法3:自定义状态字段(全局场景适用)
如果需要在报表、列表等全局场景都显示新状态,可以新增自定义字段:
- 进入自定义 > 自定义字段,给Material Request新增一个数据类型为「数据」的字段(比如
custom_status),设置为只读,可选择隐藏在表单内 - 添加服务器端脚本(通过自定义 > 服务器脚本),在物料申请提交后更新这个字段:
frappe.ui.form.on('Material Request', { after_submit: function(frm) { if frm.doc.status == 'Draft': frm.set_value('custom_status', 'Under Review') frm.save() } });
- 最后在表单、列表、报表里把原状态字段替换成这个自定义字段即可
注意:方法1和2仅修改前端显示,后端存储的状态仍是Draft;方法3会在后端存储自定义状态,适合需要全局统一显示的场景。
内容的提问来源于stack exchange,提问作者Komel B
相关产品推荐
相关产品推荐

