采购订单下推先开票财务应付转换规则使用错误导致关联数量反写错误修复SQL参考原创
金蝶云社区-jessie_w
jessie_w
5人赞赏了该文章 86次浏览 未经作者许可,禁止转载编辑于2024年06月24日 13:56:35

业务场景:

采购订单下推先开票财务应付时,应使用带“先到票业务”字样的单据转换。

部分用户错误操作,使用了不带该字样的单据转换,不会反写订单先开票数量而是反写关联应付数量,

导致后续入库下推暂估保存提示反写订单关联应付数量超额。

历史期间单据可以对订单的先开票数量及关联应付数量做数据修复,入库单再正常下推保存应付单。

image.png


注意事项:

适用于采购订单直接下推应付单均属于先到票业务的业务流程,即除了先到票业务采购订单不存在直接下推应付单的业务流程


如下SQL语句仅供参考!!!更新前建议做全表备份!!!


--数据备份语句参考
SELECT * INTO T_PUR_POORDERENTRY_R_SQLBAK_20230206 FROM T_PUR_POORDERENTRY_R

--采购订单关联应付数量更新  关联查询采购订单下推应付单但非先到票业务单据转换
MERGE INTO T_PUR_POORDERENTRY_R T1 USING (
	SELECT PO.FBILLNO 采购订单号,PO.FPURCHASEORGID,PO.FDATE 业务日期,PO.FCLOSESTATUS 关闭状态,POE.FENTRYID,POE.FSEQ,POE.FMRPCLOSESTATUS 业务关闭状态,POE.FBASEUNITID 基本单位,POE.FUNITID 采购单位,POE.FSTOCKUNITID 库存单位,POE.FQTY 采购数量,POE.FSTOCKQTY 库存数量,POE.FSTOCKBASEQTY 库存基本数量,POER.FBASESTOCKINQTY 累计入库数量基本,POER.FSTOCKINQTY 累计入库数量,POE.FBASEUNITQTY 采购基本数量,POER.FBASEAPJOINQTY 关联应付数量计价基本,POER.FSTOCKBASEAPJOINQTY 关联应付数量库存基本,POER.FBASEFINAPQTY 先收票数量基本单位,POER.FSTOCKBASEFINAPQTY 先收票数量库存基本,POER.FAPJOINAMOUNT 关联应付金额 ,ISNULL(H.FBASICUNITQTY,0) FBASICUNITQTY,ISNULL(H.FSTOCKBASEQTY,0) FSTOCKBASEQTY
	FROM T_PUR_POORDER PO
	LEFT JOIN T_PUR_POORDERENTRY POE ON PO.FID=POE.FID
	LEFT JOIN T_PUR_POORDERENTRY_R POER ON POE.FENTRYID=POER.FENTRYID
	LEFT JOIN (
		SELECT C.FSID,SUM(C.FBASICUNITQTY) FBASICUNITQTY,SUM(C.FSTOCKBASEQTY) FSTOCKBASEQTY
		FROM T_AP_PAYABLE A
		LEFT JOIN T_AP_PAYABLEENTRY B ON A.FID=B.FID
		LEFT JOIN T_AP_PAYABLE_LK C ON B.FENTRYID=C.FENTRYID
		LEFT JOIN T_AP_PAYABLE_O D ON A.FID=D.FID
		WHERE C.FRULEID = 'AP_PurOrderToPayable' AND FSTABLENAME='t_PUR_POOrderEntry' AND D.FWBOPENQTY=0
		GROUP BY C.FSID
	) H ON POE.FENTRYID=H.FSID
	WHERE ISNULL(H.FBASICUNITQTY,0)<>0 AND POER.FBASEFINAPQTY<>ISNULL(H.FBASICUNITQTY,0)
	--AND PO.FBILLNO IN('CGDD000001')  --通过单据编号查询
) T2 ON (T1.FENTRYID=T2.FENTRYID)
WHEN MATCHED THEN UPDATE SET T1.FBASEFINAPQTY=T1.FBASEFINAPQTY+t2.FBASICUNITQTY,t1.FSTOCKBASEFINAPQTY=t1.FSTOCKBASEFINAPQTY+t2.FSTOCKBASEQTY,t1.FBASEAPJOINQTY=t1.FBASEAPJOINQTY-t2.FBASICUNITQTY,t1.FSTOCKBASEAPJOINQTY=t1.FSTOCKBASEAPJOINQTY-t2.FSTOCKBASEQTY;


赞 5