在主数据上设置工作流

工作流通常设置在可提交的文档上。一旦文档被批准,它会根据设置的工作流自动提交。然而,有时企业确实存在需要审批主数据(如物料、物料价格、定价规则等)的场景。

ERPNext 中,这些主数据是不可提交的。因此,即使被拒绝,它们有时仍然处于激活状态,您可以在交易中使用它们。在本文中,我们以物料主数据为例。我们将在物料上设置一个简单的工作流,并使其仅在批准后才激活。为此,请按照以下步骤操作:

  1. 确保您要设置工作流的主数据具有启用/禁用复选框。如果默认情况下不存在此复选框,您需要通过自定义表单创建一个,并按如下方式设置默认值:
  1. 如果复选框是“禁用”,则设为 0
  2. 如果复选框是“启用”,则设为 1

在我们的案例中,物料主数据有一个名为“已禁用”的复选框。我们在物料 DocType 的自定义表单中将默认值设置为 1,如下所示。

这意味着每次创建新物料时,除非被批准,否则默认情况下它将处于禁用状态(如下面的截图所示)。

  1. 接下来,设置工作流。

在状态表中,批准时,请确保将“已禁用”(或已启用)复选框更新为 0(如果是启用,则更新为 1),如下所示。

这将确保每当物料被批准时,物料将自动启用,并且您可以在交易中使用它。

查看下面的 GIF 以详细了解工作流:

设置工作流的简单步骤

当公司对文档有多个审批层级时,可以设置工作流。
ERPNext 中,您可以进入工作流列表 –> 新建 –> 命名工作流并定义:1. 状态 2. 转换规则。

  1. 状态:

当文档被传递到不同审批层级时,每个层级会根据用户角色定义相应的状态。

  1. 转换规则:

例如:销售用户只能创建报价单,并且可以将其保存在草稿状态。然后,可以将其发送给销售经理进行审批,拥有此角色的用户可以批准拒绝该报价单,之后报价单要么进入草稿状态(如果被拒绝),要么进入最终的已批准状态。

错误消息:文档在提交前无法取消。
[这是用户在提交文档前定义了“已取消”状态时常见的错误。文档状态 1 表示文档将在该状态下被提交,因此文档状态 2 的状态应仅在文档状态 1 的状态之后的转换中定义。]
先设置一个简单的工作流,然后告诉我们您对工作流的更多想法!我们乐于看到用户满意!!;)

授权规则

授权规则允许根据定义的条件,在单据上配置自定义的授权/审批流程。

例如:如果销售订单的总额超过 1,000 元,那么即使销售用户拥有“提交”权限,也只能由销售经理进行验证/提交。

同样地,您可以根据净总额、总额、折扣百分比等字段定义授权规则,并指定当满足授权条件时,谁将是单据审批人。

让我们通过一个详细的授权规则示例来更好地理解。

假设销售经理仅需对总额超过 10,000 元的销售订单进行授权。如果销售订单金额低于 10,000 元,那么销售用户也可以提交。这意味着销售用户的“提交”权限将被限制在总额低于 10,000 元的销售订单范围内。

1. 如何创建授权规则

  1. 前往授权规则列表,点击“新建”。
  2. 选择授权规则将适用的交易类型。此功能仅适用于有限的交易类型。
  3. 输入授权金额等。这取决于您在“基于”字段中选择的字段。
  4. 选择“基于”。授权规则将根据在此字段中选择的值来应用。
  5. 选择“适用角色”。这是此授权规则将适用的角色。根据示例,它将是“销售用户”。
  6. 为了更具体,如果您希望将规则应用于特定的销售用户而非所有销售用户,您还可以选择“适用用户”。
  7. 选择“审批角色”。这是可以审批超过授权金额表单的角色。根据我们的示例,它是“销售经理”。
  8. 您还可以选择特定的销售经理。
  9. 保存。

如果销售用户尝试提交金额超过 10,000 元的销售订单,他将收到一条错误消息。

