本文介绍了在金蝶K3系统中补充应付单钩稽日志的方法,分为两种情况处理:无钩稽日志或钩稽日志不完整。通过BOS平台新增“生成钩稽日志”按钮,并执行相关SQL脚本修改应付单和钩稽日志数据,以确保数据正确性和系统一致性。同时,文中还详细说明了在不同业务场景下的具体操作步骤和注意事项,最后强调了在确认补充正确后删除BOS扩展层以恢复原状。
使用背景
1)钩稽日志正常情况是采购入库单/采购退料单下推应付单,应付单审核后自动生成,由于各种原因,历史或本期单据没有生成钩稽日志的情况,可参考以下方法补充钩稽日志。
2)分以下两种情况来处理:应付单没有任何钩稽日志,应付单的钩稽日志不完整,操作步骤的差异见第二步。
3)使用下列方法补充钩稽日志之前需将原来未生成钩稽日志的原因找到,如单据存在数据异常的情况,需修改正确,未生成钩稽日志的原因总结与分析:https://vip.kingdee.com/article/431739049699950592?productLineId=1&lang=zh-CN
第一步:BOS-应付单,新增按钮-生成钩稽日志
1、在应用服务器(即注册管理中心的电脑,公有云用户则本地部署一个同版本的环境)登录bos
2、打开应付单,新扩展一层,在菜单集合或者列表菜单新建按钮【生成钩稽日志】设置如下
区别:在菜单集合设置,需要打开应付单才能看到新增的按钮。
在列表菜单设置,可以在应付单列表看到新增的按钮。如果涉及到的应付单较多,建议在列表菜单新增可多选单据生成钩稽(列表菜单费用应付单不适用)
4、注册python脚本,确定保存扩展即可
def OnPreparePropertys(e): e.FieldKeys.Add("FSOURCETYPE"); e.FieldKeys.Add("FPAYORGID");
第二步:打开应付单,点击按钮【生成勾稽日志】即可
情况1:应付单没有任何勾稽日志的情况下
应付单的业务日期必须在当前存货本期,此按钮才生效,不在本期需后台修改
(共有云用户,可在天梯执行脚本,天梯操作指南:https://ops.kdcloud.com/service?id=38f2f9d0ffea11eb94a7515db7782e65&productId=1bb40a1839f636c80e04551a37f6ba78)
参考脚本和步骤如下:
步骤1: ----备份表 SELECT * INTO T_AP_PAYABLE_SQLBAK_20230321 FROM T_AP_PAYABLE ----修改应付单的业务日期到当前期间 UPDATE T_AP_PAYABLE SET FDATE='2022-08-25 00:00:00.000' --按实际情况填写当期期间任意日期 WHERE FBILLNO='应付单单据编号'
步骤2: ----生成勾稽日志后,把应付单的业务日期还原回去 UPDATE A SET A.FDATE=B.FDATE FROM T_AP_PAYABLE A JOIN T_AP_PAYABLE_SQLBAK_20230321 B ON A.FID=B.FID WHERE FBILLNO='应付单单据编号'
步骤3:3.1)生成的勾稽日志是在本期,如果只是为了对账平衡,可忽略。 3.2)如果是为了入库单取勾稽成本,或者后续下推发票可正常生成成本调整单,则需要修改勾稽日志的勾稽期间以及单据体应付单的日期跟应付单一致。(语句如下) ----修改生成的勾稽日志单据头年份期间跟应付单一致 UPDATE T_HS_PURHOOKLOG SET FYEAR=2022,--年 FPERIOD=8 --期间 WHERE FID=114907 --勾稽日志序号 ----修改勾稽日志单据体财务日期 UPDATE B SET FBILLFINDATE='2022-08-25 00:00:00.000' FROM T_HS_PURHOOKLOG A JOIN T_HS_PURHOOKLOGENTRY B ON A.FID=B.FID WHERE A. FID=114907 --勾稽日志序号 AND FHOOKEDBILLNO='应付单单据编号'
情况2:采购入库单和委外入库单合并下推到同一张应付单,应付单的钩稽日志里只有采购入库单或者只有委外入库单与应付单勾稽的情况
需要补充缺失的勾稽日志,操作步骤如下:
步骤1:查询业务类型是标准采购和委外采购的采购入库单合并下推到同一张应付单的情况 SELECT T.FID,T.FBILLNO 应付单编号,T.FDATE 应付单的业务日期,T.FINSTOCKBUSTYPE 应付单的入库单业务类型,T.FSETACCOUNTTYPE 立账类型,T.FDOCUMENTSTATUS 单据状态,COUNT( DISTINCT P.FBUSINESSTYPE ) C ,B= CASE WHEN FINSTOCKBUSTYPE ='WW' THEN 'CG' WHEN FINSTOCKBUSTYPE ='CG' THEN 'WW' END FROM T_AP_PAYABLE T INNER JOIN T_AP_PAYABLEENTRY TE ON T.FID=TE.FID INNER JOIN T_AP_PAYABLE_LK TK ON TE.FENTRYID =TK.FENTRYID AND TK.FSTABLENAME ='T_STK_INSTOCKENTRY' INNER JOIN (SELECT FBILLNO ,FDATE ,FBUSINESSTYPE ,T.FID,FENTRYID,FSEQ FROM T_STK_INSTOCK T INNER JOIN T_STK_INSTOCKENTRY TE ON T.FID=TE.FID ) P ON P.FID=TK.FSBILLID AND P.FENTRYID =TK.FSID GROUP BY T.FID,T.FBILLNO ,T.FDATE ,T.FINSTOCKBUSTYPE,T.FSETACCOUNTTYPE,T.FDOCUMENTSTATUS HAVING COUNT(DISTINCT P.FBUSINESSTYPE )<>1
步骤2: ---2.1)将上述查询的应付单存在中间表T_AP_PAYABLE_INSTOCKBUSTYPE SELECT T.FID,T.FBILLNO 应付单编号,T.FDATE 应付单的业务日期,T.FINSTOCKBUSTYPE 应付单的入库单业务类型,T.FSETACCOUNTTYPE 立账类型,T.FDOCUMENTSTATUS 单据状态,COUNT( DISTINCT P.FBUSINESSTYPE ) C ,B= CASE WHEN FINSTOCKBUSTYPE ='WW' THEN 'CG' WHEN FINSTOCKBUSTYPE ='CG' THEN 'WW' END INTO T_AP_PAYABLE_INSTOCKBUSTYPE FROM T_AP_PAYABLE T INNER JOIN T_AP_PAYABLEENTRY TE ON T.FID=TE.FID INNER JOIN T_AP_PAYABLE_LK TK ON TE.FENTRYID =TK.FENTRYID AND TK.FSTABLENAME ='T_STK_INSTOCKENTRY' INNER JOIN (SELECT FBILLNO ,FDATE ,FBUSINESSTYPE ,T.FID,FENTRYID,FSEQ FROM T_STK_INSTOCK T INNER JOIN T_STK_INSTOCKENTRY TE ON T.FID=TE.FID ) P ON P.FID=TK.FSBILLID AND P.FENTRYID =TK.FSID GROUP BY T.FID,T.FBILLNO ,T.FDATE ,T.FINSTOCKBUSTYPE,T.FSETACCOUNTTYPE,T.FDOCUMENTSTATUS HAVING COUNT(DISTINCT P.FBUSINESSTYPE )<>1 ---2.2)备份表 SELECT * INTO T_AP_PAYABLE_SQLBAK_20230321 FROM T_AP_PAYABLE ---2.3)将应付单的“入库单业务类型”改成没有生成钩稽日志的入库单业务类型 UPDATE A SET FINSTOCKBUSTYPE=B.B FROM T_AP_PAYABLE A INNER JOIN T_AP_PAYABLE_INSTOCKBUSTYPE B ON A.FID=B.FID
步骤3:在客户端的应付单列表或者打开应付单,点击新增的按钮触发生成钩稽日志,具体见第一步在BOS应付单的配置过程。 按钮点击后需要等待一段时间,才能在【钩稽日志查询】刷新到新产生的钩稽日志。
步骤4:如果存在应付单的业务日期是存货以前期间,但是新生成的钩稽日志的“钩稽年度、钩稽期间”是存货现在期间的情况, 需要执行下方语句,将钩稽日志的“钩稽年度、钩稽期间”改到应付单的业务日期对应会计日历的年期。 根据核算组织的会计政策,找到所使用的会计日历。 ---将新产生的钩稽日志的会计年期改到应付单的业务日志所在的会计期间 UPDATE T SET FYEAR=B.FYEAR,FPERIOD=B.FPERIOD --SELECT T.FID,T.FYEAR ,T.FPERIOD ,FDATE ,TE.FBILLTYPEID ,TE.FBILLFINDATE ,TE.FHOOKEDBILLNO, B.FYEAR FYEARRL,B.FPERIOD FPERIODRL FROM T_HS_PURHOOKLOG T INNER JOIN T_HS_PURHOOKLOGENTRY TE ON T.FID=TE.FID LEFT JOIN T_BD_ACCOUNTPERIOD B ON TE.FBILLFINDATE BETWEEN B.FPERIODSTARTDATE AND B.FPERIODENDDATE LEFT JOIN T_BD_ACCOUNTCALENDAR C ON B.FID =C.FID --会计日历 WHERE TE.FIBTAG ='0' AND T.FYEAR*100+T.FPERIOD <> B.FYEAR*100+B.FPERIOD AND FDATE >'替换为操作的时间比如2023-03-21' AND C.FNUMBER ='替换为会计日历编码'
步骤5:还原应付单的“入库单业务类型” UPDATE A SET FINSTOCKBUSTYPE =B.FINSTOCKBUSTYPE FROM T_AP_PAYABLE A INNER JOIN T_AP_PAYABLE_SQLBAK_20230321 B ON A.FID=B.FID WHERE A.FINSTOCKBUSTYPE <>B.FINSTOCKBUSTYPE
第三步:确认钩稽日志补充正确后,将BOS-应付单添加了按钮的扩展层删掉,恢复原状。
推荐阅读