金蝶K3 SQL报表系列-供应商应付/预付账款明细表

、创建供应商应付预付账款明细总表存储过程:sp_getAccount_detail,代码如下:

 

 
  1. create procedure [dbo].[sp_getAccount_detail]

  2. @StartYear int,

  3. @StartPeriod int,

  4. @EndYear int,

  5. @EndPeriod int,

  6. @FAcctNumber nvarchar(20),

  7. @FItemNumber nvarchar(200)

  8. as

  9. set nocount on

  10.  
  11.  
  12. declare @curYear int

  13. declare @curPeriod int

  14.  
  15. select @curYear=FValue from t_SystemProfile where Fkey='CurrentYear' and FCategory='GL'

  16. select @curPeriod=FValue from t_SystemProfile where Fkey='CurrentPeriod' and FCategory='GL'

  17.  
  18.  
  19.  
  20. create table #report_sum

  21. (

  22. FID int identity(1,1),

  23. FSuppID int,

  24. FAcctountID int,

  25. FDC int,

  26. FIndex int,

  27. FYear int,

  28. FPeriod int,

  29. FDate datetime,

  30. FTrnasDate datetime,

  31. FVoucherID int,

  32. FExplanation nvarchar(1000),

  33. FDebit decimal(21,10),

  34. FCredit decimal(21,10),

  35. FEndBalance decimal(21,10)

  36. )

  37.  
  38. insert into #report_sum

  39. (FSuppID,FAcctountID,FDC,FIndex,FYear,FPeriod,FEndBalance)

  40. select

  41. F8,u1.FAccountID,t3.FDC,-1,u1.FYear,u1.FPeriod,u1.FBeginBalance*t3.FDC

  42. from t_Balance u1

  43. inner join t_ItemDetail t1 on u1.FDetailID=t1.FDetailID

  44. inner join t_Item t2 on t2.FItemID=t1.F8

  45. inner join t_Account t3 on t3.FAccountID=u1.FAccountID

  46. where u1.FCurrencyID=0

  47. and u1.FYear*12+u1.FPeriod>=@StartYear*12+@StartPeriod

  48. and u1.FYear*12+u1.FPeriod<=@EndYear*12+@EndPeriod

  49. and u1.FYear*12+u1.FPeriod<=@curYear*12+@curPeriod

  50. and t2.FNumber=@FItemNumber

  51. and t3.FNumber like @FAcctNumber

  52. and t3.FDetail=1

  53.  
  54. insert into #report_sum

  55. (FSuppID,FAcctountID,FDC,FIndex,FYear,FPeriod,FEndBalance)

  56. select

  57. F8,u1.FAccountID,t3.FDC,1,u1.FYear,u1.FPeriod,u1.FEndBalance*t3.FDC

  58. from t_Balance u1

  59. inner join t_ItemDetail t1 on u1.FDetailID=t1.FDetailID

  60. inner join t_Item t2 on t2.FItemID=t1.F8

  61. inner join t_Account t3 on t3.FAccountID=u1.FAccountID

  62. where u1.FCurrencyID=0

  63. and u1.FYear*12+u1.FPeriod>=@StartYear*12+@StartPeriod

  64. and u1.FYear*12+u1.FPeriod<@EndYear*12+@EndPeriod

  65. and u1.FYear*12+u1.FPeriod<@curYear*12+@curPeriod

  66. and t2.FNumber=@FItemNumber

  67. and t3.FNumber like @FAcctNumber

  68. and t3.FDetail=1

  69.  
  70. insert into #report_sum

  71. (FSuppID,FAcctountID,FDc,FIndex,FYear,FPeriod,FDate,FTrnasDate,FVoucherID,FExplanation,FDebit,FCredit)

  72. select

  73. F8,t1.FAccountID,t4.FDC,0,u1.FYear,u1.FPeriod,u1.FDate,u1.FTransDate,u1.FVoucherID,t1.FExplanation,

  74. 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

  75. from t_Voucher u1

  76. inner join t_VoucherEntry t1 on u1.FVoucherID=t1.FVoucherID

  77. inner join t_ItemDetail t2 on t2.FDetailID=t1.FDetailID

  78. inner join t_Item t3 on t3.FItemID=t2.F8

  79. inner join t_Account t4 on t4.FAccountID=t1.FAccountID

  80. where u1.FYear*12+u1.FPeriod>=@StartYear*12+@StartPeriod

  81. and u1.FYear*12+u1.FPeriod<=@EndYear*12+@EndPeriod

  82. and t4.FNumber like @FAcctNumber

  83. and t3.FNumber=@FItemNumber

  84. and t4.FDetail=1

  85. order by u1.FYear,u1.FPeriod,u1.Fdate,u1.FVoucherID

  86.  
  87.  
  88. declare @FID int, @Findex int,@FDC int,@FYear int,@FPeriod int,@FDebit decimal(21,10),

  89. @FCredit decimal(21,10),@FEndBalance decimal(21,10),@FCurBanalce decimal(21,10),

  90. @FOldAccountID int,@FCurAccountID int

  91.  
  92. set @FCurBanalce=0

  93. set @FEndBalance=0

  94. set @FOldAccountID=0

  95.  
  96. declare cur_list cursor for

  97. select FAcctountID,FID,FIndex,FDC,FYear,FPeriod,isnull(FDebit,0),isnull(FCredit,0),FEndBalance from #report_sum order by FAcctountID,FYear,FPeriod,FIndex,FID

  98.  
  99. open cur_list

  100.  
  101. fetch next from cur_list

  102. into @FCurAccountID,@FID,@Findex, @FDC,@FYear,@FPeriod,@FDebit,@FCredit,@FEndBalance

  103.  
  104. while @@FETCH_STATUS=0

  105. begin

  106.  
  107. if @FOldAccountID<>@FCurAccountID

  108. begin

  109. set @FCurBanalce=0

  110. set @FOldAccountID=@FCurAccountID

  111.  
  112. end

  113.  
  114.  
  115. if @Findex=-1

  116. begin

  117. set @FCurBanalce=@FEndBalance

  118. end

  119.  
  120. if @Findex=0

  121. begin

  122. set @FCurBanalce=@FCurBanalce+@FDC*@FDebit-@FDC*@FCredit

  123. update u1

  124. set u1.FEndBalance=@FCurBanalce

  125. from #report_sum u1

  126. where u1.FID=@FID

  127. end

  128.  
  129. fetch next from cur_list

  130. into @FCurAccountID,@FID,@Findex, @FDC,@FYear,@FPeriod,@FDebit,@FCredit,@FEndBalance

  131. end

  132. close cur_list

  133. deallocate cur_list

  134.  
  135. select

  136. t4.FNumber 供应商代码,

  137. t4.FName 供应商名称,

  138. u1.FYear 年度,

  139. u1.FPeriod 期间,

  140. t1.FNumber 科目代码,

  141. t1.FName 科目名称,

  142. u1.FDate 凭证日期,

  143. u1.FTrnasDate 业务日期,

  144. t3.FName+'-'+convert(nvarchar(20),t2.FNumber) 凭证字号,

  145. isnull(u1.FExplanation,'')+(case when u1.FIndex=-1 then '期初' when u1.FIndex=1 then '结存' else '' end ) 摘要,

  146. u1.FDebit 借方金额,

  147. u1.FCredit 贷方金额,

  148. u1.FEndBalance 余额

  149. from #report_sum u1

  150. inner join t_account t1 on u1.FAcctountID=t1.FAccountID

  151. left join t_Voucher t2 on t2.FVoucherID=u1.FVoucherID

  152. left join t_VoucherGroup t3 on t3.FGroupID=t2.FGroupID

  153. left join t_Item t4 on t4.FItemID=u1.FSuppID

  154. order by u1.FAcctountID,u1.FYear,u1.FPeriod,u1.FIndex,u1.FID

  155.  
  156. drop table #report_sum


