Project

General

Profile

PHE DUYET PYCMS GO KE TOAN KHOI DVCM.txt

Luc Tran Van, 10/13/2020 10:14 AM

 
1
??

2
ALTER PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_App]  

3
@p_REQ_ID VARCHAR(20),  

4
@p_PROCESS_ID VARCHAR(20),  

5
@p_TLNAME VARCHAR(20),  

6
@p_MAKER_ID VARCHAR(20),  

7
@p_TYPE_JOB VARCHAR(20),  

8
@p_PROCESS_DES NVARCHAR(500),  

9
@p_REF_ID INT,  

10
@p_XMLDATA XML  

11
AS  

12
BEGIN TRANSACTION  

13
-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC  

14
 

15
IF(NOT EXISTS(SELECT *FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID=@p_PROCESS_ID))  

16
BEGIN  

17
SELECT 1 as Result, '' ErrorDesc  

18
RETURN 0  

19
END  

20
 

21
 

22
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'))  

23
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))  

24
BEGIN  

25
ROLLBACK TRANSACTION  

26
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  

27
RETURN -1  

28
END  

29
Declare @hdoc INT  

30
EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA  

31
DECLARE @lstFILE TABLE(  

32
ATTACH_ID VARCHAR(20),  

33
IS_READ BIT  

34
)  

35
INSERT INTO @lstFILE  

36
SELECT *  

37
FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2)  

38
WITH  

39
(  

40
ATTACH_ID VARCHAR(20),  

41
IS_READ BIT  

42
)  

43
 

44
IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1  

45
AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0)))  

46
BEGIN  

47
ROLLBACK TRANSACTION  

48
SELECT -1 Result, N'File inh k?m b?t bu?c ?c' ErrorDesc  

49
RETURN 0  

50
END  

51
DECLARE @LEVEL INT, @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)  

52
 

53
UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'  

54
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB  

55
 

56
SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB  

57
FROM dbo.PL_REQUEST_PROCESS_CHILD  

58
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB  

59
ORDER BY LEVEL_JOB DESC),0)  

60
 

61
UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'  

62
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)  

63
 

64
SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)  

65
SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )  

66
 

67
INSERT INTO dbo.PL_PROCESS  

68
(  

69
REQ_ID,  

70
PROCESS_ID,  

71
CHECKER_ID,  

72
APPROVE_DT,  

73
PROCESS_DESC,NOTES  

74
)  

75
VALUES  

76
( @p_REQ_ID, -- REQ_ID - varchar(15)  

77
@p_PROCESS_ID, -- PROCESS_ID - varchar(10)  

78
@p_MAKER_ID, -- CHECKER_ID - varchar(15)  

79
GETDATE() , -- APPROVE_DT - datetime  

80
@p_PROCESS_DES ,  

81
@TYPE_JOB_NAME+ N' ? ph? duy?t' -- PROCESS_DESC - nvarchar(1000)  

82
)  

83
 

84
 

85
IF(NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD  

86
WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))  

87
BEGIN  

88
IF(@p_PROCESS_ID='DMMS')  

89
BEGIN  

90
DECLARE @PROCESS_PARENT VARCHAR(20)  

91
SET @PROCESS_PARENT='DMMS'  

92
 

93
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  

94
 

95
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)  

96
 

97
SET @LIMIT_VALUE_KT = (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  

98
SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  

99
 

100
SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  

101
 

102
SET @TOTAL_AMT_REQ =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT  

103
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'))  

104
IF(@TOTAL_AMT_REQ > @LIMIT_VALUE_KT)  

105
BEGIN  

106
DECLARE @l_REQ_COST_ID VARCHAR(15)  

107
EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out  

108
INSERT dbo.TR_REQUEST_COSTCENTER  

109
(  

110
REQ_COST_ID,  

111
COST_ID,  

112
REQ_ID,  

113
NOTES,  

114
AUTH_STATUS,  

115
MAKER_ID,  

116
CREATE_DT,  

117
CHECKER_ID,  

118
APPROVE_DT  

119
)  

120
VALUES  

121
( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15)  

122
@DVDM_KT, -- COST_ID - varchar(15)  

123
@p_REQ_ID, -- REQ_ID - varchar(15)  

124
N'', -- NOTES - nvarchar(500)  

125
'U', -- AUTH_STATUS - varchar(1)  

126
@p_MAKER_ID, -- MAKER_ID - varchar(15)  

127
GETDATE(), -- CREATE_DT - datetime  

128
'', -- CHECKER_ID - varchar(15)  

129
NULL -- APPROVE_DT - datetime  

130
)  

