如何通过RestAPI取消ERPNext中的员工考勤记录?
如何通过RestAPI取消ERPNext中的考勤记录
ERPNext中取消考勤记录并非通过普通CRUD操作实现,而是需要调用内置的业务方法——这也是你直接更新或删除失败的核心原因:
- 直接更新
status字段会触发内置业务逻辑校验,返回500错误 - 删除操作要求文档必须先处于Cancelled状态,因此必须先执行取消操作
具体实现步骤
ERPNext的RestAPI支持直接调用文档的业务方法,取消考勤记录可通过以下两种方式实现:
方式1:调用通用取消方法
使用frappe.client.cancel通用方法,传入考勤记录的文档类型和名称:
curl -X POST \ https://你的ERPNext实例地址/api/method/frappe.client.cancel \ -H "Authorization: token 你的API_KEY:你的API_SECRET" \ -H "Content-Type: application/json" \ -d '{ "doctype": "Attendance", "name": "ATT000123" }'
方式2:直接调用Attendance的cancel方法
直接调用Attendance文档的cancel方法,仅需传入考勤记录名称:
curl -X POST \ https://你的ERPNext实例地址/api/method/Attendance.cancel \ -H "Authorization: token 你的API_KEY:你的API_SECRET" \ -H "Content-Type: application/json" \ -d '{ "name": "ATT000123" }'
关键注意事项
- 替换示例中的
你的ERPNext实例地址、你的API_KEY:你的API_SECRET和ATT000123为实际值 - 确保使用的API密钥拥有考勤记录的取消权限
- 只有处于Submitted状态的考勤记录可以取消,Draft状态的记录可直接删除
- 若请求失败,响应体中会包含具体错误信息(如权限不足、文档状态不符等)
内容的提问来源于stack exchange,提问作者MD Rameez
相关产品推荐
相关产品推荐

