FIVE ERPs · 脏导出演示 P1 / 7 · OVERVIEW

同一个生意,五个系统导出五张完全不同的表。

这不是格式差异,是口径差异——每个系统对「一个商品」「一次销量」「一件库存」的定义都不一样。

数据来源分三层,页面右下角逐个标了:
真实 商品、日期、数量、售价 —— 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_qty5 种「可用」算法、在途被算成可用、次品不扣
旺店通电商(多平台)商家编码 · 货品名称 · 规格名称 · 采购价 · 是否含税含税口径混用、退货负单
金蝶云·星辰 真实44列财务44 列:入库/出库/结存各一组(数量·单位成本·成本本位币)3 组同名取错列、出库成本全空、结存是跨仓累计
用友 T+财务 / 仓管存货编码 · 主计量单位 · 现存量 · 最后出库日期负库存、日期空、套件重复
Shopify出口电商Handle · Title · SKU · Variant Price · StatusSKU 大小写、变体拆行
为什么这件事重要:你的诊断报告要的是统一的 9 列。这五张表里,没有一张能直接拿来用。真正的工程量在于——每张表都要单独问一遍「你这个字段,到底算的是哪个数」,问答题,不是选择题。
阅读方式:下面每页都是一份原样的导出表。红色格子 = 会让数字直接算错;黄色格子 = 口径不清、要问客户。格子右上角的小数字对应下方雷点解释。
P2 · 聚水潭 电商 ERP · 最常见
聚水潭 · /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
安全库存下限
可用数
官方公式算出
22423BMC-22423REGENCY CAKESTAND 3 TIER63,293717403543240214053,6002
23084KIT-23084RABBIT NIGHT LIGHT15,24393740701,9533312001,87416,5712
22086STD-22086PAPER CHAIN KIT 50'S CHRISTMAS9,03545122700150001,0458,734
85099B1STD-85099BJUMBO BAG RED RETROSPOT15,39431037601,8033103001,73016,9902
47566BMC-47566PARTY BUNTING4,493561170563319005405,0192
85123A1KIT-85123AWHITE HANGING HEART T-LIGHT HOLDER8,017232219007706341,0097,862
23203STD-23203JUMBO BAG VINTAGE DOILY9,34321023301,120370001,07510,3232
84879STD-84879ASSORTED COLOUR BIRD ORNAMENT611,29333830201,4493113001,39012,5172
22197BMC-22197POPCORN HOLDER19,42090551200302002,35818,817
23298KIT-23298SPOTTY BUNTING3,21253860411318003943,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 汇总才是「这个款还有多少」。见面先问:你要的「一个商品」到颜色为止,还是到包装为止?
2
qty ≠ 能卖的货。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列(官方字段一个不删)+ 销量页 + 字段口径页
P3 · 旺店通 电商 ERP · 多平台
旺店通 · 货品库存 比聚水潭多一个「是否含税」字段——这一个字段能毁掉整个毛利计算。
商家编码货品名称规格名称 库存采购价是否含税 30天销量备注
原样导出 · 注意第 2、5 行的「是否含税」
商家编码货品名称规格库存采购价是否含税30天销量备注
WD-2201简约风陶瓷杯白/350ml12002.30是320
WD-2202简约风陶瓷杯黑/350ml8602.301否210
WD-22032陶瓷杯+托盘套装白1308.80是42组合装
WD-22043手工皂100g00.01是180赠品
WD-2205手工皂100g22001.90(空)40
WD-22065牛皮纸礼袋中号-300.60是-12
WD-2207牛皮纸礼袋大号4800.85是96
WD-2208硅胶杯盖通用3001.20是88
WD-22096硅胶杯盖通用01.20是0已停售
WD-2210竹制杯垫10cm6600.75是140
WD-2211亚麻餐垫30x452103.60否52
WD-2212陶瓷勺15cm00.90是150
AMAZONFEE7平台佣金-00.00是0
WD-2213玻璃杯300ml3902.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 备注写了「已停售」,但没有独立字段,机器读不出来。这批货会被算成死货要求清仓——其实早就清完了,只是没删。
7
AMAZONFEE = 平台佣金:和 POST 同理,非商品码。它一行在,整个「SKU 数量」就多算一个。
这个系统特有的坑:「是否含税」三个值——是 / 否 / 空。空的既不能当是也不能当否,只能回头问。这就是为什么数据整备必须有人参与,纯脚本跑不了。
⬇ 下载这份样例 erp-wangdiantong.xlsx · 14行×8列
P4 · 金蝶云·星辰 财务口径 · 44 列真表头
金蝶云·星辰 · 商品收发明细表(真实导出 44 列) 列名照抄客户账套真实导出的表头,一个没改。44 列里有 3 组同名——这是最容易取错数的地方。
商品编码商品名称仓库 单据类型单据日期审核状态 数量(入)单位成本(入) 数量(出)单位成本(出) 基本单位数量(结)平均成本
44 列里最要紧的 12 列 · 完整 44 列见下载文件
商品编码商品名称仓库单据类型单据日期审核状态数量
入库
单位成本
入库
数量
出库
单位成本
出库
结存数量结存平均成本
21137BLACK RECORD COVER FRAME成品仓期初库存42011-06-11已审核24602.32524602.325
23284DOORMAT KEEP CALM AND COME IN海外仓采购入库2011-06-12已审核55.115285.115
23245SET OF 3 REGENCY CAKE TINS成品仓销售出库2011-06-12已审核1空215273.069
22423REGENCY CAKESTAND 3 TIER海外仓销售退货2011-06-13已审核17.9054007.905
85123AWHITE HANGING HEART T-LIGHT HOLDER成品仓其他入库2011-12-09已审核1581.82978471.829
23243SET OF TEA COFFEE SUGAR TINS PANTRY零售仓其他出库2011-12-09已审核94空1103.069
23355HOT WATER BOTTLE KEEP CALM海外仓盘亏单62011-12-09已审核29空273.069
22086PAPER CHAIN KIT 50'S CHRISTMAS零售仓期初库存2011-06-11未审核52161.8292161.829
23298SPOTTY BUNTING零售仓期初库存2011-06-11未审核2273.0692273.069
47566PARTY BUNTING零售仓期初库存2011-06-11未审核1873.0691873.069
1
44 列里有 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 列(真实表头)+ 数据来源页
P5 · 用友 T+ 财务+仓管 · 有日期但会空
用友 T+ · 现存量 比金蝶多了「最后出库日期」——这个字段是死货判断的唯一依据,但它会空、会负。
存货编码存货名称主计量单位 现存量参考成本最后出库日期存货分类
原样导出 · 注意第 4 行负数、第 10 行空日期
存货编码存货名称单位现存量参考成本最后出库日期存货分类
TY-001马克杯-白个12002.302011-11-20成品
TY-002马克杯-黑个8602.302011-12-02成品
TY-003碟-20cm个6401.802011-12-01成品
TY-0041勺-14cm个-400.902011-12-03成品
TY-005桌布-亚麻条3208.502011-11-28成品
TY-006蜡烛-雪松个9806.802011-10-02成品
TY-007花瓶-玻璃个129.902011-12-06成品
TY-008抱枕套个14004.502011-11-15成品
TY-009托盘-木个2605.202011-12-02成品
TY-0102帆布袋大个5403.20(空)成品
TY-0113陶瓷杯套装套13012.502011-12-05套件
TY-012香薰-starter个06.802011-12-07成品
TY-0134未分类货品-2200.00(空)未分类
TY-014杯垫-竹个6600.752011-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列
P6 · Shopify 导出 出口电商 · 英文列名
Shopify · products.csv 中文 ERP 的坑它全有,还多一个——SKU 是人手填的,大小写都不统一。
HandleTitleSKU Variant PriceInventory QtyStatusCreated At
原样导出 · 前 3 行都是 "Nordic Mug",三个不一样的 SKU
HandleTitleSKUPriceQtyStatusCreated At
nordic-mugNordic MugABC-001112.901200active2011-03-04
nordic-mugNordic Mugabc-00112.90860active2011-03-04
nordic-mugNordic MugABC-001-BLK212.90640active2011-03-04
linen-clothLinen Table ClothABC-00234.90320active2011-04-11
scent-candle-cedarScented Candle - CedarABC-00326.90980active2011-05-02
scent-candle-whiteScented Candle - White TeaABC-004326.90760draft2011-05-02
glass-vaseGlass Vase 20cmABC-00539.9012active2011-06-08
cushion-coverCushion Cover 45x45ABC-00618.901400active2011-07-19
wood-trayWooden TrayABC-00720.90260active2011-08-23
tote-bagCanvas Tote BagABC-00812.90540active2011-09-01
gift-wrap4Gift WrappingGIFT-0010.009999active2011-09-01
sl-sample4Free Sample - SoapSAMPLE0.005000active2011-09-15
nordic-mugNordic MugABC-00159.900active2011-03-04
(空)6(空)(空)8.90100active2011-10-02
1
SKU 大小写不一致:ABC-001 和 abc-001 是同一个货。Shopify 本身不区分大小写,但 Excel 和数据透视表区分。统一转大写(或小写)后再聚合,否则你的「SKU 总数」凭空多一个。
2
变体编码规则中途变了:前两个是 ABC-001 / abc-001,第三个变成 ABC-001-BLK。这是典型的手工维护——前两个按颜色「隐式区分」,后来改成「显式加后缀」。同一个产品的变体规则必须统一,否则无法按款汇总。
3
draft 状态但有库存: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列
P7 · 横向汇总 ALL TRAPS · 统一出口

