本文详细描述了暂估核销的参数设置、自动核销和手工核销流程,包括是否启用暂估应收应付、核销参数配置、自动核销的插件配置、异常提示处理及性能优化等内容。文中详细阐述了暂估核销过程中的匹配条件、优先规则、冲回单业务日期设置等用户级参数,以及如何通过自定义字段扩展核销功能。同时,还介绍了暂估单据和财务单据的自动核销和手工核销的具体步骤,包括单据过滤显示、自定义字段在手工核销界面的展示及二开插件的扩展方法。此外,还提供了针对暂估核销性能问题的解决方案和异常提示的处理方法。
1. 暂估核销参数设置
1.1是否启用暂估应收
主控台->财务会计->应收款管理->应收款管理参数->暂估应收冲回模式。
1.2是否启用暂估应付
主控台->财务会计->应付款管理->应付款管理参数->暂估应付冲回模式。
1.3暂估核销参数设置
主控台->财务会计->应收(付)款管理->应收(付)单列表,菜单->业务操作->暂估应收(付)核销,菜单->参数设置。
暂估核销参数设置,是用户级参数设置。
1.3.1匹配条件
可以通过是否勾选标准产品预置的字段来进行手工匹配条件设置,预置的五个字段如下:往来单位类型、往来单位 、物料编码、结算组织、先到票后出(入)库。
往来单位类型、往来单位 、物料编码、结算组织字段默认灰显,可根据需要通过BOS设置放开,再进行勾选配置。
匹配条件的配置适用于手工核销、正负冲销、特殊核销时的匹配条件设置。
1.3.2优先规则
仅针对暂估单据的正负对冲。
不勾选正负暂估是否对冲,不进行正负对冲;
正负暂估是否对冲、正负暂估优先对冲二者同时勾选时,会先进行正负暂估对冲,再进行手工匹配核销;
如果仅勾选正负暂估是否对冲,则先进行手工匹配核销,再进行正负暂估对冲核销。
1.3.3暂估冲回单业务日期
暂估核销过程中,会生成暂估冲回单,暂估冲回单据的日期,可以根据“暂估冲回单业务日期”参数来确定,有三个值可以设置:暂估单据业务日期、财务单据业务日期、系统当前日期。正负冲销生成的冲回单的日期,只能根据暂估单据业务日期或系统当前日期确定。
根据以上参数设置取到冲回单日期后,再用冲回单日期和暂估单据结算组织的启用日期比较,如果冲回单日期小于启用日期,那么冲回单日期为启用日期。
然后,冲回单日期和暂估单据结算组织的结账日期比较,如果冲回单日期小于结账日期,那么冲回单日期为结账日期。
暂估应付冲回单的业务日期,还要判断是否为组织间结算下推或应付单有会计核算体系,如果是:则应付冲回单日期和存货的结账日期比较,如果应付冲回单日期小于存货结账日期,那么应付冲回单日期为存货结账日期;
如果否:则应付冲回单日期和存货的关账日期比较,如果应付冲回单日期小于存货关账日期,那么应付冲回单日期为存货关账日期;
1.3.4字段设置
【选择】:适用于手工核销时,是否按此字段匹配才能进行核销;
【字段名称】:字段的业务名称;
【字段键值】:字段的数据库字段名称,建议在单据增加字段时全部大写,这里也建议大写,保持大小写统一,如果字段名填错,在核销时会提示字段不存在;
【用户定义】:用户新增的字段会自动勾上;非用户定义为系统预设字段;
【字段类型】:数字型,或字符型,或日期型;
【字段位置】:目前只支持表头、表体明细、表体明细其他;
【共享】:是否共享给其他用户,共享的勾选带有“强制”的特点,是强制共享给其他用户;
【来源用户】:设置共享字段的源用户;
【共享指定用户】:为空时,共享给其他所有用户,也可以指定个别几个用户进行共享;
字段设置部分,标准产品提供五个预设字段:数量、币别、采购部门、采购员、创建人。五个预设字段只提供可选择(勾选),可用于手工、正负、特殊核销时的匹配条件。
也可以增加自定义字段作为匹配条件,在字段设置表格中进行增加行、删除行操作即可。增加的字段,用户定义列默认勾选,增加时可以手动输入字段名称、字段键值、字段类型、字段位置等必录项。也可以通过字段键值文本框中的“…”按钮进行选择,选择时只支持选择应收(付)单据头、明细单据体字段。通过选择的字段,会自动带出字段的所有必录信息,无需人为录入。
用户自定义增加的字段,在生成的冲回单时,会自动将原暂估单据上这些字段值同步到冲回单上,而无需选择(勾选)。若勾选选择,则在手工、正负、特殊核销时,会增加勾选字段的值作为匹配条件。
共享、来源用户、共享指定用户这三列,用于设置共享字段。因暂估核销参数设置是用户级参数,为避免用户间重复设置自定义字段,用户间可以共享自定义字段的设置。
如:A用户设置了一个项目号的基础资料自定义字段,并共享给了所有用户,可以仅勾选共享即可;B用户设置了一个文本字段,只共享给A,那么B在勾选共享的同时,要共享指定用户选择A;
1.3.5暂估和财务单汇率差异分离
参数位置,参见1.1章节。
启用“暂估和财务单汇率差异分离”后,如果财务单据和暂估单据币别相同,将会写暂估冲回单上的汇率差异金额值。
不含税金额汇率差异计算方式,应付暂估核销情况下,
当暂估单勾选“税额计入成本”时,
不含税金额汇率差异=本次核销暂估不含税金额原币*(财务单据汇率-暂估单据汇率);
当暂估单未勾选“税额计入成本”时,
不含税金额汇率差异=本次核销暂估价税合计原币*(财务单据汇率-暂估单据汇率);
应收暂估核销情况下,
不含税金额汇率差异=本次核销暂估价税合计原币*(财务单据汇率-暂估单据汇率);
价税合计汇率差异=本次核销暂估价税合计原币*(财务单据汇率-暂估单据汇率);
启用“暂估和财务单汇率差异分离”后,不含税差异金额、价税合计差异金额扣减掉汇率差异金额;
2.暂估自动核销
2.1核销参数设置对自动核销的影响
自动核销生成的冲回单的业务日期,根据1.3.3章节设置生成;冲回单的自定义字段值同步,根据1.3.4章节自定义字段的设置自动同步;
2.2暂估下推(单据转换)财务限制
暂估下推财务,标准产品支持1000张暂估单据合并下推一张财务单据。
如果性能优异,可以放开上图中的下推限制插件。不受1000张暂估单据下推一张财务的限制。
或者改变1000张的值为2000,允许2000张暂估合并下推一张财务,参考脚本如下:
delete from T_BAS_SYSTEMPROFILE where FCATEGORY='AR' and FKEY='HookMergeToFinBillCount';
insert into T_BAS_SYSTEMPROFILE(FCATEGORY,FKEY,Fvalue) values('AR','HookMergeToFinBillCount','2000');
--适用于应收、应付暂估合并下推财务
财务下推负财务,只允许整单下推,因为退换票的核销只支持整单核销。不允许取消。检查插件如下图:
2.3自动核销插件
自动核销的核销插件位于应付单据的审核按钮中。
暂估单据下推财务单据,审核财务单据时自动核销插件是:
Kingdee.K3.FIN.AP.App.ServicePlugIn.PayableBill.ServiceAuditHookFinPlugIn;
暂估推财务,财务再推负财务(退换票),审核负财务时自动核销插件是:
Kingdee.K3.FIN.AP.App.ServicePlugIn.PayableBill.ServiceAuditHookFFinPlugIn
由订单统一下推的财务单据(先到票)或暂估单据审核时自动核销插件是:
Kingdee.K3.FIN.AP.App.ServicePlugIn.PayableBill.ServiceAuditHookZtPlugIn
2.4自动反核销插件
自动反核销的核销插件位于应付单据的反审核按钮中。
暂估单据下推财务单据,反审核财务单据时自动反核销插件是:
Kingdee.K3.FIN.AP.App.ServicePlugIn.PayableBill.ServiceUnAuditHookFinPlugIn;
暂估推财务,财务再推负财务(退换票),反审核负财务时自动反核销插件是:
Kingdee.K3.FIN.AP.App.ServicePlugIn.PayableBill.ServiceUnAuditHookFFinPlugIn
由订单统一下推的财务单据(先到票)或暂估单据反审核时自动反核销插件是:
Kingdee.K3.FIN.AP.App.ServicePlugIn.PayableBill.ServiceUnAuditHookZtPlugIn
2.5自动核销二开
可以继承2.2,2.3章节的插件,重写其中的方法:
/// <summary>
/// 财务冲销后处理接口(二开)
/// </summary>
/// <param name="objOpenMatchIDs">开票核销日志ID</param>
public virtual void AfterFinMatch(object objOpenMatchIDs)
{
//
}
根据方法参数提供的开票核销记录序号集合,对核销结果进行干预。
如果需要在过滤界面增加自定义的过滤条件,并对展示数据施加影响,需要重写其中的方法:
/// <summary>
/// 刷新UI数据
/// </summary>
/// <param name="billDirection"></param>
/// <param name="filterPara"></param>
protected virtual void RefreshBillData(string billDirection, FilterParameter filterPara)
{
string dataTable = ServiceHelper.APComonServiceHelper.GetFinMatchDataTableName(this.Context, filterPara);
this.BeforeFillData(dataTable);
string sql = string.Format("select * from {0} ", dataTable);
if (filterPara.SortString.Trim().Length > 0)
{
sql = sql + string.Format(" order by {0} ", filterPara.SortString);
}
DynamicObjectCollection dos1 = BOS.ServiceHelper.DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
FillData(dos1, billDirection, filterPara);
sql = string.Format(@"IF EXISTS (SELECT 1 FROM KSQL_USERTABLES WHERE KSQL_TABNAME = '{0}') DROP TABLE {0};", dataTable);
BOS.ServiceHelper.DBServiceHelper.Execute(this.Context, sql);
}
加入二开的过滤条件,对临时表展示数据进行进一步过滤。
二开插件编译好后,在BOS中,打开应付(收)单据,注册到审核按钮对应位置,勾选上,取消勾选被继承的原有插件,保存应付(收)单据。
然后开始验证,二开结果,验证无误后,再应用到正式环境。
应付开票核销记录,记录了暂估单据明细行信息和本次核销信息,记录了对手方的财务单据明细行信息和本次核销信息。
应付付款核销记录,记录了暂估计划数据和本次付款核销信息,记录了暂估冲回单据计划数据和本次付款核销信息。
应付开票核销记录参考脚本:
select * from t_ap_billingmatchlog t1
inner join t_ap_billingmatchlogentry t2 on t1.fid=t2.fid
--sql.AppendFormat("inner join (select /*+ cardinality(b {0})*/ FID from TABLE(fn_StrSplit(@FID, ',',1)) b) t4 on t1.FID=t4.FID ", logIds.Length);
应付付款核销记录参考脚本:
select * from t_ap_paymatchlog t1
inner join t_ap_paymatchlogentry t2 on t1.fid=t2.fid
--sql.AppendFormat("inner join (select /*+ cardinality(b {0})*/ FID from TABLE(fn_StrSplit(@FID, ',',1)) b) t4 on t1.fbillmatchlogid=t4.FID ", logIds.Length);
2.6自动核销过程中的异常提示问题
2.6.1冲回单明细金额与计划金额不匹配
上图表示,暂估核销过程中,生成的冲回单计划数据没有生成,这种情况一般是明细数据、计划数据中的订单号、订单行号、物料内码不匹配导致。
参考脚本:
select t1.FBILLNO,t2.FMATERIALID,t2.FORDERNUMBER,t2.FORDERENTRYID from T_AP_PAYABLE t1
left join T_AP_PAYABLEENTRY t2 on t1.fid=t2.fid
where t1.FBILLNO='AP00000011'
select t1.FBILLNO,t2.FMATERIALID,t2.FPURCHASEORDERNO,t2.FPURCHASEORDERID from T_AP_PAYABLE t1
left join T_AP_PAYABLEPLAN t2 on t1.fid=t2.fid
where t1.FBILLNO='AP00000011'
上图表示,暂估核销过程中,明细数据是根据原暂估单据生成,金额是几位精度就是几位精度,但计划数量是动态生成,是按币别进行了精度处理。这个情况,一般是暂估单据明细数据的价税合计原币中存在四位小数的金额数据导致。需要后台修复应付单明细价税合计原币、价税合计本位币的金额,保持和币别的精度一致,并同时保证明细价税合计和表头的价税合计相等。
2.6.2字段不存在的提示
这个一般是暂估核销参数设置中的字段设置有误,要检查元数据,和数据后台对应表,字段名是否存在。
2.6.3其他
像这种提示,一般和暂估自动核销无关,多半是审核财务应付单时,进行预付的核销报出来的,要检查应付付款核销的配置是否存在问题。具体参阅:
(1) 核销配置详解 https://vip.kingdee.com/school/3468;
(2) 核销配置说明 https://vip.kingdee.com/article/4451
2.7手工核销配置成自动核销
2.3章节中,由订单统一下推的财务单据(先到票)或暂估单据审核时自动核销,实际上是手工核销,走的是暂估核销参数设置的手工匹配条件+暂估、财务单据明细数据上的订单号+订单行号字段作为自动匹配核销的条件进行核销。
可以根据这个特点,可以将“项目号”+项目行号,或“项目号”+0,带到暂估单据、财务单据上,审核时,这样的暂估、财务单据将会自动核销,不用到手工核销界面进行手工核销。
2.8暂估自动核销的性能问题
暂估应付自动核销,若存在性能问题,首先应考虑取消存货核算的对应组织参数 “应付单与发票产生的差异计入存货成本”(默认勾选,路径:【成本管理】-【存货核算】-【成本管理系统参数】),这样在审核财务应付时,就不自动进行入库勾稽处理。可参考章节5.1暂估应付核销生成成本调整单。
然后可以设置暂估下推财务的行数限制,如下图:
限制单据明细行数,能明显提升性能。
3.暂估手工核销
3.1单据过滤显示
暂估单据可以在手工核销界面显示出来,暂估单据要是审核状态,开票核销状态不能为完全,立账类型为暂估应付(收),计价基本数量和采购(销售)发票基本单位数量不能相等。
参考脚本:
select * from T_AP_PAYABLE t1
inner join T_AP_PAYABLEFIN fin on t1.FID=fin.FID
inner join T_AP_PAYABLEENTRY t2 on t1.fid=t2.fid and t1.FBUSINESSTYPE in ('BZ','CG')
where t1.FSetAccountType='2' and t2.FBASICUNITQTY-t2.FBUYIVBASICQTY<>0 --暂估应付
财务单据可以在手工核销界面显示出来,财务单据要是审核状态,开票核销状态不能为完全,立账类型为财务,计价基本数量减去已开票核销数量不为零,参与暂估核销为真(勾选了参与暂估核销)。
参考脚本:
select * from T_AP_PAYABLE t1
inner join T_AP_PAYABLEFIN fin on t1.FID=fin.FID
inner join T_AP_PAYABLEENTRY t2 on t1.fid=t2.fid and t1.FBUSINESSTYPE in ('BZ','CG')
where t1.FSetAccountType='3' and t1.FISHOOKMATCH='1' and t2.FBASICUNITQTY-t2.FOPENQTY<>0 --财务应付
3.2在手工核销界面展示自定义字段
(1)在第1.3.4章节字段配置中增加字段;
(2)需要在单据【暂估应付手工核销】中,上下列表页签中新增自定义字段,上列表增加字段名时,要加“_D”的后缀,下列表增加字段名时,要加“_C”的后缀,注意除去后缀,要保持字段名同名,如下图:
然后,在【暂估应付手工核销过滤方案】,的显示隐藏列页签中增加自定义字段名,注意此时无需加后缀,如下图:
3.3手工核销二开
可以继承插件Kingdee.K3.FIN.AP.Business.PlugIn.FInMatch.FinMatch,重写其中的方法:
/// <summary>
/// 财务冲销后处理接口(二开)
/// </summary>
/// <param name="objOpenMatchIDs">开票核销日志ID</param>
public virtual void AfterFinMatch(object objOpenMatchIDs)
{
//
}
根据方法参数提供的开票核销记录序号集合,对核销结果进行干预。
二开插件编译好后,在BOS中,打开暂估应付(收)手工核销,注册到对应位置,勾选上,取消勾选被继承的原有插件,保存注册结果。
然后开始验证,二开结果,验证无误后,再应用到正式环境。
4.暂估特殊核销
暂估特殊核销的单据过滤及二开,参考第3章节暂估手工核销相同内容。
暂估特殊核销,只允许单选暂估单据一行进行核销,或单选暂估与财务单据各一行进行核销。是否需要匹配,是根据暂估核销参数设置走,默认匹配和手工核销相同。
5.暂估核销其他情况
5.1暂估应付核销生成成本调整单
请参考《成本调整单相关问题分析及总结》
原文链接:https://vip.kingdee.com/article/13908
暂估核销配置二开说明.docx(1.93MB)
推荐阅读