应收单立账类型修改SQL参考原创
45人赞赏了该文章
352次浏览
编辑于2024年07月29日 14:15:49
业务场景:历史应收单需要修改单据立账类型
注意事项:
仅未开票未收款核销且未下推发票未下推收款的单据可以修改;
如涉及已结账期间单据,则应收单需要反结账至涉及期间重新结账回来,如涉及期初单据,则还需要反初始化重新结束初始化,否则会导致应收款汇总表/明细表余额不准确。
立账类型字段说明:
枚举值查看位置如下,标准产品下:1为业务应收,2为暂估应收,3为财务应收
示例:将财务应收单修改为业务应收单
如下SQL语句仅供参考!!!更新前建议做全表备份!!!
--1.查询立账类型为财务应收且开票和付款核销状态都为空的单据 并核对是否是需要修改的这部分单据 SELECT FBILLNO 单据编号,FDATE 业务日期,A.FDOCUMENTSTATUS 单据状态,FSETACCOUNTTYPE 立账类型,FOPENSTATUS 开票核销状态,FWRITTENOFFSTATUS 付款核销状态 ,B.FNUMBER 结算组织编码 FROM T_AR_RECEIVABLE A LEFT JOIN T_ORG_ORGANIZATIONS B ON A.FSETTLEORGID=B.FORGID WHERE FSETACCOUNTTYPE=3 AND FOPENSTATUS='A' AND FWRITTENOFFSTATUS='A' --AND A.FBILLNO='单据编号' --按单据编号来更新 ORDER BY A.FDATE --记录最早的业务日期 后续需要使用 --建议复制这些单据编号在前台批量下查下看是否有未审核的下游单据,因为未审核状态不会触发开票或付款核销所以核销状态还是为空的,但如果在这种情况修改从业务上来看还是不对的。 --2.更新操作 --2.1 更新前数据备份 SELECT * INTO T_AR_RECEIVABLE_SQLBAK_20240426 FROM T_AR_RECEIVABLE --2.2 将这部分单据的立账类型修改为业务应收 where条件和第一步的查询条件保持一致 MERGE INTO T_AR_RECEIVABLE T1 USING ( SELECT FBILLNO 单据编号,A.FID,FDATE 业务日期,A.FDOCUMENTSTATUS 单据状态,FSETACCOUNTTYPE 立账类型,FOPENSTATUS 开票核销状态,FWRITTENOFFSTATUS 付款核销状态 ,B.FNUMBER 结算组织编码 FROM T_AR_RECEIVABLE A LEFT JOIN T_ORG_ORGANIZATIONS B ON A.FSETTLEORGID=B.FORGID WHERE FSETACCOUNTTYPE=3 AND FOPENSTATUS='A' AND FWRITTENOFFSTATUS='A' --AND A.FBILLNO='单据编号' --按单据编号来更新 --AND B.FNUMBER='100' --按组织编码来更新 ) T2 ON (T1.FID=T2.FID) WHEN MATCHED THEN UPDATE SET T1.FSETACCOUNTTYPE=1; --3. 如第一步的最早的业务日期在已结账期间,应收款需要反结账至涉及期间重新结账回来
注意以下场景不允许修改立账类型!!!
业务应收已下推收款单或和收款单存在核销记录后修改为暂估应收;
业务应收已下推发票或和发票存在开票核销记录后修改为财务应收;
财务应收已下推发票后修改为业务应收;
暂估应收已下推财务应收或和财务应收有开票核销记录后修改为业务应收;
推荐阅读