2、创建供应商应付明细账存储过程:sp_getAccount_detail_2202,代码如下:

 

 

 
  1. create procedure [dbo].[sp_getAccount_detail_2202]

  2. @StartYear int,

  3. @StartPeriod int,

  4. @EndYear int,

  5. @EndPeriod int,

  6. @FItemNumber nvarchar(200)

  7. as

  8. begin

  9.  
  10. exec sp_getAccount_detail @StartYear,@StartPeriod,@EndYear,@EndPeriod,'2202%',@FItemNumber

  11.  
  12. end

 

 

3、创建供应商预付明细账存储过程:sp_getAccount_detail_1123,代码如下: 

 
  1. create procedure [dbo].[sp_getAccount_detail_1123]

  2. @StartYear int,

  3. @StartPeriod int,

  4. @EndYear int,

  5. @EndPeriod int,

  6. @FItemNumber nvarchar(200)

  7. as

  8. begin

  9.  
  10. exec sp_getAccount_detail @StartYear,@StartPeriod,@EndYear,@EndPeriod,'1123%',@FItemNumber

  11.  
  12. end

 

4、K3查询分析工具先创建如下SQL关键字:

关键字  标题  数据类型  数据来源  字段  是否允许录入
*StartYear*  开始年度  数字型  手工录入  无  允许录入
*StartPeriod*  开始期间  数字型  手工录入  无  允许录入
#EndYear#  截止年度  数字型  手工录入  无  允许录入
#EndPeriod#  截止期间  数字型  手工录入  无  允许录入
@SuppNumber@  供应商代码  字符串  供应商  代码 允许录入

5、K3查询分析工具创建供应商应付账款明细表,sql语句为:

exec sp_getAccount_detail_2202 *StartYear*,*StartPeriod*,#EndYear#,#EndPeriod#,'@SuppNumber@'




6、K3查询分析工具创建供应商预付账款明细表,sql语句为: 

exec sp_getAccount_detail_1123 *StartYear*,*StartPeriod*,#EndYear#,#EndPeriod#,'@SuppNumber@'





开发完毕。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值