# Docstatus

Frappe使用"Docstatus"的概念来跟踪交易的状态。Docstatus将始终具有以下三个值之一:

  1. 草稿(值:0)
  2. 已提交(值:1)
  3. 已取消(值:2)

不可提交的文档将始终处于"草稿"状态。可提交的文档可以从草稿状态选择性地进入"已提交"状态,然后进入"已取消"状态。

处于已提交和已取消状态的文档无法编辑,有一个例外:对于个别字段,我们可以明确允许编辑,即使文档处于已提交状态。

在后端代码中,我们有一个辅助类DocStatus,可以使用如下:

import frappe
from frappe.model.docstatus import DocStatus

draft_invoice_names = frappe.get_list(
    "Sales Invoice",
    filters={"docstatus": DocStatus.draft()},
    pluck="name"
)

invoice_doc = frappe.get_doc("Sales Invoice", draft_invoice_names[0])
invoice_doc.docstatus == DocStatus.draft() # -> True
invoice_doc.docstatus.is_draft() # -> True
invoice_doc.docstatus.is_submitted() # -> False
invoice_doc.docstatus.is_cancelled() # -> False

invoice_doc.submit()
invoice_doc.docstatus == DocStatus.submitted() # -> True
invoice_doc.docstatus.is_draft() # -> False
invoice_doc.docstatus.is_submitted() # -> True
invoice_doc.docstatus.is_cancelled() # -> False

invoice_doc.cancel()
invoice_doc.docstatus == DocStatus.cancelled() # -> True
invoice_doc.docstatus.is_draft() # -> False
invoice_doc.docstatus.is_submitted() # -> False
invoice_doc.docstatus.is_cancelled() # -> True

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Docstatus作为整数值存储在数据库的每个Doctype表中。

最后更新时间: 9/27/2024, 3:24:28 PM