三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

从0到1用ERPNext搭建开源企业管理系统:30分钟完成部署并跑通销售收款

从0到1用ERPNext搭建开源企业管理系统:30分钟完成部署并跑通销售收款

从0到1用ERPNext搭建开源企业管理系统:30分钟完成部署并跑通销售收款

【免费下载链接】erpnextFree and Open Source Enterprise Resource Planning (ERP)项目地址: https://gitcode.com/GitHub_Trending/er/erpnext

如果你正在寻找一套完全免费、既能管财务又能管库存的企业管理系统,ERPNext几乎是第一时间会跳出来的答案。这套基于 Python 与 Vue 构建的开源 ERP,把会计、销售、采购、库存、制造、CRM 等 20 多个业务模块收进同一套系统,采用 GPL v3 开源协议,意味着你可以免费商用、自由修改,甚至把数据牢牢攥在自己手里——而这一切,从下载到跑通第一笔业务,最快只需要 30 分钟。

故事通常是这样开始的:一家几十人的贸易公司,财务用 Excel 记账、销售在群里传订单、仓库靠纸质台账,月底对账让人抓狂。老板丢来一句"找套 ERP,别花大钱,月底能出报表"。商业软件授权费动辄六位数,SaaS 订阅按年付费又怕数据被别人握着。这个时候,开源方案成了唯一的正解,而 ERPNext 正是这条路上最成熟的选项之一。

📌 项目速览:一句话定义与关键数字

一句话定义:ERPNext 是一个免费开源的企业资源计划(ERP)系统,帮助中小型组织在一个入口里完成财务、订单、库存、生产与客户关系的全流程管理。

维度关键信息
项目定位100% 开源的企业管理系统,覆盖全业务链路
开源协议GNU GPL v3,可免费商用与二次开发
技术栈Python(Frappe 框架)+ Vue.js(Frappe UI)+ MariaDB 数据库
维护方Frappe Technologies,仓库当前 develop 分支已到 17.x,迭代活跃
适用人群中小型企业、创业团队、需要数据自主可控的组织
核心模块会计、销售、采购、库存、制造、CRM、项目、资产、质量等 20+ 个
本地化能力近 40 种语言包,含多国税务区域适配模块

项目里每个业务域都有独立的源码目录,比如会计在erpnext/accounts/,库存与仓库在erpnext/stock/,生产制造在erpnext/manufacturing/,客户关系在erpnext/crm/,想要钻研哪块就能直接钻到哪块。

需要强调的一点是:ERPNext v14 之后,原有的人力资源模块(考勤、薪资等)已拆分为独立的 HRMS 应用,如果团队需要完整的 HR 功能,需要在基础 ERP 之外另行安装——这是很多人初次接触时容易忽略的信息差。

🚀 最快上手路径:用 bench 五步跑通本地实例

对于想立刻动手验证的人来说,bench是官方推荐、也是能最快跑起完整系统的工具。bench 是 Frappe 框架的命令行管理器,装好它就能在几分钟内拉起一套带数据库、Redis、前端资源的环境。

开始前确保机器上已有 Python 3、MariaDB 和 Redis,然后按下面五步操作:

第一步,安装 bench 工具:

pip3 install frappe-bench

第二步,初始化 bench 工作区(会同时拉取配套的 Frappe 框架):

bench init erpnext-bench && cd erpnext-bench

第三步,从代码仓库获取 ERPNext 应用本身:

bench get-app --branch version-15 https://gitcode.com/GitHub_Trending/er/erpnext

第四步,创建站点并安装应用:

bench new-site mycompany.local bench --site mycompany.local install-app erpnext

第五步,启动开发服务器:

bench start

浏览器打开http://localhost:8000,使用默认账号Administrator、密码admin即可登录。想先看效果再决定要不要装,也可以直接用官方提供的在线 Demo,无需任何安装步骤就能体验全部功能。对于想要生产部署的团队,仓库 README 中提供了基于 Docker Compose 的完整容器化方案,适合后续平滑迁移。

💰 核心场景实战:从销售订单到收款的完整闭环

光登录不产生价值,我们直接走一条最典型的业务链路:客户下单 → 仓库发货 → 开具发票 → 登记收款 → 报表看到结果

目标:完成一笔销售订单的完整生命周期,并验证它自动进入了财务与库存数据。

第 1 步:建立客户档案进入销售模块新建客户,填写联系人、地址、付款条件。客户的相关代码在erpnext/selling/doctype/customer/下。

第 2 步:创建销售订单选择客户,添加产品、数量与单价,系统会自动计算税额与合计金额。提交后订单状态变为"待发货",同时生成可供仓库执行的单据。销售订单的完整定义见erpnext/selling/doctype/sales_order/

第 3 步:根据订单制作发货单仓库基于销售订单生成发货单(Delivery Note),确认发出后,对应物料的库存数量自动扣减,不需要任何人手工改台账。库存单据源码位于erpnext/stock/doctype/delivery_note/

第 4 步:从发货单开具销售发票在会计模块中基于发货单生成销售发票(Sales Invoice),系统自动登记应收账款。发票相关的税务计算逻辑在erpnext/accounts/doctype/sales_invoice/中实现。

第 5 步:登记收款并核销使用 Payment Entry 记录客户付款,系统自动核销该笔发票,应收账款随之清零。至此,一笔销售闭环完成。

看到效果:进入会计模块打开利润表,这笔交易已经出现在收入与利润数据中;打开库存报表,能看到该产品数量已减少;打开客户应收账款报表,余额归零。整个流程从下单到收款全程可追溯,每一笔操作都有记录。

报表并不是写死的页面,它们的计算逻辑全部以源码形式放在模块目录中,例如利润表位于erpnext/accounts/report/profit_and_loss_statement/,想调整口径可以直接改代码或做二次开发。

