本文详细介绍了不同类型单据(如应收单、其他应收单、收款单等)在核销过程中的字段反写时点和常见报错及处理方法。核销字段包括核销状态、已核销金额及关联金额等,这些字段在核销完成后反写。常见报错包括核销状态有误、关联金额错误、尾差无分摊对象、明细金额与计划金额不匹配等,并提供了相应的检查步骤和修复方法。还涉及了自动核销未执行的情况及解决方案,如检查单据类型、业务流程、业务类型及系统参数等。此外,还讨论了反审核过程中的异常问题及排查步骤。
一、核销字段介绍
单据类型 | 核销页签 | 主要核销字段 | 反写时点 | |
---|---|---|---|---|
应收收款核销 | 应收单 | 收款计划 | 单据头: 收款核销状态FWRITTENOFFSTATUS; 收款计划: 核销状态FWRITTENOFFSTATUS, 已核销金额FWRITTENOFFAMOUNTFOR, 收(退)款单关联金额FRELATEHADPAYAMOUNT | 单据头与单据体的核销状态、已核销金额都是在核销完成后反写; 收(退)款单关联金额的反写时点有两个: 1、应收单下推收款单,收款单保存的时候反写,待收款单审核时则不会再反写; 2、应收单与其他单据做手工匹配核销,在核销完成后反写。 |
其他应收单 | 单据头 | 单据头: 收款核销状态FWRITTENOFFSTATUS, 已收款核销金额FWRITTENOFFAMOUNTFOR, 收(退)款单的关联金额FRELATEHADPAYAMOUNT | 收款核销状态、已收款核销金额都是在核销完成后反写; 收(退)款单的关联金额的反写时点有两个: 1、其他应收单下推收款单,收款单保存的时候反写,待收款单审核时则不会再反写; 2、其他应收单与其他单据做手工匹配核销,在核销完成后反写。 | |
收款单 | 明细 | 单据头: 核销状态FWRITTENOFFSTATUS; 明细: 核销状态FWRITTENOFFSTATUS, 已核销金额WRITTENOFFAMOUNTFOR, 退款关联金额FREFUNDAMOUNT | 单据头与单据体的核销状态、已核销金额都是在核销完成后反写; 退款关联金额的反写时点有两个: 1、收款单下推收款退款单,收款退款单保存的时候反写,待收款退款单审核时则不会再反写; 2、收款单与其他单据做手工匹配核销,在核销完成后反写。 | |
收款退款单 | 明细 | 单据头: 核销状态FWRITTENOFFSTATUS; 明细: 核销状态FWRITTENOFFSTATUS, 已核销金额FWRITTENOFFAMOUNTFOR | 单据头与单据体的已核销状态、已核销金额都是在核销完成后反写。 | |
应付付款核销 | 应付单 | 付款计划 | 单据头: 付款核销状态FWRITTENOFFSTATUS; 付款计划: 核销状态FWRITTENOFFSTATUS, 已核销金额FWRITTENOFFAMOUNTFOR, 付(退)款单关联金额FRELATEHADPAYAMOUNT | 单据头与单据体的核销状态、已核销金额都是在核销完成后反写; 付(退)款单关联金额的反写时点有两个: 1、应付单下推付款单,付款单保存的时候反写,待付款单审核时则不会再反写; 2、应付单与其他单据做手工匹配核销,在核销完成后反写。 |
其他应付单 | 明细 | 单据头: 付款核销状态FWRITTENOFFSTATUS; 明细: 核销状态FWRITTENOFFSTATUS, 已核销金额FWRITTENOFFAMOUNTFOR, 付(退)款单的关联金额FRELATEHADPAYAMOUNT | 单据头与单据体的核销状态、已核销金额都是在核销完成后反写; 付(退)款单的关联金额的反写时点有两个: 1、其他应付单下推付款单,付款单保存的时候反写,待付款单审核时则不会再反写; 2、其他应付单与其他单据做手工匹配核销,在核销完成后反写。 | |
付款单 | 明细 | 单据头: 核销状态FWRITTENOFFSTATUS; 明细: 核销状态FWRITTENOFFSTATUS, 已核销金额WRITTENOFFAMOUNTFOR, 退款关联金额FREFUNDAMOUNT | 单据头与单据体的核销状态、已核销金额都是在核销完成后反写; 退款关联金额的反写时点有两个: 1、付款单下推付款退款单,付款退款单保存的时候反写,待付款退款单审核时则不会再反写;2、付款单与其他单据做手工匹配核销,在核销完成后反写。 | |
付款退款单 | 明细 | 单据头: 核销状态FWRITTENOFFSTATUS; 明细: 核销状态FWRITTENOFFSTATUS, 已核销金额FWRITTENOFFAMOUNTFOR | 单据头与单据体的已核销状态、已核销金额都是在核销完成后反写。 | |
应收开票核销 | 应收单 | 明细 | 单据头: 开票核销状态FOPENSTATUS; 明细: 开票核销状态FOPENSTATUS, 已开票核销数量FOPENQTY, 已开票核销金额FOPENAMOUNTFOR, 已核销不含税金额FMATCHNOTTAXAMTFOR, 已开票金额(下推审核反写、核销反写)FHADMATCHAMOUNTFOR, 特殊核销数量FSPECIALQTY, 特殊核销金额FSPECIALAMOUNTFOR, 销售发票数量FBUYIVQTY, 销售发票数量(基本单位)FBUYIVBASICQTY, 销售发票价税合计FIVALLAMOUNTFOR | 单据头与单据体的开票核销状态、已开票核销数量、已核销不含税金额、已开票金额(下推审核反写、核销反写)都是在核销完成后反写; 特殊核销数量、特殊核销金额在应收单特殊核销后反写; 销售发票数量、销售发票数量(基本单位)、销售发票价税合计的反写时点有两个: 1、业务应收单下推发票,发票保存的时候反写,待收款单审核时则不会再反写;或者暂估应收单下推财务应收单,财务应收单保存的时候反写,待财务应收单审核时则不会再反写。 2、业务应收单与发票做手工匹配核销,则核销完成后反写;暂估应收单与财务应收单做手工匹配核销,则核销完成后反写。 |
销售发票 | 明细 | 单据头: 开票核销状态FOPENSTATUS; 明细: 开票核销状态FOPENSTATUS, 已开票核销数量FOPENQTY, 已开票核销金额FOPENAMOUNTFOR, 已核销不含税金额FMATCHNOTTAXAMTFOR | 单据头与单据体的开票核销状态、已开票核销数量、已开票核销金额、已核销不含税金额都是在核销完成后反写。 | |
应付开票核销 | 应付单 | 明细 | 单据头: 开票核销状态FOPENSTATUS; 明细: 开票核销状态FOPENSTATUS, 已开票核销数量FOPENQTY, 已开票核销金额FOPENAMOUNTFOR, 已核销不含税金额FMATCHNOTTAXAMTFOR, 已开票金额(下推审核反写、核销反写)FHADMATCHAMOUNTFOR, 特殊核销数量FSPECIALQTY, 特殊核销金额FSPECIALAMOUNTFOR, 采购发票数量FBUYIVQTY, 采购发票数量(基本单位)FBUYIVBASICQTY, 采购发票价税合计FIVALLAMOUNTFOR | 单据头与单据体的开票核销状态、已开票核销数量、已核销不含税金额、已开票金额(下推审核反写、核销反写)都是在核销完成后反写; 特殊核销数量、特殊核销金额在应付单特殊核销后反写; 采购发票数量、采购发票数量(基本单位)、采购发票价税合计的反写时点有两个: 1、业务应收单下推发票,发票保存的时候反写,待收款单审核时则不会再反写;或者暂估应收单下推财务应收单,财务应收单保存的时候反写,待财务应收单审核时则不会再反写。 2、业务应收单与发票做手工匹配核销,则核销完成后反写;暂估应收单与财务应收单做手工匹配核销,则核销完成后反写。 |
采购发票 | 明细 | 单据头: 开票核销状态FOPENSTATUS; 明细: 开票核销状态FOPENSTATUS,已开票核销数量FOPENQTY,已开票核销金额FOPENAMOUNTFOR,已核销不含税金额FMATCHNOTTAXAMTFOR | 单据头与单据体的开票核销状态、已开票核销数量、已开票核销金额、已核销不含税金额都是在核销完成后反写。 |
注意:应收单、其他应收单能否在手工核销界面过滤出来以及过滤出来的本次核销金额的值是多少,取决于【收(退)款单关联金额】字段的值;应付单、其他应付单能否在手工核销界面过滤出来以及过滤出来的本次核销金额的值是多少,取决于【付(退)款单关联金额】字段的值。
二、常见报错及处理方法
1、XXX单据头核销状态有误,单据已核销金额为XXX,单据关联金额为XXX,……,请检查核销数据。
出现此种报错时,要根据提示的单据编号去检查单据的关联金额是否正确,此处的关联金额,分别指的是:应收单→收款计划的收(退)款单关联金额;其他应收单→单据头的收(退)款单的关联金额;收款单→明细的退款关联金额;应付单付款计划的付(退)款单关联金额;其他应付单→明细的收(退)款单的关联金额;付款单:明细的退款关联金额。
例如上图所示是在审核付款单的时候报错,报错的意思是:如果让付款单审核成功的话,应收单00922893收款计划的已核销金额为396403.2,收款计划的收(退)款单关联金额为0,关联金额小于已核销金额,故报错。
根据报错中提示的信息,去检查单据实际的核销情况与核销字段,发现确实是应收单上的【收(退)款单关联金额】不正确,导致应收单在手工核销界面过滤出的本次核销金额多了,故核销会报错。后台修复【收(退)款单关联金额】即可。
2、报错:尾差XXX没有可以分摊的对象。
出现此种报错时,要根据提示的单据编号去检查单据的核销字段是否正确,要检查的具体字段可以参考“一、核销字段介绍”中的内容。
例如上图所示是在操作应收收款核销的时候报错,报错的意思是:如果让选中的单据核销成功的话,应收单AR2019112113088明细的价税合计为12000,计划页签的已核销金额为17050,已核销金额会大于价税合计,故报错。
根据报错中提示的信息,去检查单据实际的核销情况与核销字段,发现确实是应收单上的【收(退)款单关联金额】不正确,导致应收单在手工核销界面过滤出的本次核销金额多了,故核销会报错。后台修复【收(退)款单关联金额】即可。
3、冲回单“XXX”明细金额合计[XXX]计划金额合计[XXX]不匹配。
此报错常见于审核财务应收/付单,出现此种报错时,多半是上游暂估单异常,常见的异常原因有以下3点:
a. 当报错中的金额出现超过对应币别设置的金额精度时,多半是上游暂估单中出现多位小数,前台不一定能看到多位小数,需要登录后台数据库去排查上游单据的明细页签的价税合计和计划页签的应收/付金额是否出现多位小数。
b. 检查上游单据是否是从管易同步过来的B2C业务的单据,如果是,要检查上游单据的收/付款计划的应收/付比例是否为100%,如果不是,需要后台修改成100%。以应收单为例,参考脚本如下:
--1、备份数据表 select * into T_AR_RECEIVABLEPLAN_bak_20210411 from T_AR_RECEIVABLEPLAN; --2、修复异常的应收比例 update b set FPAYRATE=100 from T_AR_RECEIVABLE a --应收单单据头 left join T_AR_RECEIVABLEPLAN b on b.fid=a.fid --应收单收款计划 where a.FISB2C=1 and b.FPAYRATE<>100;
c. 检查上游单据的付款条件的付款方式是否和付款计划页签相匹配。例如付款条件的付款方式是按订单付款,且应收/付单是由多个订单合并下推的,但是付款计划确合并成了同一行就会出现类似报错。此类异常一般不好重现,如果删除单据重新下推可以重现问题的话,可以尝试开启参数:“上游单据下推应收应付单时,不携带上游单据的收付款计划”,然后再下推试试。
--上游单据下推应收应付单时,不携带上游单据的收付款计划: Delete from T_BAS_SYSTEMPROFILE where FCATEGORY='AR' and FKEY='PushIsNotGetPlan'; Insert Into T_BAS_SYSTEMPROFILE (FCATEGORY ,FORGID ,FACCOUNTBOOKID ,FKEY ,FVALUE) Values ('AR',0,0,'PushIsNotGetPlan','1');
d. 暂估单或者财务单的付款计划总金额并不等于明细页签总的价税合计。以应收单为例,批量查询这些异常数据可以参考如下脚本:
select a.FBILLNO 单据编号,a.FDATE 业务日期,b.FALLAMOUNTFOR 明细价税合计汇总,c.FPAYAMOUNTFOR 计划应收金额汇总 from T_AR_RECEIVABLE a --应收单单据头 left join ( select fid,sum(FALLAMOUNTFOR) FALLAMOUNTFOR from T_AR_RECEIVABLEENTRY group by fid --应收单明细 )b on b.fid=a.fid left join ( select fid,sum(FPAYAMOUNTFOR) FPAYAMOUNTFOR from T_AR_RECEIVABLEPLAN group by fid --应收单收款计划 )c on c.fid=a.fid where b.FALLAMOUNTFOR<>c.FPAYAMOUNTFOR
4、审核后未自动核销。
a. 暂估单下推财务单,财务单审核后未自动核销。
a.1 检查财务单单据头的参与暂估应收/付核销是否有勾选,若不勾选,则暂估和财务不会自动核销。
a.2 检查暂估单的核销字段是否正确,具体检查的字段参考第一章节的核销字段介绍。
b. 预收预付未自动核销。
b.1 检查订单的付款条件是否和应收/付单的付款条件一致,不一致的话,无法自动核销。
b.2 检查上机操作日志,是否存在预收/付单还未审核的情况下,应收/付单下推了付款单或者与其他单据做了核销的情况。
b.3 检查应收/付单明细页签的订单号是否存在。
b.4 付款单明细的_O表的数据不存在。_O表是后来版本才添加的,故在升级之前已经存在的付款单的_O表数据不存在,有可能引发异常。修复_O表的参考语句如下
--1、备份数据表 select * into T_AP_PAYBILLENTRY_O_bak_20210411 from T_AP_PAYBILLENTRY_O; --2、修复_O表 insert into T_AP_PAYBILLENTRY_O select b.FENTRYID,b.FID,d.FCURWRITTENOFFAMOUNT,0,'','' from T_AP_PAYBILL a left join T_AP_PAYBILLENTRY b on b.fid=a.fid left join T_AP_PAYBILLENTRY_O c on c.FENTRYID=b.FENTRYID LEFT JOIN ( select FSRCBILLID,FSRCROWID,sum(FCURWRITTENOFFAMOUNT) FCURWRITTENOFFAMOUNT from T_AP_PAYMATCHLOGENTRY where FSOURCEFROMID='AP_PAYBILL' group by FSRCBILLID,FSRCROWID )d ON d.FSRCBILLID=B.FID AND d.FSRCROWID=B.FENTRYID where c.FENTRYID is null
b.5 收/付款单的预收/付已核销金额有值,导致其不能与应收/付单自动核销。
如果是预收业务,则检查表T_SAL_ORDERPLANENTRY的FPREMATCHAMOUNTFOR。
如果是采购订单选择预付单,则检查表T_AP_ASSPURCHASEORDER的FPREMATCHAMOUNTFOR,如果是预付单选择采购订单,则检查表T_PUR_POORDERFIN的FPREMATCHAMOUNTFOR,如果是采购订单下推付款申请下推付款单,则检查表T_AP_PAYBILLSRCENTRY的FPREMATCHAMOUNTFOR。
b.6 产品问题。销售订单走的预收流程,先做预收单,在业务应收单审核后预收和应收自动核销,后续业务应收再下推发票,若是产生负数调整单且负数调整单没有核销的话,后边再做的预收单都会核销不了了。该问题后续优化,现在可以暂时将应收单和负数应收调整单手工核销,则后边再做的新的预收单都会自动核销,历史的预收单也需要做手工匹配核销。
b.7 应收/付单上的订单分录行内码或者订单单号是否正确,若不正确也可能导致不能自动核销。
b.8 检查应收/付款管理参数中的 【收款项目相同时,应收单与收款单(预收)自动核销】是否被取消勾选了。
c. 其他应收单下推收款单未自动核销或核销错乱或审核报错。
可能是配置了其他应收单下推收款单携带其他应收单明细页签的字段,详情可参考帖子:其他应收单下推收款单为何不能携带单据体字段:https://vip.kingdee.com/article/169123221387135488?fromAction=POST_ARTICLE。
d. 应收/付单下推收/付款单,收/付款单审核后未自动核销。
d.1 检查收/付款单的收付款用途是否勾选了计入往来。
d.2 检查业务流程是否正确,例如应收单下推的收款单,收款用途不能是预收款。
d.3 检查收付款单明细和源单明细的物料是否匹配,如源单明细无物料但是明细有物料或者源单明细和明细的物料不一致,也会导致不能自动核销的问题。
d.4 检查是否在下游收/付款单审核的情况下,反审核过上游应收/付单,反审核上游单据时会自动删除与收/付款单的核销记录,并且由于核销是在收/付款单审核的时候才触发的,故在重新审核了应收/付单也不会产生核销记录,表现出来就像收/付款单审核后未自动核销一样。
5、SqlDataRecord枚举中没有记录。要发送不包含行的table-valued parameter,请对该值改用null引用。
此报错常见于财务应收/付单审核时,常见的异常原因有以下2点:
a.1 检查暂估应收/付单或者财务应收/付单的业务类型是否不正确。单据上的业务类型应该与【单据类型】→【参数设置】中的业务类型保持一致,为空或者由于其他原因携带了不正确的业务类型都会引发报错,确认后修复业务类型字段即可。
a.2 检查产品版本。7.2.856.1版本存在以下问题:手工新增应付单,勾选了【先到票后入库】后保存单据报错:SqlDataRecord枚举中没有记录。要发送不包含行的table_valued parameter,将对该值引用null引用。从2018年8月24日补丁PT126828[7.2.877.3]已解决
6、反审核过程中出现不可预见的否发性异常。
此报错常见于收/付款单或者收/付款退款单审核或反审核时,可以按照如下步骤排查:
a.1 查看反审核报错的单据,是否存在核销记录(包括收/付款核销记录和开票核销记录)。
a.2 查看核销记录中与该单据核销的对方单据,是否在系统中还存在。
a.3 若检查了步骤a.2后,单据是存在的,则继续检查该单据行的付款用途是否是计入往来。
建议修复方法如下:
--若检查出来是参与核销的单据在系统中已经不存在了,则需要删除对应的核销记录,然后修复单据上的核销字段。(以应收收款核销为例) --1、备份数据表 select * into T_AR_RECMACTHLOG_bak_20210411 from T_AR_RECMACTHLOG; select * into T_AR_RECMACTHLOGENTRY_bak_20210411 from T_AR_RECMACTHLOGENTRY; --2、删除应收收款核销记录 select * from T_AR_RECMACTHLOG where fid=100001 select * from T_AR_RECMACTHLOGENTRY where fid=100001 --3、修复收款单的核销字段 update A set FWRITTENOFFSTATUS='A' from T_AR_RECEIVEBILL A left join T_AR_RECEIVEBILLENTRY B on B.FID=A.FID where A.FBILLNO='SKD00000003'; --输入单据编号 update B set FWRITTENOFFSTATUS='A',FWRITTENOFFAMOUNTFOR=0,FREFUNDAMOUNT=0 from T_AR_RECEIVEBILL A left join T_AR_RECEIVEBILLENTRY B on B.FID=A.FID where A.FBILLNO='SKD00000003'; --输入单据编号 --若检查出来是参数核销的单据在系统中还存在,但是单据上的收付款用途是不计入往来单,则需要将收付款用途上的计入往来勾选上,然后再反审核单据即可。 --1、备份数据表 select * into T_CN_RECPAYPURPOSE_bak_20210411 from T_CN_RECPAYPURPOSE; --2、修改计入往来为是 update A set FFINMANEGEMENT=1 from T_CN_RECPAYPURPOSE A where FNUMBER='test' --输入收付款用途的编码
7、SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
此报错常见于财务单审核时,常见的异常原因有以下2点:
a. 暂估单计划页签的到期日没有值。
b. 应收/付单单据头添加了自定义的日期字段,在应收/付暂估手工核销字段中配置了该字段,报错的财务单,是由于其上游的暂估单上该日期字段没有值,如果现在不想做单报错,可以后台补录应收/付单的该自定义日期字段,或者取消应收/付暂估手工核销字段中有关该字段的配置。
三、核销字段修复参考脚本
附件提供了应收收款核销字段和应付付款核销字段的检查和修复脚本,可以参考,在使用脚本修复数据前,请注意做好账套或者数据表的备份。
核销字段检查.rar(6.57KB)
推荐阅读