Documentation Frappe Framework

Frappe Framework

Docstatus : statut du document

Le docstatus suit l’état d’une transaction dans Frappe : brouillon (0), soumis (1) ou annulé (2). Cette page explique ces états et la classe DocStatus côté serveur.

2 min de lectureMis à jour le Source : docs.frappe.io

À quoi sert le docstatus

Frappe utilise la notion de statut de document (Docstatus) pour suivre l’état des transactions. Le docstatus prend toujours l’une des trois valeurs suivantes :

ÉtatNom anglaisValeur
BrouillonDraft0
SoumisSubmitted1
AnnuléCancelled2

Les documents qui ne sont pas soumissibles (not submittable) restent toujours à l’état « brouillon ». Les documents soumissibles (submittable) peuvent passer, de façon facultative, du brouillon à l’état « soumis », puis à l’état « annulé ».

Modification des documents soumis ou annulés

Un document à l’état soumis ou annulé ne peut plus être modifié, à une exception près : il est possible d’autoriser explicitement la modification de certains champs individuels, même lorsque le document est soumis.

La classe d’aide DocStatus côté serveur

Dans le code serveur, la classe d’aide DocStatus permet de manipuler ces états de façon lisible :

python
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

Stockage en base de données

Le docstatus est stocké sous forme d’entier dans la table de chaque DocType de la base de données.

Pages liées

  • Allow on Submit : autoriser la modification de champs après soumission.
  • Contrôleurs : les méthodes submit et cancel et leurs hooks.