企业 协同办公

Odoo 企业版文档发起签署为什么不是“上传 PDF 点发送”:Documents、Sign 与完成文件权限链路讲透

基于 documents_sign、sign.template 与 sign.request 源码,讲清 Documents 中的 PDF 如何变成签署模板、回写 folder/tag,并在完成后补权限。

企业 协同办公
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

很多人使用 Sign 时,只看到“上传 PDF → 发起签署”,但企业版 documents_sign 真正做的是让 PDF 从 Documents 空间出发,在签署模板、请求和完成文件之间保留同一套 folder、tag 与访问权。

## 1. Documents 里的二进制文件可以直接升格成 sign.template

enterprise/documents_sign/models/documents_document.pydocument_sign_create_sign_template() 会校验只能基于 PDF 文档创建模板,并把原文档的 folder/tag 带进 sign.template。这一步解决的是“模板来源”问题:签署模板不是孤立新对象,而是 Documents 中已有文件的再利用。

2. Sign request 创建时会反查 reference_doc,避免签署脱离原始文档空间

enterprise/documents_sign/models/sign_request.pycreate() 里会根据模板的 document attachment 找回 documents.document,并把 reference_doc 指向单个文档或其 folder。于是从请求页跳回 Documents 时,用户还能沿着原始文件空间继续工作,而不是停留在一个与文档库脱节的 Sign 页面。

3. 完成文件生成后,权限会回补给 signer 与 requester

同一文件里的 _generate_completed_documents()_send_completed_documents()sign.request.item._sign() 共同确保:completed attachment 会被转成 Documents 文档,但发邮件时不会重复建文档;同时 signer 和 requester 会被补上 completed document 的 view access。文件完成后仍然活在 Documents 权限体系里。

4. 最容易踩坑的是只看 Sign,不看 Documents 的 folder 边界

如果模板 folder 设计混乱,签完后的 completed file 就会散落在错误空间;如果只关心邮件是否发出,不核对 reference_doc 和 tag,后续检索、审计和归档都会很难做。企业版这里其实是在把 e-sign 变成文档治理流程的一部分。

## 结论

所以,Odoo 企业版 Documents 发起签署的价值,不是省一次上传动作,而是让原始 PDF、签署模板、请求对象和 completed file 始终共用同一套 folder/tag/权限链。

主要源码锚点:

- `enterprise/documents_sign/models/documents_document.py`
  • enterprise/documents_sign/models/sign_request.py
  • enterprise/documents_sign/models/sign_template.py
  • enterprise/documents_sign/data/documents_folder_data.xml

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。