Skip to content

数据迁移校验:存货期初与总账对不上

产品线 U8 V16.0行业 流程制造模块 存货核算 / 总账痛点 期初不一致 / 迁移校验数据库 Oracle

**脱敏声明。**本案例为真实项目复盘,按站内脱敏规范隐去客户名称、真实金额与业务截图。

一、背景

某流程制造客户,从老系统迁到 U8 V16.0。存货期初按「存货档案 + 结存数量 + 结存单价」导入,总账期初按科目余额导入。两边分别导入时都显示成功,但存货模块的期初金额和总账「原材料/库存商品」科目余额对不上,差额是一个不小的数字。

财务月结时被卡:存货模块结存与总账科目余额不勾稽。

二、需求

客户要的是**「存货账 = 总账」**,这是月结能过的前提。两边数字对不上,说明迁移口径有问题,得先搞清是「存货导少了」还是「总账导多了」。

三、诊断

排查路径

  1. 先算总差额:存货期初金额合计 vs 总账原材料+库存商品+在途科目余额
  2. 按存货大类(原材料/半成品/产成品)拆开对比,缩小差异范围
  3. 重点查负库存、零成本、暂估入库这三类特殊存货的取价方式
  4. 核对老系统「结存单价」是含税还是不含税、是移动加权还是全月平均

定位结论

类型特征占比
A老系统结存单价是不含税,新系统导入时按含税填了,差额≈税额约 5 成
B老系统存在负库存(先出后入),结存单价计算方式导致负金额,新系统不允许负库存,导入时被置 0约 3 成
C在途物资(已付款未入库)老系统挂总账,新系统存货期初没导入约 2 成

根因:两边口径不一致——「存货的期初单价口径」和「总账的科目余额口径」没在迁移方案阶段对齐。单价含税不含税、负库存怎么处理、在途挂哪,这三个问题不提前定义,导入后必然不平。

四、方案

  • 短期(救火) —— 按差异拆三类处理:A 类统一改不含税单价重导;B 类负库存先做「调整入库」把负库存消掉再导;C 类在途物资补一笔期初采购入库单,挂「在途物资」科目
  • 长期(治根) —— 迁移方案里增加「双口径校验」:存货模块期初 = 总账科目余额,两边必须同时平才算通过

五、配置

存货期初 vs 总账余额校验 SQL

sql
-- 用途:存货核算期初金额 vs 总账存货科目余额 差异核对
-- 方言:Oracle
-- 参数::year 年度
WITH inv AS (  -- 存货期初(按存货大类汇总)
    SELECT cInvClass AS 大类, SUM(iQuantity * iPrice) AS inv_amt
    FROM IA_InitBalance             -- 示意表:存货期初余额
    WHERE iYear = :year
    GROUP BY cInvClass
),
gl AS (  -- 总账存货科目余额(原材料/库存商品/在途)
    SELECT cInvClass AS 大类, SUM(md) AS gl_amt
    FROM GL_balance
    WHERE iYear = :year AND iPeriod = 0
      AND cCode LIKE '1403%' OR cCode LIKE '1405%' OR cCode LIKE '1402%'
    GROUP BY cInvClass
)
SELECT
    COALESCE(i.大类, g.大类) AS 大类,
    NVL(i.inv_amt, 0) AS 存货期初,
    NVL(g.gl_amt, 0)  AS 总账余额,
    NVL(i.inv_amt, 0) - NVL(g.gl_amt, 0) AS 差额
FROM inv i
FULL OUTER JOIN gl g ON i.大类 = g.大类
WHERE ABS(NVL(i.inv_amt, 0) - NVL(g.gl_amt, 0)) > 0.01
ORDER BY ABS(NVL(i.inv_amt, 0) - NVL(g.gl_amt, 0)) DESC;

T-SQL 写法差异NVLISNULLFULL OUTER JOIN 语法一致;: 绑定变量改 @ 参数。

六、踩坑

  • **别只看总额。**总额平不代表明细平——A 类含税差异可能在某个大类内互相抵消,拆大类核对才能暴露。
  • **负库存不能「直接置 0 导入」。**要先在业务上消掉(调整单),否则第一个月出库成本计算会出负数,月结更乱。
  • **在途物资最容易漏。**迁移清单里「存货期初」和「总账期初」经常是两个团队各导各的,在途这种跨模块科目没人认领。
  • 期初导入后先跑这个校验再开账,别等月结时才发现。

七、验收

  • 存货期初金额 = 总账原材料/库存商品/在途科目余额,差额归零
  • 负库存全部消化,无零成本异常
  • 第一个月存货核算月结通过,与总账勾稽一致
  • 在途物资科目有对应期初单据支撑,后续发票核销路径清晰

八、回顾

做对的:把差异拆成三类分别处理,没有笼统「调平」,每类都找到了根因。

做得不够的:迁移方案阶段没有把「单价口径」写死——含税/不含税这种一句话能定义的事,拖到导入后才暴露,返工成本最高。

可复用:双口径校验已沉淀进 模板库-数据初始化校验清单,迁移项目直接照做。

内容已脱敏 · 不含客户名称与真实金额

微信公众号显林的随笔

ERP 实施笔记 · 案例复盘 · 资料更新提醒
微信搜一搜「显林的随笔」即可关注

二维码待补
(林哥提供后替换)