2026-04-06 15:47:33 +08:00
|
|
|
|
# ERPNext开发技能包
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
`ERPNext` `Frappe` `Claude Code` `开发工具` `ERP`
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
# ERPNext / Frappe 开发者技能包
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
**面向 Claude Code 的 Frappe 框架与 ERPNext v15 开发综合参考手册。**
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
[](https://opensource.org/licenses/MIT)
|
|
|
|
|
|
[](#)
|
|
|
|
|
|
[](#)
|
|
|
|
|
|
[](https://skills.sh/6missedcalls/erpnext-skill)
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
无需离开编辑器,即可构建功能完整的 ERPNext 应用。
|
|
|
|
|
|
Claude Code 可即时访问所有 Frappe API、DocType 模式、
|
|
|
|
|
|
控制器钩子和模块参考,用于脚手架搭建、扩展和
|
|
|
|
|
|
调试自定义 ERPNext 应用。
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 功能特性
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### 框架 API 覆盖范围
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
| API 层面 | 内容说明 |
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|-------------|-------------|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
| **文档 API** | CRUD 操作、命名、权限、工作流转换 |
|
|
|
|
|
|
| **数据库 API** | 查询、事务、批量操作、直接 SQL |
|
|
|
|
|
|
| **控制器** | 生命周期钩子、验证、提交、取消 |
|
|
|
|
|
|
| **钩子** | 应用配置、计划任务、文档事件、覆盖 |
|
|
|
|
|
|
| **REST API** | 资源端点、自定义方法、身份认证 |
|
|
|
|
|
|
| **表单脚本** | 客户端 JS、字段事件、对话框、路由 |
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### ERPNext 模块参考
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
| 领域 | 模块 |
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|--------|---------|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
| **财务** | 会计、资产 |
|
|
|
|
|
|
| **供应链** | 库存、采购、销售、制造 |
|
|
|
|
|
|
| **人员** | 人力资源与薪资 |
|
|
|
|
|
|
| **客户面** | CRM、支持、POS |
|
|
|
|
|
|
| **运营** | 项目、集成、设置、定制 |
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
> 每个模块参考均包含 DocType 关系、字段结构、
|
|
|
|
|
|
> 常见工作流,以及针对 ERPNext v15 的即用代码示例。
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 安装
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### 通过 [skills.sh](https://skills.sh) 一键安装
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npx skills add 6missedcalls/erpnext-skill
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
全局安装(适用于所有项目):
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npx skills add 6missedcalls/erpnext-skill -g
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
指定特定 Agent:
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npx skills add 6missedcalls/erpnext-skill -a claude-code
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### 手动安装
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
直接克隆到 Claude Code 技能目录:
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-06 19:01:37 +08:00
|
|
|
|
# 项目级别(仅当前项目)
|
2026-04-06 15:47:33 +08:00
|
|
|
|
git clone https://github.com/6missedcalls/erpnext-skill.git .claude/skills/erpnext-skill
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
# 全局(所有项目)
|
2026-04-06 15:47:33 +08:00
|
|
|
|
git clone https://github.com/6missedcalls/erpnext-skill.git ~/.claude/skills/erpnext-skill
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### 通过 Claude Code 插件市场
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
/plugin marketplace add 6missedcalls/erpnext-skill
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
然后选择**浏览并安装插件**,按提示操作即可。
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 快速上手
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
安装后,每当您在 Frappe 或 ERPNext 项目中工作时,Claude Code 会自动加载该技能包,无需手动调用——直接告诉 Claude Code 您想构建什么:
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
2026-04-06 19:01:37 +08:00
|
|
|
|
"创建一个带有自动计算税额的 Invoice DocType 的自定义应用"
|
|
|
|
|
|
"添加一个将新销售订单同步到外部 API 的 Webhook 钩子"
|
|
|
|
|
|
"编写一个在提交前验证行项目的表单脚本"
|
2026-04-06 15:47:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 文档结构
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
`reference/` 目录按功能组织,便于快速精准查阅:
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
reference/
|
2026-04-06 19:01:37 +08:00
|
|
|
|
|-- frappe-framework-complete.md # 主参考文档——完整 API 文档
|
|
|
|
|
|
|-- document-api.md # 文档 CRUD 操作
|
|
|
|
|
|
|-- database-api.md # 数据库查询与事务
|
|
|
|
|
|
|-- hooks-reference.md # hooks.py 配置
|
|
|
|
|
|
|-- rest-api.md # REST API 端点
|
|
|
|
|
|
|-- form-scripts.md # 客户端 JavaScript
|
|
|
|
|
|
|-- index.md # 模块文档索引
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
|-- api/
|
2026-04-06 19:01:37 +08:00
|
|
|
|
| |-- rest-api.md # REST API 深度解析
|
|
|
|
|
|
| +-- developer-api.md # Python / JS 开发者 API
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
|-- accounting/ # 会计与财务
|
|
|
|
|
|
|-- stock/ # 库存管理
|
|
|
|
|
|
|-- manufacturing/ # 生产与制造
|
|
|
|
|
|
|-- crm/ # 客户关系管理
|
|
|
|
|
|
|-- hr-payroll/ # 人力资源与薪资
|
|
|
|
|
|
|-- buying/ # 采购
|
|
|
|
|
|
|-- selling/ # 销售
|
|
|
|
|
|
|-- projects/ # 项目管理
|
|
|
|
|
|
|-- support/ # 服务台与支持
|
|
|
|
|
|
|-- assets/ # 资产管理
|
|
|
|
|
|
|-- pos/ # 销售点
|
|
|
|
|
|
|-- integrations/ # 第三方集成
|
|
|
|
|
|
|-- setup/ # 系统设置与配置
|
|
|
|
|
|
+-- customization/ # 定制与扩展
|
2026-04-06 15:47:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
**从这里开始:** `reference/frappe-framework-complete.md`——单一文件,涵盖完整 Frappe API 层面及可运行代码示例。
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 使用说明
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### 工作原理
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
本技能包是**纯参考**型包,不包含可执行代码。
|
|
|
|
|
|
当 Claude Code 检测到您正在 Frappe/ERPNext 环境中工作时,
|
|
|
|
|
|
会将相关文档加载到上下文窗口,从而能够:
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
- 使用 `bench new-app` 脚手架搭建新应用
|
|
|
|
|
|
- 生成 DocType、控制器和表单脚本
|
|
|
|
|
|
- 配置钩子、计划任务和文档事件
|
|
|
|
|
|
- 编写正确的 REST API 集成代码
|
|
|
|
|
|
- 遵循 Frappe 在权限、工作流和测试方面的最佳实践
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
### 示例工作流
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-06 19:01:37 +08:00
|
|
|
|
# 创建新的 Frappe 应用
|
2026-04-06 15:47:33 +08:00
|
|
|
|
bench new-app my_custom_app
|
|
|
|
|
|
bench --site mysite install-app my_custom_app
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
然后让 Claude Code 在您的应用内构建功能,它将参考技能文档生成符合 Frappe 惯例的代码:
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
```python
|
2026-04-06 19:01:37 +08:00
|
|
|
|
# 带生命周期钩子的控制器
|
2026-04-06 15:47:33 +08:00
|
|
|
|
class CustomInvoice(Document):
|
|
|
|
|
|
def validate(self):
|
|
|
|
|
|
self.calculate_totals()
|
|
|
|
|
|
|
|
|
|
|
|
def on_submit(self):
|
|
|
|
|
|
self.create_gl_entries()
|
|
|
|
|
|
|
|
|
|
|
|
def calculate_totals(self):
|
|
|
|
|
|
self.grand_total = sum(item.amount for item in self.items)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```javascript
|
2026-04-06 19:01:37 +08:00
|
|
|
|
// 带字段级事件的表单脚本
|
2026-04-06 15:47:33 +08:00
|
|
|
|
frappe.ui.form.on('Custom Invoice', {
|
|
|
|
|
|
refresh(frm) {
|
|
|
|
|
|
if (frm.doc.docstatus === 0) {
|
2026-04-06 19:01:37 +08:00
|
|
|
|
frm.add_custom_button(__('获取项目'), () => {
|
2026-04-06 15:47:33 +08:00
|
|
|
|
frm.trigger('fetch_items');
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
fetch_items(frm) {
|
2026-04-06 19:01:37 +08:00
|
|
|
|
// 自定义逻辑
|
2026-04-06 15:47:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 参与贡献
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
欢迎贡献。无论您希望扩展模块覆盖范围、修复 API 示例,还是改进文档结构,欢迎提交 Issue 或 Pull Request。
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
1. Fork 本仓库
|
|
|
|
|
|
2. 创建功能分支(`git checkout -b feature/add-xyz-reference`)
|
|
|
|
|
|
3. 提交更改(`git commit -m "docs: 添加 XYZ 模块参考"`)
|
|
|
|
|
|
4. 推送分支(`git push origin feature/add-xyz-reference`)
|
|
|
|
|
|
5. 创建 Pull Request
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
## 许可证
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
本项目基于 [MIT 许可证](https://opensource.org/licenses/MIT) 授权。
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
|
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
由 [openclaw](https://github.com/6missedcalls) 构建
|
2026-04-06 15:47:33 +08:00
|
|
|
|
|
2026-04-06 19:01:37 +08:00
|
|
|
|
</div>
|