Project

General

Profile

DB_BUY_VALUE_BAR.txt

Luc Tran Van, 11/30/2022 01:37 PM

 
1

    
2
-- BIEU DO O4 GIA TRI MUA SAM  EXEC [DB_BUY_VALUE_BAR] 'phuongtln1','',2022','2022'
3
ALTER   PROC [dbo].[DB_BUY_VALUE_BAR]
4
@p_USER_LOGIN VARCHAR(250) = NULL,
5
@p_FILTER VARCHAR(100) = NULL,
6
@p_FROM_YEAR VARCHAR(10) = NULL,
7
@p_TO_YEAR VARCHAR(10) = NULL
8
AS
9
BEGIN
10
	--DECLARE @DEP_ID_LOG VARCHAR(15) =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
11
	--DECLARE @BRN_ID_LOG VARCHAR(15) =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
12
	--DECLARE @DEP_ID_LOGIN VARCHAR(15), @DEP_GROUP VARCHAR(15),@p_BRANCH_LOGIN VARCHAR(15)
13
	--SET @DEP_ID_LOGIN =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
14
	--SET @DEP_GROUP =(SELECT GROUP_ID FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID_LOGIN)
15
	--SET @p_BRANCH_LOGIN =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
16

    
17
	--DECLARE @TABLE_ROLE TABLE (ROLENAME NVARCHAR(100))
18
	--DECLARE @USERID INT
19
	--SET @USERID =(SELECT ID FROM TL_USER WHERE TLNANME = 'tscd_hoiso'@p_USER_LOGIN)
20
	-----
21
	--INSERT INTO @TABLE_ROLE SELECT B.DisplayName FROM AbpUserRoles A
22
	--							INNER JOIN ABPROLES B ON A.RoleId = B.Id
23
	--							WHERE A.UserId = '13922'@USERID
24
	
25
	--DECLARE @tmp TABLE(BRANCH_ID VARCHAR(15))
26
	--DECLARE @tmp_DEP TABLE(DEP_ID VARCHAR(15))
27
	--INSERT INTO @tmp_DEP  SELECT @DEP_ID_LOGIN
28
	--IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Admin'))
29
	--BEGIN
30
	--		insert into @tmp  SELECT BRANCH_ID  FROM [dbo].CM_BRANCH
31
	--		INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT
32
	--END
33
	----- KIEM TRA NEU STAFF THI CHI THAY DEP_ID CUA MINH
34
	--IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Staff') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL)
35
	--BEGIN
36
	--		DELETE FROM @tmp
37
	--		INSERT INTO @tmp  SELECT @p_BRANCH_LOGIN
38
	--		INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP
39
	--		--SET @p_BRANCH_ID =@p_BRANCH_LOGIN
40

    
41
	--END
42
	--IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Manager') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL)
43
	--BEGIN
44
	--		DELETE FROM @tmp
45
	--		INSERT INTO @tmp  SELECT BRANCH_ID FROM CM_BRANCH
46
	--		--SET @p_BRANCH_ID =@p_BRANCH_LOGIN
47
	--		INSERT INTO @tmp_DEP  SELECT DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@p_BRANCH_LOGIN
48
	--		INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP
49

    
50
	--END
51
	-----END CAU HINH WORKFLOW
52
	----- TIENLEE 01/03/2022
53
	DECLARE @YEAR VARCHAR(10)--, @TEMP DECIMAL(18,2)
54
	DECLARE @TABLE_YEAR TABLE(
55
		[YEAR] VARCHAR(10) NULL,
56
		[SUMARY_BUY_RECEIVE] DECIMAL(18,2) NULL,
57
		[SUMARY_BUY_MADE] DECIMAL(18,2) NULL,
58
		[SUMARY_BUY_DOING] DECIMAL(18,2) NULL,
59
		[SUMARY_BUY_REAL] DECIMAL(18,2) NULL,
60
		[SUMARY_BUY_SAVE] DECIMAL(18,2) NULL
61
	)
