ERPNext 是一个 frappe 应用, frappe 还有其他的应用,比如 hrms, LMS
frappe 是一个开发框架
frappe 使用 frappe-bench 工具进行管理
frappe 在部署上, 逻辑划分为
site # 站点,数据库
apps # 软件包
相关基础软件
- mariadb
- redis-server # cache, queue, socketio
- nodejs 14 # frontend
- python3.10 # to run frappe
- nginx
相关服务
- rappe-bench-frappe-default-worker.service
- frappe-bench-frappe-short-worker.service
- frappe-bench-frappe-long-worker.service
- frappe-bench-frappe-web.service
- frappe-bench-frappe-schedule.service
- frappe-bench-node-socketio.service
- frappe-bench-redis-queue.service
- frappe-bench-redis-cache.service
- frappe-bench-redis-socketio.service
Docker 运行 ERPNext
$ git clone https://github.com/frappe/frappe_docker.git
$ cd frappe_docker
$ docker-compose -p frappe pwd.yaml up
与 Odoo 比较
| ERPNext | Odoo | 说明
|
License | Mit, GPL | LGPL, OEEL-1/OPL | Frappe 采取 MIT 协议授权, ERPNext 采取 GPL 协议授权 Odoo community 采用 LGPL 协议, Odoo enterprise 采用 OEEL-1 协议 |
Trademark | 未经许可,不可商用 |
|
|
Python | python 3.10 | python 3 |
|
|
|
|
|
依赖的其他软件 | redis, mariadb, nodejs 14 | postgresql |
|
服务运行环境 | gunicorn, nginx, supervisor | nginx |
|
二次开发 | New App New Module scripting
| New Addons automation rule change View data | #frappe 开发 全新的 App; 不支持继承、new module需要提交到现有 App 的代码仓库 ; 使用 fixture 修改现有的 doctype |
|
|
|
|
业务实体逻辑结构 | doctype | Model | frappe.get_doc() <> env[model] |
| docfield | Field |
|
| doc | Record Set |
|
|
|
|
|
|
|
|
|
业务实体挂载结构
| Workspace > block [ heading, text, card, chart, shortcut, spacer, onboarding, quick list ]
Card > link [ doctype, report, page ]
Shortcut [ doctype, report, page ]
Quick list [ doc ] | Menu > action window > view [ search , list , form … ]
View > action [ server, report ]
View > button > action |
|
|
|
|
|
业务逻辑落地点 | Hooks. JS + Python
https://frappeframework.com/docs/v13/user/en/python-api/hooks#list-of-available-hooks | App crud compute onchange ondelete constraint
自动动作 on_create on_write on_create_or_write on_unlink on_change on_time |
|
|
|
|
|
Workflow | state machine | None |
|
|
|
|
|
|
|
|
|
权限 | "select", "read", "write", "create", "delete", "submit", "cancel", "amend", "print", "email", "report", "import", "export", "set_user_permissions", "share",
| Model: crud Field: read Data: crud Menu: read Action: read View: read View Element: read Export Import
|
|
| User / Role | User / User group |
|
|
|
|
|
部署结构 | Site | Database | Fie site/apps.txt <> postgresql database |
| App | Addons | Fiel app/module.txt <> table ir_module_module |
| Module | Addons | ERPNext 不可独立安装, 必须以 App 为单元 |
|
|
|
|
|
|
|
|