根据应收单号修改成本金额SQL参考原创
7人赞赏了该文章
221次浏览
编辑于2024年07月01日 18:21:54
业务场景:无上游核算单据的应收单的成本赋值或获取成本异常的应收单成本金额修复
如下SQL语句仅供参考!!!更新前建议做全表备份!!!
--1.通过应收单单号查询相关信息 SELECT A.FBILLNO 应收单据编号,B.FENTRYID 明细分录内码,B.FSEQ 明细序号,B.FSOURCETYPE 源单类型,B.FSOURCEBILLNO 源单编号,B.FMATERIALID 物料内码,D.FNUMBER 物料编码,B.FBASICUNITQTY 明细计价基本数量,B.FCOSTAMTSUM 明细成本金额,C.FENTRYID 成本明细分录内码,C.FBILLNOSRC 成本明细源单编号,C.FBILLIDSRC 源单内码,C.FROWNOSRC 源单行内码,C.FBASEQTY 成本明细基本单位数量,C.FCOSTPRICE 成本价,C.FCOSTAMT 成本明细成本金额,C.FACCTSYS 会计核算体系,C.FACCTPOLICY 会计政策 FROM T_AR_RECEIVABLE A --应收单单据头 LEFT JOIN T_AR_RECEIVABLEENTRY B ON A.FID=B.FID --应收单明细 LEFT JOIN T_AR_SOCCOSTENTRY C ON B.FENTRYID=C.FDENTRYID --应收单成本明细 LEFT JOIN T_BD_MATERIAL D ON B.FMATERIALID=D.FMATERIALID --物料 WHERE A.FBILLNO='应收单号' --2.根据以上查询结果,找到需要更新成本金额明细的明细分录内码以及对应成本明细分录内码,再更新指定成本金额 --2.1 更新明细成本金额 UPDATE T_AR_RECEIVABLEENTRY SET FCOSTAMTSUM=成本金额 WHERE FENTRYID=明细分录内码; --2.2 更新成本明细成本金额 UPDATE T_AR_SOCCOSTENTRY SET FCOSTAMT=成本金额 WHERE FENTRYID=成本明细分录内码;
注释:
明细成本金额FCOSTAMTSUM=该明细在成本明细中默认会计政策下成本金额FCOSTAMT的汇总;
如果应收单该明细上游无核算单据,那么对应成本明细表不会有数据,此时仅更新明细的成本金额FCOSTAMTSUM字段即可;
如果是获取成本异常的单据重新获取成本后成本金额仍然异常,那么修复数据后不能再重新获取成本,否则又会恢复成异常成本金额。
已知单据编号和明细序号更新示例:
--更新明细成本金额 UPDATE T_AR_RECEIVABLEENTRY SET FCOSTAMTSUM=成本金额 WHERE FID IN (SELECT FID FROM T_AR_RECEIVABLE WHERE FBILLNO='单据编号') AND FSEQ=明细序号; --更新成本明细成本金额 UPDATE T_AR_SOCCOSTENTRY SET FCOSTAMT=成本金额 WHERE FID IN (SELECT FID FROM T_AR_RECEIVABLE WHERE FBILLNO='单据编号') AND FSEQSRC=明细序号;
推荐阅读