金蝶K3 SQL报表系列-供应商应付/预付账款明细表
生活随笔
收集整理的這篇文章主要介紹了
金蝶K3 SQL报表系列-供应商应付/预付账款明细表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、創建供應商應付預付賬款明細總表存儲過程:sp_getAccount_detail,代碼如下:
create procedure [dbo].[sp_getAccount_detail]@StartYear int,@StartPeriod int,@EndYear int,@EndPeriod int,@FAcctNumber nvarchar(20),@FItemNumber nvarchar(200) as set nocount ondeclare @curYear int declare @curPeriod intselect @curYear=FValue from t_SystemProfile where Fkey='CurrentYear' and FCategory='GL' select @curPeriod=FValue from t_SystemProfile where Fkey='CurrentPeriod' and FCategory='GL'create table #report_sum ( FID int identity(1,1), FSuppID int, FAcctountID int, FDC int, FIndex int, FYear int, FPeriod int, FDate datetime, FTrnasDate datetime, FVoucherID int, FExplanation nvarchar(1000), FDebit decimal(21,10), FCredit decimal(21,10), FEndBalance decimal(21,10) )insert into #report_sum (FSuppID,FAcctountID,FDC,FIndex,FYear,FPeriod,FEndBalance) select F8,u1.FAccountID,t3.FDC,-1,u1.FYear,u1.FPeriod,u1.FBeginBalance*t3.FDC from t_Balance u1 inner join t_ItemDetail t1 on u1.FDetailID=t1.FDetailID inner join t_Item t2 on t2.FItemID=t1.F8 inner join t_Account t3 on t3.FAccountID=u1.FAccountID where u1.FCurrencyID=0 and u1.FYear*12+u1.FPeriod>=@StartYear*12+@StartPeriod and u1.FYear*12+u1.FPeriod<=@EndYear*12+@EndPeriod and u1.FYear*12+u1.FPeriod<=@curYear*12+@curPeriod and t2.FNumber=@FItemNumber and t3.FNumber like @FAcctNumber and t3.FDetail=1insert into #report_sum (FSuppID,FAcctountID,FDC,FIndex,FYear,FPeriod,FEndBalance) select F8,u1.FAccountID,t3.FDC,1,u1.FYear,u1.FPeriod,u1.FEndBalance*t3.FDC from t_Balance u1 inner join t_ItemDetail t1 on u1.FDetailID=t1.FDetailID inner join t_Item t2 on t2.FItemID=t1.F8 inner join t_Account t3 on t3.FAccountID=u1.FAccountID where u1.FCurrencyID=0 and u1.FYear*12+u1.FPeriod>=@StartYear*12+@StartPeriod and u1.FYear*12+u1.FPeriod<@EndYear*12+@EndPeriod and u1.FYear*12+u1.FPeriod<@curYear*12+@curPeriod and t2.FNumber=@FItemNumber and t3.FNumber like @FAcctNumber and t3.FDetail=1insert into #report_sum (FSuppID,FAcctountID,FDc,FIndex,FYear,FPeriod,FDate,FTrnasDate,FVoucherID,FExplanation,FDebit,FCredit) select F8,t1.FAccountID,t4.FDC,0,u1.FYear,u1.FPeriod,u1.FDate,u1.FTransDate,u1.FVoucherID,t1.FExplanation, CASE WHEN t1.FDC=1 THEN t1.FAmount ELSE 0 END as FDebit, CASE WHEN t1.FDC=0 THEN t1.FAmount ELSE 0 END as FCredit from t_Voucher u1 inner join t_VoucherEntry t1 on u1.FVoucherID=t1.FVoucherID inner join t_ItemDetail t2 on t2.FDetailID=t1.FDetailID inner join t_Item t3 on t3.FItemID=t2.F8 inner join t_Account t4 on t4.FAccountID=t1.FAccountID where u1.FYear*12+u1.FPeriod>=@StartYear*12+@StartPeriod and u1.FYear*12+u1.FPeriod<=@EndYear*12+@EndPeriod and t4.FNumber like @FAcctNumberand t3.FNumber=@FItemNumberand t4.FDetail=1 order by u1.FYear,u1.FPeriod,u1.Fdate,u1.FVoucherIDdeclare @FID int, @Findex int,@FDC int,@FYear int,@FPeriod int,@FDebit decimal(21,10), @FCredit decimal(21,10),@FEndBalance decimal(21,10),@FCurBanalce decimal(21,10), @FOldAccountID int,@FCurAccountID intset @FCurBanalce=0 set @FEndBalance=0 set @FOldAccountID=0declare cur_list cursor for select FAcctountID,FID,FIndex,FDC,FYear,FPeriod,isnull(FDebit,0),isnull(FCredit,0),FEndBalance from #report_sum order by FAcctountID,FYear,FPeriod,FIndex,FIDopen cur_listfetch next from cur_list into @FCurAccountID,@FID,@Findex, @FDC,@FYear,@FPeriod,@FDebit,@FCredit,@FEndBalancewhile @@FETCH_STATUS=0 beginif @FOldAccountID<>@FCurAccountIDbeginset @FCurBanalce=0set @FOldAccountID=@FCurAccountIDendif @Findex=-1beginset @FCurBanalce=@FEndBalanceendif @Findex=0beginset @FCurBanalce=@FCurBanalce+@FDC*@FDebit-@FDC*@FCreditupdate u1set u1.FEndBalance=@FCurBanalcefrom #report_sum u1where u1.FID=@FIDendfetch next from cur_listinto @FCurAccountID,@FID,@Findex, @FDC,@FYear,@FPeriod,@FDebit,@FCredit,@FEndBalance end close cur_list deallocate cur_listselect t4.FNumber 供應商代碼, t4.FName 供應商名稱, u1.FYear 年度, u1.FPeriod 期間, t1.FNumber 科目代碼, t1.FName 科目名稱, u1.FDate 憑證日期, u1.FTrnasDate 業務日期, t3.FName+'-'+convert(nvarchar(20),t2.FNumber) 憑證字號, isnull(u1.FExplanation,'')+(case when u1.FIndex=-1 then '期初' when u1.FIndex=1 then '結存' else '' end ) 摘要, u1.FDebit 借方金額, u1.FCredit 貸方金額, u1.FEndBalance 余額 from #report_sum u1 inner join t_account t1 on u1.FAcctountID=t1.FAccountID left join t_Voucher t2 on t2.FVoucherID=u1.FVoucherID left join t_VoucherGroup t3 on t3.FGroupID=t2.FGroupID left join t_Item t4 on t4.FItemID=u1.FSuppID order by u1.FAcctountID,u1.FYear,u1.FPeriod,u1.FIndex,u1.FIDdrop table #report_sum2、創建供應商應付明細賬存儲過程:sp_getAccount_detail_2202,代碼如下: create procedure [dbo].[sp_getAccount_detail_2202]@StartYear int,@StartPeriod int,@EndYear int,@EndPeriod int,@FItemNumber nvarchar(200)asbeginexec sp_getAccount_detail @StartYear,@StartPeriod,@EndYear,@EndPeriod,'2202%',@FItemNumberend
create procedure [dbo].[sp_getAccount_detail_1123]@StartYear int,@StartPeriod int,@EndYear int,@EndPeriod int,@FItemNumber nvarchar(200)asbeginexec sp_getAccount_detail @StartYear,@StartPeriod,@EndYear,@EndPeriod,'1123%',@FItemNumberend
4、K3查詢分析工具先創建如下SQL關鍵字:
關鍵字 ?標題 ?數據類型 ?數據來源 ?字段 ?是否允許錄入
*StartYear* ?開始年度 ?數字型 ?手工錄入 ?無 ?允許錄入
*StartPeriod* ?開始期間 ?數字型 ?手工錄入 ?無 ?允許錄入
#EndYear# ?截止年度 ?數字型 ?手工錄入 ?無 ?允許錄入
#EndPeriod# ?截止期間 ?數字型 ?手工錄入 ?無 ?允許錄入
@SuppNumber@ ?供應商代碼 ?字符串 ?供應商 ?代碼 允許錄入
5、K3查詢分析工具創建供應商應付賬款明細表,sql語句為:
6、K3查詢分析工具創建供應商預付賬款明細表,sql語句為:
exec sp_getAccount_detail_1123 *StartYear*,*StartPeriod*,#EndYear#,#EndPeriod#,'@SuppNumber@'
開發完畢。
總結
以上是生活随笔為你收集整理的金蝶K3 SQL报表系列-供应商应付/预付账款明细表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真机连接虚拟机教程
- 下一篇: 单细胞文献学习(part6)--Fore