Skip to content

应付暂估与存货核算月结不平

产品线 U8 V15.0行业 离散制造模块 应付 / 存货核算痛点 月结对不平数据库 SQL Server

**样板案例。**本篇用于固化八段式写作模板,内容为脱敏后的结构示意,具体数据与截图已移除。

一、背景

某离散制造客户,U8 V15.0,上线第 4 个月。采购业务量约每月 800 张入库单,其中暂估入库占比约三成。

财务在月结时发现:应付模块的暂估余额与存货核算的暂估结存对不上,差额随月份累积扩大。

二、需求

财务要的不是「解释差异」,是月结能过、且以后不再出现。这两件事优先级不同,先解决当月过账,再治根因。

三、诊断

排查路径

  1. 先确认差异是单向还是双向 —— 只有应付多,还是互有多少
  2. 按单据逐笔比对,定位差异单据的共同特征
  3. 回溯这批单据的操作日志,看是否有非常规操作

定位结论

差异单据集中在两类:

类型特征占差异额
A暂估入库后,原采购订单被修改单价约 7 成
B跨月红字回冲,回冲期间与原单期间不同约 3 成

根因:客户为了赶月结,用了「先入库后补单价」的操作习惯。存货核算按入库时点取价,应付按发票时点取价,两边基准不一致。

四、方案

分两步走:

  • 短期(当月月结) —— 定位差异单据,用调整单手工平账,附差异说明台账
  • 长期(治根因) —— 关闭采购订单在暂估入库后的改价权限,改走「暂估回冲 + 重新入库」标准流程

五、配置

权限调整路径

采购管理 → 设置 → 采购选项 → 「已入库订单允许修改单价」→ 取消勾选
存货核算 → 设置 → 核算选项 → 暂估方式 → 确认为「月初回冲」

核对 SQL

sql
-- 用途:比对应付暂估余额与存货核算暂估结存
-- 方言:T-SQL (SQL Server)
-- 参数:@period 会计期间 'YYYY-MM'
DECLARE @period CHAR(7) = '2026-07';

WITH ap AS (
    SELECT cInvCode, SUM(iAPCost) AS ap_amt
    FROM AP_Estimate_Detail          -- 示意表名,实际按版本核对
    WHERE cPeriod = @period
    GROUP BY cInvCode
),
ia AS (
    SELECT cInvCode, SUM(iCost) AS ia_amt
    FROM IA_Estimate_Balance         -- 示意表名
    WHERE cPeriod = @period
    GROUP BY cInvCode
)
SELECT
    COALESCE(ap.cInvCode, ia.cInvCode) AS 存货编码,
    ISNULL(ap.ap_amt, 0)               AS 应付暂估,
    ISNULL(ia.ia_amt, 0)               AS 核算暂估,
    ISNULL(ap.ap_amt, 0) - ISNULL(ia.ia_amt, 0) AS 差额
FROM ap
FULL OUTER JOIN ia ON ap.cInvCode = ia.cInvCode
WHERE ABS(ISNULL(ap.ap_amt, 0) - ISNULL(ia.ia_amt, 0)) > 0.01
ORDER BY ABS(ISNULL(ap.ap_amt, 0) - ISNULL(ia.ia_amt, 0)) DESC;

Oracle 写法差异ISNULLNVLFULL OUTER JOIN 语法一致,DECLARE 改用绑定变量 :period,字符串拼接 +||

六、踩坑

  • **别一上来就查表结构差异。**先看操作日志,业务操作习惯造成的问题占多数,改表改配置都是治标。
  • **暂估方式改动有追溯影响。**从「单到回冲」改「月初回冲」,改之前必须确认历史期间已全部结账,否则重算会污染已结期间。
  • **手工调整单要留台账。**审计会问,隔半年自己也会忘为什么调这一笔。
  • 差异金额小于 0.01 的过滤掉,那是舍入误差,追下去浪费时间。

七、验收

  • 当月月结通过,应付暂估与核算暂估差额归零
  • 连续观察 2 个月结,无新增差异
  • 客户采购员操作习惯已调整,改价需求走正规回冲流程

八、回顾

做对的:先解决月结通过(业务要的),再治根因(我要的)。顺序反了会被客户投诉拖进度。

做得不够的:上线时的操作规范培训只讲了「怎么做」,没讲「不这么做会怎样」。用户不知道后果,就一定会图省事。下个项目在培训环节加「反面案例」一节。

可复用:那段核对 SQL 已放进 SQL 库,后续项目上线第 2 个月就主动跑一遍,提前发现问题。

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