森果开票助手
功能模块开发方案及数据库结构说明
竞品分析推理版 / MySQL 8.0 数据字典 / 升鲜宝研发参考
生成日期:2022-01-06
适用对象:产品经理、架构师、后端开发、前端开发、测试、实施顾问
文档说明
|--------|--------------------------------------------------------|
| 项目 | 说明 |
| 文档定位 | 本文件单独聚焦"森果开票助手"产品线,按照功能开发文档、业务流程说明和数据库结构数据字典三个层次整理。 |
| 资料来源 | 公开资料主要来自 App Store、应用宝、森果批发易官网与森果社区公开页面;数据库部分为竞品分析推理版。 |
| 重要声明 | 本文不代表森果真实内部数据库结构,也不包含任何非公开资料;所有表结构均为面向升鲜宝研发落地的参考模型。 |
| 建设目标 | 把"移动开票、挂单、称重、打印、分享、收银协同、欠款还款、入库、改单退货、AI 开票"等能力拆到可开发层级。 |
目录
-
- 产品定位与业务边界
-
- 角色与使用场景
-
- 总体功能地图
-
- 核心业务流程
-
- 功能模块开发方案
-
- 页面与菜单建议
-
- 关键业务规则与状态机
-
- 数据库表结构总览
-
- 字段级数据字典
-
- ER 关系与数据流
-
- 接口开发清单
-
- 与升鲜宝落地映射
-
- 实施优先级与研发注意事项
-
- 资料依据
1. 产品定位与业务边界
森果开票助手是森果云批发业务体系中的移动开单端,主要面向批发档口的销售员、开票员、货主驻场卖手、档口老板等角色。公开资料显示,该产品强调"移动开单、简单高效",支持手机和平板多端操作,可用于快速开票、选品开单、挂单、小票打印、二维码/客户信息打印、销售数据查看和多端数据互通。
|----------|------------------------------------------------------------|
| 项目 | 说明 |
| 产品核心 | 移动开票 + 挂单 + 称重 + 小票打印 + 收银协同 + 数据查看。 |
| 不是完整 ERP | 开票助手更像"前台移动作业端",后台经营、复杂库存、财务做账、赊账对账等能力与森果批发易、批发后台、收银台协同完成。 |
| 适用行业 | 水果、蔬菜、菌菇姜蒜、肉类水产、零食、农批市场、批发档口、货车货柜交易、现场快速销售。 |
| 升鲜宝映射 | 可映射为"升鲜宝批发移动开单助手",服务 B2B 现场开单、批发档口销售、仓库临时加货、货主驻场卖货与客户自提开单。 |
|---------|---------------------|----------------------|
| 边界项 | 纳入开票助手 | 不建议由开票助手独立承载 |
| 商品选择 | 支持按货品、批次、供货商、分组快速选择 | 完整商品建模、复杂单位关系、全局价格体系 |
| 开票 | 销售单、退单、加货减货、挂单、分享单据 | 全链路订单履约、复杂发货配送 |
| 称重 | 多次过磅、皮重、均重、反推重量 | 称重设备协议管理中心 |
| 收银 | 可开票并收款或交给收银台结算 | 资金账户总账、完整财务凭证 |
| 欠款 | 快捷赊账、担保赊账、快捷还款入口 | 完整账龄、授信风控、客户对账平台 |
| 入库 | 轻量采购入库、免入库、按供货商加货 | 完整 WMS 入库、成本核算、采购合同 |
| 打印 | 小票模板、二维码、客户信息、分享图片 | 通用打印平台全部模板管理 |
2. 角色与使用场景
|---------|---------------------------|-------------------------|
| 角色 | 典型诉求 | 核心权限 |
| 档口老板 | 随时查看开票、库存、销售额、欠款和员工操作 | 查看全店数据、设置权限、处理异常订单、审批退单 |
| 开票员/销售员 | 快速选品、称重、挂单、改单、生成小票或分享图片 | 开票、改单、挂单、打印、分享、查看本人订单 |
| 收银员 | 接收开票单,完成现金/扫码/赊账/余额等结算 | 收款、退款、确认赊账、打印结算单 |
| 货主驻场卖手 | 销售货主代卖商品,按批次查看库存和销售 | 查看授权货主货品、开票、查看本人业绩 |
| 采购/入库人员 | 现场入库、自营入库、代卖入库、免入库、按供货商加货 | 新建入库、选择供货商、录入费用、绑定业务员 |
| 财务/对账员 | 查看欠款、快捷还款、核对结算单和退款 | 查看欠款、还款、导出/打印、审核异常 |
| 客户/会员 | 收到电子账单、核对商品、欠款与付款状态 | 查看分享账单、确认订单、签字或付款 |
|---------|------------------------|---------------------|
| 场景 | 描述 | 开发重点 |
| 标准档口开票 | 销售员手机开票,收银员统一收银 | 开票单状态、收银台同步、未收银改单权限 |
| 无收银台交易 | 一人完成开票与收款 | 开票并收款模式、支付方式、档口垫付费用 |
| 货车/货柜交易 | 在货车旁边快速打单,硬件要求低 | 移动端稳定性、离线缓存、蓝牙打印 |
| 客户临时加货 | 客户已经挂单后继续加货或减货 | 挂单中心、改单加货、按批次展示库存 |
| 称重销售 | 同一商品多次过磅,扣除皮重,按均重或反推重量 | 称重记录、皮重、反算、精度与舍入 |
| 代卖批次销售 | 货主/供货商批次按分组展示,便于选择 | 批次库存、供货商分组、代卖结算来源 |
| 线上订货抢单 | 线上订单进入档口,开票端可批量抢单 | 订单池、按会员排序、锁库存、接单状态 |
| 担保赊账 | 业务员担保会员欠款,关注即将到期与逾期 | 担保关系、账期、逾期天数、快捷还款 |
3. 总体功能地图
|----------|-------------------------------|--------------------|
| 一级模块 | 二级模块 | 说明 |
| 基础与权限 | 登录、多网点切换、销售点、员工权限、设备绑定 | 支撑移动端多角色、多网点、多设备协同 |
| 货品与批次 | 商品列表、批次展示、供货商分组、库存展示、均重 | 快速选货和避免卖错批次 |
| 移动开票 | 快速开票、称重开票、AI 开票、退单模式、改单加货 | 开票助手最核心模块 |
| 挂单中心 | 多挂单、会员吸顶、快速切换、加货/减货、一键结算 | 支撑现场多客户并发交易 |
| 收银协同 | 开票并收款、转收银台、付款方式、档口垫付费用 | 连接批发收银系统 |
| 欠款与会员 | 会员创建、担保赊账、快捷还款、到期/逾期筛选 | 支撑批发赊账场景 |
| 采购入库 | 免入库、自营入库、代卖入库、供货商带入上次货品、多规格合并 | 开票端轻量入库能力 |
| 退单退款 | 销售退货、退款方式、退货审批、退筐单据 | 控制异常与售后风险 |
| 打印与分享 | 小票模板、针式小票、二维码、客户信息、分享图片、电子账单 | 交付交易凭证 |
| 数据看板 | 库存、销量、利润、每日单数、销售货品 | 移动端快速查看生意数据 |
| 同步与审计 | 多端同步、操作日志、分享日志、设备日志 | 保障数据一致与追责 |
4. 核心业务流程
4.1 标准移动开票流程
开票员登录 → 选择档口/销售点/网点 → 选择客户/会员 → 选择货品/批次/单位
→ 录入数量/重量/单价/金额 → 可多次过磅/扣皮重/反推重量 → 暂存或提交开票单
→ 打印小票/分享图片/生成电子账单 → 交由收银台结算或开票并收款 → 订单完成
4.2 挂单与加货减货流程
选择会员 → 新建挂单 → 加入多个货品 → 切换到其他会员继续开票
→ 从挂单中心找回单据 → 加货/减货/修改数量价格 → 一键结算
→ 生成正式开票单 → 同步收银台/批发后台
4.3 称重开票流程
选择称重商品 → 绑定单位/规格/均重 → 多次过磅记录毛重
→ 录入皮重/筐重/箱数 → 自动计算净重 → 按单价计算金额
→ 支持按金额 + 数量反推重量 → 保存称重记录 → 开票
4.4 未收银改单流程
开票单状态=待收银 → 开票员发起改单 → 增加货品/调整数量/修改单价/修改备注
→ 系统重算金额、库存锁定与欠款预估 → 保存改单记录 → 更新开票单版本
→ 收银员按最新版本结算
4.5 退单退款流程
选择原销售单 → 选择退货商品/数量/批次 → 选择退单模式和退款方式
→ 若配置审批,进入销售退货审批流程 → 审批通过后生成退单
→ 回滚库存/解除货款/生成退款或欠款冲销 → 打印/分享退货凭证
4.6 轻量入库流程
选择入库模式:免入库/自营入库/代卖入库 → 选择供货商
→ 自动带入上次货品或按供货商加货 → 录入采购员、业务员、费用、预付款
→ 多规格货品合并展示 → 生成入库批次 → 更新库存与批次成本/代卖来源
4.7 线上订货抢单流程
线上订货单进入订单池 → 开票助手按会员排序/筛选 → 批量抢单
→ 自动转换为待开票任务 → 核对商品批次与库存 → 开票/配货/结算
→ 回写线上订单状态:已接单/已配货/已送达/已完成
5. 功能模块开发方案
5.1 登录、多网点与设备绑定
|--------|-------------------------------------------------------------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 支持员工通过账号、手机号、微信等方式登录,并根据权限选择档口、销售点、多网点。 |
| 核心能力 | 多网点切换、员工权限、设备绑定、App 版本检查、数据同步状态提示。 |
| 开发要点 | 登录后返回 merchant_id、outlet_id、sales_point_id、employee_id、permission_codes、device_id;离线场景需缓存最小权限集。 |
5.2 货品选择与批次展示
|--------|----------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 解决批发档口货品多、批次多、供货商多时快速选货问题。 |
| 核心能力 | 按分类、关键词、拼音码、供货商、批次、销售点、库存状态过滤;支持四种批次展示方式。 |
| 开发要点 | 前端列表需支持高性能滚动;批次卡片展示库存、均重、供货商、入库日期、结算方式、代卖标记。 |
5.3 移动开票
|--------|-----------------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 一部手机完成批发销售开单,减少手写错误。 |
| 核心能力 | 选择会员、选货、批次、单位、数量、重量、单价、金额、备注、附加费用、抹零。 |
| 开发要点 | 开票单必须有版本号;每次改单写入日志;金额计算应统一走金额/小数位组件;库存可采用"提交开票即锁定"。 |
5.4 称重开票与反推重量
|--------|--------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 适配果蔬批发多次过磅、皮重、均重、按金额反推重量等场景。 |
| 核心能力 | 多次过磅、毛重、皮重、净重、箱数、均重、按金额+数量反推重量、AI 重量单位换算。 |
| 开发要点 | 称重记录独立落表;结算明细保存计算快照;反推重量必须记录反推来源,避免后续对账争议。 |
5.5 挂单中心
|--------|--------------------------------------|
| 项目 | 说明 |
| 功能目标 | 支持多客户同时交易,快速切换挂单并加货减货。 |
| 核心能力 | 多个挂单、会员吸顶、左右滑动/列表切换、挂单超时提醒、一键结算。 |
| 开发要点 | 挂单与正式开票单分表或用状态区分;推荐分表,避免未完成单据污染正式订单。 |
5.6 打印与分享
|--------|--------------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 让客户快速拿到交易凭证,方便微信核对和收银核对。 |
| 核心能力 | 热敏小票、针式小票、二维码、客户信息、销售点负责人、手机号、地址、大写金额、分享图片、电子账单。 |
| 开发要点 | 模板配置与打印任务分离;分享图片应记录访问权限、过期时间和是否仅本人可查看。 |
5.7 收银协同
|--------|----------------------------------------|
| 项目 | 说明 |
| 功能目标 | 开票助手既可以仅开票,也可以开票并收款,与批发易收银台联动。 |
| 核心能力 | 现金、扫码、余额、赊账、预付款、档口垫付费用、按成交金额区间筛选结算单。 |
| 开发要点 | 收银结果必须幂等回写开票单;付款记录与订单状态分离;多支付方式支持一单多付。 |
5.8 欠款、担保赊账与快捷还款
|--------|-----------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 把批发档口高频赊账场景放到开票端直接处理。 |
| 核心能力 | 会员欠款、业务员担保赊账、到期/逾期筛选、最长逾期天数、快捷还款、快捷创建会员。 |
| 开发要点 | 赊账应形成应收流水;担保关系需要记录保证人、担保额度、担保期限;还款可按订单还或按账户还。 |
5.9 采购入库与免入库
|--------|--------------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 支持档口用开票端快速把货品加入可售库存,降低后台操作成本。 |
| 核心能力 | 免入库、自营入库、代卖入库、供货商自动带入上次货品、多选、按供货商加货、单品费用、多规格合并。 |
| 开发要点 | 免入库适合不严格核算批次的档口;升鲜宝落地时如涉及成本核算,必须与 WMS 入库/成本中心区分。 |
5.10 退单、退款与审批
|--------|-------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 支持销售退货、退单模式、退款方式设置,控制异常风险。 |
| 核心能力 | 销售退货审批、退单单据、退款方式、退筐单据、库存回滚、金额冲销。 |
| 开发要点 | 已收银单退款必须走审批和资金幂等;未收银单可作废或改单;退货明细要关联原开票明细。 |
5.11 线上订货抢单
|--------|---------------------------------------|
| 项目 | 说明 |
| 功能目标 | 让开票员在移动端接收线上订单并转成开票/配货任务。 |
| 核心能力 | 订单池、批量抢单、按会员排序、接单状态、已送达标识、线上线下库存自动同步。 |
| 开发要点 | 抢单要做并发锁;库存应先锁定再开票;线上订单状态与开票单状态要建立映射表。 |
5.12 AI 开票与智能辅助
|--------|-----------------------------------------------|
| 项目 | 说明 |
| 功能目标 | 减少录入成本,提高批发现场操作效率。 |
| 核心能力 | AI 开票、语音/文本识别货品、智能换算重量单位、识别客户与商品。 |
| 开发要点 | AI 只做辅助建议,最终数据由人工确认;必须保存识别原文、识别结果、置信度、人工修正记录。 |
5.13 数据看板
|--------|---------------------------------------|
| 项目 | 说明 |
| 功能目标 | 移动端随时查看库存、销量、利润、每日单数、销售货品。 |
| 核心能力 | 今日开票金额、收款金额、欠款金额、货品销量、库存预警、个人业绩。 |
| 开发要点 | 看板可走汇总表或缓存;移动端不宜直接扫大表;老板与普通开票员数据范围不同。 |
6. 页面与菜单建议
|-------------|----------|----------------------------------|--------------------|
| 一级菜单/入口 | 页面 | 核心字段/操作 | 权限点 |
| 首页 | 今日经营看板 | 今日开票额、收款额、欠款额、单数、销售商品、库存预警 | kp:home:view |
| 开票 | 快速开票页 | 会员、货品、批次、数量、重量、单价、金额、备注、提交、打印、分享 | kp:bill:create |
| 开票 | 称重开票页 | 毛重、皮重、净重、箱数、均重、称重记录、反推重量 | kp:bill:weigh |
| 挂单 | 挂单中心 | 会员、挂单数量、最后更新时间、加货、减货、结算、删除 | kp:hang:list |
| 订单 | 开票单列表 | 待收银、已收银、已作废、已退货、改单、分享、打印 | kp:bill:list |
| 订单 | 改单加货页 | 原单信息、批次库存、新增明细、修改记录 | kp:bill:modify |
| 收银 | 结算确认页 | 应收、实收、赊账、支付方式、档口垫付费用、快捷还款 | kp:cashier:confirm |
| 会员 | 会员选择/创建页 | 手机号、名称、欠款余额、账期、担保人、逾期天数 | kp:member:select |
| 欠款 | 担保欠款管理 | 即将到期、逾期、最长逾期天数、担保业务员、快捷还款 | kp:credit:list |
| 入库 | 轻量入库页 | 供货商、采购员、货品、规格、费用、预付款、免入库、代卖入库 | kp:inbound:create |
| 退货 | 销售退货页 | 原单、退货明细、退款方式、审批状态、退款记录 | kp:return:create |
| 线上订货 | 抢单池 | 会员、订单时间、商品数、金额、排序、批量抢单 | kp:online:claim |
| 打印设置 | 小票模板 | 热敏/针式、二维码、客户信息、负责人、手机号、地址、大写金额 | kp:print:config |
| 设置 | 开票端设置 | 批次展示方式、库存展示、退单模式、退款方式、多网点切换 | kp:setting:update |
7. 关键业务规则与状态机
|--------|-----------------|-----------------|--------------------------------------|
| 对象 | 状态 | 说明 | 可流转到 |
| 挂单 | DRAFT | 草稿/挂单中,未生成正式开票单 | SUBMITTED/CANCELLED |
| 挂单 | SUBMITTED | 已转正式开票单 | 不可回退 |
| 开票单 | PENDING_CASHIER | 已开票,待收银 | PAID/CREDIT/VOID/MODIFIED |
| 开票单 | PAID | 已收银完成 | RETURNING/PART_RETURNED/FINISHED |
| 开票单 | CREDIT | 赊账完成,形成应收 | REPAID/PART_REPAID/OVERDUE/RETURNING |
| 开票单 | VOID | 未收银作废 | 不可回退 |
| 开票单 | RETURNING | 退货审批中 | RETURNED/REJECTED |
| 退货单 | WAIT_APPROVE | 等待审批 | APPROVED/REJECTED |
| 退货单 | APPROVED | 审批通过,等待退款/冲销/入库 | DONE |
| 入库单 | DRAFT | 入库草稿 | CONFIRMED/CANCELLED |
| 入库单 | CONFIRMED | 已确认,库存增加或形成可售批次 | REVERSED |
| 线上订单 | WAIT_CLAIM | 待抢单 | CLAIMED/CANCELLED |
| 线上订单 | CLAIMED | 已抢单 | BILLED/RELEASED |
- 开票单金额、重量、数量、单价、费用和抹零必须保存快照,不能只依赖商品当前价格。
- 称重记录应独立保存,且应包含毛重、皮重、净重、称重时间、设备号、操作人。
- 提交开票单时建议锁定库存;收银完成后正式扣减库存;作废或退单释放/回滚库存。
- 未收银开票单允许改单;已收银改单必须走退货、补单或补差流程。
- 担保赊账必须保存担保业务员、担保额度、账期、最晚还款日期和逾期天数。
- 分享电子账单必须支持访问控制:公开、仅本人、密码/验证码、过期时间。
- AI 开票识别结果必须由人工确认后才可入账,保留原始输入与修正记录。
8. 数据库表结构总览
|---------|------------------------------------------------------------------------------------------------------------------|
| 分组 | 建议表 |
| 基础资料 | sg_kp_merchant, sg_kp_outlet, sg_kp_sales_point, sg_kp_employee, sg_kp_role, sg_kp_role_permission, sg_kp_device |
| 客户与欠款 | sg_kp_customer, sg_kp_customer_credit, sg_kp_credit_flow, sg_kp_repayment, sg_kp_guarantee |
| 货品与库存 | sg_kp_goods, sg_kp_goods_unit, sg_kp_supplier, sg_kp_goods_batch, sg_kp_stock, sg_kp_stock_lock |
| 开票与挂单 | sg_kp_hang_order, sg_kp_hang_order_item, sg_kp_bill, sg_kp_bill_item, sg_kp_bill_fee, sg_kp_bill_weigh_record |
| 收银与支付 | sg_kp_payment, sg_kp_cashier_sync, sg_kp_receipt_template, sg_kp_print_log, sg_kp_share_log |
| 入库与费用 | sg_kp_inbound, sg_kp_inbound_item, sg_kp_inbound_fee, sg_kp_supplier_goods_cache |
| 退货与审批 | sg_kp_return_order, sg_kp_return_item, sg_kp_approval_task |
| 线上订货与AI | sg_kp_online_order_claim, sg_kp_ai_bill_task, sg_kp_ai_bill_result |
| 审计与同步 | sg_kp_sync_log, sg_kp_operation_log, sg_kp_error_log |
9. 字段级数据字典
以下为竞品分析推理版字段设计。字段类型按 MySQL 8.0 设计,主键统一 bigint,金额统一 decimal(18,2),数量/重量统一 decimal(18,4),时间统一 datetime。
sg_kp_merchant(商户/档口主体)
|----------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 商户ID |
| merchant_name | varchar(100) | not null | 商户名称 |
| merchant_code | varchar(50) | unique | 商户编码 |
| contact_name | varchar(50) | null | 联系人 |
| contact_mobile | varchar(30) | null | 联系电话 |
| enabled_flag | tinyint | 1 | 启用标记 |
| created_at | datetime | not null | 创建时间 |
| updated_at | datetime | not null | 更新时间 |
sg_kp_outlet(网点/档口)
|--------------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 网点ID |
| merchant_id | bigint | idx | 商户ID |
| outlet_name | varchar(100) | not null | 网点名称 |
| address | varchar(255) | null | 地址 |
| responsible_mobile | varchar(30) | null | 负责人手机号 |
| enabled_flag | tinyint | 1 | 启用标记 |
| sort_no | int | 0 | 排序 |
sg_kp_sales_point(销售点/收银点)
|---------------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 销售点ID |
| outlet_id | bigint | idx | 所属网点 |
| point_name | varchar(100) | not null | 销售点名称 |
| responsible_user_id | bigint | null | 负责人 |
| print_header | varchar(200) | null | 小票头 |
| enabled_flag | tinyint | 1 | 启用 |
sg_kp_employee(员工)
|---------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 员工ID |
| merchant_id | bigint | idx | 商户ID |
| employee_name | varchar(50) | not null | 姓名 |
| mobile | varchar(30) | idx | 手机号 |
| role_id | bigint | idx | 角色ID |
| outlet_scope | varchar(500) | null | 可操作网点 |
| enabled_flag | tinyint | 1 | 启用 |
| last_login_at | datetime | null | 最后登录时间 |
sg_kp_customer(客户/会员)
|---------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 客户ID |
| merchant_id | bigint | idx | 商户ID |
| customer_name | varchar(100) | not null | 客户名称 |
| mobile | varchar(30) | idx | 手机号 |
| customer_type | tinyint | 0 | 客户类型 |
| credit_enabled_flag | tinyint | 0 | 是否允许赊账 |
| credit_limit | decimal(18,2) | 0 | 授信额度 |
| account_period_days | int | 0 | 账期天数 |
| enabled_flag | tinyint | 1 | 启用 |
sg_kp_customer_credit(客户欠款账户)
|---------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 账户ID |
| customer_id | bigint | unique | 客户ID |
| total_credit_amount | decimal(18,2) | 0 | 累计赊账 |
| repaid_amount | decimal(18,2) | 0 | 累计还款 |
| balance_amount | decimal(18,2) | 0 | 欠款余额 |
| max_overdue_days | int | 0 | 最长逾期天数 |
| last_repayment_at | datetime | null | 最近还款时间 |
sg_kp_guarantee(担保赊账关系)
|-----------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 担保ID |
| customer_id | bigint | idx | 客户ID |
| guarantee_employee_id | bigint | idx | 担保业务员 |
| guarantee_limit | decimal(18,2) | 0 | 担保额度 |
| start_date | date | not null | 开始日期 |
| end_date | date | null | 结束日期 |
| enabled_flag | tinyint | 1 | 启用 |
sg_kp_goods(货品)
|-----------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 货品ID |
| merchant_id | bigint | idx | 商户ID |
| goods_name | varchar(120) | not null | 货品名称 |
| category_id | bigint | null | 分类ID |
| pinyin_code | varchar(80) | idx | 拼音码 |
| default_unit_id | bigint | null | 默认单位 |
| weigh_flag | tinyint | 0 | 是否称重商品 |
| enabled_flag | tinyint | 1 | 启用 |
sg_kp_goods_unit(货品单位)
|--------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 单位关系ID |
| goods_id | bigint | idx | 货品ID |
| unit_name | varchar(30) | not null | 单位名称 |
| conversion_rate | decimal(18,6) | 1 | 换算率 |
| sales_enabled_flag | tinyint | 1 | 可销售 |
| sort_no | int | 0 | 排序 |
sg_kp_supplier(供货商/货主)
|---------------|--------------|-----------|--------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 供货商ID |
| merchant_id | bigint | idx | 商户ID |
| supplier_name | varchar(100) | not null | 供货商名称 |
| supplier_type | tinyint | 1 | 1自营供货商/2代卖货主 |
| mobile | varchar(30) | null | 手机号 |
| settle_method | tinyint | 0 | 结算方式 |
| enabled_flag | tinyint | 1 | 启用 |
sg_kp_goods_batch(货品批次)
|-------------|---------------|-----------|---------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 批次ID |
| merchant_id | bigint | idx | 商户ID |
| goods_id | bigint | idx | 货品ID |
| supplier_id | bigint | idx | 供货商/货主 |
| batch_no | varchar(50) | idx | 批次号 |
| stock_qty | decimal(18,4) | 0 | 批次库存 |
| avg_weight | decimal(18,4) | 0 | 均重 |
| cost_price | decimal(18,4) | 0 | 成本/结算价 |
| batch_type | tinyint | 1 | 1自营/2代卖 |
| inbound_at | datetime | null | 入库时间 |
sg_kp_stock(实时库存)
|----------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 库存ID |
| outlet_id | bigint | idx | 网点ID |
| sales_point_id | bigint | idx | 销售点ID |
| goods_id | bigint | idx | 货品ID |
| batch_id | bigint | idx | 批次ID |
| unit_id | bigint | idx | 单位ID |
| available_qty | decimal(18,4) | 0 | 可售数量 |
| locked_qty | decimal(18,4) | 0 | 锁定数量 |
| updated_at | datetime | not null | 更新时间 |
sg_kp_stock_lock(库存锁定)
|-------------|---------------|-----------|-------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 锁定ID |
| source_type | varchar(30) | idx | 来源类型 |
| source_id | bigint | idx | 来源单据ID |
| goods_id | bigint | idx | 货品ID |
| batch_id | bigint | idx | 批次ID |
| lock_qty | decimal(18,4) | 0 | 锁定数量 |
| status | tinyint | 0 | 0锁定/1扣减/2释放 |
| expired_at | datetime | null | 过期时间 |
sg_kp_hang_order(挂单主表)
|------------------|---------------|-----------|--------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 挂单ID |
| merchant_id | bigint | idx | 商户ID |
| outlet_id | bigint | idx | 网点ID |
| customer_id | bigint | idx | 客户ID |
| employee_id | bigint | idx | 开票员 |
| hang_code | varchar(50) | unique | 挂单号 |
| status | tinyint | 0 | 0挂单/1已转单/9取消 |
| total_amount | decimal(18,2) | 0 | 暂估金额 |
| last_operated_at | datetime | not null | 最后操作时间 |
sg_kp_hang_order_item(挂单明细)
|---------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 明细ID |
| hang_order_id | bigint | idx | 挂单ID |
| goods_id | bigint | idx | 货品ID |
| batch_id | bigint | idx | 批次ID |
| unit_id | bigint | idx | 单位ID |
| qty | decimal(18,4) | 0 | 数量 |
| weight | decimal(18,4) | 0 | 重量 |
| unit_price | decimal(18,4) | 0 | 单价 |
| amount | decimal(18,2) | 0 | 金额 |
sg_kp_bill(开票单主表)
|-----------------|---------------|-----------|-------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 开票单ID |
| bill_code | varchar(50) | unique | 开票单号 |
| merchant_id | bigint | idx | 商户ID |
| outlet_id | bigint | idx | 网点ID |
| sales_point_id | bigint | idx | 销售点ID |
| customer_id | bigint | idx | 客户ID |
| employee_id | bigint | idx | 开票员 |
| bill_type | tinyint | 1 | 1销售/2退单/3补单 |
| status | tinyint | 0 | 状态 |
| goods_amount | decimal(18,2) | 0 | 商品金额 |
| fee_amount | decimal(18,2) | 0 | 费用金额 |
| discount_amount | decimal(18,2) | 0 | 优惠/抹零 |
| total_amount | decimal(18,2) | 0 | 应收金额 |
| paid_amount | decimal(18,2) | 0 | 已收金额 |
| credit_amount | decimal(18,2) | 0 | 赊账金额 |
| version_no | int | 1 | 改单版本 |
| created_at | datetime | not null | 开票时间 |
sg_kp_bill_item(开票明细)
|---------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 明细ID |
| bill_id | bigint | idx | 开票单ID |
| goods_id | bigint | idx | 货品ID |
| goods_name_snapshot | varchar(120) | not null | 货品名称快照 |
| batch_id | bigint | idx | 批次ID |
| batch_no_snapshot | varchar(50) | null | 批次快照 |
| supplier_id | bigint | idx | 供货商/货主 |
| unit_id | bigint | idx | 单位ID |
| qty | decimal(18,4) | 0 | 数量 |
| gross_weight | decimal(18,4) | 0 | 毛重 |
| tare_weight | decimal(18,4) | 0 | 皮重 |
| net_weight | decimal(18,4) | 0 | 净重 |
| unit_price | decimal(18,4) | 0 | 单价 |
| amount | decimal(18,2) | 0 | 金额 |
| calc_mode | tinyint | 1 | 计算方式 |
sg_kp_bill_weigh_record(称重记录)
|--------------|---------------|-----------|-------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 称重记录ID |
| bill_item_id | bigint | idx | 开票明细ID |
| device_id | bigint | idx | 称重设备ID |
| gross_weight | decimal(18,4) | 0 | 毛重 |
| tare_weight | decimal(18,4) | 0 | 皮重 |
| net_weight | decimal(18,4) | 0 | 净重 |
| weigh_time | datetime | not null | 称重时间 |
| source | tinyint | 1 | 1设备/2手工/3反推 |
| remark | varchar(255) | null | 备注 |
sg_kp_bill_fee(开票费用)
|------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 费用ID |
| bill_id | bigint | idx | 开票单ID |
| fee_type | varchar(30) | not null | 费用类型 |
| fee_name | varchar(50) | not null | 费用名称 |
| amount | decimal(18,2) | 0 | 金额 |
| payer_type | tinyint | 0 | 承担方 |
| remark | varchar(255) | null | 备注 |
sg_kp_payment(付款记录)
|----------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 付款ID |
| bill_id | bigint | idx | 开票单ID |
| payment_method | varchar(30) | not null | 支付方式 |
| payment_amount | decimal(18,2) | 0 | 支付金额 |
| transaction_no | varchar(80) | null | 支付流水号 |
| pay_status | tinyint | 0 | 支付状态 |
| paid_at | datetime | null | 支付时间 |
| operator_id | bigint | idx | 操作人 |
sg_kp_repayment(还款单)
|------------------|---------------|-----------|------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 还款ID |
| repayment_code | varchar(50) | unique | 还款单号 |
| customer_id | bigint | idx | 客户ID |
| bill_id | bigint | null | 按单还款时关联开票单 |
| repayment_amount | decimal(18,2) | 0 | 还款金额 |
| payment_method | varchar(30) | not null | 还款方式 |
| remark | varchar(255) | null | 备注 |
| created_at | datetime | not null | 还款时间 |
sg_kp_inbound(入库单主表)
|------------------|---------------|-----------|--------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 入库单ID |
| inbound_code | varchar(50) | unique | 入库单号 |
| merchant_id | bigint | idx | 商户ID |
| outlet_id | bigint | idx | 网点ID |
| supplier_id | bigint | idx | 供货商 |
| inbound_type | tinyint | 1 | 1自营/2代卖/3免入库 |
| purchaser_id | bigint | idx | 采购员 |
| business_user_id | bigint | idx | 业务员 |
| goods_amount | decimal(18,2) | 0 | 货品金额 |
| fee_amount | decimal(18,2) | 0 | 费用金额 |
| prepay_amount | decimal(18,2) | 0 | 预付款 |
| status | tinyint | 0 | 状态 |
| created_at | datetime | not null | 创建时间 |
sg_kp_inbound_item(入库明细)
|--------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 明细ID |
| inbound_id | bigint | idx | 入库单ID |
| goods_id | bigint | idx | 货品ID |
| unit_id | bigint | idx | 单位ID |
| spec_name | varchar(80) | null | 规格 |
| qty | decimal(18,4) | 0 | 数量 |
| weight | decimal(18,4) | 0 | 重量 |
| purchase_price | decimal(18,4) | 0 | 采购价 |
| amount | decimal(18,2) | 0 | 金额 |
| generated_batch_id | bigint | null | 生成批次ID |
sg_kp_return_order(销售退货单)
|-----------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 退货单ID |
| return_code | varchar(50) | unique | 退货单号 |
| origin_bill_id | bigint | idx | 原开票单 |
| customer_id | bigint | idx | 客户ID |
| return_amount | decimal(18,2) | 0 | 退货金额 |
| refund_method | varchar(30) | null | 退款方式 |
| approval_status | tinyint | 0 | 审批状态 |
| status | tinyint | 0 | 业务状态 |
| created_at | datetime | not null | 创建时间 |
sg_kp_return_item(销售退货明细)
|---------------------|---------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 退货明细ID |
| return_id | bigint | idx | 退货单ID |
| origin_bill_item_id | bigint | idx | 原明细ID |
| goods_id | bigint | idx | 货品ID |
| batch_id | bigint | idx | 批次ID |
| return_qty | decimal(18,4) | 0 | 退货数量 |
| return_weight | decimal(18,4) | 0 | 退货重量 |
| return_amount | decimal(18,2) | 0 | 退货金额 |
sg_kp_receipt_template(小票模板)
|------------------------|--------------|-----------|---------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 模板ID |
| merchant_id | bigint | idx | 商户ID |
| template_name | varchar(100) | not null | 模板名称 |
| template_type | tinyint | 1 | 1热敏/2针式/3电子账单 |
| show_qrcode_flag | tinyint | 1 | 显示二维码 |
| show_customer_flag | tinyint | 1 | 显示客户信息 |
| show_address_flag | tinyint | 0 | 显示地址 |
| show_upper_amount_flag | tinyint | 0 | 显示大写金额 |
| enabled_flag | tinyint | 1 | 启用 |
sg_kp_print_log(打印日志)
|--------------|-------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 打印ID |
| source_type | varchar(30) | idx | 来源类型 |
| source_id | bigint | idx | 来源单据ID |
| template_id | bigint | idx | 模板ID |
| device_id | bigint | idx | 打印设备ID |
| print_status | tinyint | 0 | 打印状态 |
| print_times | int | 0 | 打印次数 |
| printed_at | datetime | null | 打印时间 |
sg_kp_share_log(分享日志)
|--------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 分享ID |
| source_type | varchar(30) | idx | 来源类型 |
| source_id | bigint | idx | 来源单据ID |
| share_token | varchar(100) | unique | 分享令牌 |
| access_scope | tinyint | 1 | 访问范围 |
| expired_at | datetime | null | 过期时间 |
| view_count | int | 0 | 查看次数 |
| created_at | datetime | not null | 创建时间 |
sg_kp_online_order_claim(线上订单抢单)
|-------------------|----------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 抢单ID |
| online_order_id | bigint | idx | 线上订单ID |
| merchant_id | bigint | idx | 商户ID |
| customer_id | bigint | idx | 客户ID |
| claim_employee_id | bigint | idx | 抢单人 |
| claim_status | tinyint | 0 | 状态 |
| claimed_at | datetime | null | 抢单时间 |
| bill_id | bigint | null | 转开票单ID |
sg_kp_ai_bill_task(AI开票任务)
|-------------------|--------------|-----------|---------------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 任务ID |
| merchant_id | bigint | idx | 商户ID |
| employee_id | bigint | idx | 操作人 |
| input_type | tinyint | 1 | 输入类型:语音/文本/图片 |
| input_content | text | null | 原始输入 |
| task_status | tinyint | 0 | 任务状态 |
| confidence | decimal(6,4) | 0 | 置信度 |
| confirmed_bill_id | bigint | null | 确认生成的开票单 |
| created_at | datetime | not null | 创建时间 |
sg_kp_operation_log(操作日志)
|----------------|-------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 日志ID |
| merchant_id | bigint | idx | 商户ID |
| employee_id | bigint | idx | 操作人 |
| operation_type | varchar(50) | not null | 操作类型 |
| biz_type | varchar(50) | not null | 业务类型 |
| biz_id | bigint | idx | 业务ID |
| before_json | json | null | 变更前 |
| after_json | json | null | 变更后 |
| created_at | datetime | not null | 操作时间 |
sg_kp_sync_log(多端同步日志)
|---------------|--------------|-----------|--------|
| 字段名 | 类型 | 约束/默认 | 说明 |
| id | bigint | PK | 同步ID |
| device_id | bigint | idx | 设备ID |
| sync_type | varchar(50) | not null | 同步类型 |
| last_sync_at | datetime | null | 上次同步时间 |
| sync_status | tinyint | 0 | 同步状态 |
| error_message | varchar(500) | null | 错误信息 |
| created_at | datetime | not null | 创建时间 |
10. ER 关系与数据流
10.1 主要 ER 关系
sg_kp_merchant 1 - N sg_kp_outlet 1 - N sg_kp_sales_point
sg_kp_merchant 1 - N sg_kp_employee / sg_kp_customer / sg_kp_goods / sg_kp_supplier
sg_kp_goods 1 - N sg_kp_goods_unit;sg_kp_goods + sg_kp_supplier 1 - N sg_kp_goods_batch
sg_kp_goods_batch 1 - N sg_kp_stock;sg_kp_stock_lock 关联开票单/线上订单/挂单来源
sg_kp_hang_order 1 - N sg_kp_hang_order_item,提交后转 sg_kp_bill / sg_kp_bill_item
sg_kp_bill 1 - N sg_kp_bill_item / sg_kp_bill_fee / sg_kp_payment / sg_kp_print_log / sg_kp_share_log
sg_kp_bill_item 1 - N sg_kp_bill_weigh_record
sg_kp_customer 1 - 1 sg_kp_customer_credit;sg_kp_customer 1 - N sg_kp_repayment / sg_kp_guarantee
sg_kp_inbound 1 - N sg_kp_inbound_item;入库明细生成 sg_kp_goods_batch 并更新 sg_kp_stock
sg_kp_return_order 1 - N sg_kp_return_item,退货明细关联原开票明细
10.2 开票数据流
货品/批次/库存 → 开票助手本地缓存 → 选择货品 → 开票明细 → 库存锁定
→ 提交开票单 → 打印/分享 → 收银台结算 → 支付/赊账/欠款流水
→ 扣减库存 → 同步批发后台 → 更新看板与报表
10.3 入库数据流
供货商 → 选择上次货品/按供货商加货 → 入库明细 → 费用/预付款
→ 确认入库 → 生成批次 → 增加库存 → 开票端可售批次展示
11. 接口开发清单
|--------|------------------------------------|--------|-----------------------|
| 模块 | 接口 | 方法 | 说明 |
| 登录 | /kp/auth/login | POST | 员工登录,返回 token、权限、网点列表 |
| 登录 | /kp/outlets/switch | POST | 切换网点/销售点 |
| 基础数据 | /kp/bootstrap | GET | 拉取开票端基础数据:货品、客户、权限、设置 |
| 货品 | /kp/goods/page | GET | 分页查询货品 |
| 货品 | /kp/goods/{id}/batches | GET | 查询货品可售批次与库存 |
| 客户 | /kp/customers/search | GET | 搜索客户/会员 |
| 客户 | /kp/customers/quick-create | POST | 搜索无果时快捷创建会员 |
| 挂单 | /kp/hang-orders | POST | 新建或保存挂单 |
| 挂单 | /kp/hang-orders/page | GET | 挂单列表 |
| 挂单 | /kp/hang-orders/{id}/submit | POST | 挂单转正式开票单 |
| 开票 | /kp/bills | POST | 创建开票单 |
| 开票 | /kp/bills/{id} | GET | 开票单详情 |
| 开票 | /kp/bills/{id}/modify | POST | 未收银改单/加货 |
| 开票 | /kp/bills/{id}/void | POST | 未收银作废 |
| 称重 | /kp/bills/items/{id}/weigh-records | POST | 保存称重记录 |
| 称重 | /kp/weigh/reverse | POST | 按金额和数量反推重量 |
| 收银 | /kp/bills/{id}/checkout | POST | 开票并收款 |
| 收银 | /kp/bills/{id}/push-cashier | POST | 推送到收银台 |
| 欠款 | /kp/credits/page | GET | 客户欠款列表 |
| 欠款 | /kp/credits/guarantee-alert | GET | 担保欠款到期/逾期提醒 |
| 还款 | /kp/repayments | POST | 快捷还款 |
| 入库 | /kp/inbounds | POST | 创建入库单 |
| 入库 | /kp/suppliers/{id}/last-goods | GET | 供货商上次货品 |
| 退货 | /kp/returns | POST | 创建销售退货单 |
| 退货 | /kp/returns/{id}/submit-approval | POST | 提交退货审批 |
| 线上订货 | /kp/online-orders/pool | GET | 线上订货抢单池 |
| 线上订货 | /kp/online-orders/batch-claim | POST | 批量抢单 |
| 打印 | /kp/prints/tasks | POST | 创建打印任务 |
| 分享 | /kp/shares/bill-image | POST | 生成分享图片/电子账单 |
| AI | /kp/ai/bill-tasks | POST | 创建 AI 开票识别任务 |
| 同步 | /kp/sync/push | POST | 移动端数据上行同步 |
| 同步 | /kp/sync/pull | GET | 移动端增量拉取 |
| 日志 | /kp/logs/operation | POST | 写入操作日志 |
12. 与升鲜宝落地映射
|--------------|------------------------------|---------------------------------------------------------|
| 森果开票助手能力 | 升鲜宝建议模块 | 落地说明 |
| 移动开票 | b2b/pos/wholesale-bill | 新增"批发快速开单端",可作为现有 POS 或 B2B 订货的移动开票子模块。 |
| 货品与批次选择 | pms + wms | 销售侧选 sku_unit_id;库存主核算仍按 product_sku_id + unit_id,不要混用。 |
| 称重/皮重/均重 | pos + weighing component | 与电子秤/标签秤对接,称重记录独立保存,订单明细保存快照。 |
| 挂单 | mall_shop_cart 或 pos_pending | 门店收银挂单可复用 mall_shop_cart;批发开单建议独立挂单表,避免影响会员购物车。 |
| 赊账/担保赊账 | fin_ar + crm_credit | 与客户授信、账期、应收账款、催款、对账单联动。 |
| 快捷还款 | fin_receipt | 还款进入财务收款单,按订单核销或按账户余额核销。 |
| 采购/入库 | pur + wms | 开票助手可提供轻量入库入口,但正式库存成本应交由 WMS/成本中心审核。 |
| 代卖批次 | consign_owner + wms | 建议新增货主寄售/代卖模块,并与批发销售明细关联。 |
| 小票/分享 | print/share component | 对接升鲜宝通用打印、PDF/图片/分享码组件。 |
| 线上订货抢单 | b2bmall + oms | B2B 订单池可转为开票/配货任务,库存锁定需与 OMS/WMS 统一。 |
| AI 开票 | ai-assistant | 先做语音/文本识别商品与数量,后续扩展图片识别、单据识别。 |
13. 实施优先级与研发注意事项
|------------|------------------------------------------|-----------------|
| 阶段 | 建设内容 | 目标 |
| 一期:开票闭环 | 登录、多网点、客户选择、货品批次、快速开票、挂单、小票打印、分享图片、收银台同步 | 先跑通批发档口移动开票核心场景 |
| 二期:称重与欠款 | 多次过磅、皮重、均重、反推重量、赊账、担保赊账、快捷还款 | 解决果蔬批发现场称重和赊账痛点 |
| 三期:入库与退货 | 自营/代卖入库、免入库、供货商上次货品、销售退货、退款审批 | 形成开票端轻量进销存能力 |
| 四期:线上订货与AI | 订单池抢单、AI 开票、智能单位换算、电子账单访问控制 | 提升线上线下协同和录入效率 |
| 五期:报表与风控 | 员工绩效、销售看板、异常退款、操作审计、收银监控联动 | 提高老板管理能力和风险控制能力 |
- 开票助手不是完整财务系统,不能让移动端直接承担总账、成本重算、复杂对账责任。
- 升鲜宝落地时要严格区分销售口径 sku_unit_id 与库存/采购口径 product_sku_id + unit_id。
- 移动端需要考虑弱网和现场高峰,关键接口应幂等,提交开票单不能因重复点击生成多张单。
- 称重、改单、退款、赊账、还款都属于高风险操作,必须落操作日志并可追溯。
- 挂单数据建议设置自动过期策略,避免长期挂单占用库存或造成报表误差。
- 小票与分享图片都属于交易凭证,模板变更后旧单仍应按交易发生时模板快照展示。
- AI 识别结果只能作为草稿,必须经过人工确认后进入正式开票单。
14. 资料依据
|------------------|-------------------------------------------------------------------------------------------------------------------------|
| 来源 | 依据内容 |
| App Store:森果开票助手 | 产品定位为批发档口高效开单工具,支持手机/平板多端操作;公开介绍包含手机开单、选品开单、小票打印、挂单、销售数据、多端协同等。 |
| App Store 版本记录 | 公开更新记录包含批次展示设置、开票结算后查看详情/分享图片、小票展示负责人/手机号/地址、大写金额、免入库、采购员/业务员绑定、担保赊账、快捷还款、多次过磅、均重、反推重量、AI 开票、多网点、退单模式、销售退货审批、线上订货批量抢单等。 |
| 应用宝:森果开票助手 | 公开版本信息显示 2026 年更新;介绍中强调移动开单、选品开单、自定义小票、挂单、销售数据查看、多端协同。 |
| 森果批发易官网 | 批发易公开说明包含标准收银台交易、无收银台交易、货车货柜交易、线上交易,以及电子开票、收银结算、财务做账、赊账管理、数据报表、远程管理。 |
| 森果云官网 | 森果整体产品矩阵包括森果批发易、森果开票助手、森果货主帮、森果零售通、森果采购助手等,并定位于果蔬流通数智化。 |
注:本文档为竞品分析与升鲜宝研发参考材料,所有数据库表结构、字段与接口均为推理设计,不代表森果真实内部实现。