同一个生意,五个系统导出五张完全不同的表。
这不是格式差异,是口径差异——每个系统对「一个商品」「一次销量」「一件库存」的定义都不一样。
数据来源分三层,页面右下角逐个标了:
真实 商品、日期、数量、售价 —— UCI Online Retail 公开交易流水(54 万行)
真实 字段名与列顺序 —— 聚水潭官方文档 / 金蝶星辰客户账套真实导出
推算 采购在途、锁仓、次品、单位成本 —— 按销量与毛利反推,不是客户真实数
| 系统 | 谁在用 | 字段长什么样 | 最典型的坑 |
| 聚水潭 真实字段 | 电商(淘宝/抖音) | 21 个返回字段:sku_id · ts · i_id · qty · order_lock · pick_lock · virtual_qty · purchase_qty · return_qty · in_qty · defective_qty · modified · min_qty · max_qty · lock_qty · name · customize_qty_1~3 · allocate_qty · sale_refund_qty | 5 种「可用」算法、在途被算成可用、次品不扣 |
| 旺店通 | 电商(多平台) | 商家编码 · 货品名称 · 规格名称 · 采购价 · 是否含税 | 含税口径混用、退货负单 |
| 金蝶云·星辰 真实44列 | 财务 | 44 列:入库/出库/结存各一组(数量·单位成本·成本本位币) | 3 组同名取错列、出库成本全空、结存是跨仓累计 |
| 用友 T+ | 财务 / 仓管 | 存货编码 · 主计量单位 · 现存量 · 最后出库日期 | 负库存、日期空、套件重复 |
| Shopify | 出口电商 | Handle · Title · SKU · Variant Price · Status | SKU 大小写、变体拆行 |
为什么这件事重要:你的诊断报告要的是统一的 9 列。这五张表里,没有一张能直接拿来用。真正的工程量在于——每张表都要单独问一遍「你这个字段,到底算的是哪个数」,问答题,不是选择题。
阅读方式:下面每页都是一份原样的导出表。红色格子 = 会让数字直接算错;黄色格子 = 口径不清、要问客户。格子右上角的小数字对应下方雷点解释。
🛒
聚水潭 · /open/inventory/query(官方接口原样字段)
20 个 SKU,数值取自真实交易流水。字段名照抄官方开放平台文档,一个不差。
sku_idtsi_idqtyorder_lockpick_lockvirtual_qtypurchase_qtyreturn_qtyin_qtydefective_qtymodifiedmin_qtymax_qtylock_qtynamecustomize_qty_1customize_qty_2customize_qty_3allocate_qtysale_refund_qty
官方返回的 21 个字段,这里挑出 13 个关键列 · 最后一列「可用数」是按官方公式算的,接口不返回
sku_id 商品编码 |
i_id 款式编码 |
name 商品名称 |
qty 主仓实际库存 |
order_lock 订单占有数 |
pick_lock 仓库待发数 |
virtual_qty 虚拟库存 |
purchase_qty 采购在途数 |
return_qty 销退仓库存 |
in_qty 进货仓库存 |
defective_qty 次品库存 |
min_qty 安全库存下限 |
可用数 官方公式算出 |
| 22423 | BMC-22423 | REGENCY CAKESTAND 3 TIER6 | 3,293 | 71 | 74 | 0 | 3543 | 24 | 0 | 214 | 05 | 3,6002 |
| 23084 | KIT-23084 | RABBIT NIGHT LIGHT | 15,243 | 937 | 407 | 0 | 1,9533 | 312 | 0 | 0 | 1,874 | 16,5712 |
| 22086 | STD-22086 | PAPER CHAIN KIT 50'S CHRISTMAS | 9,035 | 451 | 227 | 0 | 0 | 150 | 0 | 0 | 1,045 | 8,734 |
| 85099B1 | STD-85099B | JUMBO BAG RED RETROSPOT | 15,394 | 310 | 376 | 0 | 1,8033 | 103 | 0 | 0 | 1,730 | 16,9902 |
| 47566 | BMC-47566 | PARTY BUNTING | 4,493 | 56 | 117 | 0 | 5633 | 19 | 0 | 0 | 540 | 5,0192 |
| 85123A1 | KIT-85123A | WHITE HANGING HEART T-LIGHT HOLDER | 8,017 | 232 | 219 | 0 | 0 | 77 | 0 | 634 | 1,009 | 7,862 |
| 23203 | STD-23203 | JUMBO BAG VINTAGE DOILY | 9,343 | 210 | 233 | 0 | 1,1203 | 70 | 0 | 0 | 1,075 | 10,3232 |
| 84879 | STD-84879 | ASSORTED COLOUR BIRD ORNAMENT6 | 11,293 | 338 | 302 | 0 | 1,4493 | 113 | 0 | 0 | 1,390 | 12,5172 |
| 22197 | BMC-22197 | POPCORN HOLDER | 19,420 | 905 | 512 | 0 | 0 | 302 | 0 | 0 | 2,358 | 18,817 |
| 23298 | KIT-23298 | SPOTTY BUNTING | 3,212 | 53 | 86 | 0 | 4113 | 18 | 0 | 0 | 394 | 3,5882 |
同一个「可用」,聚水潭有 5 个算法——这是最容易翻车的地方:
可用数(同步线上) = qty − order_lock + virtual_qty + 采购在途 + 进货仓 + 销退仓
订单可配货数 = qty − pick_lock
公有可用数 = qty − order_lock − lock_qty + virtual_qty − 虚拟仓可用数
主仓实际库存 = qty(分仓开启时 = 分仓库存 + 主仓库存)
问客户「你们说的可用,是哪个可用」——问不清,后面全错。
1两级编码:sku_id 与 i_id 不是一回事。85099B、85123A 这类编码带字母后缀,是「同款不同规格」留下的痕迹。有颜色/尺码变体的店,一个 i_id 会拖多个 sku_id——按 sku_id 统计是「每个颜色各有多少」,按 i_id 汇总才是「这个款还有多少」。见面先问:你要的「一个商品」到颜色为止,还是到包装为止?
2qty ≠ 能卖的货。23084 的 qty 写着 15243,看着很多,但 order_lock 937 + pick_lock 407 已经被订单占住。「库存充足度」永远要用可用数,不是 qty。
3采购在途被算进可用数。20 个 SKU 里有 14 个带 purchase_qty,比如 84879 在途 1449、23298 在途 411。货还在路上就算「有货」,客户下单就变成逾期。判「今天能不能发」必须把在途剔掉。
4次品躺在 qty 里没扣。22423 有 21 件次品、85123A 有 63 件,但这些没有从 qty 里减掉——可用数把坏货算成了好货。defective_qty 要手工再减一次。
5字段有,客户没填。min_qty / max_qty 是官方内置的安全库存上下限,但 79321 全是 0。ERP 里存在这个字段 ≠ 客户用过这个功能。先查填充率,再谈「系统里有安全库存」。
6名称带尾随空格。22423、84879、22910 三个商品名末尾都有空格。按名称去重时会和正常名判成两个商品。清洗第一件事:strip() 所有文本列。
7编码规则不统一。纯数字(22423)、字母后缀(85099B)、纯字母(部分 SKU)。任何「按编码前缀归类」的规则都会漏。编码只当字符串用,不要当数字排序。
这一页最要紧的一条:聚水潭这个库存接口根本没有「销量」和「成本价」两个字段(官方 19 个返回字段里就是没有)。所以任何周转率、动销天数、EOQ,都必须另拉订单流水再算——你手上这张库存表,只能回答「现在有多少」,回答不了「卖得好不好」。
这份样例的数据从哪来:商品、销量、日期、单价全部取自 UCI Online Retail 真实交易流水(英国电商 2010-12 ~ 2011-12,54 万行);字段名照抄聚水潭开放平台官方文档;只有「采购在途 / 锁仓 / 次品」是按日销量反推的,文件里单独标了推算项。
⬇ 下载这份样例 erp-jushuitan.xlsx · 20行×21列(官方字段一个不删)+ 销量页 + 字段口径页
🏪
旺店通 · 货品库存
比聚水潭多一个「是否含税」字段——这一个字段能毁掉整个毛利计算。
商家编码货品名称规格名称
库存采购价是否含税
30天销量备注
原样导出 · 注意第 2、5 行的「是否含税」
| 商家编码 | 货品名称 | 规格 | 库存 | 采购价 | 是否含税 | 30天销量 | 备注 |
| WD-2201 | 简约风陶瓷杯 | 白/350ml | 1200 | 2.30 | 是 | 320 | |
| WD-2202 | 简约风陶瓷杯 | 黑/350ml | 860 | 2.301 | 否 | 210 | |
| WD-22032 | 陶瓷杯+托盘套装 | 白 | 130 | 8.80 | 是 | 42 | 组合装 |
| WD-22043 | 手工皂 | 100g | 0 | 0.01 | 是 | 180 | 赠品 |
| WD-2205 | 手工皂 | 100g | 2200 | 1.90 | (空)4 | 0 | |
| WD-22065 | 牛皮纸礼袋 | 中号 | -30 | 0.60 | 是 | -12 | |
| WD-2207 | 牛皮纸礼袋 | 大号 | 480 | 0.85 | 是 | 96 | |
| WD-2208 | 硅胶杯盖 | 通用 | 300 | 1.20 | 是 | 88 | |
| WD-22096 | 硅胶杯盖 | 通用 | 0 | 1.20 | 是 | 0 | 已停售 |
| WD-2210 | 竹制杯垫 | 10cm | 660 | 0.75 | 是 | 140 | |
| WD-2211 | 亚麻餐垫 | 30x45 | 210 | 3.60 | 否 | 52 | |
| WD-2212 | 陶瓷勺 | 15cm | 0 | 0.90 | 是 | 150 | |
| AMAZONFEE7 | 平台佣金 | - | 0 | 0.00 | 是 | 0 | |
| WD-2213 | 玻璃杯 | 300ml | 390 | 2.10 | 是 | 75 | |
1含税口径混用:WD-2201「是」、WD-2202「否」,可两个都是 ¥2.30。说明录入时根本没换算——同一个价,一个含 13% 税,一个不含。不统一:毛利会凭空多出 13% 或少了 13%。
见面就问:「采购价是含税还是不含税?哪个税档?」
2组合装与组成件同存:和聚水潭同一个坑。套装 42 件里含 WD-2201/2202 的杯子,杯子的销量里有一块其实是套装带出去的。
3赠品 ¥0.01:手工皂 30 天卖 180 件,价格 ¥0.01——这是赠品,不是销售。它会被算成「热销款」,还会把整体单价均值拖到地板。按 0.01 或 0 元 + 备注「赠品」联合判断。
4必填字段留空:WD-2205 的「是否含税」是空。空的含义有两种:不含税,或者录入时忘了填。只能问,不能猜。
5退货没单独走流程:WD-2206 库存 −30、销量 −12——退货直接在原行上冲销了。这还算规矩的;更常见的是退货另开一张负单,同一笔退两次就得算两遍。
6停售标记只在「备注」里:WD-2209 备注写了「已停售」,但没有独立字段,机器读不出来。这批货会被算成死货要求清仓——其实早就清完了,只是没删。
7AMAZONFEE = 平台佣金:和 POST 同理,非商品码。它一行在,整个「SKU 数量」就多算一个。
这个系统特有的坑:「是否含税」三个值——是 / 否 / 空。空的既不能当是也不能当否,只能回头问。这就是为什么数据整备必须有人参与,纯脚本跑不了。
⬇ 下载这份样例 erp-wangdiantong.xlsx · 14行×8列
📗
金蝶云·星辰 · 商品收发明细表(真实导出 44 列)
列名照抄客户账套真实导出的表头,一个没改。44 列里有 3 组同名——这是最容易取错数的地方。
商品编码商品名称仓库
单据类型单据日期审核状态
数量(入)单位成本(入)
数量(出)单位成本(出)
基本单位数量(结)平均成本
44 列里最要紧的 12 列 · 完整 44 列见下载文件
| 商品编码 | 商品名称 | 仓库 | 单据类型 | 单据日期 | 审核状态 | 数量 入库 | 单位成本 入库 | 数量 出库 | 单位成本 出库 | 结存数量 | 结存平均成本 |
| 21137 | BLACK RECORD COVER FRAME | 成品仓 | 期初库存4 | 2011-06-11 | 已审核 | 2460 | 2.325 | 2460 | 2.325 |
| 23284 | DOORMAT KEEP CALM AND COME IN | 海外仓 | 采购入库 | 2011-06-12 | 已审核 | 5 | 5.115 | 28 | 5.115 |
| 23245 | SET OF 3 REGENCY CAKE TINS | 成品仓 | 销售出库 | 2011-06-12 | 已审核 | 1 | 空2 | 1527 | 3.069 |
| 22423 | REGENCY CAKESTAND 3 TIER | 海外仓 | 销售退货 | 2011-06-13 | 已审核 | 1 | 7.905 | 400 | 7.905 |
| 85123A | WHITE HANGING HEART T-LIGHT HOLDER | 成品仓 | 其他入库 | 2011-12-09 | 已审核 | 158 | 1.829 | 7847 | 1.829 |
| 23243 | SET OF TEA COFFEE SUGAR TINS PANTRY | 零售仓 | 其他出库 | 2011-12-09 | 已审核 | 94 | 空 | 110 | 3.069 |
| 23355 | HOT WATER BOTTLE KEEP CALM | 海外仓 | 盘亏单6 | 2011-12-09 | 已审核 | 29 | 空 | 27 | 3.069 |
| 22086 | PAPER CHAIN KIT 50'S CHRISTMAS | 零售仓 | 期初库存 | 2011-06-11 | 未审核5 | 216 | 1.829 | 216 | 1.829 |
| 23298 | SPOTTY BUNTING | 零售仓 | 期初库存 | 2011-06-11 | 未审核 | 227 | 3.069 | 227 | 3.069 |
| 47566 | PARTY BUNTING | 零售仓 | 期初库存 | 2011-06-11 | 未审核 | 187 | 3.069 | 187 | 3.069 |
144 列里有 3 组同名「数量 / 单位成本 / 成本本位币」。它们在表里出现三次:入库一组、出库一组、结存一组。导出成 Excel 后表头文字一模一样,取错列就是拿入库数当出库数。
唯一办法:按位置取,入库在 26-28 列、出库在 29-31 列、结存在 32-34 列。
2出库单位成本整列是空的。这份数据 4,386 行里出库成本全空——因为客户还没点「出库成本核算」。不是导出失败,是流程没跑。先让财务跑一次核算,再导第二次,否则所有成本分析都缺一半。
3结存数量是「跨仓库连滚的余额」。同一个商品在成品仓、海外仓、零售仓各有流水,结存那一列是逐行滚动的累计值,不是该仓库存。按行取「结存」当库存,一定错。取每个「商品+仓库」的最后一行相加。
4期初库存也是「单据」。它夹在流水里,日期是 2011-06-11 前一天。算「近 30 天出库」时如果不排除它,会被当成一笔入库,把销量算小。
5未审核的单据也算进结存。这份数据里约 6% 的单据是「未审核」,但它们的数量已经计入结存列。财务口径和仓库口径在这里分叉。问清:体检用审核后的数,还是全量?
6盘亏单、其他出入库混在同一个流水里。盘亏 29 件、其他出库 94 件,它们不是销售,但会减少库存。算「销量」必须只筛「销售出库」一种单据类型,否则销量里混进了报废。
7销售退货是入库方向,数量为正。退回来的 1 件记在入库组。不扣掉退货,销量会虚高。销量 = 销售出库 − 销售退货。
这份样例的数据从哪来:商品、日期、数量、售价全部取自 UCI Online Retail 真实交易流水;44 个列名照抄客户账套「商品收发明细表」的真实导出表头;只有采购入库数量与单位成本是推算的(按毛利率 38%、30 天一批反推),文件「数据来源」页写明了。
金蝶特有的坑:它是财务口径的系统,有金额、有流水、有日期,但没有「可用库存」这个概念,也没有安全库存上下限。
它最强的是「什么货、什么时候、进出多少」;最弱的是「现在还能卖多少」。要算 ROP 得自己从这张表里补。
⬇ 下载这份样例 erp-kingdee-xingchen.xlsx · 4,386 行×44 列(真实表头)+ 数据来源页
📘
用友 T+ · 现存量
比金蝶多了「最后出库日期」——这个字段是死货判断的唯一依据,但它会空、会负。
存货编码存货名称主计量单位
现存量参考成本最后出库日期存货分类
原样导出 · 注意第 4 行负数、第 10 行空日期
| 存货编码 | 存货名称 | 单位 | 现存量 | 参考成本 | 最后出库日期 | 存货分类 |
| TY-001 | 马克杯-白 | 个 | 1200 | 2.30 | 2011-11-20 | 成品 |
| TY-002 | 马克杯-黑 | 个 | 860 | 2.30 | 2011-12-02 | 成品 |
| TY-003 | 碟-20cm | 个 | 640 | 1.80 | 2011-12-01 | 成品 |
| TY-0041 | 勺-14cm | 个 | -40 | 0.90 | 2011-12-03 | 成品 |
| TY-005 | 桌布-亚麻 | 条 | 320 | 8.50 | 2011-11-28 | 成品 |
| TY-006 | 蜡烛-雪松 | 个 | 980 | 6.80 | 2011-10-02 | 成品 |
| TY-007 | 花瓶-玻璃 | 个 | 12 | 9.90 | 2011-12-06 | 成品 |
| TY-008 | 抱枕套 | 个 | 1400 | 4.50 | 2011-11-15 | 成品 |
| TY-009 | 托盘-木 | 个 | 260 | 5.20 | 2011-12-02 | 成品 |
| TY-0102 | 帆布袋大 | 个 | 540 | 3.20 | (空) | 成品 |
| TY-0113 | 陶瓷杯套装 | 套 | 130 | 12.50 | 2011-12-05 | 套件 |
| TY-012 | 香薰-starter | 个 | 0 | 6.80 | 2011-12-07 | 成品 |
| TY-0134 | 未分类货品 | - | 220 | 0.00 | (空) | 未分类 |
| TY-014 | 杯垫-竹 | 个 | 660 | 0.75 | 2011-12-04 | 成品 |
1负库存:TY-004 现存量 −40。这不代表「欠客户 40 个」,通常是先出库后补录单据造成的账实不符。当 0 处理(或按实物盘点值),绝不能当负库存参与计算——否则「库存金额」会被抵减。
2最后出库日期为空:TY-010 空。这个字段是判定死货的唯一依据。
空值不能当成「很久没出库」= 死货,也不能当成「今天刚出库」。只能标记为「未知」,单独列一张待核清单。
见面就问:「空日期的货,是新品还没卖,还是老货没录?」
3套件重复:TY-011 套件 130 套,含 TY-001/002/003。和聚水潭 20001 是同一个坑,只是换了个字段名(存货分类=套件)。
4三无货品:TY-013 名称「未分类货品」、成本 0、日期空、单位「-」。这一行什么都判断不了——是系统里的历史遗留。正确做法:单独列出、不参与分析、交客户确认。
这个系统特有的坑:用友的「现存量」是实时数,跟财务的「结存数量」可能对不上(时间点不同)。两份表同一天导,数字能差几千。要问清:这份导出是哪一刻的快照?
⬇ 下载这份样例 erp-yonyou-tplus.xlsx · 14行×7列
🌍
Shopify · products.csv
中文 ERP 的坑它全有,还多一个——SKU 是人手填的,大小写都不统一。
HandleTitleSKU
Variant PriceInventory QtyStatusCreated At
原样导出 · 前 3 行都是 "Nordic Mug",三个不一样的 SKU
| Handle | Title | SKU | Price | Qty | Status | Created At |
| nordic-mug | Nordic Mug | ABC-0011 | 12.90 | 1200 | active | 2011-03-04 |
| nordic-mug | Nordic Mug | abc-001 | 12.90 | 860 | active | 2011-03-04 |
| nordic-mug | Nordic Mug | ABC-001-BLK2 | 12.90 | 640 | active | 2011-03-04 |
| linen-cloth | Linen Table Cloth | ABC-002 | 34.90 | 320 | active | 2011-04-11 |
| scent-candle-cedar | Scented Candle - Cedar | ABC-003 | 26.90 | 980 | active | 2011-05-02 |
| scent-candle-white | Scented Candle - White Tea | ABC-0043 | 26.90 | 760 | draft | 2011-05-02 |
| glass-vase | Glass Vase 20cm | ABC-005 | 39.90 | 12 | active | 2011-06-08 |
| cushion-cover | Cushion Cover 45x45 | ABC-006 | 18.90 | 1400 | active | 2011-07-19 |
| wood-tray | Wooden Tray | ABC-007 | 20.90 | 260 | active | 2011-08-23 |
| tote-bag | Canvas Tote Bag | ABC-008 | 12.90 | 540 | active | 2011-09-01 |
| gift-wrap4 | Gift Wrapping | GIFT-001 | 0.00 | 9999 | active | 2011-09-01 |
| sl-sample4 | Free Sample - Soap | SAMPLE | 0.00 | 5000 | active | 2011-09-15 |
| nordic-mug | Nordic Mug | ABC-0015 | 9.90 | 0 | active | 2011-03-04 |
| (空)6 | (空) | (空) | 8.90 | 100 | active | 2011-10-02 |
1SKU 大小写不一致:ABC-001 和 abc-001 是同一个货。Shopify 本身不区分大小写,但 Excel 和数据透视表区分。统一转大写(或小写)后再聚合,否则你的「SKU 总数」凭空多一个。
2变体编码规则中途变了:前两个是 ABC-001 / abc-001,第三个变成 ABC-001-BLK。这是典型的手工维护——前两个按颜色「隐式区分」,后来改成「显式加后缀」。同一个产品的变体规则必须统一,否则无法按款汇总。
3draft 状态但有库存:ABC-004 是 draft(未上架),却压着 760 件库存。这类货在报表里要么算死货,要么算「未发售新品」——两种算法差 760 件货的资金。必须问。
4虚拟库存 9999:Gift Wrapping 和 Free Sample 库存写着 5,000 / 9,999——这是「永不断货」的虚拟值,不是真库存。按真实库存算,这些行会让库存总额凭空多出几个亿。
5同码不同价:ABC-001 出现第 4 次,价格 ¥9.90(促销价)、库存 0。同一个 SKU 多行不同价,取哪个?中位数,不是平均值(见 [data-prep.html] 那页的说明)。
6整行三空:Handle / Title / SKU 全空,只有价格和库存。这一行归属不到任何商品,只能剔。但要记下来:剔了几行。
这个系统特有的坑:Shopify 的「一个产品多个变体」是拆成多行导出的。你看「Nordic Mug」有 4 行,以为卖了 4 个款,其实只有 1 款 3 个颜色。按款分析要合并 Handle,按色备货要拆 SKU。
⬇ 下载这份样例 erp-shopify.xlsx · 14行×7列
五个系统的坑,剥掉外壳后其实只有七种。
字段名千变万化,脏法就那么几类。认得出这七种,换什么 ERP 都能上手。
| # | 脏法 | 在哪个系统出现 | 不处理会怎样 |
| 1 | 非商品码 | 全部(聚水潭 POST / 旺店通 AMAZONFEE / 金蝶包装纸箱 / Shopify GIFT) | 邮费、包材、佣金变成「销量冠军」,库存总额虚高 |
| 2 | 一码多名 / 一名多码 | 聚水潭 sku_id·i_id 两级、金蝶同货多编码、Shopify 大小写 | 销量被劈成两半,真主力被算成长尾 |
| 3 | 组合装 / 套件 | 旺店通 WD-2203、用友 TY-011、Shopify Bundle | 同一批货算两遍,销售额和需求都虚高 |
| 4 | 计量单位不统一 | 金蝶(g/卷/个混合)、用友(套) | 数量直接加错,库存多算或少算几十倍 |
| 5 | 零价 / 虚拟库存 | 全部(赠品 0.01、样品 0、GIFT 库存 9999) | 单价被拉低,库存总额虚增几个亿 |
| 6 | 负值 / 账实不符 | 旺店通 −30、用友 −40、金蝶负结存 | 库存金额被抵减,死货判断失效 |
| 7 | 状态字段语境混乱 | 旺店通「备注写停售」、Shopify draft、用友空日期 | 已停售的货被要求清仓,新品被算死货 |
统一出口:不管哪套系统,最后都要变成这 9 列
| SKU编码 | 商品名称 | 销量6月 | 销量30天 | 月均 | 单价 | 最后动销 | 未动销天数 | 销售额 |
| 85123A | WHITE HANGING HEART T-LIGHT HOLDER | 7847 | 1893 | 1307.8 | 2.95 | 2011-12-09 | 0 | 23149 |
这一行是从哪里长出来的:按 i_id 合并同款多规格 → 可用数里剔掉在途和次品 → 叠上订单流水算出的销量(销售出库 − 退货)→ 单价取中位数 → 按 30/180 天窗口重算月均。清洗的全部目的,就是把上面五张五花八门的表,压成这一行格式。再往后(四条规则、EOQ、诊断报告)就完全标准化了。这一行是真实交易算出来的,不是编的。
五份样例下载(前两份已换成真实数据)
前两份(聚水潭、金蝶星辰)已经换成真实数据:商品、日期、数量、售价全部来自 UCI 公开交易流水,字段名照抄官方文档与客户账套真实导出,只有采购侧是推算——每份文件都带一页「数据来源」,把哪列真、哪列推算写清楚。后三份仍是演示结构。