131
END  

132
IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID))  

133
BEGIN  

134
DECLARE @COST_ID VARCHAR(20)  

135
DECLARE lstCostCenter CURSOR FOR  

136
SELECT COST_ID FROM dbo.TR_REQUEST_COSTCENTER  

137
WHERE REQ_ID=@p_REQ_ID  

138
OPEN lstCostCenter  

139
FETCH NEXT FROM lstCostCenter INTO @COST_ID  

140
WHILE @@FETCH_STATUS = 0  

141
BEGIN  

142
 

143
IF(@COST_ID=@DVDM_KT)  

144
BEGIN  

145
INSERT INTO dbo.PL_REQUEST_PROCESS  

146
(  

147
REQ_ID,  

148
PROCESS_ID,  

149
STATUS,  

150
ROLE_USER,  

151
BRANCH_ID,  

152
CHECKER_ID,  

153
APPROVE_DT,  

154
PARENT_PROCESS_ID,  

155
IS_LEAF,  

156
COST_ID,  

157
DVDM_ID,  

158
NOTES,  

159
IS_HAS_CHILD  

160
)  

161
VALUES  

162
( @p_REQ_ID, -- REQ_ID - varchar(15)  

163
'DVCM', -- PROCESS_ID - varchar(10)  

164
'U', -- STATUS - varchar(5)  

165
'KSV', -- ROLE_USER - varchar(50)  

166
'', -- BRANCH_ID - varchar(15)  

167
'', -- CHECKER_ID - varchar(15)  

168
NULL, -- APPROVE_DT - datetime  

169
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  

170
'N', -- IS_LEAF - varchar(1)  

171
'', -- COST_ID - varchar(15)  

172
@COST_ID ,  

173
N'Ch? ?n v? chuy?n m?n x?c nh?n' ,  

174
1 -- DVDM_ID - varchar(15)  

175
)  

176
END  

177
ELSE  

178
BEGIN  

179
INSERT INTO dbo.PL_REQUEST_PROCESS  

180
(  

181
REQ_ID,  

182
PROCESS_ID,  

183
STATUS,  

184
ROLE_USER,  

185
BRANCH_ID,  

186
CHECKER_ID,  

187
APPROVE_DT,  

188
PARENT_PROCESS_ID,  

189
IS_LEAF,  

190
COST_ID,  

191
DVDM_ID,  

192
NOTES,  

193
IS_HAS_CHILD  

194
)  

195
VALUES  

196
( @p_REQ_ID, -- REQ_ID - varchar(15)  

197
'DVCM', -- PROCESS_ID - varchar(10)  

198
'U', -- STATUS - varchar(5)  

199
'GDDV', -- ROLE_USER - varchar(50)  

200
'', -- BRANCH_ID - varchar(15)  

201
'', -- CHECKER_ID - varchar(15)  

202
NULL, -- APPROVE_DT - datetime  

203
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  

204
'N', -- IS_LEAF - varchar(1)  

205
'', -- COST_ID - varchar(15)  

206
@COST_ID ,  

207
N'Ch? ?n v? chuy?n m?n x?c nh?n' ,  

208
1 -- DVDM_ID - varchar(15)  

209
)  

210
END  

211
FETCH NEXT FROM lstCostCenter INTO @COST_ID  

212
END  

213
CLOSE lstCostCenter  

214
DEALLOCATE lstCostCenter  

215
 

216
END  

217
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)  

218
 

219
 

220
 

221
 

222
IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))  

223
SET @PROCESS_PARENT='DVCM'  

224
 

225
SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))  

226
--SET @IS_NEXT=1  

227
IF(@IS_NEXT =1)  

228
BEGIN  

229
SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')  

230
SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')  

231
SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID)  

232
SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID)  

233
SET @NOTES = @NOTES + ' ' + @DVDM_NAME  

234
 

235
INSERT INTO dbo.PL_REQUEST_PROCESS  

236
(  

237
REQ_ID,  

238
PROCESS_ID,  

239
STATUS,  

240
ROLE_USER,  

241
BRANCH_ID,  

242
CHECKER_ID,  

243
APPROVE_DT,  

244
PARENT_PROCESS_ID,  

245
IS_LEAF,  

246
COST_ID,  

247
DVDM_ID,  

248
NOTES,  

249
IS_HAS_CHILD  

250
)  

251
VALUES  

