应收单应付单已结算金额反写异常修复原创
金蝶云社区-jessie_w
jessie_w
6人赞赏了该文章 320次浏览 未经作者许可,禁止转载编辑于2024年01月29日 22:22:30

应收应付单做了收付款核销后,会按比例计算明细行对应的已结算金额和未结算金额进行反写,已结算金额的计算方式和单据的收付款条件的收款方式有关。


以应收单为例,收款条件的收款方式分为按到期日收款、按订单收款、按物料明细收款。

1. 按到期日收款或收款条件为空时,应收单的收款计划仅有一行,且不会携带订单号,分配方式是每行明细占总金额的比例*已核销金额计算;

2. 按订单收款时,应收单的收款计划根据明细的销售订单号(FORDERNUMBER)分组汇总生成,每个订单对应一行计划,且会携带订单号,在这一行计划分录核销后,仅反写相同订单的明细,按每行价税合计占该订单总金额的比例*已核销金额计算;

3. 按物料明细收款时,应收单的收款计划根据明细的销售订单号(FORDERNUMBER)、订单分录内码(FORDERENTRYID)和物料(FMATERIALID)分组汇总生成,相同的订单和订单分录内码和物料才生成一行收款计划,且会携带订单号、订单分录内码、物料这三个字段,在这一计划分录核销后,仅反写相同订单号、订单分录内码、物料内码的明细,按每行价税合计占该订单号订单分录物料总金额的比例*已核销金额计算。


异常情况:历史收款条件不符合业务需求,所以自行放开了已使用的收款条件基础资料的收款方式的锁定性(一般已经创建的收款条件就不允许修改收款方式)做了修改,或修改了历史单据的收款条件,使应收单的计划分录和单据现在的收款方式不匹配了,即不符合上述的逻辑关系,比如从按到期日收款修改为按订单收款,明细有多个订单或多个物料,而收款计划只有一行分录且没有订单号,因订单号不匹配,就会影响已结算金额的反写。此时就需要做数据修复。


但部分核销的单据分摊逻辑略复杂,所以建议是只针对已完全收付款核销的单据,将明细分录的已结算金额修改为和价税合计一致,未结算金额修改为0,部分核销的单据待完全核销后再统一修复。

--修改已完全核销的应收单的已结算金额=价税合计
MERGE INTO T_AR_RECEIVABLEENTRY T1 
USING (
	SELECT A.FBILLNO,A.FWRITTENOFFSTATUS,B.FENTRYID,B.FRECEIVEAMOUNT 已结算金额,B.FNORECEIVEAMOUNT 未结算金额,B.FALLAMOUNTFOR 明细价税合计,B.FORDERNUMBER 采购订单号
	FROM T_AR_RECEIVABLE A
	LEFT JOIN T_AR_RECEIVABLEENTRY B ON A.FID=B.FID
	WHERE A.FWRITTENOFFSTATUS='C' AND B.FRECEIVEAMOUNT<>B.FALLAMOUNTFOR 
) T2 ON (T1.FENTRYID=T2.FENTRYID)
WHEN MATCHED THEN UPDATE SET  T1.FRECEIVEAMOUNT=T1.FALLAMOUNTFOR,T1.FNORECEIVEAMOUNT=0;

--修改已完全核销的应付单的已结算金额=价税合计
MERGE INTO T_AP_PAYABLEENTRY T1 USING(
	SELECT A.FBILLNO,A.FDATE,A.FWRITTENOFFSTATUS,B.FALLAMOUNTFOR 明细价税合计,B.FPAYMENTAMOUNT 已结算金额,B.FNORECEIVEAMOUNT 未结算金额,B.FORDERNUMBER 采购订单号,B.FENTRYID
	FROM T_AP_PAYABLE A
	LEFT JOIN T_AP_PAYABLEENTRY B ON A.FID=B.FID
	WHERE A.FWRITTENOFFSTATUS='C' AND B.FPAYMENTAMOUNT<>B.FALLAMOUNTFOR
) T2 ON (T1.FENTRYID=T2.FENTRYID)
WHEN MATCHED THEN UPDATE SET T1.FPAYMENTAMOUNT=T1.FALLAMOUNTFOR,T1.FNORECEIVEAMOUNT=0;



赞 6