62
	DECLARE @TABLE_MONTH TABLE(
63
		[YEAR] VARCHAR(10) NULL,
64
		[MONTH] VARCHAR(10) NULL,
65
		[SUMARY_BUY_RECEIVE] DECIMAL(18,2) NULL,
66
		[SUMARY_BUY_MADE] DECIMAL(18,2) NULL,
67
		[SUMARY_BUY_DOING] DECIMAL(18,2) NULL,
68
		[SUMARY_BUY_REAL] DECIMAL(18,2) NULL,
69
		[SUMARY_BUY_SAVE] DECIMAL(18,2) NULL
70
	)
71
	DECLARE @TABLE_MONTH_RECEIVE TABLE(
72
		[YEAR] VARCHAR(10) NULL,
73
		[MONTH] VARCHAR(2) NULL,
74
		[SUMARY_BUY_RECEIVE] DECIMAL(18,2) NULL
75
	)
76
	DECLARE @TABLE_MONTH_MADE TABLE(
77
		[YEAR] VARCHAR(10) NULL,
78
		[MONTH] VARCHAR(2) NULL,
79
		[SUMARY_BUY_MADE] DECIMAL(18,2) NULL
80
	)
81
	DECLARE @TABLE_MONTH_DOING TABLE(
82
		[YEAR] VARCHAR(10) NULL,
83
		[MONTH] VARCHAR(2) NULL,
84
		[SUMARY_BUY_DOING] DECIMAL(18,2) NULL
85
	)
86
	DECLARE @TABLE_MONTH_REAL TABLE(
87
		[YEAR] VARCHAR(10) NULL,
88
		[MONTH] VARCHAR(2) NULL,
89
		[SUMARY_BUY_REAL] DECIMAL(18,2) NULL
90
	)
91
	DECLARE @TABLE_MONTH_SAVE TABLE(
92
		[YEAR] VARCHAR(10) NULL,
93
		[MONTH] VARCHAR(2) NULL,
94
		[SUMARY_BUY_SAVE] DECIMAL(18,2) NULL
95
	)
96
	DECLARE CUR_FILTER_YEAR CURSOR FOR
97

    
98
	SELECT YEAR(D.APPROVE_DT) FROM TR_REQUEST_DOC D
99
	WHERE 1=1
100
	AND (YEAR(D.APPROVE_DT)<= CAST(@p_TO_YEAR AS INT) OR CAST(@p_TO_YEAR AS INT) IS NULL OR CAST(@p_TO_YEAR AS INT) ='')
101
	AND (YEAR(D.APPROVE_DT)>= CAST(@p_FROM_YEAR AS INT) OR CAST(@p_FROM_YEAR AS INT) IS NULL OR CAST(@p_FROM_YEAR AS INT) ='')
102
	AND (D.APPROVE_DT IS NOT NULL AND D.APPROVE_DT <>'')
103
	GROUP BY YEAR(D.APPROVE_DT)
104

    
105
	OPEN CUR_FILTER_YEAR
106
	FETCH NEXT FROM CUR_FILTER_YEAR
107
		  INTO @YEAR
108

    
109
	WHILE @@FETCH_STATUS = 0
110
	BEGIN
111
		DECLARE @RECEIVE DECIMAL(18,2),@DOING DECIMAL(18,2),@MADE DECIMAL(18,2),@REAL DECIMAL(18,2)
112

    
113
		-- FILTER YEAR --
114
		-- RECEIVE
115
		SELECT @RECEIVE=ROUND( SUM(DT.PRICE_ETM*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
116
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
117
		WHERE (D.PROCESS_ID = 'DMMS' OR D.PROCESS_ID = 'DVCM' OR D.PROCESS_ID = 'APPROVE' OR D.PROCESS_ID = 'GDK_PYC')
118
		AND (D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS PR WHERE PR.PROCESS_ID ='DMMS'))
119
		AND (D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS_CHILD) OR D.PROCESS_ID = 'APPROVE')
120
		AND (YEAR(D.APPROVE_DT) = @YEAR)
121
		AND (D.DMMS_ID ='DMMS00000000001' OR D.DMMS_ID ='DM0000000000003')
122
		--- ĐÃ THỰC HIỆN
