# 工作流
通过工作流,您可以在ERPNext中重新定义特定流程/工作流的审批方式。
您可以为ERPNext工作流设置多个审批级别。为了允许多个人提交多个请求,由多个用户进行审批,ERPNext需要您填写工作流条件。ERPNext会在提交前跟踪多个权限。
考虑这样一个场景,对报价单需要多个级别的审批。销售人员(具有“销售用户”角色的用户)将创建一个报价单。然后由销售主管(具有“销售经理”角色的用户)批准或拒绝。如果被销售主管批准,再由区域经理(具有“区域经理”角色的用户)进一步批准或拒绝。
要创建工作流和过渡规则,请转到:
首页 > 设置 > 工作流
一旦创建了工作流,您可以通过工作流操作对其进行操作。
# 1. 先决条件
在创建工作流之前,建议先创建以下内容:
工作流操作
工作流状态,如已批准、已取消等
# 2. 如何创建工作流
转到工作流列表,点击新建。
输入工作流的名称,并选择要应用的DocType。
输入工作流的不同状态。为它们输入文档状态,选择要更新的字段,输入在“更新字段”列中,输入在“更新值”下列出的状态。
工作流状态可以根据状态有不同的颜色。例如:成功用绿色表示。文档状态:已保存 = 0,已提交 = 1,已取消 = 2。

- 输入转换规则。

# 2.2 创建工作流时要注意的事项
- 在ERPNext中创建工作流本质上会覆盖常规的保存和提交工作流。因此,文档将基于您的工作流而不是预设的代码工作流进行操作。因此,如果您在创建的工作流中没有指定,可能就没有提交按钮/选项。
如果您不为文档应用工作流,并且该文档可以提交,那么它就有默认工作流,状态为:草稿 - 已提交 - 已取消。如果您正在为可提交的文档应用工作流,那么这些默认状态应由用户处理。
除非文档已提交,否则无法取消。
如果您希望提供取消选项,您必须编写一个工作流转换步骤,说明从已提交状态可以取消。
如果“更新字段”列下的字段未更新,将使用您在“工作流状态字段”字段中设置的名称创建一个新的自定义字段。
# 2.3 工作流的其他选项
激活:勾选此选项后,所选DocType的所有其他工作流变为非激活状态。
不覆盖状态:此工作流的状态不会覆盖文档(报价单)在列表视图中的状态。
发送邮件提醒:将向用户发送电子邮件,列出接下来可能的工作流操作。
# 3. 功能
# 3.1 启用/禁用可选工作流状态
引入自版本12
在状态中,可选的工作流状态意味着该状态可能不是最终审批的一部分。
例如,已取消或已拒绝等状态可以是可选的。
**注意:**对于可选状态,不会创建工作流操作。
# 3.2 条件
您还可以为转换适用的条件添加条件。例如,在这种情况下,如果销售代表创建的报价单总计为10万美元或更多,则需要特定角色的批准。要实现特定的转换,您可以为条件属性设置一个属性:
doc.grand_total <= 100000
2
这里,grand_total是报价单中“总计”字段的字段名。要查看字段的字段名,请转到菜单 > 自定义。
这可以扩展到文档的任何属性。
引入自版本13
在版本13中,您可以在条件表达式中使用日期/时间、会话、get value和get list函数。
允许的函数:
frappe.db.get_value
frappe.db.get_list
frappe.session
frappe.utils.now_datetime
frappe.utils.get_datetime
frappe.utils.add_to_date
frappe.utils.now
示例:
doc.creation > frappe.utils.add_to_date(frappe.utils.now_datetime(), days=-5, as_string=True, as_datetime=True)
2
# 4. 报价审批流程示例
当销售用户保存报价单时,文档的状态会更改为“草稿”,当点击提交时,状态会更改为“等待销售经理审批”:

当销售经理登录时,他可以选择批准或拒绝。如果批准,文档的状态会更改为“等待区域经理审批”。

当区域经理打开报价单时,他最终可以“批准”或“拒绝”。

# 5. 视频
# 6. 相关主题
工作流操作
分配规则