如果您希望限制销售用户提交销售订单,那么与其创建授权规则,不如从角色权限管理器中移除销售用户的“提交”权限。

可应用授权规则的单据

  1. 销售订单
  2. 采购订单
  3. 报价单
  4. 交货单
  5. 销售发票
  6. 采购发票
  7. 采购收货单
  8. 绩效评估

授权条件可基于的字段

  1. 总额
  2. 平均折扣
  3. 按客户折扣
  4. 按物料折扣

工作流过渡任务

注意:将在版本 16 中添加

简介

工作流转换任务是在工作流的状态转换期间可以执行的操作。每个工作流转换可以链接到一组转换任务。

每个工作流转换任务可以包含以下类型的任务:

  1. 应用定义的操作(由每个 Frappe 应用通过 hooks.py 指定)
  2. 服务器脚本
  3. Webhooks

除此之外,每个转换任务可以是以下两种模式之一:

  1. 同步:这是转换任务的默认模式。当状态转换启动时,所有转换任务会逐个运行。即使其中一个任务失败,转换也会被撤销。
  2. 异步:可以通过勾选“异步”复选框来启用此模式。每个异步转换任务在状态转换完成后运行,这意味着它对状态完成没有影响,并且会在单独的后台作业中独立运行。

应用定义的操作

每个 Frappe 应用通过 ‘workflow_methods’ 钩子来定义它们。

通过 workflow_methods 钩子定义的任何点分路径方法必须接受 doc: Document 作为参数,该参数是正在应用转换的文档。

应用定义的任务示例如下:

# hooks.py
workflow_methods = [{"name": "Create a customer", "method":
                     "myapp.shop.doctype.kirana.create_customer"}]

# myapp/shop/doctype/kirana.py
def create_customer(doc):
    customer = frappe.new_doc("Customer")
    customer.customer_name = "Customer " + doc.name
    customer.customer_type = "Individual"

    customer.save()

如果任何应用提供了这些任务,它们将出现在“任务”下拉菜单中。

如果您是最终用户,您无法自行创建应用定义的操作,必须使用下面提到的服务器脚本。

服务器脚本

这些脚本也接受 doc: Document 参数,并且可以使用“工作流任务”脚本类型进行设置。

然后,这些脚本必须在转换任务中进行链接:

Webhooks

可以通过将 Webhook 的“文档事件”字段设置为 ‘workflow_transition’ 来创建它们:

然后,这些 Webhook 必须在转换任务中进行链接:

  • 工作流状态
  • 工作流操作
  • 工作流

工作流操作

版本 11 中引入

“工作流操作”是一个集中位置,您可以在此跟踪和管理所有需要在工作流上执行的待处理操作。

仅当您创建的工作流中勾选了“发送邮件提醒”复选框时,工作流操作才会发送邮件通知。

要访问工作流操作,请前往:

首页 > 设置 > 工作流操作

如果用户有资格对某些工作流执行操作,系统将向该用户发送包含相关文档附件的邮件。用户可以从邮件中 ApproveReject 该工作流。

此外,用户还会在其工作流操作列表中看到相应条目:

注意:

  • 您可以为每个状态下的工作流操作设置邮件模板。该模板可能包含一条消息,提示用户继续执行下一步工作流操作。
  • 对于过渡到可选状态的情况,不会创建工作流操作。
  1. 工作流
  2. 分配规则

工作流状态

“工作流状态”是指文档(如销售订单、采购订单或请假申请)在其生命周期中可能处于的特定状态。

工作流状态对于管理多阶段审批流程、确保适当的制衡以及维持操作流程至关重要。

在对文档应用不同的工作流操作之前或之后,可能会达到不同的工作流状态。如果您想创建一个需要经理、高级经理、总经理等多级审批的工作流,您可以通过工作流状态为其设置这些状态。

系统根据每个阶段标记的样式,以不同颜色显示不同的状态。

  • 成功 – 绿色
  • 危险 – 红色
  • 反转 – 黑色
  • 主要 – 深蓝色
  • 信息 – 浅蓝色
  • 警告 – 橙色
  1. 工作流
  2. 工作流操作
  3. 分配规则

