Project

General

Profile

TR_REQ_PROCESS_CHILD_App_BK.txt

Luc Tran Van, 01/28/2021 02:39 PM

 
1
CREATE PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_App]  
2
@p_REQ_ID VARCHAR(20),  
3
@p_PROCESS_ID VARCHAR(20),  
4
@p_TLNAME VARCHAR(20),  
5
@p_MAKER_ID VARCHAR(20),  
6
@p_TYPE_JOB VARCHAR(20),  
7
@p_PROCESS_DES NVARCHAR(500),  
8
@p_REF_ID INT,  
9
@p_XMLDATA XML  
10
AS  
11
BEGIN TRANSACTION  
12
-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC  
13
 
14
--IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID=@p_PROCESS_ID))  
15
--BEGIN  
16
-- SELECT 1 as Result, '' ErrorDesc  
17
-- RETURN 0  
18
--END  
19
 
20
 
21
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))  
22
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))  
23
BEGIN  
24
ROLLBACK TRANSACTION  
25
SELECT -1 Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc  
26
RETURN -1  
27
END  
28
Declare @hdoc INT  
29
EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA  
30
DECLARE @lstFILE TABLE(  
31
ATTACH_ID VARCHAR(20),  
32
IS_READ BIT  
33
)  
34
INSERT INTO @lstFILE  
35
SELECT *  
36
FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2)  
37
WITH  
38
(  
39
ATTACH_ID VARCHAR(20),  
40
IS_READ BIT  
41
)  
42
 
43
IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1  
44
AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0)))  
45
BEGIN  
46
ROLLBACK TRANSACTION  
47
SELECT -1 Result, N'File đinh kèm bắt buộc đọc' ErrorDesc  
48
RETURN 0  
49
END  
50
DECLARE @LEVEL INT, @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)  
51
 
52
UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'  
53
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB  
54
 
55
SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB  
56
FROM dbo.PL_REQUEST_PROCESS_CHILD  
57
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB  
58
ORDER BY LEVEL_JOB DESC),0)  
59
 
60
UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'  
61
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)  
62
 
63
SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)  
64
SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )  
65
 
66
INSERT INTO dbo.PL_PROCESS  
67
(  
68
REQ_ID,  
69
PROCESS_ID,  
70
CHECKER_ID,  
71
APPROVE_DT,  
72
PROCESS_DESC,NOTES  
73
)  
74
VALUES  
75
( @p_REQ_ID, -- REQ_ID - varchar(15)  
76
@p_PROCESS_ID, -- PROCESS_ID - varchar(10)  
77
@p_MAKER_ID, -- CHECKER_ID - varchar(15)  
78
GETDATE() , -- APPROVE_DT - datetime  
79
@p_PROCESS_DES ,  
80
@TYPE_JOB_NAME+ N' đã phê duyệt' -- PROCESS_DESC - nvarchar(1000)  
81
)  
82
 
83
 
84
IF(NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD  
85
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))  
86
BEGIN  
87
IF(@p_PROCESS_ID='DMMS')  
88
BEGIN  
89
DECLARE @PROCESS_PARENT VARCHAR(20)  
90
SET @PROCESS_PARENT='DMMS'  
91
 
92
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE(),NOTES=N'Đầu mối mua sắm đã phê duyệt' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_PROCESS_ID  
93
 
94
DECLARE @LIMIT_VALUE_KT DECIMAL(18,0),@ROLE_KT VARCHAR(20),@DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(200),@TOTAL_AMT_REQ DECIMAL(18,0)  
95
 
96
SET @LIMIT_VALUE_KT = (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  
97
SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  
98
 
99
SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  
100
 
101
SET @TOTAL_AMT_REQ =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT  
102
WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' OR NOTES ='CDT'))  
103
IF(@TOTAL_AMT_REQ > @LIMIT_VALUE_KT AND 1 > 2)  
104
BEGIN  
105
DECLARE @l_REQ_COST_ID VARCHAR(15)  
106
EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out  
107
INSERT dbo.TR_REQUEST_COSTCENTER  
108
(  
109
REQ_COST_ID,  
110
COST_ID,  
111
REQ_ID,  
112
NOTES,  
113
AUTH_STATUS,  
114
MAKER_ID,  
115
CREATE_DT,  
116
CHECKER_ID,  
117
APPROVE_DT  
118
)  
119
VALUES  
120
( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15)  
121
@DVDM_KT, -- COST_ID - varchar(15)  
122
@p_REQ_ID, -- REQ_ID - varchar(15)  
123
N'', -- NOTES - nvarchar(500)  
124
'U', -- AUTH_STATUS - varchar(1)  
125
@p_MAKER_ID, -- MAKER_ID - varchar(15)  
126
GETDATE(), -- CREATE_DT - datetime  
127
'', -- CHECKER_ID - varchar(15)  
128
NULL -- APPROVE_DT - datetime  
129
)  
130
END  
131
IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID))  
132
BEGIN  
133
DECLARE @COST_ID VARCHAR(20)  
134
DECLARE lstCostCenter CURSOR FOR  
135
SELECT COST_ID FROM dbo.TR_REQUEST_COSTCENTER  
136
WHERE REQ_ID=@p_REQ_ID  
137
OPEN lstCostCenter  
138
FETCH NEXT FROM lstCostCenter INTO @COST_ID  
139
WHILE @@FETCH_STATUS = 0  
140
BEGIN  
141
 