五个系统的坑,剥掉外壳后其实只有七种。

字段名千变万化,脏法就那么几类。认得出这七种,换什么 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天月均单价最后动销未动销天数销售额
85123AWHITE HANGING HEART T-LIGHT HOLDER784718931307.82.952011-12-09023149
这一行是从哪里长出来的:按 i_id 合并同款多规格 → 可用数里剔掉在途和次品 → 叠上订单流水算出的销量(销售出库 − 退货)→ 单价取中位数 → 按 30/180 天窗口重算月均。清洗的全部目的,就是把上面五张五花八门的表,压成这一行格式。再往后(四条规则、EOQ、诊断报告)就完全标准化了。这一行是真实交易算出来的,不是编的。

五份样例下载(前两份已换成真实数据)

⬇ 聚水潭 真实 ⬇ 旺店通 演示 ⬇ 金蝶云·星辰 真实 ⬇ 用友 T+ 演示 ⬇ Shopify(英文列) 演示
前两份(聚水潭、金蝶星辰)已经换成真实数据:商品、日期、数量、售价全部来自 UCI 公开交易流水,字段名照抄官方文档与客户账套真实导出,只有采购侧是推算——每份文件都带一页「数据来源」,把哪列真、哪列推算写清楚。后三份仍是演示结构。