# 公司经营管理系统使用说明
本文介绍基于牧言低代码平台搭建的经营管理插件(muyan-mgr)。它面向几个人规模的软件公司,覆盖 客户 → 合同 → 收款计划 → 开票 → 收款 这条主线,另带支出登记、经营看板和到期提醒。
它主要回答两个问题:
- 赚了多少、花了多少:看板上的本年回款、本年支出、本年结余、月度收支对比和支出构成;
- 还有多少钱没收回来、各期计划款是多少、什么时候收:看板上的合同收款进度、待收款明细和 30 天内应收。
文中先说明业务对象与规则,再按菜单介绍操作。
关于文中的地址和截图
文中截图来自牧言的本地开发/演示环境(http://localhost:9080),客户、合同、金额均为演示数据,账号 [email protected] 也只属于该环境。请使用贵方部署的系统地址和管理员分配的账号登录。
# 1. 系统概述
# 1.1 总体功能
所有功能都在左侧菜单 经营 下,按业务流程分组:
| 分组 | 菜单 | 用来做什么 |
|---|---|---|
| — | 经营看板 | 收支与结余、应收与收款进度、月度收支对比、支出构成、经营风险 |
| 客户管理 | 客户 | 维护客户名称、联系人、税号、开票地址电话、开户行与银行账号 |
| 合同管理 | 合同 | 登记合同,推进状态,按付款模板生成收款计划,终止合同 |
| 合同管理 | 收款计划 | 每份合同拆成若干期计划款(签约款、验收款等),标记达成并发起开票 |
| 收款管理 | 发票 | 查看已开发票,作废(当月错票)或红冲(跨月错票) |
| 收款管理 | 收款 | 登记到账,自动核销对应的计划款 |
| 支出管理 | 支出登记 | 登记工资、社保、税费、房租、AI 服务、差旅等支出和分红,定期支出到期提醒与登记续费 |

# 1.2 业务对象与关系
| 对象 | 说明 | 关键规则 |
|---|---|---|
| 客户 | 签合同、付款的公司 | 业务对象不提供删除 |
| 合同 | 一份销售合同,核心字段是含税金额、税率、付款模板 | 编号按 HT + 年份 + 4 位序号 自动生成;保存时按税率自动算出不含税金额和税额 |
| 收款计划 | 合同的一期计划款,记录计划金额、计划收款日、已收金额 | 按付款模板一次生成,同一合同不能重复生成;计划收款日按合同日期自动推算 |
| 发票 | 一张已开出的发票,关联合同和计划款 | 同一合同累计开票(不含作废,红冲正负相抵)不能超过合同金额 |
| 收款 | 一笔到账,可以关联到某期计划款 | 关联计划款时自动累计已收金额;不能超过计划金额;登记后金额和计划款不可再改 |
| 支出 | 一笔付款(工资、社保、税费、房租……)或一次分红 | 每付一次登记一条;分红不算支出,只从现金余额中扣除 |
付款模板决定一份合同拆成几期、每期占多少:
| 模板 | 拆分 |
|---|---|
| 3-3-3-1 | 签约款 30% / 需求确认款 30% / 交付验收款 30% / 质保期满款 10% |
| 3-4-2-1 | 签约款 30% / 需求确认款 40% / 交付验收款 20% / 质保期满款 10% |
| 5-4-1 | 签约款 50% / 交付验收款 40% / 质保期满款 10% |
| 100 | 签约款 100% |
各期金额按比例四舍五入到分,尾差计入最后一期,保证合计等于合同金额。
生成时按合同日期推算每期的 计划收款日,之后可以在收款计划里逐期修改:
| 计划款 | 计划收款日 |
|---|---|
| 签约款 | 签约日期(未填则取生效日期) |
| 需求确认款 | 签约日期 + 1 个月,不晚于计划交付日期 |
| 交付验收款 | 计划交付日期 |
| 质保期满款 | 计划交付日期 + 质保期(月),质保期未填按 12 个月 |
合同没填这些日期时,对应的计划收款日留空。
# 1.3 状态与规则
合同状态
| 状态 | 如何进入 | 说明 |
|---|---|---|
| 草稿 | 新建时默认 | 可以生成收款计划,但不能终止 |
| 生效中 | 「状态推进」 | |
| 已交付 | 「状态推进」 | |
| 质保中 | 「状态推进」 | 之后没有可推进的状态 |
| 已完结 | 全部收款计划回款后 自动 进入 | 不能再生成计划、开票、收款、达成 |
| 已终止 | 「终止合同」,只有生效中的合同可以终止 | 终局状态,不能恢复;同样不能再生成计划、开票、收款、达成 |
收款计划状态:待达成 →(标记达成)已达成 →(发起开票)已开票 →(收满)已回款。待达成的计划款也可以直接开票;发票作废或红冲后,计划款退回「已达成」,可以重新开票。
发票状态:已开票 →(作废)已作废,或 →(红冲)已红冲。红冲时原票标为已红冲,同时生成一张负数冲抵票(号码为 RED-原票号,状态也是已红冲);已作废、已红冲的票不能再作废或红冲。
系统会拦截的操作(界面提示原因,数据不会写入):
| 操作 | 拦截条件 |
|---|---|
| 生成收款计划 | 合同已有收款计划;合同未选付款模板或未填金额;合同已完结/已终止 |
| 标记达成 | 所属合同已完结/已终止(非待达成的计划款会跳过) |
| 发起开票 | 合同已完结/已终止;开票后累计超过合同金额 |
| 直接新建发票 | 累计超过合同金额 |
| 登记收款 | 合同已完结/已终止;本次加已收超过计划金额(超收);合同不属于所选客户;计划款不属于所选合同 |
| 终止合同 | 合同不是生效中 |
| 删除 | 客户、合同、收款计划、发票、收款、支出都不提供删除;支出可改为「停用」 |
# 1.4 角色与登录
- 业务账号(插件自带
pm@、finance@、biz@三个示例账号,属于「业务组」)可以查看和维护全部经营数据,但不能删除业务数据,也看不到开发配置。 - 管理员账号还能进入平台的开发配置、系统运维等菜单,本文不涉及。
# 2. 操作说明
# 2.1 登录与经营看板
在浏览器打开系统地址(本地部署默认 http://<服务器地址>:9080),输入账号密码登录。

登录后默认打开 经营看板,从上到下依次是:
- 第一行:本季度回款、在手应收、本年结余、现金余额;
- 第二行:本年回款、本年支出、本月支出、30 天内应收(含已逾期)。卡片里的小字说明统计范围。

- 合同收款进度:每份未完结合同一行,显示合同金额、已收、未收,以及下一笔要收的计划款、金额和计划收款日。
- 待收款明细:所有未收清的计划款,按计划收款日从早到晚排列,最上面的就是最该去催的。

- 客户应收 TOP、已开票待回款 两张表。

- 月度收支:近 12 个月每月回款与支出并排对比;
- 月度签约、月度开票 趋势图。

- 最后一行是 本年支出构成(按类别)和 经营风险清单。

各指标的计算方式见 第 3 章。
# 2.2 客户
菜单 经营 → 客户管理 → 客户。点击 创建,填写客户名称(必填)、联系人、联系电话、税号、开票地址电话、开户行、银行账号和备注。开票需要的抬头信息都放在客户上,开票时直接取用。


# 2.3 合同
# 2.3.1 新建合同
菜单 经营 → 合同管理 → 合同,点击 创建:
- 选择 客户,填写 项目名称、合同金额(含税),税率默认 6%。
- 离开金额或税率输入框后,不含税金额 和 税额 自动算出(不含税 = 含税 ÷ (1 + 税率),税额 = 含税 − 不含税)。
- 填写签约、生效、计划交付日期和质保期,选择 付款模板(下拉中写明了每期比例)。
- 可以上传合同文件。点击 保存并关闭,合同编号自动生成,状态为草稿。


# 2.3.2 合同操作
合同列表每行右侧的下拉箭头里有三个操作:状态推进、生成收款计划、终止合同,执行前都会弹出确认。


- 状态推进:草稿 → 生效中 → 已交付 → 质保中,每次前进一步。
- 生成收款计划:按合同上的付款模板生成各期计划款。一份合同只能生成一次;模板选错时,请在生成前修改合同。
- 终止合同:只对生效中的合同可用,终止后不可恢复。

点击 详情 可以查看合同的完整信息。

# 2.4 收款计划
菜单 经营 → 合同管理 → 收款计划。列表显示每期的合同、计划金额、比例、计划收款日、状态和已收金额。

- 计划收款日:生成时已按合同日期自动带出(规则见 1.2),与实际约定不符时点击 修改 调整。计划收款日用于待收款明细的排序、30 天内应收、到期提醒(前 3 天)和经营风险(逾期超过 30 天)。

- 标记达成:行操作「标记达成」,状态变为已达成并记下实际达成日。
- 发起开票:勾选一行或多行,点击列表上方的 发起开票。系统按计划金额和合同税率开出发票(号码
INV-年份-序号),计划款变为已开票。


# 2.5 发票
菜单 经营 → 收款管理 → 发票。

发现开错的发票时,在行操作中选择:
- 作废发票:用于当月、尚未认证的错票。发票变为已作废,对应计划款退回已达成,可以重新开票。
- 红冲发票:用于跨月或已认证的错票。系统生成一张负数冲抵票,原票标为已红冲,计划款退回已达成。
两种方式都会释放这张票占用的开票额度。

# 2.6 收款
菜单 经营 → 收款管理 → 收款,点击 创建:
- 先选 合同:客户自动带出,核销计划款 下拉只列出这份合同还没收清的计划款(不同合同的计划款名字相同,这样不会选错)。
- 选择要核销的计划款,填写 实收金额、收款日期、收款方式(银行转账/微信/支付宝/现金)和银行流水号。
- 保存后,计划款的已收金额自动累加;收满时计划款变为已回款;一份合同的计划款全部回款后,合同自动变为 已完结。
也可以只选客户、不选合同和计划款,用于登记暂时无法对应到合同的到账。


本次金额加上已收金额超过计划金额时,系统拒绝保存并提示超收:

收款登记后,客户、合同、计划款和金额不能再修改(核销只在登记时发生,改了会与计划款的已收金额对不上),只能修改日期、收款方式、流水号和备注。录错时请联系管理员处理。


# 2.7 支出登记
菜单 经营 → 支出管理 → 支出登记。每付一笔钱登记一条,这样月度统计才完整。
| 类型 | 周期 | 下次到期日 | 发生/支付日期 |
|---|---|---|---|
| 定期支出(工资、社保、税费、房租、AI 服务、订阅等) | 每月 / 每年 | 填写,用于到期提醒 | 本次付款日期 |
| 一次性支出(差旅报销、手续费等) | 一次性 | 不填 | 付款日期 |
| 分红 | 一次性 | 不填 | 分红日期 |
类别有:AI 服务、固定订阅、社保、银行、场地租赁、差旅报销、工资、税费、分红、其他。
- 工资、社保、税费 按月登记总额即可,不用分到人;个税、增值税等申报缴纳的钱记在「税费」。
- 分红 不算经营支出,不影响本年支出和本年结余(结余就是可分配的钱),但会从现金余额中扣除,使现金余额与银行对得上。
- 定期支出的 名称不要带月份(写「工资」「房租」,不写「9 月工资」),因为续费时会沿用原名称。

登记续费:定期支出到期付款后,在该行的操作中选择 登记续费。系统新增一条支出记录(发生日期 = 原下次到期日,金额沿用上次,下次到期日顺延一个月或一年),原记录保留为历史并不再提醒。本次金额有变化时,修改新记录即可。不要直接修改旧记录的日期,否则上一笔付款会从统计里消失。


不再发生的定期支出(如退租、取消订阅)把状态改为 停用,停用后不再提醒、不计入统计;已经付过的历史记录不要停用。
# 2.8 到期提醒
系统每天 08:00(北京时间)扫描未来 3 天内到期的事项,发站内消息给管理员账号:
- 合同计划交付日到期(已完结、已终止的合同除外);
- 收款计划的计划收款日到期(已回款的,以及已完结、已终止合同的计划款除外);
- 发票开票满 30 天账期(已作废、已红冲的除外);
- 定期支出的下次到期日(停用和一次性支出除外)。
提醒在看板页顶部的 消息 标签页和右上角的消息图标中查看。

# 3. 看板指标口径
| 指标 | 计算方式 |
|---|---|
| 本季度回款 | 收款日期在本自然季度内的收款合计 |
| 本年回款 | 收款日期在本自然年内的收款合计 |
| 本年支出 | 发生日期在本自然年内的支出合计,不含分红和停用 |
| 本年结余 | 本年回款 − 本年支出(收付实现制) |
| 在手应收 | 所有未回款的收款计划的(计划金额 − 已收金额)合计,不含已完结、已终止合同 |
| 现金余额 | 期初现金 + 累计回款 − 累计支出 − 累计分红(不含停用) |
| 30 天内应收 | 计划收款日在今天之后 30 天以内或已逾期、尚未收清的计划款余额合计;不含未填计划收款日的 |
| 合同收款进度 | 未完结、未终止且有收款计划的合同;已收、未收按收款计划汇总;下一笔为计划收款日最早的未收清计划款 |
| 待收款明细 | 未收清的计划款,按计划收款日排序,未填日期的排最后;不含已完结、已终止合同 |
| 客户应收 TOP | 按客户汇总在手应收,取前 5 名 |
| 已开票待回款 | 已开票、对应计划款尚未收清的发票,不含已完结、已终止合同 |
| 月度收支 | 近 12 个月,回款按收款日期、支出按发生日期归月(不含分红和停用) |
| 月度签约 / 开票趋势 | 近 12 个月,分别按签约日期、开票日期归月;开票不含作废,红冲正负相抵 |
| 本年支出构成 | 本年支出按类别汇总(不含分红和停用) |
| 经营风险清单 | 逾期应收:计划收款日已过 30 天仍未收清;超期未回款:开票超过 60 天(30 天账期 + 30 天宽限)未回款;交付临期:30 天内要交付且未交付;草稿滞压:草稿创建超过 60 天 |
| 本月支出 | 发生日期在本自然月内的支出合计,不含分红和停用 |
# 4. 部署与配置
插件以 docker compose 运行,目录结构和平台其他插件相同:
cd muyan-mgr
bash start.sh # 或 docker compose up -d
2
- 访问地址:
http://<服务器地址>:9080(nginx 代理,端口在docker-compose.yml中修改)。 - 时区:后端容器必须设置
TZ=Asia/Shanghai(docker-compose.yml已配置)。否则定时提醒会在北京时间 16:00 触发,凌晨 0–8 点的"今天"也会按前一天计算。 - 期初现金:管理员在 开发配置 → 系统配置 中找到「期初现金余额」(
muyan.mgr.openingCash,默认 0)修改,看板的现金余额 = 期初现金 + 累计回款。 - 示例账号:插件自带
[email protected](管理员)以及pm@、finance@、[email protected](业务组),初始密码均为password,正式使用前请修改或停用。 - 平台版本:后端需要
muyantech/backend:1.0.0-beta19及以上(插件的docker-compose.yml已跟随latest)。beta18 及更早版本在新建带客户的合同时请求会卡死。 - 升级已有数据库:插件发新版本时须递增版本号(当前 0.0.2),平台才会重新加载插件类。已有库的支出类别约束不会自动加入新类别(工资、税费、分红),需要让管理员在数据库中重建
muyan_expense表的category_options约束;全新部署不受影响。
# 5. 当前版本说明
- 计划收款日:按合同日期推算,只是估计值,和客户约定不同时请在收款计划中修改。
- 草稿合同:生成了收款计划的草稿合同,其计划款计入在手应收和客户应收 TOP。
- 提醒对象:到期提醒只发给
[email protected]。 - 收款更正:收款不能删除,金额和核销对象登记后不能修改,录错需要管理员在后台处理。
- 发票编辑:发票的「修改」表单可以直接改状态和金额,不会联动计划款。开错票请用作废或红冲,不要直接改。
- 权限:业务组内的账号权限相同,不区分销售、财务等岗位。
- 窄屏:手机浏览器可以查看看板;列表在窄屏只显示首列和操作列,完整信息请点「详情」。