142
IF(@COST_ID=@DVDM_KT AND 1> 2)  
143
BEGIN  
144
INSERT INTO dbo.PL_REQUEST_PROCESS  
145
(  
146
REQ_ID,  
147
PROCESS_ID,  
148
STATUS,  
149
ROLE_USER,  
150
BRANCH_ID,  
151
CHECKER_ID,  
152
APPROVE_DT,  
153
PARENT_PROCESS_ID,  
154
IS_LEAF,  
155
COST_ID,  
156
DVDM_ID,  
157
NOTES,  
158
IS_HAS_CHILD  
159
)  
160
VALUES  
161
( @p_REQ_ID, -- REQ_ID - varchar(15)  
162
'DVCM', -- PROCESS_ID - varchar(10)  
163
'U', -- STATUS - varchar(5)  
164
'KSV', -- ROLE_USER - varchar(50)  
165
'', -- BRANCH_ID - varchar(15)  
166
'', -- CHECKER_ID - varchar(15)  
167
NULL, -- APPROVE_DT - datetime  
168
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
169
'N', -- IS_LEAF - varchar(1)  
170
'', -- COST_ID - varchar(15)  
171
@COST_ID ,  
172
N'Chờ đơn vị chuyên môn xác nhận' ,  
173
1 -- DVDM_ID - varchar(15)  
174
)  
175
END  
176
ELSE  
177
BEGIN  
178
INSERT INTO dbo.PL_REQUEST_PROCESS  
179
(  
180
REQ_ID,  
181
PROCESS_ID,  
182
STATUS,  
183
ROLE_USER,  
184
BRANCH_ID,  
185
CHECKER_ID,  
186
APPROVE_DT,  
187
PARENT_PROCESS_ID,  
188
IS_LEAF,  
189
COST_ID,  
190
DVDM_ID,  
191
NOTES,  
192
IS_HAS_CHILD  
193
)  
194
VALUES  
195
( @p_REQ_ID, -- REQ_ID - varchar(15)  
196
'DVCM', -- PROCESS_ID - varchar(10)  
197
'U', -- STATUS - varchar(5)  
198
'GDDV', -- ROLE_USER - varchar(50)  
199
'', -- BRANCH_ID - varchar(15)  
200
'', -- CHECKER_ID - varchar(15)  
201
NULL, -- APPROVE_DT - datetime  
202
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
203
'N', -- IS_LEAF - varchar(1)  
204
'', -- COST_ID - varchar(15)  
205
@COST_ID ,  
206
N'Chờ đơn vị chuyên môn xác nhận' ,  
207
1 -- DVDM_ID - varchar(15)  
208
)  
209
END  
210
FETCH NEXT FROM lstCostCenter INTO @COST_ID  
211
END  
212
CLOSE lstCostCenter  
213
DEALLOCATE lstCostCenter  
214
 
215
END  
216
DECLARE @TOTAL_AMT DECIMAL(18,2),@ROLE_PDTH VARCHAR(20) ,@LIMIT_VALUE DECIMAL(18,2) ,@IS_NEXT BIT,@PROCESS_ID VARCHAR(5),@ROLE_ID VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTES NVARCHAR(50),@DVDM_NAME NVARCHAR(200)  
217
 
218
 
219
 
220
 
221
IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))  
222
SET @PROCESS_PARENT='DVCM'  
223
 
224
SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))  
225
--SET @IS_NEXT=1  
226
IF(@IS_NEXT =1)  
227
BEGIN  
228
SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')  
229
SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')  
230
SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID)  
231
SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID)  
232
SET @NOTES = @NOTES + ' ' + @DVDM_NAME  
233
 
234
INSERT INTO dbo.PL_REQUEST_PROCESS  
235
(  
236
REQ_ID,  
237
PROCESS_ID,  
238
STATUS,  
239
ROLE_USER,  
240
BRANCH_ID,  
241
CHECKER_ID,  
242
APPROVE_DT,  
243
PARENT_PROCESS_ID,  
244
IS_LEAF,  
245
COST_ID,  
246
DVDM_ID,  
247
NOTES,  
248
IS_HAS_CHILD  
249
)  
250
VALUES  
251
( @p_REQ_ID, -- REQ_ID - varchar(15)  
252
'GDK_PYC', -- PROCESS_ID - varchar(10)  
253
'U', -- STATUS - varchar(5)  
254
@ROLE_ID, -- ROLE_USER - varchar(50)  
255
'', -- BRANCH_ID - varchar(15)  
256
'', -- CHECKER_ID - varchar(15)  
257
NULL, -- APPROVE_DT - datetime  
258
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
259
'', -- IS_LEAF - varchar(1)  
260
'', -- COST_ID - varchar(15)  
261
@DVDM_ID, -- DVDM_ID - varchar(15)  
262
N'Chờ ' +@NOTES+N' phê duyệt', -- NOTES - nvarchar(500)  
263
0 -- IS_HAS_CHILD - bit  
264
)  
265
SET @PROCESS_PARENT= 'GDK_PYC'  
266
 
