1 USE [zxerp]
2 GO
3 /****** Object: StoredProcedure [dbo].[Pro_GrossProfitCount] Script Date: 06/26/2014 08:48:10 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 ALTER procedure [dbo].[Pro_GrossProfitCount]
9 @fcomid int,
10 @startrq varchar(10),
11 @endrq varchar(10),
12 @FStockID varchar(20),
13 @FNumber varchar(20),
14 @FItemID varchar(20),
15 @FServiceID varchar(20),
16 @FCompanynumber varchar(20),
17 @FCompanyID varchar(20),
18 @FDeptID varchar(20),
19 @Ftype varchar(10),
20 @Flevel varchar(10)
21 as
22 begin
23 declare @sql varchar(3000)
24 declare @sql1 varchar(2000)
25 declare @sql2 varchar(2000)
26 declare @sql3 varchar(2000)
27 declare @sql4 varchar(2000)
28 -----一级
29 set @sql1='select ''总计'' as category,sum(a.fqty) as fqty,sum(a.famt) as famt,SUM(a.fcost) as fcost,SUM(a.famt-a.fcost) as total
30 into #category
31 from T_bill_detail a,t_bill b,t_item c,T_Item d ,t_item e
32 where a.Fid = b.fid and b.ftype = '''+@Ftype+''' and a.FitemID = c.FItemID and c.FcomID = '''+cast(@fcomid as varchar(4))+''' and b.FDate >='''+@startrq+'''
33 and b.FDate <='''+@endrq+''' and b.FCompanyID = d.FItemID and a.fitemid = e.FItemID '
34
35 ----二级(店级)
36
37 set @sql2='select c.FItemID,1 as sort,'
38 set @sql2=@sql2+''' ''+c.FName as category,sum(a.fqty) as fqty,sum(a.famt) as famt,SUM(a.fcost) as fcost,SUM(a.famt-a.fcost) as total
39 into #StoreLevel
40 from T_bill_detail a,t_bill b,T_Item c,T_Item d ,t_item e
41 where a.Fid = b.fid and b.ftype = '''+@Ftype+''' and b.FCompanyID = c.FItemID and c.FcomID = '''+cast(@fcomid as varchar(4))+''' and b.FDate >='''+@startrq+'''
42 and b.FDate <='''+@endrq+''' and b.FCompanyID = d.FItemID and a.fitemid = e.FItemID '
43
44
45
46 --------三级(日期级)
47 if @Flevel = '2'
48 begin
49 set @sql3='select 2 as sort,'
50 end
51 else
52 begin
53 set @sql3='select c.FItemID,CONVERT(varchar(10), b.FDate, 23) as FDate,2 as sort,'
54 end
55 set @sql3=@sql3+''' ''+CONVERT(varchar(10), b.FDate, 23) as category,sum(a.fqty) as fqty,sum(a.famt) as famt,SUM(a.fcost) as fcost,SUM(a.famt-a.fcost) as total
56 into #RqLevel
57 from T_bill_detail a,t_bill b,T_Item c,T_Item d ,t_item e
58 where a.Fid = b.fid and b.ftype = '''+@Ftype+''' and b.FCompanyID = c.FItemID and c.FItemID in (select FItemID from #StoreLevel)
59 and b.FDate >='''+@startrq+''' and b.FDate <='''+@endrq+''' and b.FCompanyID = d.FItemID and a.fitemid = e.FItemID '
60
61
62
63
64 ------------四级(商品级)
65
66 if @Flevel = '3'
67 begin
68 set @sql4='select 3 as sort,'
69 end
70 else
71 begin
72 set @sql4='select c.FItemID,CONVERT(varchar(10), b.FDate, 23) as FDate,3 as sort,'
73 end
74 set @sql4=@sql4+''' ''+e.Fname as category,sum(a.fqty) as fqty,sum(a.famt) as famt,SUM(a.fcost) as fcost,SUM(a.famt-a.fcost) as total
75 into #GoodsLevel
76 from T_bill_detail a,t_bill b,T_Item c,T_Item d,t_item e
77 where a.Fid = b.fid and b.ftype = '''+@Ftype+''' and b.FCompanyID = c.FItemID and a.fitemid = e.FItemID
78 and b.FDate >='''+@startrq+''' and b.FDate <='''+@endrq+''' and b.FCompanyID = d.FItemID and e.FcomID = '''+cast(@fcomid as varchar(4))+''' '
79 --------------------------------
80 if @FStockID<>'zwc'
81 begin
82 set @sql1=@sql1+' and a.FstockIDin ='''+@FStockID+''' '
83 set @sql2=@sql2+' and a.FstockIDin ='''+@FStockID+''' '
84 set @sql3=@sql3+' and a.FstockIDin ='''+@FStockID+''' '
85 set @sql4=@sql4+' and a.FstockIDin ='''+@FStockID+''' '
86 end
87 if @FNumber<>'zwc'
88 begin
89 set @sql1=@sql1+' and e.FNumber like ''%'+@FNumber+'%'' '
90 set @sql2=@sql2+' and e.FNumber like ''%'+@FNumber+'%'' '
91 set @sql3=@sql3+' and e.FNumber like ''%'+@FNumber+'%'' '
92 set @sql4=@sql4+' and e.FNumber like ''%'+@FNumber+'%'' '
93 end
94 if @FItemID<>'zwc'
95 begin
96 set @sql1=@sql1+' and e.FitemID ='''+@FItemID+''' '
97 set @sql2=@sql2+' and e.FitemID ='''+@FItemID+''' '
98 set @sql3=@sql3+' and e.FitemID ='''+@FItemID+''' '
99 set @sql4=@sql4+' and e.FitemID ='''+@FItemID+''' '
100 end
101 if @FServiceID<>'zwc'
102 begin
103 set @sql1=@sql1+' and b.FServiceID ='''+@FServiceID+''' '
104 set @sql2=@sql2+' and b.FServiceID ='''+@FServiceID+''' '
105 set @sql3=@sql3+' and b.FServiceID ='''+@FServiceID+''' '
106 set @sql4=@sql4+' and b.FServiceID ='''+@FServiceID+''' '
107 end
108 if @FCompanynumber<>'zwc'
109 begin
110 set @sql1=@sql1+' and d.FNumber like ''%'+@FCompanynumber+'%'' '
111 set @sql2=@sql2+' and d.FNumber like ''%'+@FCompanynumber+'%'' '
112 set @sql3=@sql3+' and d.FNumber like ''%'+@FCompanynumber+'%'' '
113 set @sql4=@sql4+' and d.FNumber like ''%'+@FCompanynumber+'%'' '
114 end
115 if @FCompanyID<>'zwc'
116 begin
117 set @sql1=@sql1+' and b.FCompanyID ='''+@FCompanyID+''' '
118 set @sql2=@sql2+' and b.FCompanyID ='''+@FCompanyID+''' '
119 set @sql3=@sql3+' and b.FCompanyID ='''+@FCompanyID+''' '
120 set @sql4=@sql4+' and b.FCompanyID ='''+@FCompanyID+''' '
121 end
122 if @FDeptID<>'zwc'
123 begin
124 set @sql1=@sql1+' and b.FDeptID ='''+@FDeptID+''' '
125 set @sql2=@sql2+' and b.FDeptID ='''+@FDeptID+''' '
126 set @sql3=@sql3+' and b.FDeptID ='''+@FDeptID+''' '
127 set @sql4=@sql4+' and b.FDeptID ='''+@FDeptID+''' '
128 end
129
130 set @sql2=@sql2+' group by c.FItemID,c.fname '
131 if @Flevel = '2'
132 begin
133 set @sql3=@sql3+' group by CONVERT(varchar(10), b.FDate, 23) '
134 end
135 else
136 begin
137 set @sql3=@sql3+' group by c.FItemID,c.fname,CONVERT(varchar(10), b.FDate, 23) '
138 end
139 if @Flevel = '123'
140 begin
141 set @sql4 = @sql4 +' group by CONVERT(varchar(10), b.FDate, 23),c.FItemID,e.FName'
142 end
143 else
144 begin
145 if @Flevel = '3'
146 begin
147 set @sql4 = @sql4 +' group by e.FItemID,e.FName'
148 end
149 else
150 begin
151 set @sql4 = @sql4 +' group by c.FItemID,e.FName,CONVERT(varchar(10), b.FDate, 23)'
152 end
153 end
154 --print @sql1
155 --print @sql2
156 --print @sql3
157 --exec (@sql1)
158 --exec (@sql2)
159 --exec (@sql3)
160 set @sql = @sql1 + @sql2 + @sql3 + @sql4
161 if @Flevel = '123'
162 begin
163 set @sql = @sql +'
164 select FItemID,FDate,sort,category,fqty,famt,fcost,total into #three
165 from (
166 select FItemID,FDate,sort,category,fqty,famt,fcost,total from #RqLevel
167 union all
168 select FItemID,FDate,sort,category,fqty,famt,fcost,total from #GoodsLevel ) a
169 order by FItemID,FDate,sort
170
171 select FItemID,FDate,sort,category,fqty,famt,fcost,total into #total
172 from (
173 select FItemID,''2000-01-01'' as FDate,sort,category,fqty,famt,fcost,total from #StoreLevel
174 union all
175 select FItemID,FDate,sort,category,fqty,famt,fcost,total from #three ) a
176 order by FItemID,FDate,sort
177
178 select category,fqty,famt,fcost,total from #category
179 union all
180 select category,fqty,famt,fcost,total from #total'
181 end
182 if @Flevel = '12'
183 begin
184 set @sql = @sql +'
185 select category,fqty,famt,fcost,total into #total
186 from (
187 select FItemID,sort,category,fqty,famt,fcost,total from #StoreLevel
188 union all
189 select FItemID,sort,category,fqty,famt,fcost,total from #RqLevel) a order by FItemID,sort
190
191 select category,fqty,famt,fcost,total from #category
192 union all
193 select category,fqty,famt,fcost,total from #total'
194 end
195 if @Flevel = '1'
196 begin
197 set @sql = @sql +'
198 select category,fqty,famt,fcost,total from #category
199 union all
200 select category,fqty,famt,fcost,total from #StoreLevel
201 '
202 end
203 if @Flevel = '13'
204 begin
205 set @sql = @sql +'select * into #total from (
206 select FItemID,sort,category,fqty,famt,fcost,total from #StoreLevel
207 union all
208 select FItemID,sort,category,fqty,famt,fcost,total from #GoodsLevel ) a order by FItemID,sort
209
210 select category,fqty,famt,fcost,total from #category
211 union all
212 select category,fqty,famt,fcost,total from #total
213 '
214 end
215 if @Flevel = '23'
216 begin
217
218 set @sql = @sql +'select * into #total from (
219 select FItemID,FDate,sort,category,fqty,famt,fcost,total from #RqLevel
220 union all
221 select FItemID,FDate,sort,category,fqty,famt,fcost,total from #GoodsLevel ) a order by FItemID,FDate,sort
222
223 select category,fqty,famt,fcost,total from #category
224 union all
225 select category,fqty,famt,fcost,total from #total
226 '
227 end
228 if @Flevel = '2'
229 begin
230 set @sql = @sql +'
231 select category,fqty,famt,fcost,total from #category
232 union all
233 select category,fqty,famt,fcost,total from #RqLevel
234 'end
235 if @Flevel = '3'
236 begin
237 set @sql = @sql +'
238 select category,fqty,famt,fcost,total from #category
239 union all
240 select category,fqty,famt,fcost,total from #GoodsLevel
241 'end
242 if @Flevel = '0'
243 begin
244 set @sql = @sql +'
245 select category,fqty,famt,fcost,total from #category
246 'end
247 set @sql = @sql +'
248 drop table #category
249 drop table #StoreLevel
250 drop table #RqLevel
251 drop table #GoodsLevel'
252 if @Flevel = '123' or @Flevel = '12' or @Flevel = '13' or @Flevel = '13'
253 set @sql = @sql +'
254 drop table #total'
255
256 if @Flevel = '123'
257 set @sql = @sql +'
258 drop table #three'
259 --print @sql
260 exec(@sql)
261 end