今日公司发现有有两个编号的客户(C.0251和01.0001)实际上就是指向同一个客户, 应该是之前没注意建重复了。现需求把C.0251客户下的发票和应收款合并到01.0001下。
刚开始由于对财务表了解不深入,只改了把发票表的客户ID改了,
--01.0001 294
--C.0251 56298
update ICSale set FCustID= 56298 where FCustID =294
没有改往来表,就发现在期末总额对账C.0251客户下还存在有应收应付金额。如下图:
后来就通过跟踪期末总额对账sql代码,发现数据取自余额表t_RP_ContactBal
select v1.FYear,v1.FPeriod, v1.FCustomer as FItemClassID,
sum(v1.FBeginBalanceFor) as fbegamountfor, sum(v1.FBeginBalance) as fbegamount,
sum(v1.FDebitFor) as fdebitfor, sum(v1.FDebit) as fdebit,
sum(v1.FCreditFor) as FCreditFor, sum(v1.FCredit) as FCredit,
sum(v1.fendbalancefor) as FAmountFor ,sum(v1.fendbalance ) as FAmount
from t_rp_contactbal v1
where v1.FItemClassID = 1 and v1.Frp = 1 and v1.FYear = 2023 and v1.FPeriod = 4 and v1.FCurrencyID = 1
group by v1.FYear, v1.FPeriod , v1.FCustomer
经过查数据发现C.0251有三笔数,
就通过sql 把这三笔数金额分别加到01.0001对应的三条数据上
看结果,期末总额对账余额移动过去了 但发现发现应收款汇总表跟明细表的金额对不上。汇总表有问题,明细表显示已经移过去的金额。就想起用金蝶K3自带的应收应付重算功能。 重算后傻眼了, 总额对账余额又回到改之前那样了。
然后就跟踪应收应付重算功能的sql ,找到他调用的存储过程p_rp_ReCalBalance
查看他的逻辑,终于找到我原来漏改了往来表,直接改余额表是会重算覆盖的。所以改完往来表,
--01.0001 294
--C.0251 56298
update t_rp_Contact set FCustomer=294 where FRP=1 and FCustomer= 56298
然后再重算一下,完美解决,款汇总表和明细表余额过来了,期末总额对账余额也过来了。
附件附加上 应收应付重算存储过程p_rp_ReCalBalance的内容, 方便日后有空深入研究