267
 
268
END  
269
 
270
 
271
 
272
 
273
 
274
INSERT INTO dbo.PL_REQUEST_PROCESS  
275
(  
276
REQ_ID,  
277
PROCESS_ID,  
278
STATUS,  
279
ROLE_USER,  
280
BRANCH_ID,  
281
CHECKER_ID,  
282
APPROVE_DT,  
283
PARENT_PROCESS_ID,  
284
IS_LEAF,  
285
COST_ID,  
286
DVDM_ID,  
287
NOTES,  
288
IS_HAS_CHILD  
289
)  
290
VALUES  
291
( @p_REQ_ID, -- REQ_ID - varchar(15)  
292
'APPROVE', -- PROCESS_ID - varchar(10)  
293
'U', -- STATUS - varchar(5)  
294
'', -- ROLE_USER - varchar(50)  
295
'', -- BRANCH_ID - varchar(15)  
296
'', -- CHECKER_ID - varchar(15)  
297
NULL, -- APPROVE_DT - datetime  
298
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
299
'N', -- IS_LEAF - varchar(1)  
300
'', -- COST_ID - varchar(15)  
301
'', -- DVDM_ID - varchar(15)  
302
N'Hoàn tất', -- NOTES - nvarchar(500)  
303
NULL -- IS_HAS_CHILD - bit  
304
)  
305
DECLARE @PROCESS_NEXT_ID VARCHAR(10)  
306
SET @PROCESS_NEXT_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID)  
307
 
308
 
309
 
310
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID  
311
UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT_ID WHERE REQ_ID=@p_REQ_ID  
312
 
313
END  
314
ELSE IF(@p_PROCESS_ID='DVCM')  
315
BEGIN  
316
 
317
DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@PROCESS_NEXT VARCHAR(10)  
318
 
319
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)  
320
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)  
321
SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)  
322
-- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV  
323
--IF(@ROLE_ID ='KTT')  
324
--BEGIN  
325
-- SET @ROLE_ID ='GDDV'  
326
--END  
327
SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID)  
328
 
329
 
330
UPDATE dbo.TR_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN  
331
dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)  
332
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,  
333
APPROVE_DT=GETDATE() ,NOTES=N'Đơn vị chuyên môn xác nhận'  
334
WHERE REQ_ID=@p_REQ_ID AND( ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))AND DVDM_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN  
335
dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID  
336
WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)  
337
 
338
IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@p_PROCESS_ID AND REQ_ID=@p_REQ_ID AND STATUS='C'))  
339
BEGIN  
340
 
341
UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID  
342
UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID  
343
 
344
END  
345
END  
346
 
347
--IF(@PROCESS_NEXT='APPROVE')  
348
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PROCESS_ID ='APPROVE' AND REQ_ID =@p_REQ_ID))  
349
BEGIN  
350
DECLARE @TempTB TABLE  
351
(  
352
TOTAL_AMT DECIMAL(18,2),  
353
TRADE_ID VARCHAR(20),  
354
PLAN_ID VARCHAR(20)  
355
)  
356
INSERT INTO @TempTB  
357
SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT  
358
LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID  
359
WHERE TRAN_TYPE_ID IN (SELECT TRAN_TYPE_ID FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK') AND DT.REQ_DOC_ID=@p_REQ_ID  
360
GROUP BY PLDT.TRADE_ID,PLDT.PLAN_ID  
361
UPDATE dbo.PL_TRADEDETAIL SET AMT_EXE =AMT_EXE + (SELECT TOTAL_AMT FROM @TempTB WHERE [@TempTB].TRADE_ID=PL_TRADEDETAIL.TRADE_ID AND PL_TRADEDETAIL.PLAN_ID=[@TempTB].PLAN_ID) WHERE PL_TRADEDETAIL.TRADE_ID IN (SELECT TRADE_ID FROM @TempTB)  
362
 
363
IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK')))  
364
EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)  
365
 
366
END  
367
END  
368
 
369
IF @@Error <> 0 GOTO ABORT  
370
COMMIT TRANSACTION  
371
SELECT 0 as Result, '' ErrorDesc  
372
RETURN 0  
373
ABORT:  
374
BEGIN  
375
ROLLBACK TRANSACTION  
376
SELECT -1 as Result, '' ErrorDesc  
377
RETURN -1  
378
End