🧩 进阶能力拆解:从"能用"到"好用"

当基础流程跑通之后,ERPNext 真正的价值在于它是一套"活"的系统,可以从四个维度持续深挖。

① 扩展性:不加代码也能改系统进入"设置 → 自定义表单",可以给任意单据添加自定义字段、调整表单布局、配置必填校验。想要审批链路,可以配置工作流(Workflow),定义状态机与流转规则,例如"待审批 → 已批准 → 已提交"。这些能力无需写一行代码,适合业务人员直接上手。

② 自动化:把重复劳动交给系统系统的命名规则模块(erpnext/utilities/naming.py)可以按公司、月份、序列号自动生成单据编号;账务模块自带重算会计分类账、自动处理递延收入与递延费用的机制;配合通知(Notification)配置,关键事件(如新财年提醒、发票逾期)会自动推送给相关人员。

③ 二次开发:从改配置到写代码当标准功能不够时,可以基于 Frappe 框架创建自定义 DocType,编写 Python 控制器与前端表单。比较有代表性的是仓库中新增的banking/目录——官方正在用 React + TypeScript + Vite 重构银行对账与流水导入等页面(如banking/src/pages/BankReconciliation.tsxBankStatementImporter.tsx),说明这套系统既保留了传统表单式操作,也在拥抱现代化的单页应用前端。想扩展银行功能,直接在这一套前端工程上添加页面即可。

④ 集成:REST API 打通外部系统Frappe 框架自带完整的 REST API,通过/api/resource/路径即可对单据做增删改查,例如用 Python requests 直接创建销售订单。对于需要暴露的自定义业务方法,在服务层用@frappe.whitelist()装饰器标记即可(参考erpnext/accounts/services/下的 taxes、payment_schedule 等服务文件),外部系统可以按需调用,无需暴露数据库。

⚠️ 避坑指南:新手最容易踩的四个坑

坑一:生产环境还在用默认密码❌ 安装完成后继续使用 Administrator / admin 登录并开始录入真实业务数据。 ✅ 登录后第一时间修改管理员密码,再按部门创建受限权限的用户,最后再开放给团队使用。

坑二:升级前不做备份❌ 收到新版本后直接执行bench update,结果某次迁移脚本报错,数据回不去了。 ✅ 任何更新前先执行备份,并建议先在测试站点跑一遍迁移,确认无误再应用到生产站点。备份与恢复是运维底线,没有例外。

坑三:开发服务器当生产用❌ 用bench start直接长期对外提供服务,性能与稳定性都不可靠。 ✅ 生产环境应使用 Nginx + Gunicorn/Supervisor 的正式架构,或直接采用仓库 README 提供的 Docker Compose 容器化部署方案。

坑四:忽视本地化与区域适配❌ 发现部分界面是英文或某些税务字段对不上,就直接放弃多语言。 ✅ 项目的erpnext/locale/目录存放近 40 种语言包,erpnext/regional/下提供意大利、美国、南非等区域的合规适配。中文环境可以调整语言设置,缺失的翻译也可以直接在语言包中补充。

坑五:一上来就迁移全部历史数据❌ 还没跑通业务流程,就让团队把 Excel 里的三年数据全导进来,结果字段对不上、账目混乱。 ✅ 先在测试环境走通"销售→收款""采购→付款"两条主链路,确认流程和报表口径符合预期后,再分批迁移数据。

📚 资源与进阶路线:从入门到熟练的路径图

官方渠道

  • 官方文档与 Frappe School 学习平台:覆盖安装、各模块操作手册与开发教程
  • 仓库内的erpnext/change_log/目录:记录每个大版本的功能变化,升级前值得通读
  • 仓库README.md:包含特性总览、生产部署说明与在线 Demo 入口

建议的学习路径

  1. 第一周:基础操作— 走通客户、销售订单、采购、库存的基础增删改查
  2. 第二周:财务闭环— 掌握发票、付款、对账与月末结账,理解会计模块的账务联动
  3. 第三周:定制入门— 添加自定义字段、配置工作流,让系统贴合公司制度
  4. 第四周:开发进阶— 学习创建自定义 DocType、编写服务方法、接入 REST API

最佳实践清单

  • 业务规则先固化在系统里,而不是靠口头约定
  • 权限最小化,按岗位分配用户角色
  • 每天自动备份,每周手动验证一次恢复流程
  • 大版本升级前先看erpnext/change_log/的变更说明
  • 用测试站点练习新功能,生产站点保持稳定

🎯 行动号召:今天就迈出第一步

ERPNext 的价值不是装完就算数,而是"装好—跑通—固化流程"这三步走。别让系统吃灰,也别指望一步到位。

下一步行动清单:

  1. 花 30 分钟按上文 bench 五步装好本地实例(或用在线 Demo 先体验)
  2. 用演示账号创建第一个客户,走完一笔销售订单到收款的完整闭环
  3. 在"设置 → 自定义表单"里加上一个你公司独有的字段,感受定制化的手感
  4. 配置好每天自动备份,再开始录入真实业务数据
  5. 通读一遍erpnext/change_log/,了解当前版本的能力边界

💡小贴士:建议先从"销售→收款"和"采购→付款"两条主链路切入,把这两条线在测试环境里跑得滚瓜烂熟,再逐步扩展到库存、制造等模块。降低学习曲线,比一口气铺开所有功能要稳妥得多——毕竟,一套用得起来的系统,远比一套装好的系统更有价值。

【免费下载链接】erpnextFree and Open Source Enterprise Resource Planning (ERP)项目地址: https://gitcode.com/GitHub_Trending/er/erpnext

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表