本文件记录了库存数据处理工具的全部业务规则,方便后续接手者理解和改进。
处理两份库存 CSV 文件,生成一个包含两个 Sheet 的 Excel(.xlsx)。
根据文件名判断类型:
| 文件名包含 | 识别为 |
|---|---|
仓库 | 仓库库存 (warehouse) |
门店 | 门店库存 (store) |
上传前缀如 upload16676-1780889577- 会被自动忽略后再匹配。若文件名不含上述关键字则提示无法识别。
仓库编号、仓库名称、商品名称、SKU货号、国际条码、库存数、成本单价、库存金额、未税成本金额、可用库存、占用库存、在途库存、不可售卖数、大包装数、商品类别、主供应商、商品品牌、规格、单位、采购价、门店进价、毛利率、最后动销时间
列「仓库名称」的值必须包含以下关键字之一:
宇培冷冻示例:中台宇培常温仓 命中「宇培」→ 保留
| 列名 | 说明 |
|---|---|
SKU货号 | 文本 |
国际条码 | 文本 |
商品名称 | 文本 |
可用库存 | 数字(注意不是"库存数",是"可用库存"列) |
门店仓编号、门店仓名称、商品名称、SKU货号、国际条码、库存数、成本单价、库存金额、未税成本金额、可用库存、占用库存、在途库存、寄存数、不可售卖数、大包装数、商品类别、主供应商编号、主供应商名称、商品品牌、规格、单位、门店进价、门店售价、毛利率、门店编号、门店名称、最后动销时间
列「门店名称」的值必须包含以下关键字之一:
中大门睿海万和| 原始名称 | 映射为 |
|---|---|
| 折扣牛城市批发中心(中大门店) | 中大门 |
| 折扣牛城市批发中心(睿海中心店) | 睿海 |
| 万和城旗舰店 | 万和 |
映射逻辑:先精确匹配 → 再模糊匹配(去括号后比对)→ 最后判断原始名称是否包含短名。
| 列名 | 说明 |
|---|---|
SKU货号 | 文本 |
国际条码 | 文本 |
商品名称 | 文本 |
门店名称 | 文本(已映射为短名) |
库存数 | 数字 |
SKU货号 + 国际条码 + 商品名称(以 ||| 拼接为组合键)门店名称(映射后的短名),固定顺序:中大门 → 睿海 → 万和库存数 求和| Sheet 名 | 列 | 数据来源 |
|---|---|---|
仓库库存筛选 | SKU货号、国际条码、商品名称、可用库存 | 仓库 CSV 筛选后 |
门店库存透视 | SKU货号、国际条码、商品名称、{门店}库存 | 门店 CSV 筛选 → 透视 |
仓库筛选:修改 processWarehouseFile() 中的 name.includes('宇培') || name.includes('冷冻')
门店筛选:修改 processStoreFile() 中的 storeName.includes('中大门') || ...
修改 mapStoreName() 函数中的 map 对象和兜底逻辑。
仓库:修改 idx 和 warehouseData.push(),以及 Excel 导出中的 ws1Data 表头。
门店:修改 idx 和 storeData.push(),透视逻辑在 pivotMap 构建环节。
修改 detectFileType() 函数中的关键字匹配逻辑。
拖入两个 CSV · 自动识别 · 一键下载 Excel