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
|