大饼子 大饼子dabingzi.com

酒店用品进销存

客户在微信上零零散散报货,业务员抄一遍再录 Excel?

交给酒店用品进销存——客户自己下单、自己申请开票,业务员不用再做二传手;货一入库成本就自动更新,月底三张报表直接从凭证出来。

覆盖商品、库存、采购、订单、发票报税、复式记账与人事六个模块。小程序 31 页 + 浏览器后台 15 页共用一套服务层,运行时零第三方依赖。

角色独立开发(含需求梳理与部署)
形态微信小程序 + 浏览器后台
规模46 个页面 · 11 个业务模块
依赖运行时零第三方依赖
打开在线演示 登录页下方有演示账号,点一下自动填入(密码 123456)

背景

一家昆明的酒店用品供应商,客户是酒店和客栈。原来靠微信群接单、Excel 记库存, 报价、账期、开票全在老板脑子里。要解决的是两件事: 让客户能自己下单,同时把内部从采购到开票报税串起来。

难点不在界面,在口径:同一个「金额」在订单、库存成本、发票、报税底稿里 算法必须一致,否则月底对不上账。所以这套系统是从数据模型和金额口径开始设计的, 不是先画页面再补逻辑。

做了什么

商城与下单

多商户商品目录、卡片式橱窗、起订金额与运费门槛、购物车、在线支付、发票申请。

进销存与采购

库存流水、移动加权平均成本、供应商档案、采购单、入库、付款、退货与应付对账。

财务与合规

价内税口径、专用与普通发票、红冲作废、报税归集与底稿导出。

人事(HR)

双通道职级与任职资格评审、培训课程与考试、员工手册签收留痕、季度 PBC 绩效。

界面

下面都是系统里的真实界面,不是设计稿。

商品橱窗界面
商品橱窗 · 卡片式陈列,卡片上只放客户关心的(图、名称、规格、售价、有没有货),成本和毛利率不进这个页面
员工与职级界面
员工与职级 · 双通道 8 档,每一档四条任职资格标准
培训管理界面
培训管理 · 课程库、必修岗位、考试判分
员工手册界面
员工手册 · 版本 → 章节 → 正文三栏,右下角是签收留痕
绩效管理界面
绩效 PBC · 目标承诺、自评、上级考评,等级由加权分自动落

系统里有什么

按业务归成四组,共 11 个模块。每个模块都能单独上线,也能单独关掉。

商城与客户

  • 商品目录与多图橱窗
  • 购物车与起订金额
  • 订单与在线支付
  • 发票申请与下载

进销存与采购

  • 供应商档案与停用
  • 采购单、入库、退货
  • 移动加权平均成本
  • 应付对账与付款

财务与税务

  • 专用与普通发票
  • 红冲与作废
  • 报税归集
  • 底稿 CSV 导出

组织与人事

  • 员工与双通道职级
  • 任职资格评审
  • 员工手册签收留痕
  • 培训考试与 PBC 绩效

交付包含什么

不是交一堆代码就结束。下面这些都在交付范围内,不另收费。

源码与数据库

代码、表结构、种子数据全部交付到你的仓库。没有任何一处锁在我手里。

部署与域名

服务器初始化、HTTPS 证书、进程守护、每日自动备份,配好并留下操作记录。

分角色的使用文档

给老板看的、给仓管看的、给会计看的各一份,是操作说明而不是接口文档。

历史数据迁移

从 Excel 或旧系统把商品、客户、库存余额导进新系统,并对一遍账。

上线后三个月支持

期间的问题修复、口径调整和小改动都包含,不用再谈一次价格。

演示环境

对外演示用的实例和数据每天凌晨自动重置,随便点不会坏。

几个关键决定

一套业务代码,两端复用

小程序和浏览器加载的是同一份 services/*。给浏览器写了个几十行的模块加载器, 直接复用小程序那套 CommonJS 服务层。改一个业务规则,两端同时生效,不会出现 「后台改了小程序没改」这种对不上的情况。

同步只传行级变更,冲突不静默覆盖

服务端存的是表名 → {版本号, 行数组},客户端提交的是行级 upserts 与 removes。 两端同时改同一行时按 updatedAt 大者胜,输的一方会收到 rejected 并被还原 —— 宁可让人重填,也不悄悄覆盖掉别人的修改。

金额口径写死在服务层

价内税(金额 ÷ (1+税率) × 税率)和移动加权平均成本都在服务层算, 页面只负责显示。这类东西一旦让页面各算各的,月底一定对不上。

运行时零第三方依赖

服务端只用 Node 原生 http 和内置的 node:sqlite, 没有 npm 依赖、没有构建步骤。部署就是一个 node 进程加一个 Nginx, 三年后回来还能跑起来。

46页面(31 小程序 + 15 后台)
11业务模块
0运行时第三方依赖
8双通道职级档位

想看看实际怎么用?

演示环境可以直接登录操作,数据每天凌晨会自动重置回干净状态。

打开在线演示 →