销售发票携带应收单单据头字段SQL语句参考原创
金蝶云社区-jessie_w
jessie_w
61人赞赏了该文章 599次浏览 未经作者许可,禁止转载编辑于2024年11月21日 19:56:13
summary-icon摘要由AI智能服务提供

本文介绍了销售发票新增字段时,历史单据该字段的数据库更新方法。文中提到,SQL SERVER数据库需通过_LK表关联上下游单据,并详细说明了_LK表中重要字段的含义。同时,给出了销售发票明细携带应收单单据头字段的SQL语句示例,并提醒了分录合并更新时可能出现的字段长度问题。

业务场景:销售发票新增字段,历史单据的该字段需要进行数据库更新

适用于销售发票新增字段在明细,应收单字段在单据头,且SQL SERVER数据库

如下SQL语句仅供参考!!!更新前建议做全表备份!!!


语句核心:

上下游单据通过下游单据的_LK表进行关联,下游单据的_LK表名可通过BOS-单据-单据关联配置-关联表名得到。

重点需要说明下LK表中几个重要字段的含义(几乎所有关联关系表这几个字段含义都一样):

LK表中的FSBILLID代表上游单据的单据头内码,FSID代表上游单据分录行内码,

FSTABLENAME代表来源表名,FRULEID代表单据转换规则内码,FENTRYID代表下游单据的分录行内码。


注释:销售普通发票和销售增值税专用发票共用有一个数据表,可通过单据头的FFORMID字段来区分是普票还是专票

值为IV_SALESOC为普票,IV_SALESIC为专票


携带明细字段请参考:应收单新增字段,历史数据更新的SQL语句参考


示例:销售发票明细源单编号携带应收单单据头编号

明细一对一下推情况:

--销售普通发票明细携带应收单单据头字段
select a.fbillno 销售发票单据编号,b.fseq 发票明细序号,e.fbillno 应收单号,d.fseq 应收单明细序号,b.fsrcbillno 发票明细字段,e.fbillno 应收单单据头字段
--update b set b.fsrcbillno=e.fbillno
from t_iv_salesic a
left join t_iv_salesicentry b on a.fid=b.fid
inner join t_iv_salesicentry_lk c on c.fentryid=b.fentryid and fstablename='t_AR_receivableEntry'
left join t_ar_receivableentry d on c.fsid=d.fentryid and c.fsbillid=d.fid
left join t_ar_receivable e on d.fid=e.fid
where a.fformid='IV_SALESOC' and b.fsrcbillno<>e.fbillno 

--销售增值税专用发票明细携带应收单单据头字段
select a.fbillno 销售发票单据编号,b.fseq 发票明细序号,e.fbillno 应收单号,d.fseq 应收单明细序号,b.fsrcbillno 发票明细字段,e.fbillno 应收单单据头字段
--update b set b.fsrcbillno=e.fbillno
from t_iv_salesic a
left join t_iv_salesicentry b on a.fid=b.fid
inner join t_iv_salesicentry_lk c on c.fentryid=b.fentryid and fstablename='t_AR_receivableEntry'
left join t_ar_receivableentry d on c.fsid=d.fentryid and c.fsbillid=d.fid
left join t_ar_receivable e on d.fid=e.fid
where a.fformid='IV_SALESIC' and b.fsrcbillno<>e.fbillno


存在分录合并下推情况的:

select a.fbillno 销售发票单据编号,b.fseq 发票明细序号,b.fentryid,b.fsrcbillno 发票源单编号,c.arbillno 应收单号
--update b set b.fsrcbillno=c.arbillno
from t_iv_salesic a
inner join t_iv_salesicentry b on a.fid=b.fid
inner join (
	select i.fentryid,stuff((select distinct ','+ t1.fbillno 
		from t_iv_salesicentry_lk t 
		inner join t_ar_receivable t1 on t.fsbillid=t1.fid and t.fstablename='t_AR_receivableEntry'
		where t.fentryid=i.fentryid
		order by ','+ t1.fbillno desc
		for xml path('')), 1, 1, '' ) arbillno
	from t_iv_salesicentry i
) c on b.fentryid=c.fentryid
where b.fsrcbilltypeid='AR_receivable' and b.fsrcbillno<>c.arbillno


注意:分录合并下更新如出现截断字符串报错则可能是源单编号字段长度不足,需放大数据库字段长度,BOS也同步修改字段编辑长度。

EXEC p_AlterColumn 't_iv_salesicentry', 'fsrcbillno', 'nvarchar(300)', 'not null', '0100', '';


图标赞 61
61人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!