123
		SELECT @MADE=ROUND( SUM(DT.PRICE_ETM*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
124
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
125
		WHERE 1=1
126
		AND ((D.USER_DVMS IS NOT NULL AND D.USER_DVMS <> '' AND 
127
		(D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS_CHILD CH WHERE CH.TYPE_JOB='TP' AND CH.STATUS_JOB='P' AND CH.PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS)))))
128
		AND (D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DMMS'))
129
		AND (YEAR(D.APPROVE_DT) = @YEAR)
130
		AND (D.DMMS_ID ='DMMS00000000001' OR D.DMMS_ID ='DM0000000000003')
131
		-- ĐANG THỰC HIỆN
132
		SELECT @DOING=ROUND( SUM(DT.PRICE*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
133
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
134
		WHERE 1=1
135
		--AND ((D.USER_DVMS IS NOT NULL AND D.USER_DVMS <> '' AND 
136
		--		(D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS_CHILD CH WHERE CH.TYPE_JOB IN ('TP') AND CH.STATUS_JOB IN('C')))))
137
		AND (D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS))
138
		AND (YEAR(D.APPROVE_DT) = @YEAR)
139
		AND (D.DMMS_ID ='DMMS00000000001' OR D.DMMS_ID ='DM0000000000003')
140
		
141
		AND D.REQ_ID IN (
142
				SELECT prpc.REQ_ID FROM PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.TYPE_JOB IN ('KS','TP') AND prpc.STATUS_JOB='C'  AND
143
				EXISTS (SELECT prpc1.REQ_ID FROM PL_REQUEST_PROCESS_CHILD prpc1 WHERE prpc1.TYPE_JOB='XL'AND prpc1.STATUS_JOB='P' AND prpc1.REQ_ID=prpc.REQ_ID )
144
		)
145
		-- REAL
146
		SELECT @REAL = ROUND( SUM(DT.PRICE*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
147
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
148
		WHERE 1=1
149
		AND ((D.USER_DVMS IS NOT NULL AND D.USER_DVMS <> '' AND 
150
				(D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS_CHILD CH WHERE CH.TYPE_JOB='TP' AND CH.STATUS_JOB='P'))))
151
		AND (D.REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DMMS'))
152
		AND (YEAR(D.APPROVE_DT) = @YEAR)
153
		AND (D.DMMS_ID ='DMMS00000000001' OR D.DMMS_ID ='DM0000000000003')
154

    
155
		INSERT INTO @TABLE_YEAR([YEAR],SUMARY_BUY_RECEIVE,SUMARY_BUY_DOING,SUMARY_BUY_MADE,SUMARY_BUY_REAL,SUMARY_BUY_SAVE)
156
		VALUES(@YEAR,@RECEIVE,@DOING,@MADE,@REAL,@MADE-@REAL)
157

    
158
		-- FILTER MONTH --
159
		-- RECEIVE
160
		INSERT INTO @TABLE_MONTH_RECEIVE([YEAR],[MONTH],SUMARY_BUY_RECEIVE)
161
		SELECT @YEAR,MONTH(D.APPROVE_DT),ROUND( SUM(DT.PRICE_ETM*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
162
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
163
		WHERE (D.PROCESS_ID = 'DMMS' OR D.PROCESS_ID = 'DVCM' OR D.PROCESS_ID = 'APPROVE' OR D.PROCESS_ID = 'GDK_PYC')
164
		AND (YEAR(D.APPROVE_DT) = @YEAR)
165
		AND (D.APPROVE_DT IS NOT NULL AND D.APPROVE_DT <>'')
166
		GROUP BY MONTH(D.APPROVE_DT)
167
		-- DOING
168
		INSERT INTO @TABLE_MONTH_DOING([YEAR],[MONTH],SUMARY_BUY_DOING)
169
		SELECT @YEAR,MONTH(D.APPROVE_DT),ROUND( SUM(DT.PRICE_ETM*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
170
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
171
		WHERE (D.PROCESS_ID = 'DMMS' OR D.PROCESS_ID = 'DVCM' OR D.PROCESS_ID = 'APPROVE' OR D.PROCESS_ID = 'GDK_PYC')
172
		AND (YEAR(D.APPROVE_DT) = @YEAR)
173
		AND (D.APPROVE_DT IS NOT NULL AND D.APPROVE_DT <>'')
174
		----LUCTV 08082022 ĐÃ THỰC HIỆN CÓ NGHĨA LÀ ĐƯỢC ĐIỀU PHỐI
175
		AND ((D.USER_DVMS IS NOT NULL AND D.USER_DVMS <> '') OR D.PROCESS_ID = 'APPROVE')
176
		---- END LUCTV
177
		GROUP BY MONTH(D.APPROVE_DT)
178
		-- MADE
179
		INSERT INTO @TABLE_MONTH_MADE([YEAR],[MONTH],SUMARY_BUY_MADE)
180
		SELECT @YEAR,MONTH(D.APPROVE_DT),ROUND( SUM(DT.PRICE*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
181
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
182
		LEFT JOIN PL_REQUEST_PROCESS_CHILD P ON P.REQ_ID = D.REQ_ID
183
		WHERE P.STATUS_JOB = 'P' AND P.TYPE_JOB = 'XL'
184
		AND (YEAR(D.APPROVE_DT) = @YEAR)
185
		AND (D.APPROVE_DT IS NOT NULL AND D.APPROVE_DT <>'')
186
		GROUP BY MONTH(D.APPROVE_DT)
187
		-- REAL
188
		INSERT INTO @TABLE_MONTH_REAL([YEAR],[MONTH],SUMARY_BUY_REAL)
189
		SELECT @YEAR,MONTH(D.APPROVE_DT),ROUND( SUM(DT.PRICE*DT.QUANTITY)/1000000000,2) FROM TR_REQUEST_DOC_DT DT
190
		LEFT JOIN TR_REQUEST_DOC D ON DT.REQ_DOC_ID= D.REQ_ID
191
		LEFT JOIN PL_REQUEST_PROCESS_CHILD P ON P.REQ_ID = D.REQ_ID
192
		WHERE P.STATUS_JOB = 'P' AND P.TYPE_JOB = 'XL'
193
		AND (YEAR(D.APPROVE_DT) = @YEAR)
194
		AND (D.APPROVE_DT IS NOT NULL AND D.APPROVE_DT <>'')
195
		GROUP BY MONTH(D.APPROVE_DT)
196

    
197
		-- MEGA
198
		INSERT INTO @TABLE_MONTH([YEAR],[MONTH],SUMARY_BUY_RECEIVE,SUMARY_BUY_DOING,SUMARY_BUY_MADE,SUMARY_BUY_REAL,SUMARY_BUY_SAVE)
199
		SELECT R.[YEAR],R.[MONTH],R.SUMARY_BUY_RECEIVE,M.SUMARY_BUY_MADE,D.SUMARY_BUY_DOING,RE.SUMARY_BUY_REAL,
200
		(M.SUMARY_BUY_MADE-RE.SUMARY_BUY_REAL)  FROM @TABLE_MONTH_RECEIVE R
201
		LEFT JOIN @TABLE_MONTH_DOING D ON D.[YEAR] = R.[YEAR] AND D.[MONTH] = R.[MONTH]
202
		LEFT JOIN @TABLE_MONTH_MADE M ON M.[YEAR] = R.[YEAR] AND M.[MONTH] = R.[MONTH]
203
		LEFT JOIN @TABLE_MONTH_REAL RE ON M.[YEAR] = R.[YEAR] AND RE.[MONTH] = R.[MONTH]
204

    
205
		FETCH NEXT FROM CUR_FILTER_YEAR
206
			  INTO @YEAR
207
	END
208

    
209
	CLOSE CUR_FILTER_YEAR
210
	DEALLOCATE CUR_FILTER_YEAR
211

    
212
	SELECT * FROM @TABLE_YEAR ORDER BY [YEAR] ASC
213
	SELECT * FROM @TABLE_MONTH ORDER BY [YEAR] ASC
214
	------------------------
215
END