采购发票反写单据头字段回应付单,历史数据处理SQL参考
业务场景:
自定义反写规则:应付单下推采购发票后,采购发票反写单据头字段回应付单自定义字段
适用于SQL SERVER数据库,ORACLE数据库需要适当修改语句。
销售发票反写应收单请参考:销售发票反写发票号至应收单,历史数据处理SQL参考
如下SQL语句仅供参考!!!更新前建议做全表备份!!!
应付单自定义字段在明细示例:
--场景1:有分批下推的情况 需要拼接发票号码,按逗号,拼接 SELECT A.FBILLNO 应付单号,A.FSETACCOUNTTYPE,B.FENTRYID 应付明细内码,ISNULL(C.FIVNUMBERNEW,''),C.* --UPDATE B SET B.F_BGP_TEXT=ISNULL(C.FIVNUMBERNEW,'') FROM T_AP_PAYABLE A LEFT JOIN T_AP_PAYABLEENTRY B ON A.FID=B.FID INNER JOIN ( SELECT A.FBILLNO 应付单号,B.FID,B.FENTRYID,STUFF((SELECT ',' + CC.FIVNUMBER FROM T_IV_PURCHASEICENTRY_LK AA LEFT JOIN T_IV_PURCHASEICENTRY BB ON AA.FENTRYID=BB.FENTRYID LEFT JOIN T_IV_PURCHASEIC_O CC ON BB.FID=CC.FID WHERE AA.FSTABLENAME='T_AP_PAYABLEENTRY' AND AA.FSID = B.FENTRYID AND AA.FSBILLID=B.FID AND CC.FIVNUMBER<>'' FOR XML PATH('') ), 1, 1, '' ) AS FIVNUMBERNEW FROM T_AP_PAYABLE A INNER JOIN T_AP_PAYABLEENTRY B ON A.FID=B.FID GROUP BY A.FBILLNO,B.FID,B.FENTRYID ) C ON A.FID=C.FID AND B.FENTRYID=C.FENTRYID WHERE ( B.F_BGP_TEXT IS NULL OR ISNULL(C.FIVNUMBERNEW,'')<>'' AND B.F_BGP_TEXT<>ISNULL(C.FIVNUMBERNEW,'')) --AND LEN(ISNULL(C.FIVNUMBERNEW,''))<=50 --场景2:反写最后一张发票的发票号码 SELECT A.FBILLNO 应付单号,B.FENTRYID 应付明细内码,B.FSEQ 明细序号,C.FBILLNO 发票编号,FIVNUMBER 发票号码 --UPDATE B SET B.F_BGP_TEXT=C.FIVNUMBER FROM T_AP_PAYABLE A LEFT JOIN T_AP_PAYABLEENTRY B ON A.FID=B.FID INNER JOIN ( SELECT T1.FSID,T1.FSBILLID,T3.FBILLNO,T4.FIVNUMBER,ROW_NUMBER() OVER(PARTITION BY T1.FSID ORDER BY T3.FDATE DESC,T1.FENTRYID DESC) RN FROM T_IV_PURCHASEICENTRY_LK T1 LEFT JOIN T_IV_PURCHASEICENTRY T2 ON T1.FENTRYID=T2.FENTRYID LEFT JOIN T_IV_PURCHASEIC T3 ON T2.FID=T3.FID LEFT JOIN T_IV_PURCHASEIC_O T4 ON T3.FID=T4.FID WHERE T3.FCANCELSTATUS<>'B' AND T3.FDOCUMENTSTATUS<>'Z' AND T1.FSTABLENAME='T_AP_PAYABLEENTRY' ) C ON B.FENTRYID=C.FSID WHERE C.RN=1 AND ( B.F_BGP_TEXT IS NULL OR C.FIVNUMBER<>'' AND B.F_BGP_TEXT<>C.FIVNUMBER )
应付单字段在单据头字段示例:
--反写最后一张发票的单据编号回应付单单据头自定义字段 SELECT A.FBILLNO 应付单号,A.FID,A.FDATE 业务日期,A.F_ORA_TEXT,C.FBILLNO 发票编号,C.* --UPDATE A SET A.F_ORA_TEXT=C.FBILLNO FROM T_AP_PAYABLE A INNER JOIN ( SELECT T1.FSBILLID,T3.FBILLNO,ROW_NUMBER() OVER(PARTITION BY T1.FSBILLID ORDER BY T3.FDATE DESC,T1.FENTRYID DESC) RN FROM T_IV_PURCHASEICENTRY_LK T1 LEFT JOIN T_IV_PURCHASEICENTRY T2 ON T1.FENTRYID=T2.FENTRYID LEFT JOIN T_IV_PURCHASEIC T3 ON T2.FID=T3.FID LEFT JOIN T_IV_PURCHASEIC_O T4 ON T3.FID=T4.FID WHERE T3.FCANCELSTATUS<>'B' AND T3.FDOCUMENTSTATUS<>'Z' AND T1.FSTABLENAME='T_AP_PAYABLEENTRY' ) C ON A.FID=C.FSBILLID WHERE C.RN=1 AND ( A.F_ORA_TEXT IS NULL OR C.FBILLNO<>A.F_ORA_TEXT )
默认的文本字段长度为50,在更新过程中可能出现长度不够,此时就需要把自定义字段长度改大一些。数据库和BOS同步修改,数据库修改脚本如下:
--如拼接后的发票号字段超过现有自定义字段的长度,即更新时出现截断二进制报错,则需要扩大自定义字段长度 EXEC p_AlterColumn 'T_AP_PAYABLEENTRY', '字段名称', 'NVARCHAR(字段长度)', 'NULL', '0100', ''; --示例 EXEC p_AlterColumn 'T_AP_PAYABLEENTRY', 'F_BGP_TEXT', 'NVARCHAR(200)', 'NULL', '0100', '';
采购发票反写单据头字段回应付单,历史数据处理SQL参考
业务场景:自定义反写规则:应付单下推采购发票后,采购发票反写单据头字段回应付单自定义字段适用于SQL SERVER数据库,ORACLE数据库需要...
点击下载文档
本文2024-09-16 18:53:26发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-25041.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章