252
( @p_REQ_ID, -- REQ_ID - varchar(15)  

253
'GDK_PYC', -- PROCESS_ID - varchar(10)  

254
'U', -- STATUS - varchar(5)  

255
@ROLE_ID, -- ROLE_USER - varchar(50)  

256
'', -- BRANCH_ID - varchar(15)  

257
'', -- CHECKER_ID - varchar(15)  

258
NULL, -- APPROVE_DT - datetime  

259
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  

260
'', -- IS_LEAF - varchar(1)  

261
'', -- COST_ID - varchar(15)  

262
@DVDM_ID, -- DVDM_ID - varchar(15)  

263
N'Ch? ' +@NOTES+N' ph? duy?t', -- NOTES - nvarchar(500)  

264
0 -- IS_HAS_CHILD - bit  

265
)  

266
SET @PROCESS_PARENT= 'GDK_PYC'  

267
 

268
 

269
END  

270
 

271
 

272
 

273
 

274
 

275
INSERT INTO dbo.PL_REQUEST_PROCESS  

276
(  

277
REQ_ID,  

278
PROCESS_ID,  

279
STATUS,  

280
ROLE_USER,  

281
BRANCH_ID,  

282
CHECKER_ID,  

283
APPROVE_DT,  

284
PARENT_PROCESS_ID,  

285
IS_LEAF,  

286
COST_ID,  

287
DVDM_ID,  

288
NOTES,  

289
IS_HAS_CHILD  

290
)  

291
VALUES  

292
( @p_REQ_ID, -- REQ_ID - varchar(15)  

293
'APPROVE', -- PROCESS_ID - varchar(10)  

294
'U', -- STATUS - varchar(5)  

295
'', -- ROLE_USER - varchar(50)  

296
'', -- BRANCH_ID - varchar(15)  

297
'', -- CHECKER_ID - varchar(15)  

298
NULL, -- APPROVE_DT - datetime  

299
@PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10)  

300
'N', -- IS_LEAF - varchar(1)  

301
'', -- COST_ID - varchar(15)  

302
'', -- DVDM_ID - varchar(15)  

303
N'Ho?n t?t', -- NOTES - nvarchar(500)  

304
NULL -- IS_HAS_CHILD - bit  

305
)  

306
DECLARE @PROCESS_NEXT_ID VARCHAR(10)  

307
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)  

308
 

309
 

310
 

311
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID  

312
UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT_ID WHERE REQ_ID=@p_REQ_ID  

313
 

314
END  

315
ELSE IF(@p_PROCESS_ID='DVCM')  

316
BEGIN  

317
 

318
DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@PROCESS_NEXT VARCHAR(10)  

319
 

320
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)  

321
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)  

322
SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)  

323
-- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV  

324
--IF(@ROLE_ID ='KTT')  

325
--BEGIN  

326
-- SET @ROLE_ID ='GDDV'  

327
--END  

328
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)  

329
 

330
 

331
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  

332
dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)  

333
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,  

334
APPROVE_DT=GETDATE() ,NOTES=N'?n v? chuy?n m?n x?c nh?n'  

335
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  

336
dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID  

337
WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)  

338
 

339
IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@p_PROCESS_ID AND REQ_ID=@p_REQ_ID AND STATUS='C'))  

340
BEGIN  

341
 

342
UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID  

343
UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID  

344
 

345
END  

346
END  

347
 

348
--IF(@PROCESS_NEXT='APPROVE')  

349
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PROCESS_ID ='APPROVE' AND REQ_ID =@p_REQ_ID))  

350
BEGIN  

351
DECLARE @TempTB TABLE  

352
(  

353
TOTAL_AMT DECIMAL(18,2),  

354
TRADE_ID VARCHAR(20),  

355
PLAN_ID VARCHAR(20)  

356
)  

357
INSERT INTO @TempTB  

358
SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT  

359
LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID  

360
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  

361
GROUP BY PLDT.TRADE_ID,PLDT.PLAN_ID  

362
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)  

363
 

364
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')))  

365
EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)  

366
 

367
END  

368
END  

369
 

370
IF @@Error <> 0 GOTO ABORT  

371
COMMIT TRANSACTION  

372
SELECT 0 as Result, '' ErrorDesc  

373
RETURN 0  

374
ABORT:  

375
BEGIN  

376
ROLLBACK TRANSACTION  

377
SELECT -1 as Result, '' ErrorDesc  

378
RETURN -1  

379
End  

380