工作流

ERPNext 中的典型“工作流”涉及多个阶段,用于管理业务运营的不同方面。它从创建文档开始,然后经过一系列步骤。用户可以通过分配任务并跟踪进度来跟踪每个文档的状态并与团队成员协作。

ERPNext 通过自动化需要多人多阶段关注的重复性任务来简化流程。ERPNext 提供全面的工作流,以提高组织内各个部门的生产力和效率。

  • 工作流状态
  • 工作流操作
  • 工作流
  • 工作流转任务

工作流

通过工作流,您可以重写 ERPNext 中特定流程/工作流的审批方式。

您可以为 ERPNext 工作流设置多个审批级别。为了允许多人提交多个请求,并由多个用户进行审批,ERPNext 要求您填写工作流条件。ERPNext 会在提交前跟踪多个权限。

考虑一个场景,其中报价单需要多个级别的审批。销售人员(具有“销售用户”角色的用户)将创建报价单。然后由销售主管(具有“销售经理”角色的用户)批准或拒绝。如果销售主管批准,则进一步由区域经理(具有“区域经理”角色的用户)批准或拒绝。

要创建工作流和转换规则,请前往:

首页 > 设置 > 工作流

创建工作流后,您可以通过工作流操作对其执行操作。

  1. 前提条件

在创建工作流之前,建议先创建以下内容:

  • 工作流操作
  • 工作流状态,例如“已批准”、“已取消”等。
  1. 如何创建工作流

  1. 前往工作流列表,点击“新建”。
  2. 工作流输入名称,并选择要应用到的文档类型。
  3. 输入工作流的不同状态。为其输入文档状态,从“更新字段”列中选择要更新的字段,在“更新值”下输入要更新成的值。

工作流状态可以根据状态显示不同的颜色。例如:绿色表示成功。文档状态:已保存 = 0,已提交 = 1,已取消 = 2。

4. 输入转换规则。

2.2 创建工作流时的注意事项

  • ERPNext 中创建工作流本质上会覆盖常规的保存和提交工作流。因此,文档将根据您的工作流运行,而不是基于预设的代码工作流。因此,如果您在创建的工作流中没有指定提交按钮/选项,则可能没有提交按钮/选项。

如果您没有对文档应用工作流,并且该文档是可提交的,那么它将具有默认工作流,状态为:草稿 – 已提交 – 已取消。如果您对可提交文档应用工作流,则这些默认状态应由用户处理。

  • 文档只有在提交后才能取消。
  • 如果您希望提供取消选项,则必须编写一个工作流转换步骤,说明从“已提交”状态可以取消。
  • 如果“更新字段”列下的字段未更新,则会使用您在“工作流状态字段”字段中设置的名称创建一个新的自定义字段。

2.3 工作流的其他选项

  1. 是否启用:勾选此项后,所选文档类型的所有其他工作流将变为非活动状态。

  2. 不覆盖状态:此工作流的状态不会覆盖列表视图中文档(报价单)的状态。

  3. 发送邮件提醒:将向具有下一个可能工作流操作的用户发送电子邮件。

  4. 功能


3.1 启用/禁用可选工作流状态

在版本 12 中引入

在状态中,可选工作流状态意味着该状态可能不是最终审批的一部分。

例如,“已取消”或“已拒绝”等状态可以是可选的。

注意: 不会为可选状态创建工作流操作。

3.2 条件

您还可以为转换添加适用条件。例如,在这种情况下,如果销售主管创建的报价单总额为 100,000 美元或以上,则必须由特定角色批准。为了实现这一点,在特定转换中,您可以为条件设置一个属性:

doc.grand_total <= 100000

这里,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)
  1. 报价单审批流程示例

当销售用户保存报价单时,文档状态将更改为“草稿”,点击提交后,状态将更改为“待销售经理审批”:

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

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

  1. 视频

  1. 工作流操作
  2. 分配规则