Project

General

Profile

ALTER_PROC.txt

Luc Tran Van, 12/29/2022 02:09 PM

 
1

    
2
ALTER   PROC [dbo].[CM_REJECT_LOG_Ins]
3
@p_LOG_ID	varchar(15)	= NULL,
4
@p_STAGE	varchar(10)	 = NULL,
5
@p_TRN_ID	varchar(15)	 = NULL,
6
@p_TRN_TYPE	nvarchar(100)	 = NULL,
7
@p_LOG_DT	VARCHAR	 = NULL,
8
@p_AUTH_STAT	varchar(3)	 = NULL,
9
@p_REASON	nvarchar(4000)	 = NULL,
10
@p_IS_LATEST	varchar(1)	 = NULL,
11
@p_REJECTED_BY	varchar(20)	 = NULL,
12
@p_REJECTED_DT	VARCHAR	 = NULL
13
AS
14
BEGIN TRANSACTION
15
		DECLARE @TRADED_ID VARCHAR(15), @AMT_EXE DECIMAL(18,0)
16
		DECLARE @PAY_ADVANCE_ID VARCHAR(15), @AMT_PAY DECIMAL(18,0), @AMT_REVERT DECIMAL(18,0), @AMT_ADD DECIMAL(18,0)
17
		DECLARE @p_MESSAGE NVARCHAR(100) = NULL
18
		IF(EXISTS (SELECT * FROM CM_REJECT_LOG WHERE TRN_ID = @p_TRN_ID))
19
		BEGIN
20
			UPDATE CM_REJECT_LOG SET IS_LATEST ='N' WHERE TRN_ID =@p_TRN_ID
21
		END
22
		-- Thu hồi tài sản
23
		IF(@p_TRN_TYPE ='ASS_COLLECT_MUL')
24
		BEGIN
25
			IF(@p_STAGE='KT')
26
			BEGIN -- KSV trả về GDV
27
				IF(EXISTS (SELECT * FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
28
				BEGIN
29
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thu hồi tài sản đã được kế toán duyệt'
30
					ROLLBACK TRANSACTION
31
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
32
					RETURN '-1'
33
				END
34
				ELSE
35
				BEGIN
36
					IF(EXISTS(SELECT * FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
37
					BEGIN
38
						UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS_KT ='R' WHERE COL_MULTI_MASTER_ID =@p_TRN_ID
39
						SET @p_MESSAGE =N'Thông tin thu hồi tài sản đã được trả về giao dịch viên thành công'
40
						-- HUYHT 06/05/2022 THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_KT
41
						UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_KT' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'UPDATE'
42
						-- GiaNT 29/09/2021
43
						INSERT INTO dbo.PL_PROCESS
44
						(
45
							REQ_ID,
46
							PROCESS_ID,
47
							CHECKER_ID,
48
							APPROVE_DT,
49
							PROCESS_DESC,NOTES
50
						)
51
						VALUES
52
						(   @p_TRN_ID,       
53
							'REJECT',        
54
							@p_REJECTED_BY,       
55
							GETDATE(), 
56
						   @p_REASON ,
57
						   N'Từ chối phiếu'    
58
						)   
59
					END
60
					ELSE
61
					BEGIN
62
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thu hồi tài sản chưa được kế toán cập nhật'
63
						ROLLBACK TRANSACTION
64
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
65
						RETURN '-1'
66
					END
67
				END
68
			END
69
			ELSE IF(@p_STAGE='KT_HC')
70
			BEGIN -- KSV - GDV trả về người tạo
71
				IF(EXISTS (SELECT 1 FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT_HC'))
72
					BEGIN
73
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thu hồi tài sản đã được kế toán duyệt'
74
						ROLLBACK TRANSACTION
75
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
76
						RETURN '-1'
77
					END
78
				ELSE
79
				BEGIN
80
					-- Xóa thông tin xác nhận thu hồi
81
					DELETE dbo.ASS_COLLECT_CONFIRM_MASTER WHERE COL_MULTI_MASTER_ID = @p_TRN_ID
82

    
83
					UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS ='R',CREATE_DT_KT = NULL,MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL,CHECKER_ID_KT = NULL,CHECKER_ID=NULL,APPROVE_DT=NULL WHERE COL_MULTI_MASTER_ID =@p_TRN_ID
84
					SET @p_MESSAGE =N'Thông tin thu hồi tài sản đã được trả về người tạo thành công'
85
					-- GiaNT 29/09/2021
86
					INSERT INTO dbo.PL_PROCESS
87
					(
88
						REQ_ID,
89
						PROCESS_ID,
90
						CHECKER_ID,
91
						APPROVE_DT,
92
						PROCESS_DESC,NOTES
93
					)
94
					VALUES
95
					(   @p_TRN_ID,       
96
						'REJECT',        
97
						@p_REJECTED_BY,       
98
						GETDATE(), 
99
						@p_REASON ,
100
						N'Từ chối phiếu'    
101
					)
102
				END
103
			END
104
			ELSE
105
			BEGIN -- TDV trả về người tạo
106
				IF(EXISTS (SELECT 1 FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
107
				BEGIN
108
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thu hồi tài sản đã được hành chính duyệt'
109
					ROLLBACK TRANSACTION
110
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
111
					RETURN '-1'
112
				END
113
				ELSE
114
				BEGIN
115
					UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS ='R' WHERE COL_MULTI_MASTER_ID =@p_TRN_ID
116
					SET @p_MESSAGE =N'Thông tin thu hồi tài sản đã được trả về người tạo thành công'
117
					INSERT INTO dbo.PL_PROCESS
118
					(
119
						REQ_ID,
120
						PROCESS_ID,
121
						CHECKER_ID,
122
						APPROVE_DT,
123
						PROCESS_DESC,NOTES
124
					)
125
					VALUES
126
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
127
						'REJECT',        -- PROCESS_ID - varchar(10)
128
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
129
						GETDATE(), -- APPROVE_DT - datetime
130
						@p_REASON,
131
						N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
132
					)
133
				END
134
			END
135

    
136
		END
137
		-- Điều chuyển tài sản 
138
		ELSE IF(@p_TRN_TYPE ='ASS_TRANSFER_MUL')
139
		BEGIN
140
			---- GiaNT 29/09/2021 Sửa
141
			IF(@p_STAGE='KT')
142
			BEGIN -- KSV trả về GDV
143
				IF(EXISTS (SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
144
				BEGIN
145
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển tài sản đã được kế toán duyệt'
146
					ROLLBACK TRANSACTION
147
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
148
					RETURN '-1'
149
				END
150
				ELSE
151
				BEGIN				
152
					IF(EXISTS(SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
153
					BEGIN
154
						UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS_KT ='R' WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
155
						SET @p_MESSAGE =N'Thông tin điều chuyển tài sản đã được trả về giao dịch viên thành công'
156
						-- HUYHT 06/05/2022 THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_KT
157
						UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_KT' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'UPDATE'
158
						-- GiaNT 29/09/2021
159
						INSERT INTO dbo.PL_PROCESS
160
						(
161
							REQ_ID,
162
							PROCESS_ID,
163
							CHECKER_ID,
164
							APPROVE_DT,
165
							PROCESS_DESC,NOTES
166
						)
167
						VALUES
168
						(   @p_TRN_ID,        
169
							'REJECT',        
170
							@p_REJECTED_BY,       
171
							GETDATE(), 
172
							@p_REASON ,
173
							N'Trả về nhân viên xử lý'     
174
						)
175
					END
176
					ELSE
177
					BEGIN
178
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển tài sản chưa được kế toán cập nhật'
179
						ROLLBACK TRANSACTION
180
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
181
						RETURN '-1'
182
					END
183
				END
184
			END
185
			ELSE IF(@p_STAGE='KT_HC')
186
			BEGIN -- KSV - GDV trả về người tạo
187
				IF(EXISTS (SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT_HC'))
188
					BEGIN
189
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển tài sản đã được kế toán duyệt'
190
						ROLLBACK TRANSACTION
191
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
192
						RETURN '-1'
193
					END
194
				ELSE
195
				BEGIN
196
					UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS ='R',AUTH_STATUS_KT = NULL, APPROVE_DT = NULL,CHECKER_ID = NULL, MAKER_ID_KT = NULL, CREATE_DT_KT = NULL , CORE_NOTE = NULL
197
					WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
198

    
199
					-- Xóa thông tin xác nhận điều chuyển
200
					DELETE ASS_TRANSFER_CONFIRM_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
201
          UPDATE ASS_TRANSFER_MULTI_MASTER  SET CHECKER_ID =NULL,APPROVE_DT=NULL,MAKER_ID_KT=NULL,CREATE_DT_KT=NULL WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
202

    
203
					SET @p_MESSAGE =N'Thông tin điều chuyển tài sản đã được trả về người tạo thành công'
204
					INSERT INTO dbo.PL_PROCESS
205
					(
206
						REQ_ID,
207
						PROCESS_ID,
208
						CHECKER_ID,
209
						APPROVE_DT,
210
						PROCESS_DESC,NOTES
211
					)
212
					VALUES
213
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
214
						'REJECT',        -- PROCESS_ID - varchar(10)
215
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
216
						GETDATE(), -- APPROVE_DT - datetime
217
						@p_REASON ,N'Trả về hành chính'      -- PROCESS_DESC - nvarchar(1000)
218
					)
219
				END
220
			END
221
			ELSE
222
			BEGIN -- TDV trả về người tạo
223
				IF(EXISTS (SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
224
				BEGIN
225
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển tài sản đã được hành chính duyệt'
226
					ROLLBACK TRANSACTION
227
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
228
					RETURN '-1'
229
				END
230
				ELSE
231
				BEGIN
232
					UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS ='R' WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
233
					SET @p_MESSAGE =N'Thông tin điều chuyển tài sản đã được trả về thành công'
234
					INSERT INTO dbo.PL_PROCESS
235
						(
236
							REQ_ID,
237
							PROCESS_ID,
238
							CHECKER_ID,
239
							APPROVE_DT,
240
							PROCESS_DESC,NOTES
241
						)
242
						VALUES
243
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
244
							'REJECT',        -- PROCESS_ID - varchar(10)
245
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
246
							GETDATE(), -- APPROVE_DT - datetime
247
						   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
248
						)
249
				END
250
			END
251
		END
252
		-- Xuất sử dụng tài sản 
253
		ELSE IF(@p_TRN_TYPE ='ASS_USE_MUL')
254
		BEGIN
255
			IF(@p_STAGE='KT')
256
			BEGIN -- KSV trả về GDV
257
				IF(EXISTS (SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@p_TRN_ID  AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
258
				BEGIN
259
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng tài sản đã được kế toán duyệt'
260
					ROLLBACK TRANSACTION
261
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
262
					RETURN '-1'
263
				END
264
				ELSE
265
				BEGIN
266
					IF(EXISTS(SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
267
					BEGIN
268
						UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS_KT ='R' WHERE USER_MASTER_ID =@p_TRN_ID
269
						SET @p_MESSAGE =N'Thông tin xuất sử dụng tài sản đã được trả về giao dịch viên thành công'
270
						-- HUYHT 06/05/2022 THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_KT
271
						UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_KT' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'UPDATE'
272
						-- GiaNT 29/09/2021
273
						INSERT INTO dbo.PL_PROCESS
274
						(
275
							REQ_ID,
276
							PROCESS_ID,
277
							CHECKER_ID,
278
							APPROVE_DT,
279
							PROCESS_DESC,NOTES
280
						)
281
						VALUES
282
						(   @p_TRN_ID,       
283
							'REJECT',        
284
							@p_REJECTED_BY,       
285
							GETDATE(), 
286
						   @p_REASON ,
287
						   N'Từ chối phiếu'    
288
						)
289
					END
290
					ELSE
291
					BEGIN
292
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng tài sản chưa được kế toán cập nhật'
293
						ROLLBACK TRANSACTION
294
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
295
						RETURN '-1'
296
					END
297
				END
298
			END
299
			ELSE IF(@p_STAGE='KT_HC')
300
			BEGIN -- KSV - GDV trả về người tạo
301
				IF(EXISTS (SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT_HC'))
302
					BEGIN
303
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng tài sản đã được kế toán duyệt'
304
						ROLLBACK TRANSACTION
305
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
306
						RETURN '-1'
307
					END
308
				ELSE
309
				BEGIN
310
					-- Xóa thông tin xác nhận xuất sử dụng
311
					DELETE dbo.ASS_USE_CONFIRM_MASTER WHERE USER_MASTER_ID = @p_TRN_ID
312

    
313
					UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS ='R',CREATE_DT_KT = NULL,MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL,CHECKER_ID_KT = NULL,CHECKER_ID=NULL,APPROVE_DT=NULL WHERE USER_MASTER_ID =@p_TRN_ID
314
					SET @p_MESSAGE =N'Thông tin xuất sử dụng tài sản đã được trả về người tạo thành công'
315
					-- GiaNT 29/09/2021
316
					INSERT INTO dbo.PL_PROCESS
317
					(
318
						REQ_ID,
319
						PROCESS_ID,
320
						CHECKER_ID,
321
						APPROVE_DT,
322
						PROCESS_DESC,NOTES
323
					)
324
					VALUES
325
					(   @p_TRN_ID,       
326
						'REJECT',        
327
						@p_REJECTED_BY,       
328
						GETDATE(), 
329
						@p_REASON ,
330
						N'Từ chối phiếu'    
331
					)
332
				END
333
			END
334
			ELSE
335
			BEGIN -- TDV trả về người tạo
336
				IF(EXISTS (SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
337
				BEGIN
338
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng tài sản đã được hành chính duyệt'
339
					ROLLBACK TRANSACTION
340
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
341
					RETURN '-1'
342
				END
343
				ELSE
344
				BEGIN
345
					UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS ='R' WHERE USER_MASTER_ID =@p_TRN_ID
346
					SET @p_MESSAGE =N'Thông tin xuất sử dụng tài sản đã được trả về người tạo thành công'
347
					INSERT INTO dbo.PL_PROCESS
348
					(
349
						REQ_ID,
350
						PROCESS_ID,
351
						CHECKER_ID,
352
						APPROVE_DT,
353
						PROCESS_DESC,NOTES
354
					)
355
					VALUES
356
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
357
						'REJECT',        -- PROCESS_ID - varchar(10)
358
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
359
						GETDATE(), -- APPROVE_DT - datetime
360
						@p_REASON,
361
						N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
362
					)
363
				END
364
			END
365

    
366
		END
367
		-- Thanh lý tài sản
368
		ELSE IF(@p_TRN_TYPE ='ASS_LIQ_MUL')
369
		BEGIN
370
			IF(@p_STAGE='KT')
371
			BEGIN -- KSV trả về GDV
372
				IF(EXISTS (SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID =@p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
373
				BEGIN
374
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý tài sản đã được kế toán duyệt'
375
					ROLLBACK TRANSACTION
376
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
377
					RETURN '-1'
378
				END
379
				ELSE
380
				BEGIN
381
					IF(EXISTS(SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
382
					BEGIN
383
						UPDATE ASS_LIQUIDATION SET AUTH_STATUS_KT ='R' WHERE LIQ_ID =@p_TRN_ID
384
						SET @p_MESSAGE =N'Thông tin thanh lý tài sản đã được trả về giao dịch viên thành công'
385
						-- GiaNT 29/09/2021
386
						INSERT INTO dbo.PL_PROCESS
387
						(
388
							REQ_ID,
389
							PROCESS_ID,
390
							CHECKER_ID,
391
							APPROVE_DT,
392
							PROCESS_DESC,NOTES
393
						)
394
						VALUES
395
						(   @p_TRN_ID,       
396
							'REJECT',        
397
							@p_REJECTED_BY,       
398
							GETDATE(), 
399
						   @p_REASON ,
400
						   N'Từ chối phiếu'    
401
						)
402
					END
403
					ELSE
404
					BEGIN
405
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý tài sản chưa được kế toán cập nhật'
406
						ROLLBACK TRANSACTION
407
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
408
						RETURN '-1'
409
					END
410
				END
411
			END
412
			ELSE IF(@p_STAGE='KT_HC')
413
			BEGIN -- KSV - GDV trả về người tạo
414
				IF(EXISTS (SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID = @p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT_HC'))
415
					BEGIN
416
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý tài sản đã được kế toán duyệt'
417
						ROLLBACK TRANSACTION
418
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
419
						RETURN '-1'
420
					END
421
				ELSE
422
				BEGIN
423
					UPDATE ASS_LIQUIDATION SET AUTH_STATUS ='R',CREATE_DT_KT = NULL,MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL,CHECKER_ID_KT = NULL,CHECKER_ID=NULL,APPROVE_DT=NULL WHERE LIQ_ID =@p_TRN_ID
424
					SET @p_MESSAGE =N'Thông tin thanh lý tài sản đã được trả về người tạo thành công'
425
					-- GiaNT 29/09/2021
426
						INSERT INTO dbo.PL_PROCESS
427
						(
428
							REQ_ID,
429
							PROCESS_ID,
430
							CHECKER_ID,
431
							APPROVE_DT,
432
							PROCESS_DESC,NOTES
433
						)
434
						VALUES
435
						(   @p_TRN_ID,       
436
							'REJECT',        
437
							@p_REJECTED_BY,       
438
							GETDATE(), 
439
						   @p_REASON ,
440
						   N'Từ chối phiếu'    
441
						)
442
				END
443
			END
444
			ELSE
445
			BEGIN -- TDV trả về người tạo
446
				IF(EXISTS (SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID = @p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
447
				BEGIN
448
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý tài sản đã được hành chính duyệt'
449
					ROLLBACK TRANSACTION
450
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
451
					RETURN '-1'
452
				END
453
				ELSE
454
				BEGIN
455
					UPDATE ASS_LIQUIDATION SET AUTH_STATUS ='R' WHERE LIQ_ID = @p_TRN_ID
456
					SET @p_MESSAGE =N'Thông tin thanh lý tài sản đã được trả về người tạo thành công'
457
					INSERT INTO dbo.PL_PROCESS
458
						(
459
							REQ_ID,
460
							PROCESS_ID,
461
							CHECKER_ID,
462
							APPROVE_DT,
463
							PROCESS_DESC,NOTES
464
						)
465
						VALUES
466
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
467
							'REJECT',        -- PROCESS_ID - varchar(10)
468
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
469
							GETDATE(), -- APPROVE_DT - datetime
470
						   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
471
						)
472
				END
473
			END
474
		END
475
		-- Nhập mới tài sản
476
		ELSE IF(@p_TRN_TYPE ='ASS_ADDNEW_MUL')
477
		BEGIN
478
			IF(@p_STAGE='KT')
479
			BEGIN -- KSV trả về GDV
480
				IF(EXISTS (SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID =@p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
481
				BEGIN
482
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới tài sản đã được kế toán duyệt'
483
					ROLLBACK TRANSACTION
484
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
485
					RETURN '-1'
486
				END
487
				ELSE
488
				BEGIN
489
					--IF(EXISTS(SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
490
					--BEGIN
491
						UPDATE ASS_ADDNEW SET AUTH_STATUS_KT ='R' WHERE ADDNEW_ID =@p_TRN_ID
492
						SET @p_MESSAGE =N'Thông tin nhập mới tài sản đã được trả về giao dịch viên thành công'
493
						-- HUYHT 06/05/2022 THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_KT
494
						UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_KT' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'UPDATE'
495
						-- GiaNT 29/09/2021
496
						INSERT INTO dbo.PL_PROCESS
497
						(
498
							REQ_ID,
499
							PROCESS_ID,
500
							CHECKER_ID,
501
							APPROVE_DT,
502
							PROCESS_DESC,NOTES
503
						)
504
						VALUES
505
						(   @p_TRN_ID,       
506
							'REJECT',        
507
							@p_REJECTED_BY,       
508
							GETDATE(), 
509
						   @p_REASON ,
510
						   N'Từ chối phiếu'    
511
						)
512
					--END
513
					--ELSE
514
					--BEGIN
515
					--	SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới tài sản chưa được kế toán cập nhật'
516
					--	ROLLBACK TRANSACTION
517
					--	SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
518
					--	RETURN '-1'
519
					--END
520
				END
521
			END
522
			ELSE IF(@p_STAGE='KT_HC')
523
			BEGIN -- KSV - GDV trả về người tạo
524
				IF(EXISTS (SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID = @p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT_HC'))
525
					BEGIN
526
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới tài sản đã được kế toán duyệt'
527
						ROLLBACK TRANSACTION
528
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
529
						RETURN '-1'
530
					END
531
				ELSE
532
				BEGIN
533
					UPDATE ASS_ADDNEW SET AUTH_STATUS ='R',CREATE_DT_KT = NULL,MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL,CHECKER_ID_KT = NULL,CHECKER_ID=NULL,APPROVE_DT=NULL WHERE ADDNEW_ID =@p_TRN_ID
534
					SET @p_MESSAGE =N'Thông tin nhập mới tài sản đã được trả về người tạo thành công'
535
					-- GiaNT 29/09/2021
536
						INSERT INTO dbo.PL_PROCESS
537
						(
538
							REQ_ID,
539
							PROCESS_ID,
540
							CHECKER_ID,
541
							APPROVE_DT,
542
							PROCESS_DESC,NOTES
543
						)
544
						VALUES
545
						(   @p_TRN_ID,       
546
							'REJECT',        
547
							@p_REJECTED_BY,       
548
							GETDATE(), 
549
						   @p_REASON ,
550
						   N'Từ chối phiếu'    
551
						)
552
				END
553
			END
554
			ELSE
555
			BEGIN -- TDV trả về người tạo
556
				IF(EXISTS (SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID = @p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
557
				BEGIN
558
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới tài sản đã được hành chính duyệt'
559
					ROLLBACK TRANSACTION
560
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
561
					RETURN '-1'
562
				END
563
				ELSE
564
				BEGIN
565
					UPDATE ASS_ADDNEW SET AUTH_STATUS ='R' WHERE ADDNEW_ID = @p_TRN_ID
566
					SET @p_MESSAGE =N'Thông tin nhập mới tài sản đã được trả về người tạo thành công'
567
					INSERT INTO dbo.PL_PROCESS
568
						(
569
							REQ_ID,
570
							PROCESS_ID,
571
							CHECKER_ID,
572
							APPROVE_DT,
573
							PROCESS_DESC,NOTES
574
						)
575
						VALUES
576
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
577
							'REJECT',        -- PROCESS_ID - varchar(10)
578
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
579
							GETDATE(), -- APPROVE_DT - datetime
580
						   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
581
						)
582
				END
583
			END
584
		END
585
		-- Kiểm kê tài sản
586
		ELSE IF(@p_TRN_TYPE ='ASS_INV_MUL')
587
		BEGIN
588
			IF(@p_STAGE='APPROVE')
589
			BEGIN -- Trưởng ban kiểm kê trả về người tạo
590
				IF(EXISTS (SELECT * FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @p_TRN_ID  AND AUTH_STATUS='A'))
591
				BEGIN
592
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin kiểm kê tài sản đã được trưởng ban kiểm kê duyệt'
593
					ROLLBACK TRANSACTION
594
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
595
					RETURN '-1'
596
				END
597
				ELSE
598
				BEGIN
599
					UPDATE ASS_INVENTORY_MASTER SET AUTH_STATUS_DVKD ='R',AUTH_STATUS=NULL,APPROVE_DT_DVKD=NULL,CHECKER_ID_DVKD=NULL WHERE INVENT_ID = @p_TRN_ID
600
					UPDATE dbo.ASS_INVENTORY_PARTY_DT SET IS_DONE = '0', COMMENT = NULL, CONFIRM_DT = NULL WHERE INVENT_ID = @p_TRN_ID
601
					SET @p_MESSAGE =N'Thông tin nhập kiểm kê sản đã được trả về người tạo thành công'
602
					INSERT INTO dbo.PL_PROCESS
603
					(
604
						REQ_ID,
605
						PROCESS_ID,
606
						CHECKER_ID,
607
						APPROVE_DT,
608
						PROCESS_DESC,NOTES
609
					)
610
					VALUES
611
					(   @p_TRN_ID,       
612
						'REJECT',        
613
						@p_REJECTED_BY,       
614
						GETDATE(), 
615
						@p_REASON ,
616
						N'Từ chối phiếu'    
617
					)
618
				END
619
			END
620
			ELSE IF(@p_STAGE='CONFIRM')
621
			BEGIN -- Thành phần ban kiểm kê trả về người tạo
622
				IF(EXISTS(SELECT * FROM dbo.ASS_INVENTORY_PARTY_DT WHERE INVENT_ID = @p_TRN_ID AND PARTY_NAME = @p_REJECTED_BY AND IS_DONE = 1))
623
					BEGIN
624
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin kiểm kê tài sản đã được thành phần ban kiểm kê duyệt'
625
						ROLLBACK TRANSACTION
626
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
627
						RETURN '-1'
628
					END
629
				ELSE IF (EXISTS(SELECT * FROM dbo.ASS_INVENTORY_PARTY_DT WHERE INVENT_ID = @p_TRN_ID AND PARTY_NAME = @p_REJECTED_BY AND IS_DONE = 0))
630
				BEGIN
631
					UPDATE ASS_INVENTORY_MASTER SET AUTH_STATUS_DVKD ='R',AUTH_STATUS=NULL,APPROVE_DT_DVKD=NULL,CHECKER_ID_DVKD=NULL WHERE INVENT_ID =@p_TRN_ID
632
					UPDATE dbo.ASS_INVENTORY_PARTY_DT SET IS_DONE = '0', COMMENT = NULL, CONFIRM_DT = NULL WHERE INVENT_ID = @p_TRN_ID
633
					SET @p_MESSAGE =N'Thông tin kiểm kê tài sản đã được trả về người tạo thành công'
634
					INSERT INTO dbo.PL_PROCESS
635
					(
636
						REQ_ID,
637
						PROCESS_ID,
638
						CHECKER_ID,
639
						APPROVE_DT,
640
						PROCESS_DESC,NOTES
641
					)
642
					VALUES
643
					(   @p_TRN_ID,       
644
						'REJECT',        
645
						@p_REJECTED_BY,       
646
						GETDATE(), 
647
						@p_REASON ,
648
						N'Từ chối phiếu'    
649
					)
650
				END
651
			END
652
			ELSE
653
			BEGIN -- TDV trả về người tạo
654
				IF(EXISTS (SELECT * FROM dbo.ASS_INVENTORY_MASTER WHERE INVENT_ID = @p_TRN_ID  AND AUTH_STATUS_DVKD='A' AND @p_STAGE ='HC'))
655
				BEGIN
656
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin kiểm kê tài sản đã được trưởng đơn vị duyệt'
657
					ROLLBACK TRANSACTION
658
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
659
					RETURN '-1'
660
				END
661
				ELSE
662
				BEGIN
663
					UPDATE ASS_INVENTORY_MASTER SET AUTH_STATUS_DVKD ='R' WHERE INVENT_ID = @p_TRN_ID
664
					SET @p_MESSAGE =N'Thông tin kiểm kê tài sản đã được trả về người tạo thành công'
665
					INSERT INTO dbo.PL_PROCESS
666
					(
667
						REQ_ID,
668
						PROCESS_ID,
669
						CHECKER_ID,
670
						APPROVE_DT,
671
						PROCESS_DESC,NOTES
672
					)
673
					VALUES
674
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
675
						'REJECT',        -- PROCESS_ID - varchar(10)
676
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
677
						GETDATE(), -- APPROVE_DT - datetime
678
						@p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
679
					)
680
				END
681
			END
682
		END
683
		--PHONGNT 12/8/22 - Cập nhật thông tin tài sản
684
		ELSE IF(@p_TRN_TYPE ='ASS_UPDATE')
685
		BEGIN
686
			IF(EXISTS (SELECT 1 FROM ASS_UPDATE WHERE UPDATE_ID = @p_TRN_ID  AND AUTH_STATUS='A'))
687
			BEGIN
688
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin sửa chữa tài sản đã được trưởng phòng Kế Toán duyệt'
689
				ROLLBACK TRANSACTION
690
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
691
				RETURN '-1'
692
			END
693
			ELSE
694
			BEGIN
695
				UPDATE PL_PROCESS SET PROCESS_ID ='UPDATE_NT' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID='UPDATE'
696
				UPDATE ASS_UPDATE SET AUTH_STATUS ='R' WHERE UPDATE_ID = @p_TRN_ID
697
				SET @p_MESSAGE =N' Thông tin sửa chữa tài sản đã được trả về người tạo thành công'
698
				INSERT INTO dbo.PL_PROCESS
699
				(
700
					REQ_ID,
701
					PROCESS_ID,
702
					CHECKER_ID,
703
					APPROVE_DT,
704
					PROCESS_DESC,NOTES
705
				)
706
				VALUES
707
				(   @p_TRN_ID,       
708
					'REJECT',        
709
					@p_REJECTED_BY,       
710
					GETDATE(), 
711
					@p_REASON ,
712
					N'Từ chối phiếu'    
713
				)
714
			END
715
		END
716
		--END
717
		--PHONGNT 09/08/22 phân bổ chi phí
718
		ELSE IF(@p_TRN_TYPE='ASS_COL_COST')
719
		BEGIN
720
			IF(EXISTS (SELECT 1 FROM dbo.ASS_COST_ALLOCATION WHERE COS_ID = @p_TRN_ID  AND AUTH_STATUS='A'))
721
			BEGIN
722
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin phân bổ chi phí được trưởng đơn vị duyệt'
723
				ROLLBACK TRANSACTION
724
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
725
				RETURN '-1'
726
			END
727
			ELSE
728
			BEGIN
729
				UPDATE PL_PROCESS SET PROCESS_ID ='UPDATE_NT' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID='UPDATE'
730
				UPDATE ASS_COST_ALLOCATION SET AUTH_STATUS ='R' WHERE COS_ID = @p_TRN_ID
731
				SET @p_MESSAGE =N'Thông tin phân bổ chi phí đã được trả về người tạo thành công'
732
				INSERT INTO dbo.PL_PROCESS
733
				(
734
					REQ_ID,
735
					PROCESS_ID,
736
					CHECKER_ID,
737
					APPROVE_DT,
738
					PROCESS_DESC,NOTES
739
				)
740
				VALUES
741
				(   @p_TRN_ID,       
742
					'REJECT',        
743
					@p_REJECTED_BY,       
744
					GETDATE(), 
745
					@p_REASON ,
746
					N'Từ chối phiếu'    
747
				)
748
			END
749
		END
750
		--END
751
		ELSE IF(@p_TRN_TYPE ='MW_IN')
752
		BEGIN
753
			BEGIN
754
			IF(@p_STAGE='KT')
755
			BEGIN
756
				IF(EXISTS (SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
757
				BEGIN
758
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới vật liệu đã được kế toán duyệt'
759
					ROLLBACK TRANSACTION
760
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
761
					RETURN '0'
762
				END
763
				ELSE
764
				BEGIN
765
					--UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
766
					--SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
767
					IF(EXISTS(SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
768
					BEGIN
769
						UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
770
						SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
771

    
772
						INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
773
						VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
774

    
775
					END
776
					ELSE
777
					BEGIN
778
						SET @p_STAGE ='HC'
779
						UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
780
						SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
781

    
782
						INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
783
						VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
784
					END
785
				END
786
			END
787
			ELSE IF(@p_STAGE='KT_HC')
788
				BEGIN
789
					BEGIN
790
					IF(EXISTS (SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID  AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
791
						BEGIN
792
							SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới vật liệu đã được kế toán duyệt'
793
							ROLLBACK TRANSACTION
794
							SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
795
							RETURN '0'
796
						END
797
					ELSE
798
						BEGIN
799
							SET @p_STAGE ='HC'
800
							UPDATE MW_IN_MASTER SET AUTH_STATUS ='R',CORE_NOTE = NULL
801
							, MAKER_ID_KT = NULL, CREATE_DT_KT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
802
							--,CHECKER_ID_KT = @p_REJECTED_BY,APPROVE_DT_KT = GETDATE()
803
							WHERE IN_ID =@p_TRN_ID
804
							SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
805

    
806
							INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
807
							VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
808
						END
809
					END
810
				END
811
			ELSE
812
			BEGIN
813
				IF(EXISTS (SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
814
				BEGIN
815
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới vật liệu đã được hành chính duyệt'
816
					ROLLBACK TRANSACTION
817
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
818
					RETURN '0'
819
				END
820
				ELSE
821
				BEGIN
822
					UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
823
					SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
824

    
825
					INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
826
					VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
827
				END
828
			END
829
			END
830
		END
831
		
832
		--- MW - TRANSFER : ĐIỀU CHUYỂN VẬT LIỆU
833
		ELSE IF(@p_TRN_TYPE ='MW_TRANSFER')
834
		BEGIN
835
			BEGIN
836
			IF(@p_STAGE='KT')
837
			BEGIN
838
				IF(EXISTS (SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID  AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
839
					BEGIN
840
						SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển vật liệu đã được kế toán duyệt'
841
						ROLLBACK TRANSACTION
842
						SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
843
						RETURN '0'
844
					END
845
				ELSE
846
					BEGIN
847
						--UPDATE MW_TRANSFER SET KT_AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
848
						--SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về thành công'
849
						IF(EXISTS(SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID AND KT_MAKER_ID IS NOT NULL AND KT_MAKER_ID <>''))
850
						BEGIN
851
							UPDATE MW_TRANSFER SET KT_AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
852
							SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về thành công'
853

    
854
							INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
855
							VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
856
						END
857
						ELSE
858
						BEGIN
859
							SET @p_STAGE ='HC'
860
							UPDATE MW_TRANSFER SET AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
861
							SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về hành chính thành công'
862

    
863
							INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
864
							VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
865
						END
866
					END
867
			END
868
			ELSE IF(@p_STAGE='KT_HC')
869
				BEGIN
870
					IF(EXISTS (SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID  AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
871
						BEGIN
872
							SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển vật liệu đã được kế toán duyệt'
873
							ROLLBACK TRANSACTION
874
							SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
875
							RETURN '0'
876
						END
877
					ELSE
878
						BEGIN
879
							SET @p_STAGE ='HC'
880
							UPDATE MW_TRANSFER SET AUTH_STATUS ='R', CORE_NOTE = NULL 
881
							, KT_MAKER_ID = NULL, KT_CREATE_DT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
882
							--,KT_CHECKER_ID = @p_REJECTED_BY, KT_APPROVE_DT = GETDATE()
883
							WHERE TRANSFER_ID =@p_TRN_ID
884
							SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về hành chính thành công'
885

    
886
							INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
887
							VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
888
						END
889
				END
890
			ELSE
891
			BEGIN
892
				IF(EXISTS (SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
893
				BEGIN
894
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển vật liệu đã được hành chính duyệt'
895
					ROLLBACK TRANSACTION
896
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
897
					RETURN '0'
898
				END
899
				ELSE
900
				BEGIN
901
					UPDATE MW_TRANSFER SET AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
902
					SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về thành công'
903

    
904
					INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
905
					VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
906
				END
907
			END
908
			END
909

    
910
		END
911
		--- MW_OUT : XUẤT VẬT LIỆU
912
		ELSE IF(@p_TRN_TYPE ='MW_OUT')
913
		BEGIN
914
			BEGIN
915
			IF(@p_STAGE='KT')
916
			BEGIN
917
				IF(EXISTS (SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID  AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
918
				BEGIN
919
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng vật liệu đã được kế toán duyệt'
920
					ROLLBACK TRANSACTION
921
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
922
					RETURN '0'
923
				END
924
				ELSE
925
				BEGIN
926
					--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
927
					--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
928
					IF(EXISTS(SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID AND KT_MAKER_ID IS NOT NULL AND KT_MAKER_ID <>''))
929
					BEGIN
930
						UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
931
						SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
932

    
933
						INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
934
						VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
935
					END
936
					ELSE
937
					BEGIN
938
						SET @p_STAGE ='HC'
939
						UPDATE MW_OUT SET AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
940
						SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về hành chính thành công'
941

    
942
						INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
943
						VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
944
					END
945
				END
946
			END
947
			ELSE IF(@p_STAGE='KT_HC')
948
				BEGIN
949
					IF(EXISTS (SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID  AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
950
						BEGIN
951
							SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng vật liệu đã được kế toán duyệt'
952
							ROLLBACK TRANSACTION
953
							SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
954
							RETURN '0'
955
						END
956
					ELSE
957
						BEGIN
958
							SET @p_STAGE ='HC'
959
							UPDATE MW_OUT SET AUTH_STATUS ='R', CORE_NOTE = NULL
960
							, KT_MAKER_ID = NULL, KT_CREATE_DT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
961
							--, KT_APPROVE_DT = GETDATE() ,KT_CHECKER_ID = @p_REJECTED_BY
962
							WHERE OUT_ID =@p_TRN_ID
963
							SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về hành chính thành công'
964

    
965
							INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
966
							VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
967
						END
968
				END
969
			ELSE
970
			BEGIN
971
				IF(EXISTS (SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
972
				BEGIN
973
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng vật liệu đã được hành chính duyệt'
974
					ROLLBACK TRANSACTION
975
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
976
					RETURN '0'
977
				END
978
				ELSE
979
				BEGIN
980
					UPDATE MW_OUT SET AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
981
					SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
982

    
983
					INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
984
					VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
985
				END
986
			END
987
			END
988
		END
989
		--- MW_OUT : THANH LÝ VẬT LIỆU
990
		ELSE IF(@p_TRN_TYPE ='MW_LIQ_MASTER')
991
		BEGIN
992
			BEGIN
993
			IF(@p_STAGE='KT')
994
			BEGIN
995
				IF(EXISTS (SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID  AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
996
				BEGIN
997
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý vật liệu đã được kế toán duyệt'
998
					ROLLBACK TRANSACTION
999
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1000
					RETURN '0'
1001
				END
1002
				ELSE
1003
				BEGIN
1004
					--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
1005
					--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
1006
					IF(EXISTS(SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID AND KT_MAKER_ID IS NOT NULL AND KT_MAKER_ID <>''))
1007
					BEGIN
1008
						UPDATE MW_LIQ_MASTER SET KT_AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
1009
						SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về thành công'
1010

    
1011
						INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
1012
						VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
1013
					END
1014
					ELSE
1015
					BEGIN
1016
						SET @p_STAGE ='HC'
1017
						UPDATE MW_LIQ_MASTER SET AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
1018
						SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về hành chính thành công'
1019

    
1020
						INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
1021
						VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
1022
					END
1023
				END
1024
			END
1025
			ELSE IF(@p_STAGE='KT_HC')
1026
				BEGIN
1027
					IF(EXISTS (SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID  AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
1028
						BEGIN
1029
							SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý vật liệu đã được kế toán duyệt'
1030
							ROLLBACK TRANSACTION
1031
							SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1032
							RETURN '0'
1033
						END
1034
					ELSE
1035
						BEGIN
1036
							SET @p_STAGE ='HC'
1037
							UPDATE MW_LIQ_MASTER SET AUTH_STATUS ='R', CORE_NOTE = NULL
1038
							, KT_MAKER_ID = NULL, KT_CREATE_DT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
1039
							--,KT_CHECKER_ID = @p_REJECTED_BY, KT_APPROVE_DT = GETDATE()
1040
							WHERE LIQ_ID =@p_TRN_ID
1041
							SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về hành chính thành công'
1042

    
1043
							INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
1044
							VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
1045
						END
1046
				END
1047
			ELSE
1048
			BEGIN
1049
				IF(EXISTS (SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
1050
				BEGIN
1051
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý vật liệu đã được hành chính duyệt'
1052
					ROLLBACK TRANSACTION
1053
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1054
					RETURN '0'
1055
				END
1056
				ELSE
1057
				BEGIN
1058
					UPDATE MW_LIQ_MASTER SET AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
1059
					SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về thành công'
1060

    
1061
					INSERT INTO dbo.PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES)
1062
					VALUES (@p_TRN_ID, 'REJECT', @p_REJECTED_BY, GETDATE(), @p_REASON , N'Từ chối phiếu')
1063
				END
1064
			END
1065
			END
1066
		END
1067
		-- PHIEU DE NGHI TAM UNG 05 11 2019
1068
		ELSE IF(@p_TRN_TYPE ='REQ_ADVANCE_PAY')
1069
		BEGIN
1070
			
1071
			IF(@p_STAGE='KT')
1072
			BEGIN
1073
				-- doanptt them rang buoc nhap ky do tra ve
1074
				IF(@p_REASON IS NULL OR @p_REASON = '')
1075
				BEGIN
1076
					SET @p_MESSAGE =N'Lý do trả về không được để trống'
1077
					ROLLBACK TRANSACTION
1078
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1079
					RETURN '-1'
1080
				END
1081
				IF((SELECT AUTH_STATUS_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID) = 'R')
1082
				BEGIN
1083
					SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được kiểm soát viên trả về giao dịch viên trước đó'
1084
					ROLLBACK TRANSACTION
1085
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1086
					RETURN '-1'
1087
				END
1088
				IF((SELECT CHECKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID) IS NULL)
1089
				BEGIN
1090
					IF((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID) = 'R')
1091
					BEGIN
1092
						SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được kiểm soát viên trả về người tạo trước đó'
1093
						ROLLBACK TRANSACTION
1094
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1095
						RETURN '-1'
1096
					END
1097
					/*
1098
					ELSE
1099
					BEGIN
1100
						SET @p_MESSAGE =N'Trả về thất bại! Phiếu đề nghị tạm ứng này không thuộc quyền xử lý của kiểm soát viên'
1101
						ROLLBACK TRANSACTION
1102
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1103
						RETURN '-1'
1104
					END
1105
					*/
1106
				END
1107

    
1108
				IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
1109
				BEGIN
1110
					SET @p_MESSAGE =N'Trả về thất bại! Phiếu đề nghị tạm ứng đã được kế toán duyệt'
1111
					ROLLBACK TRANSACTION
1112
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1113
					RETURN '-1'
1114
				END
1115
				ELSE
1116
				BEGIN
1117
					-- NEU DANG O VI TRI TKTGD, TKHDQT
1118
					IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID AND ROLE_USER IN ('TKTGD','TKHDQT') AND STATUS ='C'))
1119
					BEGIN
1120
						IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TYPE_JOB ='KS' AND TLNAME =@p_REJECTED_BY))
1121
							BEGIN
1122
								SET @p_MESSAGE =N'Trả về thất bại! Phiếu đề nghị tạm ứng chưa được điều phối cho nhân viên xử lý'
1123
								ROLLBACK TRANSACTION
1124
								SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1125
								RETURN '-1'
1126
						END
1127
						--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
1128
						SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về nhân viên xử lý thành công'
1129
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1130
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME =(SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TYPE_JOB ='XL')
1131
						AND REQ_ID =@p_TRN_ID
1132
					    -- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1133
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE TLNAME =@p_REJECTED_BY AND REQ_ID =@p_TRN_ID AND TYPE_JOB ='KS'
1134
						INSERT INTO dbo.PL_PROCESS
1135
						(
1136
							REQ_ID,
1137
							PROCESS_ID,
1138
							CHECKER_ID,
1139
							APPROVE_DT,
1140
							PROCESS_DESC,NOTES
1141
						)
1142
						VALUES
1143
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1144
							'REJECT',        -- PROCESS_ID - varchar(10)
1145
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1146
							GETDATE(), -- APPROVE_DT - datetime
1147
							@p_REASON ,N'Trưởng văn phòng từ chối nhân viên xử lý'       -- PROCESS_DESC - nvarchar(1000)
1148
						)
1149
						EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
1150
						IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
1151
						INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'HC',@p_TRN_ID,@p_TRN_TYPE,CONVERT(DATETIME,GETDATE(),103),'R',@p_REASON,'Y',@p_REJECTED_BY,CONVERT(DATETIME,GETDATE(),103))
1152
						COMMIT TRANSACTION
1153
						SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1154
						RETURN '0'
1155
					END
1156
					--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
1157
					--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
1158
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
1159
					BEGIN
1160
						UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
1161
						-- DOANPTT 291222: THEM LOG KPI
1162
						UPDATE TR_REQ_KPI 
1163
						SET AUTH_STATUS_KT ='U'
1164
						WHERE REQ_ID = @p_TRN_ID AND AUTH_STATUS_KT = 'P'
1165
						SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về thành công'
1166
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1167
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME =(SELECT MAKER_ID_KT FROM  TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID)
1168
						AND REQ_ID =@p_TRN_ID
1169
					    -- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1170
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE TLNAME =@p_REJECTED_BY AND REQ_ID =@p_TRN_ID
1171
						INSERT INTO dbo.PL_PROCESS
1172
						(
1173
							REQ_ID,
1174
							PROCESS_ID,
1175
							CHECKER_ID,
1176
							APPROVE_DT,
1177
							PROCESS_DESC,NOTES
1178
						)
1179
						VALUES
1180
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1181
							'REJECT_GDV',        -- PROCESS_ID - varchar(10)
1182
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1183
							GETDATE(), -- APPROVE_DT - datetime
1184
							@p_REASON ,N'KSV trả về cho GDV'       -- PROCESS_DESC - nvarchar(1000)
1185
						)
1186
					END
1187
					ELSE
1188
					BEGIN
1189
						SET @p_STAGE ='HC'
1190
						UPDATE TR_REQ_ADVANCE_PAYMENT 
1191
						SET AUTH_STATUS ='R',PROCESS = NULL,MAKER_ID_KT = NULL, CREATE_DT_KT =NULL, APPROVE_DT = NULL, CHECKER_ID = NULL, AUTH_STATUS_KT = NULL,
1192
						-- doanptt 070922: Xoa thong tin cac cap phe duyet TKTGd, TKHDQT neu co
1193
						TK_TGD_NOTES = NULL, TK_HDQT_NOTES = NULL, OTHER_NOTES = NULL, TK_TGD_XL_TLNAME = NULL, TK_TGD_APPR_TLNAME = NULL, TK_HDQT_XL_TLNAME = NULL, TK_HDQT_APPR_TLNAME = NULL
1194
						WHERE REQ_PAY_ID =@p_TRN_ID
1195
						SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về đơn vị thành công'
1196
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1197
						DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
1198
						DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID
1199
						IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_TRN_ID))
1200
						BEGIN
1201
							DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID =@p_TRN_ID
1202
						END
1203
						-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1204
						INSERT INTO dbo.PL_PROCESS
1205
						(
1206
							REQ_ID,
1207
							PROCESS_ID,
1208
							CHECKER_ID,
1209
							APPROVE_DT,
1210
							PROCESS_DESC,NOTES
1211
						)
1212
						VALUES
1213
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1214
							'REJECT',        -- PROCESS_ID - varchar(10)
1215
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1216
							GETDATE(), -- APPROVE_DT - datetime
1217
							@p_REASON,N'Trả về cho người tạo phiếu'    -- PROCESS_DESC - nvarchar(1000)
1218
						)
1219
					END
1220
				END
1221
			END
1222
			ELSE IF(@p_STAGE='KT_HC')
1223
			BEGIN
1224
				IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS_KT = 'A'))
1225
				BEGIN
1226
					SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị tạm ứng đã được kế toán duyệt'
1227
					ROLLBACK TRANSACTION
1228
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1229
					RETURN '-1'
1230
				END
1231
				ELSE
1232
				BEGIN
1233
					SET @p_STAGE ='HC'
1234
					UPDATE TR_REQ_ADVANCE_PAYMENT 
1235
					SET AUTH_STATUS ='R',PROCESS = NULL,MAKER_ID_KT = NULL, CREATE_DT_KT =NULL, APPROVE_DT = NULL, CHECKER_ID = NULL, AUTH_STATUS_KT = NULL,
1236
					-- doanptt 070922: Xoa thong tin cac cap phe duyet TKTGd, TKHDQT neu co
1237
					TK_TGD_NOTES = NULL, TK_HDQT_NOTES = NULL, OTHER_NOTES = NULL, TK_TGD_XL_TLNAME = NULL, TK_TGD_APPR_TLNAME = NULL, TK_HDQT_XL_TLNAME = NULL, TK_HDQT_APPR_TLNAME = NULL 
1238
					WHERE REQ_PAY_ID =@p_TRN_ID
1239
					-- DOANPTT 291222: THEM LOG KPI
1240
					UPDATE TR_REQ_KPI 
1241
					SET AUTH_STATUS_KT ='R', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_REJECTED_BY, REQ_STATUS = 'REJECT'
1242
					WHERE REQ_ID = @p_TRN_ID AND AUTH_STATUS_KT = 'P'
1243
					SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về đơn vị thành công'
1244
					---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1245
					DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
1246
					DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID
1247
					IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_TRN_ID))
1248
					BEGIN
1249
						DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID =@p_TRN_ID
1250
					END
1251
					-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1252
					INSERT INTO dbo.PL_PROCESS
1253
					(
1254
						REQ_ID,
1255
						PROCESS_ID,
1256
						CHECKER_ID,
1257
						APPROVE_DT,
1258
						PROCESS_DESC,NOTES
1259
					)
1260
					VALUES
1261
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1262
						'REJECT',        -- PROCESS_ID - varchar(10)
1263
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1264
						GETDATE(), -- APPROVE_DT - datetime
1265
						@p_REASON,N'Trả về cho người tạo phiếu'    -- PROCESS_DESC - nvarchar(1000)
1266
					)
1267
				END
1268
			END
1269
			ELSE IF(@p_STAGE ='HC')
1270
			BEGIN
1271
				IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC' AND (MAKER_ID_KT IS  NULL OR  MAKER_ID_KT ='')))
1272
				BEGIN
1273
					SET @p_MESSAGE =N'Hủy trả về thất bại! Phiếu đề nghị tạm ứng đã được duyệt hoàn tất ở cấp độ Hành Chính Quản Trị'
1274
					ROLLBACK TRANSACTION
1275
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1276
					RETURN '-1'
1277
				END
1278
				IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS='R'))
1279
				BEGIN
1280
					SET @p_MESSAGE =N'Hủy trả về thất bại! Phiếu đề nghị tạm ứng đã được trả về trước đó'
1281
					ROLLBACK TRANSACTION
1282
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1283
					RETURN '-1'
1284
				END
1285
				ELSE
1286
				BEGIN
1287
					UPDATE TR_REQ_ADVANCE_PAYMENT 
1288
					SET AUTH_STATUS ='R',PROCESS =NULL,CHECKER_ID ='',APPROVE_DT =NULL, MAKER_ID_KT =NULL, CREATE_DT_KT = NULL, APPROVE_DT_KT =NULL, AUTH_STATUS_KT = NULL,
1289
					-- doanptt 070922: Xoa thong tin cac cap phe duyet TKTGd, TKHDQT neu co
1290
					TK_TGD_NOTES = NULL, TK_HDQT_NOTES = NULL, OTHER_NOTES = NULL, TK_TGD_XL_TLNAME = NULL, TK_TGD_APPR_TLNAME = NULL, TK_HDQT_XL_TLNAME = NULL, TK_HDQT_APPR_TLNAME = NULL
1291
					WHERE REQ_PAY_ID =@p_TRN_ID
1292
					SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng được trả về thành công'
1293
					--NEU PHIEU DANG TRONG QUA TRINH PHE DUYET THI XOA TOAN BO PL_PROCESS VA PL_REQUEST_PROCESS 
1294
					-- XOA CAC CAP PHE DUYET, KHI DON VI THUC HIEN CHINH SUA THI HE THONG SE INSERT LAI
1295
					DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID
1296
				    DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
1297
					IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_TRN_ID))
1298
					BEGIN
1299
						DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID =@p_TRN_ID
1300
					END
1301
					--DELETE FROM PL_PROCESS WHERE REQ_ID =@p_TRN_ID
1302
					-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1303
						INSERT INTO dbo.PL_PROCESS
1304
						(
1305
							REQ_ID,
1306
							PROCESS_ID,
1307
							CHECKER_ID,
1308
							APPROVE_DT,
1309
							PROCESS_DESC,NOTES
1310
						)
1311
						VALUES
1312
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1313
							'REJECT',        -- PROCESS_ID - varchar(10)
1314
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1315
							GETDATE(), -- APPROVE_DT - datetime
1316
							@p_REASON ,N'Trả về cho người tạo phiếu'    -- PROCESS_DESC - nvarchar(1000)
1317
						)
1318
				END
1319
			END
1320
			ELSE IF(@p_STAGE ='SUG')
1321
			BEGIN
1322
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_TRN_ID AND TLNAME=@p_REJECTED_BY
1323
				DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
1324
				SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TLNAME=@p_REJECTED_BY)
1325
				SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
1326
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_TRN_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
1327
				-- CAP NHAT TINH TRANG VE DANG XU LY
1328
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='S' WHERE REQ_PAY_ID =@p_TRN_ID
1329
				INSERT INTO dbo.PL_PROCESS
1330
						(
1331
							REQ_ID,
1332
							PROCESS_ID,
1333
							CHECKER_ID,
1334
							APPROVE_DT,
1335
							PROCESS_DESC,NOTES
1336
						)
1337
						VALUES
1338
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1339
							'REJECT',        -- PROCESS_ID - varchar(10)
1340
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1341
							GETDATE(), -- APPROVE_DT - datetime
1342
							@p_REASON ,N'GDV đề xuất từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1343
						)
1344
				SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng được đề xuất từ chối thành công'
1345
			END
1346
			ELSE IF(@p_STAGE ='DEL')
1347
			BEGIN
1348
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='D',AUTH_STATUS ='D' WHERE REQ_PAY_ID =@p_TRN_ID
1349
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID =@p_TRN_ID
1350
				UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS_KT ='D' WHERE PAY_ID =@p_TRN_ID
1351
				UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='D' WHERE REQ_PAY_ID =@p_TRN_ID
1352
				UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID =@p_TRN_ID
1353
				---------------------------------------------------------------------------------------------------------------------
1354
				DECLARE CURS_TRADE CURSOR FOR SELECT A.TRADE_ID, A.AMT_EXE FROM TR_REQ_PAY_BUDGET A WHERE A.REQ_PAY_ID =@p_TRN_ID
1355
				OPEN CURS_TRADE
1356
					FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
1357
					WHILE @@FETCH_STATUS = 0
1358
					BEGIN
1359
						UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE
1360
						WHERE TRADE_ID =@TRADED_ID
1361
						FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
1362
					END
1363
				CLOSE CURS_TRADE
1364
				DEALLOCATE CURS_TRADE
1365
				
1366
				DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_USE,A.AMT_ADD,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_TRN_ID
1367
				OPEN CURS
1368
					FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
1369
					WHILE @@FETCH_STATUS = 0
1370
					BEGIN
1371
						UPDATE TR_REQ_ADVANCE_PAYMENT
1372
						SET PAY_AMT = ISNULL(PAY_AMT,0) - @AMT_PAY - @AMT_REVERT + @AMT_ADD WHERE REQ_PAY_ID=@PAY_ADVANCE_ID
1373
						FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
1374
					END
1375
				CLOSE CURS
1376
				DEALLOCATE CURS
1377
				INSERT INTO dbo.PL_PROCESS
1378
						(
1379
							REQ_ID,
1380
							PROCESS_ID,
1381
							CHECKER_ID,
1382
							APPROVE_DT,
1383
							PROCESS_DESC,NOTES
1384
						)
1385
						VALUES
1386
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1387
							'DEL',        -- PROCESS_ID - varchar(10)
1388
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1389
							GETDATE(), -- APPROVE_DT - datetime
1390
							@p_REASON ,N'KSV hủy phiếu'      -- PROCESS_DESC - nvarchar(1000)
1391
						)
1392
				SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng được hủy thành công. Bạn vẫn có thể xem thông tin giao dịch với tình trạng đã bị hủy'
1393
			END
1394
			ELSE IF(@p_STAGE='TGD/HDQT')
1395
			BEGIN
1396
				PRINT 'START'
1397
				IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID AND ROLE_USER IN ('TGD') AND STATUS ='C'))
1398
				BEGIN
1399
						PRINT 'CEO TGD'
1400
						--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
1401
						SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về VP Thư Ký TGĐ thành công'
1402
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1403
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME ='phuongnht' AND REQ_ID =@p_TRN_ID
1404
						AND ID =(SELECT MAX(ID) FROM PL_REQUEST_PROCESS_CHILD WHERE TLNAME ='phuongnht' AND REQ_ID =@p_TRN_ID)
1405
					    -- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1406
						UPDATE PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID =@p_TRN_ID AND ROLE_USER='TKTGD'
1407
						UPDATE PL_REQUEST_PROCESS SET STATUS='P' WHERE REQ_ID =@p_TRN_ID AND ROLE_USER='TGD'
1408
						INSERT INTO dbo.PL_PROCESS
1409
						(
1410
							REQ_ID,
1411
							PROCESS_ID,
1412
							CHECKER_ID,
1413
							APPROVE_DT,
1414
							PROCESS_DESC,NOTES
1415
						)
1416
						VALUES
1417
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1418
							'REJECT',        -- PROCESS_ID - varchar(10)
1419
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1420
							GETDATE(), -- APPROVE_DT - datetime
1421
							@p_REASON ,N'TGĐ trả về VP Thư Ký TGD'       -- PROCESS_DESC - nvarchar(1000)
1422
						)
1423
						EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
1424
						IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
1425
						INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'HC',@p_TRN_ID,@p_TRN_TYPE,CONVERT(DATETIME,GETDATE(),103),'R',@p_REASON,'Y',@p_REJECTED_BY,CONVERT(DATETIME,GETDATE(),103))
1426
						COMMIT TRANSACTION
1427
						SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1428
						RETURN '0'
1429
				END
1430
				--- NEU DANG CHỜ CHỦ TỊCH HĐQT
1431
				IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID AND ROLE_USER IN ('HDQT') AND STATUS ='C'))
1432
				BEGIN
1433
						PRINT 'CHU TICH HDQT'
1434
						--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
1435
						SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về VP HĐQT thành công'
1436
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1437
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME ='toailc' AND REQ_ID =@p_TRN_ID
1438
						AND ID =(SELECT MAX(ID) FROM PL_REQUEST_PROCESS_CHILD WHERE TLNAME ='toailc' AND REQ_ID =@p_TRN_ID)
1439
					    -- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1440
						UPDATE PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID =@p_TRN_ID AND ROLE_USER='TKHDQT'
1441
						UPDATE PL_REQUEST_PROCESS SET STATUS='P' WHERE REQ_ID =@p_TRN_ID AND ROLE_USER='HDQT'
1442
						INSERT INTO dbo.PL_PROCESS
1443
						(
1444
							REQ_ID,
1445
							PROCESS_ID,
1446
							CHECKER_ID,
1447
							APPROVE_DT,
1448
							PROCESS_DESC,NOTES
1449
						)
1450
						VALUES
1451
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1452
							'REJECT',        -- PROCESS_ID - varchar(10)
1453
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1454
							GETDATE(), -- APPROVE_DT - datetime
1455
							@p_REASON ,N'CTHDQT trả về VP HĐQT'       -- PROCESS_DESC - nvarchar(1000)
1456
						)
1457
						EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
1458
						IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
1459
						INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'HC',@p_TRN_ID,@p_TRN_TYPE,CONVERT(DATETIME,GETDATE(),103),'R',@p_REASON,'Y',@p_REJECTED_BY,CONVERT(DATETIME,GETDATE(),103))
1460
						COMMIT TRANSACTION
1461
						SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1462
						RETURN '0'
1463
				END
1464
			END
1465

    
1466
			
1467
		END
1468
		-- END  PHIEU DE NGHI TAM UNG 05 11 2019
1469
		-- START PHIEU DE THI THANH TOAN 19-11-2019
1470
		ELSE IF(@p_TRN_TYPE ='TR_REQ_PAY')
1471
		BEGIN
1472
			BEGIN
1473
			IF(@p_STAGE='KT')
1474
			BEGIN
1475
				IF((SELECT AUTH_STATUS_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID) = 'R')
1476
				BEGIN
1477
					SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được kiểm soát viên trả về trước đó'
1478
					ROLLBACK TRANSACTION
1479
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1480
					RETURN '-1'
1481
				END
1482
				IF((SELECT CHECKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID) IS NULL)
1483
				BEGIN
1484
					IF((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID) = 'R')
1485
					BEGIN
1486
						SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được kiểm soát viên trả về trước đó'
1487
						ROLLBACK TRANSACTION
1488
						SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1489
						RETURN '-1'
1490
					END
1491
				END
1492
				IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
1493
				BEGIN
1494
					SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị thanh toán đã được kế toán duyệt'
1495
					ROLLBACK TRANSACTION
1496
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1497
					RETURN '-1'
1498
				END
1499
				ELSE
1500
				BEGIN
1501
					--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
1502
					--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
1503
					IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
1504
					BEGIN
1505
						UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
1506
						-- DOANPTT 291222: THEM LOG KPI
1507
						UPDATE TR_REQ_KPI 
1508
						SET AUTH_STATUS_KT ='U'
1509
						WHERE REQ_ID = @p_TRN_ID AND AUTH_STATUS_KT = 'P'
1510
						SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được trả về thành công'
1511
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1512
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME =(SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID)
1513
						AND REQ_ID =@p_TRN_ID
1514
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE TLNAME =@p_REJECTED_BY AND REQ_ID =@p_TRN_ID
1515
						-- INSERT VAO BANG LICH SU
1516
						INSERT INTO dbo.PL_PROCESS
1517
						(
1518
							REQ_ID,
1519
							PROCESS_ID,
1520
							CHECKER_ID,
1521
							APPROVE_DT,
1522
							PROCESS_DESC,NOTES
1523
						)
1524
						VALUES
1525
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1526
							'REJECT_GDV',        -- PROCESS_ID - varchar(10)
1527
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1528
							GETDATE(), -- APPROVE_DT - datetime
1529
							@p_REASON ,N'KSV trả về cho GDV'     -- PROCESS_DESC - nvarchar(1000)
1530
						)
1531
					END
1532
					ELSE 
1533
					BEGIN
1534
						SET @p_STAGE ='HC'
1535
						UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R',PROCESS =NULL,MAKER_ID_KT = NULL, CREATE_DT_KT =NULL, APPROVE_DT = NULL, CHECKER_ID = NULL, AUTH_STATUS_KT = NULL
1536
						WHERE REQ_PAY_ID =@p_TRN_ID
1537
						-- DOANPTT 291222: THEM LOG KPI
1538
						UPDATE TR_REQ_KPI 
1539
						SET AUTH_STATUS_KT ='R', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_REJECTED_BY, REQ_STATUS = 'REJECT'
1540
						WHERE REQ_ID = @p_TRN_ID AND AUTH_STATUS_KT = 'P'
1541
						SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được trả về đơn vị thành công'
1542
						-- XOA DI DU LIEU DA DIEU PHOI, CHO DON VI XU LY VA DUYET LAI SE DIEU PHOI LAI
1543
						---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1544
						DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
1545
						-- INSERT VAO BANG LICH SU
1546
						INSERT INTO dbo.PL_PROCESS
1547
						(
1548
							REQ_ID,
1549
							PROCESS_ID,
1550
							CHECKER_ID,
1551
							APPROVE_DT,
1552
							PROCESS_DESC,NOTES
1553
						)
1554
						VALUES
1555
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1556
							'REJECT',        -- PROCESS_ID - varchar(10)
1557
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1558
							GETDATE(), -- APPROVE_DT - datetime
1559
							@p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1560
						)
1561
						SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được từ chối thành công'
1562
						--doanptt 210622 xóa nscp khi hủy hoặc trả phiếu về HC
1563
						DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_TRN_ID
1564
						DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_TRN_ID
1565
					END
1566
				END
1567
			END
1568
			ELSE IF(@p_STAGE='KT_HC')
1569
			BEGIN
1570
				IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS_KT = 'A'))
1571
				BEGIN
1572
					SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị thanh toán đã được kế toán duyệt'
1573
					ROLLBACK TRANSACTION
1574
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1575
					RETURN '-1'
1576
				END
1577
				ELSE
1578
				BEGIN
1579
					SET @p_STAGE ='HC'
1580
					UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R', AUTH_STATUS_KT = NULL, PROCESS =NULL,MAKER_ID_KT = NULL, CREATE_DT_KT =NULL, APPROVE_DT = NULL, CHECKER_ID = NULL WHERE REQ_PAY_ID =@p_TRN_ID
1581
					-- DOANPTT 291222: THEM LOG KPI
1582
					UPDATE TR_REQ_KPI 
1583
					SET AUTH_STATUS_KT ='R', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_REJECTED_BY, REQ_STATUS = 'REJECT'
1584
					WHERE REQ_ID = @p_TRN_ID AND AUTH_STATUS_KT = 'P'
1585
					SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được trả về đơn vị thành công'
1586
					---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
1587
					DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
1588
					DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID
1589
					IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_TRN_ID))
1590
					BEGIN
1591
						DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID =@p_TRN_ID
1592
					END
1593
					-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
1594
					INSERT INTO dbo.PL_PROCESS
1595
					(
1596
						REQ_ID,
1597
						PROCESS_ID,
1598
						CHECKER_ID,
1599
						APPROVE_DT,
1600
						PROCESS_DESC,NOTES
1601
					)
1602
					VALUES
1603
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1604
						'REJECT',        -- PROCESS_ID - varchar(10)
1605
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1606
						GETDATE(), -- APPROVE_DT - datetime
1607
						@p_REASON,N'Trả về cho người tạo phiếu'    -- PROCESS_DESC - nvarchar(1000)
1608
					)
1609
					--doanptt 210622 xóa nscp khi hủy hoặc trả phiếu về HC
1610
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_TRN_ID
1611
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_TRN_ID
1612
				END
1613
			END
1614
			ELSE IF(@p_STAGE ='HC')
1615
			BEGIN
1616
				IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS='A' AND @p_STAGE ='HC'AND (MAKER_ID_KT IS  NULL OR  MAKER_ID_KT ='')))
1617
				BEGIN
1618
					SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị thanh toán đã được trưởng đơn vị duyệt'
1619
					ROLLBACK TRANSACTION
1620
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1621
					RETURN '-1'
1622
				END
1623
				IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS='R'))
1624
				BEGIN
1625
					SET @p_MESSAGE =N'Hủy trả về thất bại! Phiếu đề nghị thanh toán đã được trả về trước đó'
1626
					ROLLBACK TRANSACTION
1627
					SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1628
					RETURN '-1'
1629
				END
1630
				ELSE
1631
				BEGIN
1632
					UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R', AUTH_STATUS_KT = NULL, PROCESS=NULL,CHECKER_ID ='',APPROVE_DT =NULL, MAKER_ID_KT =NULL, CREATE_DT_KT = NULL, APPROVE_DT_KT =NULL WHERE REQ_PAY_ID =@p_TRN_ID
1633
					DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
1634
					SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được trả về thành công'
1635
					-- INSERT VAO BANG LICH SU
1636
						INSERT INTO dbo.PL_PROCESS
1637
						(
1638
							REQ_ID,
1639
							PROCESS_ID,
1640
							CHECKER_ID,
1641
							APPROVE_DT,
1642
							PROCESS_DESC,NOTES
1643
						)
1644
						VALUES
1645
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1646
							'REJECT',        -- PROCESS_ID - varchar(10)
1647
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1648
							GETDATE(), -- APPROVE_DT - datetime
1649
							@p_REASON,N'Trả về'        -- PROCESS_DESC - nvarchar(1000)
1650
						)
1651

    
1652
					--doanptt 210622 xóa nscp khi hủy hoặc trả phiếu về HC
1653
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_TRN_ID
1654
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_TRN_ID
1655
				END
1656
			END
1657
			ELSE IF(@p_STAGE ='SUG')
1658
			BEGIN
1659
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_TRN_ID AND TLNAME=@p_REJECTED_BY
1660
				DECLARE @LEVEL_JOB_PAY VARCHAR(5), @LEVEL_JOB_PREV_PAY INT
1661
				SET @LEVEL_JOB_PAY =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TLNAME=@p_REJECTED_BY)
1662
				SET @LEVEL_JOB_PREV_PAY = CONVERT(INT,@LEVEL_JOB_PAY) -1
1663
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_TRN_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV_PAY)
1664
				UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='S' WHERE REQ_PAY_ID =@p_TRN_ID
1665
				INSERT INTO dbo.PL_PROCESS
1666
						(
1667
							REQ_ID,
1668
							PROCESS_ID,
1669
							CHECKER_ID,
1670
							APPROVE_DT,
1671
							PROCESS_DESC,NOTES
1672
						)
1673
						VALUES
1674
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1675
							'SUG',        -- PROCESS_ID - varchar(10)
1676
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1677
							GETDATE(), -- APPROVE_DT - datetime
1678
							@p_REASON ,N'GDV đề xuất từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1679
						)
1680
			SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được đề xuất từ chối thành công'
1681
			END
1682
			ELSE IF(@p_STAGE ='DEL')
1683
			BEGIN
1684
				UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='D',AUTH_STATUS ='D' WHERE REQ_PAY_ID =@p_TRN_ID
1685
				UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID =@p_TRN_ID
1686
				UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS_KT ='D' WHERE PAY_ID =@p_TRN_ID
1687
				UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='D' WHERE REQ_PAY_ID =@p_TRN_ID
1688
				---------------------------------------------------------------------------------------------------------------------
1689
				--DECLARE @TRADED_ID VARCHAR(15), @AMT_EXE DECIMAL(18,0)
1690
				DECLARE CURS_TRADE CURSOR FOR SELECT A.TRADE_ID, A.AMT_EXE FROM TR_REQ_PAY_BUDGET A WHERE A.REQ_PAY_ID =@p_TRN_ID
1691
				OPEN CURS_TRADE
1692
					FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
1693
					WHILE @@FETCH_STATUS = 0
1694
					BEGIN
1695
						UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE
1696
						WHERE TRADE_ID =@TRADED_ID
1697
						FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
1698
					END
1699
				CLOSE CURS_TRADE
1700
				DEALLOCATE CURS_TRADE
1701
				-- XOA NGAN SACH
1702
				--DELETE FROM TR_REQ_PAY_BUDGET WHERE  REQ_PAY_ID= @p_TRN_ID
1703
				--- NEU LA TAM UNG NOI BO THI PHAI REVERT LAI SO TIEN DA HOAN UNG CUA PHIEU DE NGHI TAM UNG
1704
				--DECLARE @PAY_ADVANCE_ID VARCHAR(15), @AMT_PAY DECIMAL(18,0), @AMT_REVERT DECIMAL(18,0), @AMT_ADD DECIMAL(18,0)
1705
				DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_USE,A.AMT_ADD,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_TRN_ID
1706
				OPEN CURS
1707
					FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
1708
					WHILE @@FETCH_STATUS = 0
1709
					BEGIN
1710
						UPDATE TR_REQ_ADVANCE_PAYMENT
1711
						SET PAY_AMT = ISNULL(PAY_AMT,0) - @AMT_PAY - @AMT_REVERT + @AMT_ADD WHERE REQ_PAY_ID=@PAY_ADVANCE_ID
1712
						FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
1713
					END
1714
				CLOSE CURS
1715
				DEALLOCATE CURS
1716
				----  XOA DI SO TIEN DA HOAN UNG CUA KI THANH TOAN NEU THANH TOAN NHA CUNG CAP VUA HOAN UNG DOT CŨ VÀ VỪA THANH TOÁN ĐỢT MỚI
1717
				--DECLARE @REQ_PAY_ID VARCHAR(15), @AMT_REAL DECIMAL(18,0)
1718
				--DECLARE CURS_SCHE CURSOR FOR SELECT A.REQ_PAY_ID, A.AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_TRN_ID
1719
				--OPEN CURS_SCHE
1720
				--	FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
1721
				--	WHILE @@FETCH_STATUS = 0
1722
				--	BEGIN
1723
				--		UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE
1724
				--		WHERE TRADE_ID =@TRADED_ID
1725
				--		FETCH NEXT FROM CURS_SCHE INTO @TRADED_ID,@AMT_EXE
1726
				--	END
1727
				--CLOSE CURS_SCHE
1728
				--DEALLOCATE CURS_SCHE
1729
				INSERT INTO dbo.PL_PROCESS
1730
						(
1731
							REQ_ID,
1732
							PROCESS_ID,
1733
							CHECKER_ID,
1734
							APPROVE_DT,
1735
							PROCESS_DESC,NOTES
1736
						)
1737
						VALUES
1738
						(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1739
							'DEL',        -- PROCESS_ID - varchar(10)
1740
							@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1741
							GETDATE(), -- APPROVE_DT - datetime
1742
							@p_REASON ,N'KSV hủy phiếu'      -- PROCESS_DESC - nvarchar(1000)
1743
						)
1744
				SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được hủy thành công. Bạn vẫn có thể xem thông tin giao dịch với tình trạng đã bị hủy'
1745
				--doanptt ẩn nscp khi hủy hoặc trả phiếu về HC
1746
				UPDATE TR_REQ_BUDGET_MONTH_LIMIT_DETAIL SET RECORD_STATUS = '0' WHERE REQ_PAY_ID = @p_TRN_ID
1747
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT_DETAIL SET RECORD_STATUS = '0' WHERE REQ_PAY_ID = @p_TRN_ID
1748
			END
1749
			
1750
			END
1751
		END
1752
		-- END PHIEU DE THI THANH TOAN 19-11-2019
1753

    
1754
		--- Tờ trình chủ trương
1755
		ELSE IF(@p_TRN_TYPE='PL_REQUEST_DOC')
1756
		BEGIN	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_TRN_ID AND PROCESS_ID='APPROVE'))
1757
				BEGIN
1758
					SET @p_MESSAGE =N'Trả về thất bại! Tờ trình chủ trương đã được duyệt'
1759
					ROLLBACK TRANSACTION
1760
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1761
					RETURN '0'
1762
				END
1763
				ELSE
1764
				BEGIN
1765
					UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='REJECT',AUTH_STATUS='R' WHERE REQ_ID=@p_TRN_ID
1766
					INSERT INTO dbo.PL_PROCESS
1767
					(
1768
						REQ_ID,
1769
						PROCESS_ID,
1770
						CHECKER_ID,
1771
						APPROVE_DT,
1772
						PROCESS_DESC,NOTES
1773
					)
1774
					VALUES
1775
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1776
						'REJECT',        -- PROCESS_ID - varchar(10)
1777
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1778
						GETDATE(), -- APPROVE_DT - datetime
1779
					   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1780
					)
1781
					SET @p_MESSAGE =N'Tờ trình chủ trương đã được trả về thành công'
1782
					 -- 28-10-2020 LUCTV, KHI TRA VE PHAI GO PL_REQUEST_PROCESS
1783
					 UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Tờ trình bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
1784
					 UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='SIGN' AND REQ_ID=@p_TRN_ID
1785
			 END
1786
		END
1787
		ELSE IF(@p_TRN_TYPE='TR_REQUEST_DOC')
1788
		BEGIN
1789
			--IF(@p_STAGE='DVMS')
1790
			--BEGIN
1791
			--END
1792
			IF(@p_STAGE='PDYC' OR @p_STAGE ='DV')
1793
			BEGIN
1794
				IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_TRN_ID AND PROCESS_ID='APPROVE'))
1795
				BEGIN
1796
					SET @p_MESSAGE =N'Trả về thất bại! Phiếu yêu cầu đã được duyệt'
1797
					ROLLBACK TRANSACTION
1798
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1799
					RETURN '0'
1800
				END
1801
				ELSE
1802
				BEGIN
1803
					UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID='REJECT', AUTH_STATUS ='R' WHERE REQ_ID=@p_TRN_ID
1804
					INSERT INTO dbo.PL_PROCESS
1805
					(
1806
						REQ_ID,
1807
						PROCESS_ID,
1808
						CHECKER_ID,
1809
						APPROVE_DT,
1810
						PROCESS_DESC,NOTES
1811
					)
1812
					VALUES
1813
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1814
						'REJECT',        -- PROCESS_ID - varchar(10)
1815
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1816
						GETDATE(), -- APPROVE_DT - datetime
1817
					   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1818
					)
1819
					 SET @p_MESSAGE =N'Phiếu yêu cầu mua sắm đã được trả về thành công'
1820
					 -- 28-10-2020 LUCTV, KHI TRA VE PHAI GO PL_REQUEST_PROCESS
1821
					 UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
1822
					 UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='SIGN' AND REQ_ID=@p_TRN_ID
1823
				 END
1824
			END	
1825
		END
1826
		-- END IF
1827
		-- NEU LA TRA VE CUA HOP DONG
1828
		ELSE IF(@p_TRN_TYPE='TR_CONTRACT')
1829
		BEGIN
1830
		--- CAP NHAT AUTH_STATUS CUA HOP DONG VE R
1831
		IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='R'))
1832
		BEGIN
1833
			SET @p_MESSAGE =N'Trả về thất bại! Hợp đồng đã được trả về trước đó. Vui lòng đợi nhân viên cập nhật thông tin và bấm gửi phê duyệt'
1834
			ROLLBACK TRANSACTION
1835
			SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1836
			RETURN '0'
1837
		END
1838
		IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='A'))
1839
		BEGIN
1840
			SET @p_MESSAGE =N'Trả về thất bại! Hợp đồng đã được phê duyệt thành công trước đó!'
1841
			ROLLBACK TRANSACTION
1842
			SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1843
			RETURN '0'
1844
		END
1845
		UPDATE TR_CONTRACT SET 
1846
			AUTH_STATUS ='R', 
1847
			IS_SEND_APPR = 'N',
1848
			CHECKER_ID = NULL,
1849
			APPROVE_DT = NULL,
1850
			SEND_APPR_DT = NULL
1851
		WHERE CONTRACT_ID =@p_TRN_ID
1852
		INSERT INTO dbo.PL_PROCESS
1853
					(
1854
						REQ_ID,
1855
						PROCESS_ID,
1856
						CHECKER_ID,
1857
						APPROVE_DT,
1858
						PROCESS_DESC,NOTES
1859
					)
1860
					VALUES
1861
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1862
						'REJECT',        -- PROCESS_ID - varchar(10)
1863
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1864
						GETDATE(), -- APPROVE_DT - datetime
1865
					   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1866
					)
1867
			SET @p_MESSAGE =N'Hợp đồng đã được trả về thành công'		
1868
		END
1869
		-- NEU LA TRA VE CUA HOP DONG
1870
		ELSE IF(@p_TRN_TYPE='TR_PO')
1871
		BEGIN
1872
		--- CAP NHAT AUTH_STATUS CUA HOP DONG VE R
1873
		IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='R'))
1874
		BEGIN
1875
			SET @p_MESSAGE =N'Trả về thất bại! PO đã được trả về trước đó. Vui lòng đợi nhân viên cập nhật thông tin và bấm gửi phê duyệt'
1876
			ROLLBACK TRANSACTION
1877
			SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1878
			RETURN '0'
1879
		END
1880
		IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='A'))
1881
		BEGIN
1882
			SET @p_MESSAGE =N'Trả về thất bại! PO đã được phê duyệt thành công trước đó!'
1883
			ROLLBACK TRANSACTION
1884
			SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1885
			RETURN '0'
1886
		END
1887
		UPDATE TR_PO_MASTER SET 
1888
			AUTH_STATUS ='R', 
1889
			IS_SEND_APPR = 'N',
1890
			CHECKER_ID = NULL,
1891
			APPROVE_DT = NULL,
1892
			SEND_APPR_DT = NULL
1893
		WHERE PO_ID =@p_TRN_ID
1894
		INSERT INTO dbo.PL_PROCESS
1895
					(
1896
						REQ_ID,
1897
						PROCESS_ID,
1898
						CHECKER_ID,
1899
						APPROVE_DT,
1900
						PROCESS_DESC,NOTES
1901
					)
1902
					VALUES
1903
					(   @p_TRN_ID,        -- REQ_ID - varchar(15)
1904
						'REJECT',        -- PROCESS_ID - varchar(10)
1905
						@p_REJECTED_BY,        -- CHECKER_ID - varchar(15)
1906
						GETDATE(), -- APPROVE_DT - datetime
1907
					   @p_REASON ,N'Từ chối phiếu'      -- PROCESS_DESC - nvarchar(1000)
1908
					)
1909
			SET @p_MESSAGE =N'PO đã được trả về thành công'		
1910
		END
1911
		--- KET THUC TRA VE PO
1912
		ELSE
1913
		BEGIN
1914
			SET @p_MESSAGE =N'Trả về giao dịch thành công'
1915
		END
1916

    
1917
		---BAODNQ 28/12/2021: Thêm xử lý trả về cho phân hệ quản lý cho thuê------
1918
		-------Khai báo DTSD nội bộ-------
1919
		IF(@p_TRN_TYPE ='BUD_INTERNAL')
1920
		--BEGIN ELSE IF---
1921
		BEGIN
1922
			IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID =@p_TRN_ID  AND AUTH_STATUS ='A'))
1923
			BEGIN
1924
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin khai báo DTSD nội bộ đã được duyệt'
1925
				ROLLBACK TRANSACTION
1926
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1927
				RETURN '-1'
1928
			END
1929
			ELSE IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
1930
			BEGIN
1931
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin khai báo DTSD nội bộ đã được trả về trước đó'
1932
				ROLLBACK TRANSACTION
1933
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1934
				RETURN '-1'
1935
			END
1936
			ELSE
1937
			BEGIN
1938
				UPDATE BUD_CONTRACT_MASTER 
1939
				SET AUTH_STATUS ='R', 
1940
				---BAODNQ 31/12/2021: Gán IS_SEND_APPR = 'N' khi bị trả về------
1941
					IS_SEND_APPR = 'N',
1942
					CHECKER_ID = NULL,
1943
					APPROVE_DT = NULL,
1944
					SEND_APPR_DT = NULL,
1945
					SIGN_DT = NULL
1946
				WHERE CONTRACT_ID=@p_TRN_ID
1947
				SET @p_MESSAGE =N'Thông tin khai báo DTSD nội bộ đã được trả về thành công'
1948
			END
1949
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
1950
			INSERT INTO dbo.PL_PROCESS
1951
					(
1952
						REQ_ID,
1953
						PROCESS_ID,
1954
						CHECKER_ID,
1955
						APPROVE_DT,
1956
						PROCESS_DESC,
1957
						NOTES
1958
					)
1959
					VALUES
1960
					(	@p_TRN_ID,       
1961
						'REJECT',
1962
						@p_REJECTED_BY,        
1963
						GETDATE(), 
1964
						@p_REASON ,      
1965
						N'Từ chối phiếu'       
1966
					)
1967
			IF @@ERROR <> 0 GOTO ABORT
1968

    
1969
		---END ELSE IF---
1970
		END
1971
		-------Quản lý hợp đồng khách thuê-------
1972
		ELSE IF(@p_TRN_TYPE ='BUD_RENTAL')
1973
		--BEGIN ELSE IF---
1974
		BEGIN
1975
			IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID =@p_TRN_ID  AND AUTH_STATUS ='A'))
1976
			BEGIN
1977
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin khai báo diện tích cho khách thuê đã được duyệt'
1978
				ROLLBACK TRANSACTION
1979
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1980
				RETURN '-1'
1981
			END
1982
			ELSE IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
1983
			BEGIN
1984
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin khai báo diện tích cho khách thuê đã được trả về trước đó'
1985
				ROLLBACK TRANSACTION
1986
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
1987
				RETURN '-1'
1988
			END
1989
			ELSE
1990
			BEGIN
1991
				UPDATE BUD_CONTRACT_CUST_MASTER 
1992
				SET AUTH_STATUS ='R',
1993
				---BAODNQ 31/12/2021: Gán IS_SEND_APPR = 'N' khi bị trả về------
1994
					IS_SEND_APPR = 'N',
1995
					CHECKER_ID = NULL,
1996
					APPROVE_DT = NULL,
1997
					SEND_APPR_DT = NULL,
1998
					SIGN_DT = NULL
1999
				WHERE CONTRACT_ID=@p_TRN_ID
2000
				SET @p_MESSAGE =N'Thông tin khai báo diện tích cho khách thuê đã được trả về thành công'
2001
			END
2002
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2003
			INSERT INTO dbo.PL_PROCESS
2004
					(
2005
						REQ_ID,
2006
						PROCESS_ID,
2007
						CHECKER_ID,
2008
						APPROVE_DT,
2009
						PROCESS_DESC,
2010
						NOTES
2011
					)
2012
					VALUES
2013
					(	@p_TRN_ID,       
2014
						'REJECT',
2015
						@p_REJECTED_BY,        
2016
						GETDATE(), 
2017
						@p_REASON ,      
2018
						N'Từ chối phiếu'       
2019
					)
2020
			IF @@ERROR <> 0 GOTO ABORT
2021

    
2022
		---END ELSE IF---
2023
		END
2024
		---datmq 28/12/2021: Thêm xử lý trả về cho phân hệ quản lý cho thuê------
2025
			-------Quản lý trụ sở-------
2026
		ELSE IF(@p_TRN_TYPE ='BUD_MASTER')
2027
		--BEGIN ELSE IF---
2028
		BEGIN
2029
			IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID =@p_TRN_ID  AND AUTH_STATUS ='A'))
2030
			BEGIN
2031
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin trụ sở đã được duyệt'
2032
				ROLLBACK TRANSACTION
2033
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2034
				RETURN '-1'
2035
			END
2036
			ELSE IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
2037
			BEGIN
2038
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin trụ sở đã được trả về trước đó'
2039
				ROLLBACK TRANSACTION
2040
				SELECT '-1' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2041
				RETURN '-1'
2042
			END
2043
			ELSE
2044
			BEGIN
2045
				---BAODNQ 26/1/2021: Gán IS_SEND_APPR = 'N' khi bị trả về------
2046
				UPDATE BUD_MASTER SET 
2047
					AUTH_STATUS ='R',  IS_SEND_APPR = 'N',
2048
					CHECKER_ID = NULL,
2049
					APPROVE_DT = NULL,
2050
					SEND_APPR_DT = NULL,
2051
					SIGN_DT = NULL
2052
				WHERE BUILDING_ID=@p_TRN_ID
2053
				SET @p_MESSAGE =N'Thông tin trụ sở đã được trả về thành công'
2054
			END
2055
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2056
			INSERT INTO dbo.PL_PROCESS
2057
					(
2058
						REQ_ID,
2059
						PROCESS_ID,
2060
						CHECKER_ID,
2061
						APPROVE_DT,
2062
						PROCESS_DESC,
2063
						NOTES
2064
					)
2065
					VALUES
2066
					(	@p_TRN_ID,       
2067
						'REJECT',
2068
						@p_REJECTED_BY,        
2069
						GETDATE(), 
2070
						@p_REASON ,      
2071
						N'Từ chối phiếu'       
2072
					)
2073
			IF @@ERROR <> 0 GOTO ABORT
2074

    
2075
		---END ELSE IF---
2076
		END
2077

    
2078
		/*
2079
		---doanptt 10/02/2022: Thêm xử lý trả về cho phân hệ quản lý thanh toán/ tạm ứng------
2080
		ELSE IF(@p_TRN_TYPE ='TR_REQ_PAY')
2081
		BEGIN
2082
			IF(@p_STAGE='HC')
2083
			BEGIN
2084
				IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS = 'A' AND @p_STAGE ='HC'))
2085
				BEGIN
2086
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới phiếu đề nghị thanh toán đã được hành chính duyệt'
2087
					ROLLBACK TRANSACTION
2088
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2089
					RETURN '0'
2090
				END
2091
				ELSE
2092
				BEGIN
2093
					--UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
2094
					--SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
2095
					IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID IS NOT NULL AND MAKER_ID <>''))
2096
					BEGIN
2097
						UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R' WHERE REQ_PAY_ID =@p_TRN_ID
2098
						SET @p_MESSAGE =N'Thông tin nhập mới phiếu đề nghị thanh toán đã được trả về thành công'
2099
					END
2100
				END
2101
			END
2102
		END
2103

    
2104
		---doanptt 10/02/2022: Thêm xử lý trả về cho phân hệ quản lý thanh toán/ tạm ứng------
2105
		ELSE IF(@p_TRN_TYPE ='TR_REQ_ADVACNE_PAY')
2106
		BEGIN
2107
			IF(@p_STAGE='HC')
2108
			BEGIN
2109
				IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID  AND AUTH_STATUS = 'A' AND @p_STAGE ='HC'))
2110
				BEGIN
2111
					SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới phiếu đề nghị tạm ứng đã được hành chính duyệt'
2112
					ROLLBACK TRANSACTION
2113
					SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2114
					RETURN '0'
2115
				END
2116
				ELSE
2117
				BEGIN
2118
					--UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
2119
					--SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
2120
					IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID IS NOT NULL AND MAKER_ID <>''))
2121
					BEGIN
2122
						UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R' WHERE REQ_PAY_ID =@p_TRN_ID
2123
						SET @p_MESSAGE =N'Thông tin nhập mới phiếu đề nghị tạm ứng đã được trả về thành công'
2124
					END
2125
					/*ELSE
2126
					BEGIN
2127
						SET @p_STAGE ='HC'
2128
						UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
2129
						SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
2130
					END*/
2131
				END
2132
			END
2133
		END
2134
		*/
2135

    
2136
	------BAODNQ 14/02/2022: Thêm xử lý trả về cho phân hệ quản lý BDS------
2137
		-------------Quản lý BDS---------------
2138
		ELSE IF(@p_TRN_TYPE = 'RET_MASTER')
2139
		BEGIN
2140
			IF(EXISTS(SELECT * FROM RET_MASTER WHERE RET_ID = @p_TRN_ID AND AUTH_STATUS = 'A'))
2141
			BEGIN
2142
				SET @p_MESSAGE = N'Hủy trả về thất bại! Thông tin bất động sản đã được duyệt'
2143
				ROLLBACK TRANSACTION
2144
				SELECT '-1' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2145
				RETURN '-1'
2146
			END
2147
			ELSE IF(EXISTS(SELECT * FROM RET_MASTER WHERE RET_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
2148
			BEGIN
2149
				SET @p_MESSAGE = N'Hủy trả về thất bại! Thông tin bất động sản đã được trả về trước đó'
2150
				ROLLBACK TRANSACTION
2151
				SELECT '-1' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2152
				RETURN '-1'
2153
			END
2154
			ELSE
2155
			BEGIN
2156
				UPDATE RET_MASTER
2157
				SET AUTH_STATUS = 'R', IS_SEND_APPR = 'N',
2158
					CHECKER_ID = NULL,
2159
					APPROVE_DT = NULL,
2160
					SEND_APPR_DT = NULL,
2161
					SIGN_DT = NULL
2162
				WHERE RET_ID = @p_TRN_ID
2163
				SET @p_MESSAGE = N'Thông tin bất động sản đã được trả về thành công'
2164
			END
2165

    
2166
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2167
			INSERT INTO dbo.PL_PROCESS
2168
					(
2169
						REQ_ID,
2170
						PROCESS_ID,
2171
						CHECKER_ID,
2172
						APPROVE_DT,
2173
						PROCESS_DESC,
2174
						NOTES
2175
					)
2176
					VALUES
2177
					(	@p_TRN_ID,       
2178
						'REJECT',
2179
						@p_REJECTED_BY,        
2180
						GETDATE(), 
2181
						@p_REASON ,      
2182
						N'Từ chối phiếu'       
2183
					)
2184
			IF @@ERROR <> 0 GOTO ABORT
2185

    
2186
		END
2187

    
2188
		-------Thông tin sửa chữa BDS--------------
2189
		ELSE IF(@p_TRN_TYPE = 'RET_REPAIR')
2190
		BEGIN
2191
			IF(EXISTS(SELECT * FROM RET_REPAIR WHERE RP_ID = @p_TRN_ID AND AUTH_STATUS = 'A'))
2192
			BEGIN
2193
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin sửa chữa BĐS đã được duyệt'
2194
				ROLLBACK TRANSACTION
2195
				SELECT '0' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2196
				RETURN '0'
2197
			END
2198
			ELSE IF(EXISTS(SELECT * FROM RET_REPAIR WHERE RP_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
2199
			BEGIN
2200
				SET @p_MESSAGE = N'Hủy trả về thất bại! Thông tin sửa chữa BĐS đã được trả về trước đó'
2201
				ROLLBACK TRANSACTION
2202
				SELECT '-1' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2203
				RETURN '-1'
2204
			END
2205
			ELSE
2206
			BEGIN
2207
				UPDATE RET_REPAIR 
2208
				SET AUTH_STATUS = 'R', IS_SEND_APPR = 'N',
2209
					CHECKER_ID = NULL,
2210
					APPROVE_DT = NULL,
2211
					SEND_APPR_DT = NULL,
2212
					SIGN_DT = NULL
2213
				WHERE RP_ID = @p_TRN_ID
2214
				SET @p_MESSAGE = N'Thông tin sửa chữa BDS đã được trả về thành công'
2215
			END
2216
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2217
			INSERT INTO dbo.PL_PROCESS
2218
					(
2219
						REQ_ID,
2220
						PROCESS_ID,
2221
						CHECKER_ID,
2222
						APPROVE_DT,
2223
						PROCESS_DESC,
2224
						NOTES
2225
					)
2226
					VALUES
2227
					(	@p_TRN_ID,       
2228
						'REJECT',
2229
						@p_REJECTED_BY,        
2230
						GETDATE(), 
2231
						@p_REASON ,      
2232
						N'Từ chối phiếu'       
2233
					)
2234
			IF @@ERROR <> 0 GOTO ABORT
2235

    
2236
		END
2237

    
2238
		-----BDS thuê làm trụ sở CN/PGD--------
2239
		ELSE IF(@p_TRN_TYPE = 'REAL_ESTATE_R_H')
2240
		BEGIN
2241
			IF(EXISTS(SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_TRN_ID AND AUTH_STATUS = 'A'))
2242
			BEGIN
2243
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin BĐS đi thuê đã được duyệt'
2244
				ROLLBACK TRANSACTION
2245
				SELECT '0' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2246
				RETURN '0'
2247
			END
2248
			ELSE IF(EXISTS(SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
2249
			BEGIN
2250
				SET @p_MESSAGE = N'Hủy trả về thất bại! Thông tin BĐS đi thuê đã được trả về trước đó'
2251
				ROLLBACK TRANSACTION
2252
				SELECT '-1' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2253
				RETURN '-1'
2254
			END
2255
			ELSE
2256
			BEGIN
2257
				UPDATE REAL_ESTATE_R_H 
2258
				SET AUTH_STATUS = 'R', IS_SEND_APPR = 'N',
2259
					CHECKER_ID = NULL,
2260
					APPROVE_DT = NULL,
2261
					SEND_APPR_DT = NULL,
2262
					SIGN_DT = NULL
2263
				WHERE RET_R_H_ID = @p_TRN_ID
2264
				SET @p_MESSAGE = N'Thông tin BĐS đi thuê đã được trả về thành công'
2265
			END
2266
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2267
			INSERT INTO dbo.PL_PROCESS
2268
					(
2269
						REQ_ID,
2270
						PROCESS_ID,
2271
						CHECKER_ID,
2272
						APPROVE_DT,
2273
						PROCESS_DESC,
2274
						NOTES
2275
					)
2276
					VALUES
2277
					(	@p_TRN_ID,       
2278
						'REJECT',
2279
						@p_REJECTED_BY,        
2280
						GETDATE(), 
2281
						@p_REASON ,      
2282
						N'Từ chối phiếu'       
2283
					)
2284
			IF @@ERROR <> 0 GOTO ABORT
2285

    
2286
		END
2287

    
2288
		-----BDS đang hoàn thiện thủ tục pháp lý--------
2289
		ELSE IF(@p_TRN_TYPE = 'REAL_ESTATE_L_C')
2290
		BEGIN
2291
			IF(EXISTS(SELECT * FROM REAL_ESTATE_L_C WHERE RET_L_C_ID  = @p_TRN_ID AND AUTH_STATUS = 'A'))
2292
			BEGIN
2293
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin BĐS đang hoàn thiện thủ tục pháp lý đã được duyệt'
2294
				ROLLBACK TRANSACTION
2295
				SELECT '0' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2296
				RETURN '0'
2297
			END
2298
			ELSE IF(EXISTS(SELECT * FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @p_TRN_ID AND AUTH_STATUS = 'R'))
2299
			BEGIN
2300
				SET @p_MESSAGE = N'Hủy trả về thất bại! Thông tin BĐS đang hoàn thiện thủ tục pháp lý đã được trả về trước đó'
2301
				ROLLBACK TRANSACTION
2302
				SELECT '-1' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2303
				RETURN '-1'
2304
			END
2305
			ELSE 
2306
			BEGIN
2307
				UPDATE REAL_ESTATE_L_C 
2308
				SET AUTH_STATUS = 'R', IS_SEND_APPR = 'N',
2309
					CHECKER_ID = NULL,
2310
					APPROVE_DT = NULL,
2311
					SEND_APPR_DT = NULL,
2312
					SIGN_DT = NULL
2313
				WHERE RET_L_C_ID = @p_TRN_ID
2314
				SET @p_MESSAGE = N'BDS đang hoàn thiện thủ tục pháp lý đã được trả về thành công'
2315
			END
2316
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2317
			INSERT INTO dbo.PL_PROCESS
2318
					(
2319
						REQ_ID,
2320
						PROCESS_ID,
2321
						CHECKER_ID,
2322
						APPROVE_DT,
2323
						PROCESS_DESC,
2324
						NOTES
2325
					)
2326
					VALUES
2327
					(	@p_TRN_ID,       
2328
						'REJECT',
2329
						@p_REJECTED_BY,        
2330
						GETDATE(), 
2331
						@p_REASON ,      
2332
						N'Từ chối phiếu'       
2333
					)
2334
			IF @@ERROR <> 0 GOTO ABORT
2335

    
2336
		END
2337

    
2338
		---------BAODNQ 18/3/2022: Đánh giá NCC--------
2339
		-------Đánh giá NCC---------
2340
		ELSE IF(@p_TRN_TYPE = 'TR_RATE_SUPPLIER_MASTER')
2341
		BEGIN
2342
			IF(EXISTS(SELECT * FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID  = @p_TRN_ID AND AUTH_STATUS = 'A'))
2343
			BEGIN
2344
				SET @p_MESSAGE =N'Hủy trả về thất bại! Biên bản đánh giá NCC đã được duyệt'
2345
				ROLLBACK TRANSACTION
2346
				SELECT '0' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2347
				RETURN '0'
2348
			END
2349
			UPDATE TR_RATE_SUPPLIER_MASTER 
2350
				SET AUTH_STATUS = 'R', 
2351
					IS_SEND_APPR = 'N',
2352
					PROCESS_STATUS = 'REJECT'
2353
			WHERE RATE_ID = @p_TRN_ID
2354
			SET @p_MESSAGE = N'Biên bản đánh giá NCC đã được trả về thành công'
2355

    
2356
			--------BAODNQ 10/03/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
2357
			INSERT INTO dbo.PL_PROCESS
2358
					(
2359
						REQ_ID,
2360
						PROCESS_ID,
2361
						CHECKER_ID,
2362
						APPROVE_DT,
2363
						PROCESS_DESC,
2364
						NOTES
2365
					)
2366
					VALUES
2367
					(	@p_TRN_ID,       
2368
						'REJECT',
2369
						@p_REJECTED_BY,        
2370
						GETDATE(), 
2371
						@p_REASON ,      
2372
						N'Từ chối phiếu'       
2373
					)
2374
			IF @@ERROR <> 0 GOTO ABORT
2375
		END
2376
		ELSE IF(@p_TRN_TYPE ='TR_REQUEST_CAR')
2377
		BEGIN
2378
			DECLARE @p_PROCESS_ID VARCHAR(15)
2379
			SELECT @p_PROCESS_ID=PROCESS_ID FROM TR_REQUEST_CAR WHERE REQ_ID =@p_TRN_ID
2380
			IF(@p_PROCESS_ID='APPROVE')
2381
			BEGIN
2382
				SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin phiếu yêu cầu xe đã được duyệt'
2383
				ROLLBACK TRANSACTION
2384
				SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2385
				RETURN '0'
2386
			END
2387
			IF(@p_PROCESS_ID IN ('APPNEW','CV_APP'))
2388
			BEGIN
2389
				UPDATE TR_REQUEST_CAR 
2390
				SET AUTH_STATUS ='R',PROCESS_ID='INSERT',IS_SEND_APPR = 'N'
2391
				WHERE REQ_ID=@p_TRN_ID
2392
				SET @p_MESSAGE =N'Thông tin phiếu yêu cầu xe đã được trả về thành công'
2393
				IF(@p_PROCESS_ID='APPNEW')
2394
					BEGIN
2395
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
2396
					END
2397
				ELSE
2398
					BEGIN
2399
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
2400
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='CV_APP' AND REQ_ID=@p_TRN_ID
2401
					END
2402
			END
2403
			ELSE IF(@p_PROCESS_ID='USER_SEND')
2404
			BEGIN
2405
					UPDATE TR_REQUEST_CAR
2406
					SET AUTH_STATUS ='R',PROCESS_ID='CV_SEND'
2407
					WHERE REQ_ID=@p_TRN_ID
2408
					SET @p_MESSAGE =N'Thông tin phiếu yêu cầu xe bị chuyên viên trả về thành công'
2409
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE TYPE_JOB='CV' AND REQ_ID=@p_TRN_ID
2410
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE TYPE_JOB='XL' AND REQ_ID=@p_TRN_ID
2411
			END
2412
			ELSE IF(@p_PROCESS_ID IN ('MAKER_APP','TDV_C_APP'))
2413
			BEGIN
2414
				
2415
					UPDATE TR_REQUEST_CAR
2416
					SET AUTH_STATUS ='R',PROCESS_ID='USER_SEND',IS_CONFIRM_COST='N'
2417
					WHERE REQ_ID=@p_TRN_ID
2418
					SET @p_MESSAGE =N'Thông tin chi phí phiếu yêu cầu xe đã được trả về thành công'
2419
					IF(@p_PROCESS_ID='MAKER_APP')
2420
					BEGIN
2421
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE PROCESS_ID='CV_XL' AND REQ_ID=@p_TRN_ID
2422
						UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE TYPE_JOB='CV' AND REQ_ID=@p_TRN_ID
2423
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='MAKER_APP' AND REQ_ID=@p_TRN_ID
2424
					END
2425
				ELSE
2426
					BEGIN
2427
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE PROCESS_ID='CV_XL' AND REQ_ID=@p_TRN_ID
2428
						UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE TYPE_JOB='CV' AND REQ_ID=@p_TRN_ID
2429
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='MAKER_APP' AND REQ_ID=@p_TRN_ID
2430
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='TDV_C_APP' AND REQ_ID=@p_TRN_ID
2431
					END
2432
			END
2433
			INSERT INTO dbo.PL_PROCESS
2434
					(
2435
						REQ_ID,
2436
						PROCESS_ID,
2437
						CHECKER_ID,
2438
						APPROVE_DT,
2439
						PROCESS_DESC,NOTES
2440
					)
2441
					VALUES
2442
					(   @p_TRN_ID,       
2443
						'REJECT',        
2444
						@p_REJECTED_BY,       
2445
						GETDATE(), 
2446
						@p_REASON,
2447
						N'Từ chối phiếu'    
2448
					)
2449
			
2450
		END
2451
		ELSE IF(@p_TRN_TYPE ='TR_REQUEST_JOB_FORM')
2452
		BEGIN
2453
			DECLARE @PROCESS_ID VARCHAR(15),@SIGN_USER VARCHAR(50)
2454
			SELECT @PROCESS_ID=PROCESS_ID,@SIGN_USER=SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_TRN_ID
2455
			IF(@PROCESS_ID='APPROVE')
2456
			BEGIN
2457
				SET @p_MESSAGE =N'Hủy trả về thất bại! Thông tin phiếu yêu cầu xe đã được duyệt'
2458
				ROLLBACK TRANSACTION
2459
				SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2460
				RETURN '0'
2461
			END
2462

    
2463
			IF(@PROCESS_ID IN ('SEND','SIGN'))
2464
			BEGIN
2465
				UPDATE dbo.TR_REQUEST_JOB_FORM 
2466
				SET AUTH_STATUS ='R',PROCESS_ID='REJECT',IS_SEND_APPR = 'N'
2467
				WHERE REQ_ID=@p_TRN_ID
2468
				SET @p_MESSAGE =N'Thông tin phiếu yêu cầu công tác đã được trả về thành công'
2469

    
2470
				IF(@PROCESS_ID='SEND' AND @SIGN_USER IS NOT NULL)
2471
					BEGIN
2472
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='SIGN' AND REQ_ID=@p_TRN_ID
2473
					END
2474
				ELSE
2475
					BEGIN
2476
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
2477
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='SIGN' AND REQ_ID=@p_TRN_ID
2478
					END
2479
			END
2480
			ELSE IF(@PROCESS_ID='HO_APP')
2481
			BEGIN
2482
					UPDATE dbo.TR_REQUEST_JOB_FORM
2483
					SET AUTH_STATUS ='R',PROCESS_ID='APPNEW'
2484
					WHERE REQ_ID=@p_TRN_ID
2485
					SET @p_MESSAGE =N'Thông tin phiếu yêu cầu công tác đã được trả về thành công'
2486
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='HO_APP' AND REQ_ID=@p_TRN_ID
2487
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='U',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='MAKER_CONF' AND REQ_ID=@p_TRN_ID
2488
			END
2489
			ELSE IF(@PROCESS_ID = 'MAKER_APP')
2490
			BEGIN
2491
					UPDATE TR_REQUEST_JOB_FORM
2492
					SET AUTH_STATUS ='R',PROCESS_ID='HCHO_XL'
2493
					WHERE REQ_ID=@p_TRN_ID
2494
					SET @p_MESSAGE =N'Thông tin chi phí phiếu yêu cầu công tác đã được trả về thành công'
2495
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='MAKER_APP' AND REQ_ID=@p_TRN_ID
2496
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='U',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='TDV_APP' AND REQ_ID=@p_TRN_ID
2497
			END
2498
			INSERT INTO dbo.PL_PROCESS
2499
					(
2500
						REQ_ID,
2501
						PROCESS_ID,
2502
						CHECKER_ID,
2503
						APPROVE_DT,
2504
						PROCESS_DESC,NOTES
2505
					)
2506
					VALUES
2507
					(   @p_TRN_ID,       
2508
						'REJECT',        
2509
						@p_REJECTED_BY,       
2510
						GETDATE(), 
2511
						@p_REASON,
2512
						N'Từ chối phiếu'    
2513
					)
2514
			
2515
		END
2516
		--START HIEUHM 08/11/2022 trả về Quản lí hồ sơ công trình XDCB
2517
		ELSE IF(@p_TRN_TYPE = 'CON_MASTER')
2518
		BEGIN
2519
			IF(EXISTS(SELECT * FROM CON_MASTER WHERE CONSTRUCT_ID  = @p_TRN_ID AND AUTH_STATUS = 'A'))
2520
			BEGIN
2521
				SET @p_MESSAGE =N'Trả về thất bại! Công trình đã được duyệt'
2522
				ROLLBACK TRANSACTION
2523
				SELECT '0' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2524
				RETURN '0'
2525
			END
2526
			UPDATE CON_MASTER 
2527
				SET AUTH_STATUS = 'R'
2528
			WHERE CONSTRUCT_ID = @p_TRN_ID
2529
			UPDATE CON_REQUEST_DOC 
2530
				SET AUTH_STATUS = 'R'
2531
			WHERE CONSTRUCT_ID = @p_TRN_ID
2532
			SET @p_MESSAGE = N'Công trình đã được trả về thành công'
2533

    
2534
			INSERT INTO dbo.PL_PROCESS
2535
					(
2536
						REQ_ID,
2537
						PROCESS_ID,
2538
						CHECKER_ID,
2539
						APPROVE_DT,
2540
						PROCESS_DESC,
2541
						NOTES
2542
					)
2543
					VALUES
2544
					(	@p_TRN_ID,       
2545
						'REJECT',
2546
						@p_REJECTED_BY,        
2547
						GETDATE(), 
2548
						@p_REASON ,      
2549
						N'Từ chối phiếu'       
2550
					)
2551
			IF @@ERROR <> 0 GOTO ABORT
2552
		END
2553
		--END HIEUHM 08/11/2022 trả về Quản lí hồ sơ công trình XDCB
2554

    
2555
		--START HIEUHM 17/11/2022 trả về layout bản vẽ
2556
		ELSE IF(@p_TRN_TYPE = 'CON_LAYOUT_BLUEPRINT')
2557
		BEGIN
2558
			IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID  = @p_TRN_ID AND AUTH_STATUS = 'A'))
2559
			BEGIN
2560
				SET @p_MESSAGE =N'Trả về thất bại! Layout bản vẽ đã được duyệt'
2561
				ROLLBACK TRANSACTION
2562
				SELECT '0' AS Result, @p_LOG_ID LOG_ID, @p_MESSAGE ErrorDesc
2563
				RETURN '0'
2564
			END
2565
			UPDATE CON_LAYOUT_BLUEPRINT 
2566
				SET AUTH_STATUS = 'R',PROCESS_ID='REJECT'
2567
			WHERE CON_LAYOUT_BLUEPRINT_ID = @p_TRN_ID
2568
			UPDATE PL_REQUEST_PROCESS 
2569
				SET [STATUS]='U'
2570
			WHERE REQ_ID = @p_TRN_ID
2571
			SET @p_MESSAGE = N'Layout bản vẽ đã được trả về thành công'
2572

    
2573
			INSERT INTO dbo.PL_PROCESS
2574
					(
2575
						REQ_ID,
2576
						PROCESS_ID,
2577
						CHECKER_ID,
2578
						APPROVE_DT,
2579
						PROCESS_DESC,
2580
						NOTES
2581
					)
2582
					VALUES
2583
					(	@p_TRN_ID,       
2584
						'REJECT',
2585
						@p_REJECTED_BY,        
2586
						GETDATE(), 
2587
						@p_REASON ,      
2588
						N'Từ chối phiếu'       
2589
					)
2590
			IF @@ERROR <> 0 GOTO ABORT
2591
		END
2592
		--END HIEUHM 17/11/2022 trả về layout bản vẽ
2593
		--- INSERT VAO BANG CM_REJECT_LOG
2594
		EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
2595
		IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
2596
		INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,@p_STAGE,@p_TRN_ID,@p_TRN_TYPE,CONVERT(DATETIME,GETDATE(),103),'R',@p_REASON,'Y',@p_REJECTED_BY,CONVERT(DATETIME,GETDATE(),103))
2597
		IF @@Error <> 0 GOTO ABORT
2598
COMMIT TRANSACTION
2599
SELECT '0' as Result, @p_LOG_ID  LOG_ID ,@p_MESSAGE ErrorDesc
2600
RETURN '0'
2601
ABORT:
2602
BEGIN
2603

    
2604
		ROLLBACK TRANSACTION
2605
		SELECT '-1' as Result, '' LOG_ID, '' ErrorDesc
2606
		RETURN '-1'
2607
END
2608

    
2609
GO
2610

    
2611
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Upd]
2612
@p_REQ_PAY_ID	varchar(15)= NULL,
2613
@p_REQ_PAY_CODE	varchar(50)	= NULL,
2614
@p_REQ_DT VARCHAR(20)= NULL,
2615
@p_BRANCH_ID	varchar(15)	= NULL,
2616
@p_DEP_ID	varchar(15)	= NULL,
2617
@p_REQ_REASON	nvarchar(MAX)	= NULL,
2618
@p_REQ_TYPE	varchar(15)	= NULL,
2619
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
2620
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
2621
@p_REF_ID	varchar(15)	= NULL,
2622
@p_RECEIVER_PO	nvarchar(250)	= NULL,
2623
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
2624
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
2625
@p_REQ_AMT	decimal(18, 2)	= NULL,
2626
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
2627
@p_MAKER_ID	varchar(15)	= NULL,
2628
@p_CREATE_DT	varchar(25)	= NULL,
2629
@p_EDITOR_ID	varchar(15)	= NULL,
2630
@p_AUTH_STATUS	varchar(1)	= NULL,
2631
@p_CHECKER_ID	varchar(15)	= NULL,
2632
@p_APPROVE_DT	varchar(25)	= NULL,
2633
@p_CREATE_DT_KT	varchar(25)	= NULL,
2634
@p_MAKER_ID_KT	varchar(15)	= NULL,
2635
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
2636
@p_CHECKER_ID_KT	varchar(1)	= NULL,
2637
@p_APPROVE_DT_KT  varchar(25)= null,
2638
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
2639
@p_BRANCH_CREATE	varchar(15)	= NULL,
2640
@p_NOTES	varchar(15)	= NULL,
2641
@p_RECORD_STATUS	varchar(1)	= NULL,
2642
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
2643
@p_TRANSFER_DT	varchar(25)	= NULL,
2644
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
2645
@p_PROCESS	varchar(15)	= NULL,
2646
@p_PAY_PHASE NVARCHAR(255) = NULL,
2647
@p_RATE	DECIMAL(18,2) = 0,
2648
@p_IS_PERIOD VARCHAR(5) = NULL,
2649
@p_AMT_PAY decimal(18, 0) = NULL,
2650
@p_XMP_TEMP XML = NULL,
2651
@p_XMP_TEMP_2 XML = NULL,
2652
@p_XMP_TEMP_METHOD XML = NULL,
2653
@p_XMP_TEMP_BUDGET XML = NULL,
2654
@p_XMP_TEMP_SERVICE XML = NULL,
2655
@p_XMP_TEMP_ATTACH XML = NULL,
2656
@p_XMP_TEMP_INVOICE XML = NULL,
2657
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
2658
@p_XMP_TEMP_PO XML = NULL,
2659
@p_XMP_TEMP_SCHEDULE XML = NULL,
2660
@p_XMP_TEMP_PERIOD XML = NULL,
2661
@p_XMP_ADVANCE_DT XML = NULL,
2662
--doanptt 15/02/2022
2663
@p_XMP_TEMP_PAY_JOB XML = NULL,
2664
@p_XMP_TEMP_PAY_JOB_DT XML = NULL,
2665
--doanptt 17/02/2022
2666
@p_XMP_TEMP_PAY_DRIVE XML = NULL,
2667
@p_XMP_TEMP_PAY_DRIVE_DT XML = NULL
2668

    
2669
AS
2670
-- BEGIN VALIDATE UPDATE
2671
	IF(@p_TYPE_FUNCTION <> 'SEND')
2672
	BEGIN
2673
		IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID ))
2674
		BEGIN
2675
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
2676
			RETURN '-1'
2677
		END
2678
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
2679
		BEGIN
2680
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
2681
			RETURN '-1'
2682
		END
2683
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND  PROCESS IS NOT NULL AND PROCESS <>''))
2684
		BEGIN
2685
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
2686
			RETURN '-1'
2687
		END
2688
		IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE ='')
2689
		BEGIN
2690
			SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được phép để trống' ErrorDesc
2691
			RETURN '-1'
2692
		END
2693
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <> 'E' AND AUTH_STATUS <> 'R' AND ISNULL(AUTH_STATUS, '') <> ''))
2694
		BEGIN
2695
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
2696
			RETURN '-1'
2697
		END
2698
	END
2699
	IF(@p_TYPE_FUNCTION = 'SEND')
2700
	BEGIN
2701
		IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID ))
2702
		BEGIN
2703
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
2704
			RETURN '-1'
2705
		END
2706
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
2707
		BEGIN
2708
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
2709
			RETURN '-1'
2710
		END
2711
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS = 'A'))
2712
		BEGIN
2713
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc
2714
			RETURN '-1'
2715
		END
2716
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
2717
		BEGIN
2718
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kiểm soát viên phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc
2719
			RETURN '-1'
2720
		END
2721
		IF (ISNULL(@p_REQ_PAY_CODE, '')='' OR ISNULL(@p_REQ_TYPE, '')='' OR ISNULL(@p_MAKER_ID, '')='' OR ISNULL(@p_BRANCH_ID, '')='' OR ISNULL(@p_DEP_ID, '')='' OR ISNULL(@p_REQ_REASON, '')='')
2722
		BEGIN
2723
			SELECT '-1' Result, '' REQ_PAY_ID, N'Các trường dữ liệu không được phép để trống: mã số phiếu, loại thanh toán, người đề nghị thanh toán, đơn vị đề nghị thanh toán, phòng ban đề nghị, số tiền thanh toán, lý do thanh toán. Vui lòng kiểm tra lại thông tin' ErrorDesc
2724
			RETURN '-1'
2725
		END
2726
		IF(@p_MAKER_ID <> (SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID))
2727
		BEGIN
2728
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Gửi phê duyệt thất bại! Bạn không được quyền gửi phê duyệt phiếu đề nghị thanh toán của người khác'  ErrorDesc
2729
			RETURN '-1'
2730
		END
2731
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
2732
		BEGIN
2733
			--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
2734
			DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2735
			DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2736
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
2737
			RETURN '-1'
2738
		END
2739
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT where AUTH_STATUS <> 'E' AND ISNULL(AUTH_STATUS, '') <> '' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
2740
		BEGIN
2741
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó hoặc đang bị từ chối! Vui lòng kiểm tra lại thông tin' ErrorDesc
2742
			RETURN '-1'
2743
		END
2744
	END
2745
	
2746
-- END VALIDATE UPDATE
2747

    
2748
		--IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
2749
		--BEGIN
2750
		--	SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
2751
		--	RETURN '-1'
2752
		--END
2753
	-- doanppt 
2754
	IF(@p_REQ_TYPE = 'D')
2755
	BEGIN
2756
		DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2757
		DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2758
		DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2759
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
2760
	END
2761
	IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
2762
	BEGIN
2763
		DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2764
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
2765
	END
2766
	IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='N' OR @p_IS_PERIOD IS NULL))
2767
	BEGIN
2768
		DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2769
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
2770
	END
2771
	DECLARE @ROLE_KI_NHAY VARCHAR(50)
2772
	SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
2773
	IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
2774
	BEGIN
2775
		PRINT @ROLE_KI_NHAY
2776
	END
2777
	ELSE
2778
	BEGIN
2779
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
2780
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
2781
		BEGIN
2782
				SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
2783
		END
2784
	END
2785
	--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
2786
	IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD'))
2787
	BEGIN
2788
		SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
2789
		RETURN '-1'
2790
	END
2791

    
2792
	BEGIN TRANSACTION
2793
	-- DECLARE
2794
		DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50) = NULL,@INVOICE_NO nvarchar(50) = NULL,
2795
		@INVOICE_DT VARCHAR(20) = NULL, @SELLER nvarchar(500) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL, @PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,
2796
		@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,0),@ACC_NO VARCHAR(50),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2), 
2797
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @PAY_ADV_ID VARCHAR(15),@TYPE_TRANSFER VARCHAR(15),@REQ_PAY_ADV_CODE VARCHAR(15),@REASON NVARCHAR(1000),
2798
		@REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15), @AMT_ADVANCED DECIMAL(18,0),@AMT_DO DECIMAL(18,0), @AMT_REMAIN DECIMAL(18,0),@AMT_PAY DECIMAL(18,0),@AMT_USE DECIMAL(18,2),@AMT_REVERT DECIMAL(18,2), 
2799
		@AMT_ADD DECIMAL(18,2), @TOTAL_SCHEDULE_AMT DECIMAL(18,0) =0
2800
		DECLARE @INDEX_AD INT =0, @INDEX_SV INT =0,@INDEX INT =0, @INDEX_IV INT =0, @INDEX_NS INT =0, @INDEX_INVOICE INT = 0, @INDEX_METHOD INT = 0
2801
		DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT, @hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT, @hdocJob INT, 
2802
		@hdocJobDT INT, @hdocDrive INT, @hdocDriveDT INT
2803
	-- EXEC XMP
2804
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
2805
		EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2;
2806
		EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD;
2807
		EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET;
2808
		EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE;
2809
		EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH;
2810
		EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
2811
		EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO;
2812
		EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE;
2813
		EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD;
2814
		EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT;
2815
		--doanptt 15/02/2022
2816
		EXEC sp_xml_preparedocument @hdocJob OUTPUT, @p_XMP_TEMP_PAY_JOB;
2817
		EXEC sp_xml_preparedocument @hdocJobDT OUTPUT, @p_XMP_TEMP_PAY_JOB_DT;
2818
		--doanptt 17/02/2022
2819
		EXEC sp_xml_preparedocument @hdocDrive OUTPUT, @p_XMP_TEMP_PAY_DRIVE;
2820
		EXEC sp_xml_preparedocument @hdocDriveDT OUTPUT, @p_XMP_TEMP_PAY_DRIVE_DT;
2821
		
2822

    
2823
-- BEGIN THONG TIN LUOI MASTER
2824
		UPDATE TR_REQ_PAYMENT 
2825
		SET REF_ID = @p_REF_ID, DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_AMT = @p_REQ_AMT, NOTES= @p_NOTES, REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,
2826
		RECEIVER_PO = @p_RECEIVER_PO,TRANSFER_MAKER =@p_TRANSFER_MAKER, REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID, 
2827
		AUTH_STATUS='E', IS_PERIOD =@p_IS_PERIOD, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE, RATE = @p_RATE, AMT_PAY = @p_AMT_PAY, AUTH_STATUS_KT = NULL, REQ_TYPE_CURRENCY = @p_REQ_TYPE_CURRENCY
2828
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2829
		-- BUA DOAN NAY DE XU LY LOI KHONG TIM DUOC NHA CUNG CAP
2830
		UPDATE CM_SUPPLIER SET ACC_NUM ='' WHERE ACC_NUM IS NULL
2831
		UPDATE CM_SUPPLIER SET ACC_NUM_OUT ='' WHERE ACC_NUM_OUT IS NULL
2832
		--
2833
		UPDATE TR_REQ_PAY_SERVICE 
2834
		SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
2835
		WHERE REQ_PAY_ID NOT IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE IN ('I','D'))
2836
		--
2837
		UPDATE TR_REQ_PAY_SCHEDULE 
2838
		SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
2839
		WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE ='P' AND IS_PERIOD IS NOT NULL AND IS_PERIOD <>'' AND IS_PERIOD='Y') AND TRN_TYPE ='PAY' AND REQ_PAY_ID =@p_REQ_PAY_ID
2840
		IF @@Error <> 0 GOTO ABORT
2841
-- END THONG TIN LUOI MASTER
2842

    
2843
-- BEGIN THONG TIN HOA DON DINH KEM
2844
		DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000)
2845
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2846
		DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
2847
		WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15), 
2848
		GOODS_NAME nvarchar(500), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15))
2849
		OPEN XmlData;
2850
		FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
2851
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
2852
		WHILE @@fetch_status=0 
2853
		BEGIN
2854
		-- SET
2855
			SET @INDEX_IV = @INDEX_IV +1
2856
		-- BEGIN VALIDATE
2857
			IF(@p_TYPE_FUNCTION ='SEND') 
2858
			BEGIN
2859
				IF(LEN(@INVOICE_NO) < 1)
2860
				BEGIN
2861
					ROLLBACK TRANSACTION
2862
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc
2863
					RETURN '-1'
2864
				END	
2865

    
2866
				IF(LEN(@INVOICE_NO) > 8)
2867
				BEGIN
2868
					ROLLBACK TRANSACTION
2869
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9 ký tự' ErrorDesc
2870
					RETURN '-1'
2871
				END	
2872

    
2873
				IF(EXISTS( SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D'
2874
				AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D')  AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
2875
				BEGIN
2876
					---- 19.10.2022 LUCTV DIEU CHINH TAI VI TRI VALIDATE SO HOA DON
2877
					SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
2878
					(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX 
2879
					AND AUTH_STATUS <>'D'
2880
					AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
2881
					FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
2882
					BEGIN
2883
						ROLLBACK TRANSACTION
2884
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Danh sách những phiếu đề nghị thanh toán đã sử dụng: '+ ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
2885
						RETURN '-1'
2886
					END		
2887
				END	
2888
				
2889
				IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='')
2890
				BEGIN
2891
					ROLLBACK TRANSACTION
2892
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc
2893
					RETURN '-1'
2894
				END
2895
				-- TÊN NGƯỜI BÀN
2896
				IF(@SELLER IS NULL OR @SELLER ='')
2897
				BEGIN
2898
					ROLLBACK TRANSACTION
2899
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc
2900
					RETURN '-1'
2901
				END
2902

    
2903
				IF(@TAX_NO IS NULL OR @TAX_NO ='')
2904
				BEGIN
2905
					ROLLBACK TRANSACTION
2906
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc
2907
					RETURN '-1'
2908
				END
2909
				-- NGÀY HÓA ĐƠN
2910
				IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='')
2911
				BEGIN
2912
					ROLLBACK TRANSACTION
2913
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2914
					RETURN '-1'
2915
				END
2916
				-- SỐ HÓA ĐƠN
2917
				IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='')
2918
				BEGIN
2919
					ROLLBACK TRANSACTION
2920
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2921
					RETURN '-1'
2922
				END
2923
				-- KÍ HIỆU HÓA ĐƠN
2924
				IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='')
2925
				BEGIN
2926
					ROLLBACK TRANSACTION
2927
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2928
					RETURN '-1'
2929
				END
2930
				-- KÍ HIỆU HÓA ĐƠN
2931
				IF(@PRICE IS NULL OR @PRICE =0)
2932
				BEGIN
2933
					ROLLBACK TRANSACTION
2934
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2935
					RETURN '-1'
2936
				END
2937
			END
2938
		-- END VALIDATE
2939

    
2940
			DECLARE @p_REQ_INV_ID VARCHAR(15);
2941
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
2942
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
2943
			INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,
2944
			CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
2945
			VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))),@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) ,
2946
			@PRICE ,@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, 'VND' , 1,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC)
2947
		IF @@error<>0 GOTO ABORT;
2948
		FETCH NEXT FROM XmlData
2949
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
2950
		END;
2951
		CLOSE XmlData;
2952
		DEALLOCATE XmlData;
2953
-- END THONG TIN HOA DON DINH KEM
2954

    
2955
-- BEGIN THONG TIN HANG MUC NGAN SACH VA CHI PHI
2956
	-- DELETE
2957
		DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID=@p_REQ_PAY_ID
2958
		DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID=@p_REQ_PAY_ID
2959
		DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID=@p_REQ_PAY_ID
2960
	-- DECLARE
2961
		DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15), @GD_CODE varchar(15), @AMT_APP decimal(18,2),@AMT_EXE decimal(18,2), @AMT_REMAIN_GD decimal(18,2),@TYPE_COST VARCHAR(15), @FR_LEVEL INT ,
2962
		@TO_LEVEL INT, @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4), @BUDGET_TYPE VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20),
2963
		@BRANCH_TYPE VARCHAR(20), @KHOI_ID VARCHAR(20), @TLNAME VARCHAR(20), @RoleName VARCHAR(20), @BRANCH_TAKE_COST_ID VARCHAR(20), @DEP_TAKE_COST_ID VARCHAR(20), @KHOI_TAKE_COST_ID VARCHAR(20)
2964
	-- DECLARE CURSOR
2965
		DECLARE XmlDataGood CURSOR FOR SELECT * FROM OPENXML(@hdocBudget, 'Root/XmlDataGood',2) 
2966
		WITH(TRADE_ID varchar(15),GD_ID varchar(15),GD_CODE varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), 
2967
		REASON NVARCHAR(1000),TYPE_COST VARCHAR(15), FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4), BUDGET_TYPE VARCHAR(20),  BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), MONTH VARCHAR(20), YEAR VARCHAR(20),
2968
		BRANCH_TYPE VARCHAR(20), KHOI_ID VARCHAR(20), TLNAME VARCHAR(20), RoleName VARCHAR(20), BRANCH_TAKE_COST_ID VARCHAR(20), DEP_TAKE_COST_ID VARCHAR(20), KHOI_TAKE_COST_ID VARCHAR(20))
2969
	-- BEGIN CURSOR THONG TIN HANG MUC NGAN SACH VA CHI PHI
2970
		OPEN XmlDataGood		
2971
		FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
2972
		@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID
2973
		WHILE @@fetch_status=0 BEGIN
2974
		-- SET
2975
			SET @INDEX_NS = @INDEX_NS +1
2976

    
2977
		-- BEGIN VALIDATE
2978
			IF(@p_TYPE_FUNCTION ='SEND')
2979
			BEGIN
2980
				IF(ISNULL(@AMT_EXE,0) =0)
2981
				BEGIN
2982
					ROLLBACK TRANSACTION
2983
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
2984
					RETURN '-1'
2985
				END
2986
				/*
2987
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
2988
				BEGIN
2989
						ROLLBACK TRANSACTION
2990
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
2991
						RETURN '-1'
2992
				END
2993
				*/
2994
				IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
2995
				AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
2996
				BEGIN
2997
					ROLLBACK TRANSACTION
2998
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
2999
					RETURN '-1'
3000
				END
3001
--doanptt 180622 ghi log NSCP
3002
-- BEGIN CHECK HAN MUC CHI PHI THEO NAM
3003
				IF(@BUDGET_TYPE = 'nam')
3004
				BEGIN
3005
					IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL)
3006
					BEGIN
3007
						ROLLBACK TRANSACTION
3008
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc
3009
						RETURN '-1'
3010
					END
3011
					SET @MONTH_RATE = 'M' + CONVERT(VARCHAR(20), MONTH(GETDATE()));
3012
					DECLARE @l_BUDGET_LIMIT_YEAR_DETAIL_ID VARCHAR(15);
3013
					EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR_DETAIL', @l_BUDGET_LIMIT_YEAR_DETAIL_ID OUT;
3014

    
3015
					IF(@MONTH_RATE = 'M1')
3016
					BEGIN
3017
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3018
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3019
					END
3020
					IF(@MONTH_RATE = 'M2')
3021
					BEGIN
3022
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3023
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3024
					END
3025
					IF(@MONTH_RATE = 'M3')
3026
					BEGIN
3027
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3028
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3029
					END
3030
					IF(@MONTH_RATE = 'M4')
3031
					BEGIN
3032
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3033
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3034
					END
3035
					IF(@MONTH_RATE = 'M5')
3036
					BEGIN
3037
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3038
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3039
					END
3040
					IF(@MONTH_RATE = 'M6')
3041
					BEGIN
3042
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5,	 M6,   M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3043
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName,	@YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1',			'A',		NULL,			NULL )
3044
					END
3045
					IF(@MONTH_RATE = 'M7')
3046
					BEGIN
3047
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3048
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3049
					END
3050
					IF(@MONTH_RATE = 'M8')
3051
					BEGIN
3052
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3053
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3054
					END
3055
					IF(@MONTH_RATE = 'M9')
3056
					BEGIN
3057
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3058
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3059
					END
3060
					IF(@MONTH_RATE = 'M10')
3061
					BEGIN
3062
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3063
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3064
					END
3065
					IF(@MONTH_RATE = 'M11')
3066
					BEGIN
3067
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3068
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3069
					END
3070
					IF(@MONTH_RATE = 'M12')
3071
					BEGIN
3072
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3073
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3074
					END
3075

    
3076
					-- CHECK HẠN MỨC
3077
					DECLARE @l_HAVE_BUDGET_LIMIT_YEAR decimal(18,0), @l_BUDGET_LIMIT_CURRENT_YEAR decimal(18,0) =0, @l_BUDGET_USED_CURRENT_YEAR decimal(18,0) =0 , @l_BRANCH_TYPE_YEAR VARCHAR(20) = '';
3078
					EXEC TR_BUDGET_CHECK_LIMIT_YEAR_Byid @GD_ID, @GD_CODE ,@BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @MONTH_RATE, @YEAR_RATE, @l_BUDGET_LIMIT_CURRENT_YEAR out, @l_BUDGET_USED_CURRENT_YEAR out
3079
					IF(@l_BUDGET_LIMIT_CURRENT_YEAR < @l_BUDGET_USED_CURRENT_YEAR)
3080
					BEGIN
3081
						ROLLBACK TRANSACTION
3082
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT_YEAR,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT_YEAR,'#,#', 'vi-VN')  ErrorDesc
3083
						RETURN '-1'
3084
					END
3085
				END-- END CHECK HAN MUC NGAN SACH CHI PHI THEO NAM
3086
				ELSE IF(@BUDGET_TYPE = 'thang')
3087
				BEGIN	-- BEGIN CHECK HAN MUC NGAN SACH CHI PHI THEO THANG
3088
				-- BEGIN KIỂM TRA HẠN MỨC
3089
					DECLARE @l_HAVE_BUDGET_LIMIT decimal(18,0), @l_BUDGET_LIMIT_CURRENT decimal(18,0) =0, @l_BUDGET_USED_CURRENT decimal(18,0) =0 , @l_BRANCH_TYPE VARCHAR(20) = '';
3090
					-- lấy loại đơn vị
3091
					SET @l_BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)
3092
					IF(@l_BRANCH_TYPE = 'HS')
3093
					BEGIN
3094
						SET @l_BRANCH_TYPE = 'ho'
3095
					END
3096
					ELSE
3097
					BEGIN
3098
						SET @l_BRANCH_TYPE = 'dvkd'
3099
					END
3100

    
3101
					DECLARE @l_BUDGET_LIMIT_MONTH_DETAIL_ID VARCHAR(15);
3102
					EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_MONTH_DETAIL', @l_BUDGET_LIMIT_MONTH_DETAIL_ID OUT;
3103

    
3104
					IF(@MONTH_RATE = '' OR @MONTH_RATE IS NULL)
3105
					BEGIN
3106
						ROLLBACK TRANSACTION
3107
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Tháng định mức không được để trống' ErrorDesc
3108
						RETURN '-1'
3109
					END
3110
					IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL)
3111
					BEGIN
3112
						ROLLBACK TRANSACTION
3113
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc
3114
						RETURN '-1'
3115
					END
3116
				-- END KIỂM TRA HẠN MỨC
3117
				-- BEGIN VALIDATE
3118
					IF(@MONTH_RATE = 'M1')
3119
					BEGIN
3120
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3121
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3122
					END
3123
					IF(@MONTH_RATE = 'M2')
3124
					BEGIN
3125
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3126
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3127
					END
3128
					IF(@MONTH_RATE = 'M3')
3129
					BEGIN
3130
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3131
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3132
					END
3133
					IF(@MONTH_RATE = 'M4')
3134
					BEGIN
3135
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3136
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3137
					END
3138
					IF(@MONTH_RATE = 'M5')
3139
					BEGIN
3140
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3141
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3142
					END
3143
					IF(@MONTH_RATE = 'M6')
3144
					BEGIN
3145
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID,		 GD_ID , BRANCH_ID,  DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5,	 M6,   M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3146
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID,	@YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1',			'A',		NULL,			NULL )
3147
					END
3148
					IF(@MONTH_RATE = 'M7')
3149
					BEGIN
3150
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3151
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3152
					END
3153
					IF(@MONTH_RATE = 'M8')
3154
					BEGIN
3155
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3156
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3157
					END
3158
					IF(@MONTH_RATE = 'M9')
3159
					BEGIN
3160
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3161
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3162
					END
3163
					IF(@MONTH_RATE = 'M10')
3164
					BEGIN
3165
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3166
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3167
					END
3168
					IF(@MONTH_RATE = 'M11')
3169
					BEGIN
3170
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3171
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3172
					END
3173
					IF(@MONTH_RATE = 'M12')
3174
					BEGIN
3175
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
3176
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
3177
					END
3178
				-- END VALIDATE
3179
					
3180
				-- CHECK HẠN MỨC
3181
					EXEC TR_BUDGET_CHECK_LIMIT_MONTH_Byid @GD_ID, @GD_CODE ,@l_BRANCH_TYPE, @YEAR_RATE , @MONTH_RATE, @l_BUDGET_LIMIT_CURRENT out, @l_BUDGET_USED_CURRENT out
3182
					IF(@l_BUDGET_LIMIT_CURRENT < @l_BUDGET_USED_CURRENT)
3183
					BEGIN
3184
						ROLLBACK TRANSACTION
3185
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT,'#,#', 'vi-VN')  ErrorDesc
3186
						RETURN '-1'
3187
					END
3188
				END
3189
--END CHECK HAN MUC NGAN SACH CHI PHI THEO THANG
3190
			END
3191
		-- END VALIDATE
3192

    
3193
			DECLARE @p_BUDGET_ID VARCHAR(15);
3194
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
3195
			IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
3196
			INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL  ,TO_LEVEL, MONTH_RATE, YEAR_RATE, BUDGET_TYPE, BRANCH_ID ,DEP_ID, TLNAME, ROLENAME, BRANCH_TAKE_COST_ID, DEP_TAKE_COST_ID, KHOI_TAKE_COST_ID) 
3197
			VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL,  @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID, @DEP_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID)
3198
		IF @@error<>0 GOTO ABORT;
3199
		FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
3200
		@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID
3201
		END;
3202
		CLOSE XmlDataGood;
3203
		DEALLOCATE XmlDataGood;
3204
-- END THONG TIN HAMG MUC NGAN SACH VA CHI PHI
3205

    
3206

    
3207
-- BEGIN THONG TIN PHUONG THUC THANH TOAN
3208
	-- DELETE
3209
		DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3210
	--DECLARE
3211
		DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2), @REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX),
3212
		@REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20)
3213
	-- SET
3214
		SET @INDEX = 0
3215
	-- DECLARE CURSOR
3216
		DECLARE XmlDataMethod CURSOR FOR SELECT * FROM OPENXML(@hdocMethod, 'Root/XmlDataMethod',2)
3217
		WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2), REQ_PAY_TYPE varchar(1),REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),
3218
		ACC_NO VARCHAR(250), ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15), 
3219
		BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME NVARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT NVARCHAR(20))
3220
	-- BEGIN CURSOR THONG TIN PHUONG THUC THANH TOAN
3221
		OPEN XmlDataMethod
3222
		FETCH NEXT FROM XmlDataMethod INTO  @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,
3223
		@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
3224
		WHILE @@fetch_status=0 
3225
		BEGIN
3226
		-- SET
3227
			SET @INDEX_METHOD = @INDEX_METHOD+1
3228
		-- BEGIN VALIDATE
3229
			IF(@p_TYPE_FUNCTION ='SEND')
3230
			BEGIN
3231

    
3232
				IF(@ACC_NO IS NULL OR @ACC_NO = '')
3233
				BEGIN
3234
					ROLLBACK TRANSACTION
3235
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': số tài khoản '+ N' không được để trống' ErrorDesc
3236
					RETURN '-1'
3237
				END
3238

    
3239
				IF((@BANKCODE IS NULL OR @BANKCODE = '') AND @CHECK_IN = 'O')
3240
				BEGIN
3241
					ROLLBACK TRANSACTION
3242
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Loại tài khoản là ngoài hệ thống! Vui lòng chọn lại Tên ngân hàng/nơi cấp CMND từ danh sách!' ErrorDesc
3243
					RETURN '-1'
3244
				END
3245

    
3246
				IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL))
3247
				BEGIN
3248
					ROLLBACK TRANSACTION
3249
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Ngày cấp CMND '+ N' không được để trống nếu phương thức thanh toán là bằng tiền mặt' ErrorDesc
3250
					RETURN '-1'
3251
				END
3252

    
3253
				IF(@ISSUED_BY = '' OR @ISSUED_BY IS NULL)
3254
				BEGIN
3255
					ROLLBACK TRANSACTION
3256
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Tên ngân hàng/nơi cấp CMND '+ N' không được để trống' ErrorDesc
3257
					RETURN '-1'
3258
				END
3259

    
3260
				IF(@ACC_NAME = '' OR @ACC_NAME IS NULL)
3261
				BEGIN
3262
					ROLLBACK TRANSACTION
3263
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Tên tài khoản/người nhận '+ N' không được để trống' ErrorDesc
3264
					RETURN '-1'
3265
				END
3266
			END
3267
		-- END VALIDATE
3268
			IF(@REQ_PAY_TYPE<>'1')
3269
			BEGIN
3270
				SET @ISSUED_DT = NULL
3271
			END
3272
			IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='')
3273
			BEGIN
3274
				SET @TYPE_TRANSFER = 'A'
3275
			END
3276

    
3277
			DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
3278
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
3279
			IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
3280
			INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID, REQ_PAY_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT)
3281
			VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), @p_REQ_TYPE_CURRENCY , @p_RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT)
3282
		IF @@error<>0 GOTO ABORT;
3283
		FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,
3284
		@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
3285
		END
3286
		CLOSE XmlDataMethod;
3287
		DEALLOCATE XmlDataMethod;
3288
	-- END CURSOR THONG TIN PHUONG THUC THANH TOAN
3289
-- END THONG TIN PHUONG THUC THANH TOAN
3290

    
3291
-- BEGIN THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM
3292
	-- DELETE
3293
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
3294
	-- DECLARE
3295
		DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000), @CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15)
3296
	-- DECLARE CURSOR
3297
		DECLARE XmlAttach CURSOR FOR SELECT * FROM OPENXML(@hdocAttach, 'Root/XmlAttach',2) 
3298
		WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000), CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15))
3299
	-- BEGIN CURSOR THONG TIN CHUNG TU KHAC DINH KEM
3300
		OPEN XmlAttach
3301
		FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
3302
			WHILE @@fetch_status=0 
3303
			BEGIN
3304
				
3305
				IF (@REF_DT='')
3306
				BEGIN
3307
					SET @REF_DT = NULL
3308
				END
3309
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
3310
				IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
3311
				INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],[AMT],REF_DT, LICENSE_DT) VALUES
3312
				(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,CONVERT(DATE,@REF_DT,103) ,CONVERT(DATE, @LICENSE_DT,103))
3313
			IF @@error<>0 GOTO ABORT;
3314
			FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
3315
			END
3316
		CLOSE XmlAttach;
3317
		DEALLOCATE XmlAttach;    
3318
-- END THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM
3319

    
3320
		------------------------
3321
	-- NEU LA THANH TOAN HOAN TAM UNG
3322
		IF(@p_REQ_TYPE = 'I')
3323
		BEGIN
3324
		-- DELETE
3325
			DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
3326

    
3327
			DECLARE XmlDataPay CURSOR FOR SELECT * FROM OPENXML(@hDoc2, '/Root/XmlDataPay', 2)
3328
			WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2),
3329
			AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,0),AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15))
3330
		-- BEGIN CURSOR THONG TIN PHIEU DE NGHI TAM UNG
3331
			OPEN XmlDataPay; 
3332
			FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
3333
			WHILE @@fetch_status=0 
3334
			BEGIN
3335
				SET @INDEX_AD = @INDEX_AD +1
3336
				SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID)
3337
		-- BEGIN VALIDATE
3338
				IF(@p_TYPE_FUNCTION ='SEND') 
3339
				BEGIN
3340
					-- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA
3341
					--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <> @p_REQ_PAY_ID))
3342
					IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <> @p_REQ_PAY_ID))
3343
					BEGIN
3344
						ROLLBACK TRANSACTION
3345
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3346
						RETURN '-1'
3347
					END
3348
					
3349
					-- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG
3350
					IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0)
3351
					BEGIN
3352
						ROLLBACK TRANSACTION
3353
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc
3354
						RETURN '-1'
3355
					END
3356
					--KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
3357
					IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADV_ID)<=0)
3358
					BEGIN
3359
						ROLLBACK TRANSACTION
3360
						SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc
3361
						RETURN '-1'
3362
					END
3363
					
3364
				END
3365
		-- END VALIDATE
3366
				DECLARE @p_REQ_PAYDT_ID VARCHAR(15);
3367
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT;
3368
				IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT;
3369
				INSERT INTO TR_REQ_PAYMENT_DT
3370
				VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0),
3371
				ISNULL(ISNULL(@AMT_USE,0) + ISNULL(@AMT_REVERT,0) - ISNULL(@AMT_ADD,0),0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103)  ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL, @p_REQ_TYPE_CURRENCY , @p_RATE)
3372
			IF @@error<>0 GOTO ABORT;
3373
			FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
3374
			END
3375
			CLOSE XmlDataPay;
3376
			DEALLOCATE XmlDataPay;
3377
		--END CURSOR THONG TIN PHIEU DE NGHI TAM UNG
3378
		--------------------------------------------------------------------------------------------------------------------
3379
		--INSERT FROM CatCursor
3380
		--DELETE
3381
			DELETE FROM TR_REQ_PAY_CAT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3382
			--CatCursor
3383
			DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15)
3384
			DECLARE XmlDataCat CURSOR FOR
3385
			SELECT * FROM OPENXML(@hdoc, 'Root/XmlDataCat',2) 
3386
			WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
3387
			OPEN XmlDataCat
3388
			FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
3389
			WHILE @@fetch_status=0 
3390
			BEGIN
3391
				SET @INDEX = @INDEX +1
3392
				DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15);
3393
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT;
3394
				IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT;
3395
				INSERT INTO TR_REQ_PAY_CAT
3396
				VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE)
3397
			IF @@error<>0 GOTO ABORT;
3398
			FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
3399
			END
3400
			CLOSE XmlDataCat;
3401
			DEALLOCATE XmlDataCat;
3402
		END
3403
	-- NEU LA THANH TOAN KHAC
3404
		IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE ='I')
3405
		BEGIN
3406
		-- DELETE
3407
			DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3408
		-- DECLARE
3409
			DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(250), @PYCMS_CODE_DRAFT_LIST VARCHAR(250), @PDNTT_CODE_LIST VARCHAR(250)
3410
			DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX), @TOTAL_AMT_SERVICE decimal(18,2),
3411
			@REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15)
3412
		-- SET
3413
			SET @SUM_KUY_KE_TT=0
3414
			SET @INDEX = 0
3415
		-- DECLARE CURSOR
3416
			DECLARE XmlDataService CURSOR FOR SELECT * FROM OPENXML(@hdocService, 'Root/XmlDataService',2)
3417
			WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX),
3418
			TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX), 
3419
			DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
3420
		-- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN
3421
			OPEN XmlDataService
3422
			FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
3423
			@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
3424
			WHILE @@fetch_status=0 
3425
			BEGIN
3426
				SET @INDEX = @INDEX +1
3427
				SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE
3428
						REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE)
3429
				SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE),0)
3430
				SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)
3431
				SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE
3432
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
3433
				SET @PYCMS_CODE_DRAFT_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE AND AUTH_STATUS = 'E'
3434
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
3435
				SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) AND REQ_PAY_ID <> @p_REQ_PAY_ID
3436
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
3437
			--------------- BEGIN VALIDATE --------------
3438
				IF(@p_TYPE_FUNCTION ='SEND')
3439
				BEGIN
3440
					IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='')
3441
					BEGIN
3442
						ROLLBACK TRANSACTION
3443
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc
3444
						RETURN '-1'
3445
					END	
3446
				
3447
					IF(@TOTAL_AMT_SERVICE IS NULL)
3448
					BEGIN
3449
						ROLLBACK TRANSACTION
3450
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc
3451
						RETURN '-1'
3452
					END
3453
				
3454
					IF(@TOTAL_AMT_SERVICE < 0)
3455
					BEGIN
3456
						ROLLBACK TRANSACTION
3457
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc
3458
						RETURN '-1'
3459
					END
3460

    
3461
					IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
3462
					BEGIN
3463
						ROLLBACK TRANSACTION
3464
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,
3465
						N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:'
3466
						+ CHAR(10) + 
3467
						N'</br>* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+
3468
						+ CHAR(10) + 
3469
						N'</br>* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND'
3470
						+ CHAR(10) + 
3471
						N'</br>* Bạn đang thanh toán cho phiếu này với số tiền: '+ FORMAT(ISNULL(@TOTAL_AMT_SERVICE,0),'#,#', 'vi-VN') +' VND'
3472
						+ CHAR(10) + 
3473
						N'</br>* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'  
3474
						+ CHAR(10) + 
3475
						N'</br>* Chú ý những PYCMS sau đang lưu nháp & ăn ngân sách, vui lòng kiểm tra và xóa PYCMS: ' + ISNULL(@PYCMS_CODE_DRAFT_LIST,'') ErrorDesc
3476
						RETURN '-1'
3477
					END
3478
				END
3479
			--------------- END VALIDATE ----------------
3480
				--IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
3481
				--BEGIN
3482
				--	SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE
3483
				--END
3484
				--SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE
3485
				
3486
				DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15);
3487
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT;
3488
				IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT;
3489
				INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE)
3490
				VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
3491
				@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV, @p_REQ_TYPE_CURRENCY , @p_RATE)
3492
			IF @@error<>0 GOTO ABORT;
3493
			FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE,
3494
			@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
3495
			END
3496
			CLOSE XmlDataService;
3497
			DEALLOCATE XmlDataService;
3498
		-- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN
3499
		END
3500
		IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR (@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE ='I')
3501
		BEGIN
3502
			DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
3503
			DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
3504
		END
3505
	-- NEU LA THANH TOAN PO HOP DONG
3506
		IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I')
3507
		BEGIN
3508
		-- DELETE
3509
			--DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
3510
			/*
3511
			IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL))
3512
			BEGIN
3513
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
3514
			END
3515
			*/
3516
		-- DECLARE
3517
			DECLARE @INDEX_PO INT, @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1)
3518
		--SET
3519
			SET @INDEX_PO = 0
3520
		-- DECLARE CURSOR
3521
			DECLARE XmlDataPO CURSOR FOR SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2)
3522
			WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
3523
		-- BEGIN CURSOR THÔNG TIN PO/ HOP DONG
3524
			OPEN XmlDataPO;
3525
			FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
3526
			WHILE @@fetch_status=0 
3527
			BEGIN
3528
			-- SET
3529
				SET @INDEX_PO = @INDEX_PO +1
3530
			-- BEGIN VALIDATE
3531
				IF(@p_TYPE_FUNCTION ='SEND') 
3532
				BEGIN
3533
					DECLARE @PDN_TAMUNG_LIST VARCHAR(4000) --- LUCTV 19.10.2022
3534
					-- KIEM TRA PO DUOC DUYET HAY CHUA
3535
					--IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
3536
					--BEGIN
3537
					--ROLLBACK TRANSACTION
3538
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
3539
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
3540
					--	RETURN '-1'
3541
					--END
3542
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3543
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' 
3544
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
3545
					--BEGIN
3546
					--	ROLLBACK TRANSACTION
3547
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
3548
					--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3549
					--	RETURN '-1'
3550
					--END
3551
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3552
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C'
3553
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
3554
					--BEGIN
3555
					--	ROLLBACK TRANSACTION
3556
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
3557
					--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3558
					--	RETURN '-1'
3559
					--END
3560
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3561
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' 
3562
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
3563
					--BEGIN
3564
					--	ROLLBACK TRANSACTION
3565
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
3566
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3567
					--	RETURN '-1'
3568
					--END
3569
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3570
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
3571
					--BEGIN
3572
					--	ROLLBACK TRANSACTION
3573
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
3574
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
3575
					--	RETURN '-1'
3576
					--END
3577
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3578
						--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID 
3579
						--IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
3580
						--BEGIN
3581
						--	ROLLBACK TRANSACTION
3582
						--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
3583
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3584
						--	RETURN '-1'
3585
						--END
3586
						---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3587
						--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
3588
						--BEGIN
3589
						--	ROLLBACK TRANSACTION
3590
						--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
3591
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3592
						--	RETURN '-1'
3593
						--END
3594
						--IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID =@REF_ID AND PAY_ID =@PAY_ID AND 
3595
						--			REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
3596
						--BEGIN
3597
						--	ROLLBACK TRANSACTION
3598
						--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
3599
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3600
						--	RETURN '-1'
3601
						--END
3602
						-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3603
						SET @PDN_TAMUNG_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN 
3604
						(SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P') AND ISNULL(AUTH_STATUS_KT,'') NOT IN ('A','E','R')
3605
						FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
3606
						--- VALIDATE PO DANG TRONG QUA TRINH TAM UNG
3607
						IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID 
3608
						IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
3609
						BEGIN
3610
							ROLLBACK TRANSACTION
3611
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
3612
							(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất.Danh sách phiếu tạm ứng đang sử dụng: '+ ISNULL(@PDN_TAMUNG_LIST,'') ErrorDesc
3613
							RETURN '-1'
3614
						END
3615
						-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3616
						IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
3617
						BEGIN
3618
							ROLLBACK TRANSACTION
3619
							SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
3620
							(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
3621
							RETURN '-1'
3622
						END
3623
				END
3624
			-- END VALIDATE
3625
				DECLARE @REQ_PAYDTID VARCHAR(15);
3626
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
3627
				IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
3628
				IF(LEFT(@REF_ID, 3) = 'TRC')
3629
				BEGIN
3630
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) 
3631
					VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'C')
3632
				END
3633
				ELSE
3634
				BEGIN
3635
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) 
3636
					VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'P')
3637
				END
3638
				
3639
			IF @@error<>0 GOTO ABORT;
3640
			FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
3641
			END
3642
			CLOSE XmlDataPO;
3643
			DEALLOCATE XmlDataPO;
3644
		-- END CURSOR THÔNG TIN PO/ HOP DONG
3645

    
3646
		-- DELETE
3647
			DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3648
		-- DECLARE
3649
			DECLARE @PO_ID VARCHAR(15), @PAY_PHASE NVARCHAR(250), @AMT_ADVANCE DECIMAL(18,2),
3650
			@REQ_AD_DT VARCHAR(20),@PROCESS VARCHAR(15),@PAY_ID VARCHAR(15),@AMT_PAY_DO DECIMAL(18,2),@AMT_PAY_REAL DECIMAL(18,2)
3651
		-- DECLARE CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG
3652
			DECLARE XmlDataSchedule CURSOR FOR SELECT * FROM OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2)
3653
			WITH(PO_ID VARCHAR(15),PAY_PHASE VARCHAR(15),AMT_PAY DECIMAL(18,2),REQ_ADV_ID VARCHAR(15), AMT_ADVANCE DECIMAL(18,2),
3654
			AMT_REMAIN DECIMAL(18,2),REQ_AD_DT VARCHAR(20),PROCESS VARCHAR(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250),
3655
			REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2))
3656
		-- BEGIN CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG 
3657
			OPEN XmlDataSchedule
3658
			SET @INDEX_PO = 0
3659
			FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@PAY_PHASE,@AMT_PAY, @REQ_ADV_ID,@AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT,
3660
			@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
3661
			WHILE @@fetch_status=0 
3662
			BEGIN
3663
				--IF(@AMT_REMAIN =0)
3664
				--BEGIN
3665
				--	SET @PROCESS ='3'
3666
				--END
3667
				--IF(@PROCESS <>'2')
3668
				--BEGIN
3669
				--	SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN
3670
				--END
3671
				SET @INDEX_PO = @INDEX_PO +1
3672
				SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +(@AMT_PAY - @AMT_ADVANCE -@AMT_PAY_DO)
3673
			-- BEGIN VALIDATE
3674
				IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='P')
3675
				BEGIN
3676
					IF(ISNULL(@AMT_PAY_REAL,0) < ISNULL(@AMT_ADVANCE ,0))
3677
					BEGIN
3678
						ROLLBACK TRANSACTION
3679
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán thực tế tối thiểu phải bằng số tiền đã tạm ứng : ' +FORMAT(SUM(@AMT_ADVANCE),'#,#', 'vi-VN')  ErrorDesc
3680
						RETURN '-1'
3681
					END
3682
				END
3683
			-- END VALIDATE
3684
				DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
3685
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
3686
				IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
3687

    
3688
				INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
3689
				CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
3690
				VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID, @AMT_PAY, @PAY_PHASE, @REQ_ADV_ID, @AMT_ADVANCE, @AMT_PAY_DO, @AMT_REMAIN,
3691
				--IIF(@PROCESS<>'2',(@AMT_PAY-@AMT_ADVANCE),0),
3692
				GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES, @p_REQ_TYPE_CURRENCY , @p_RATE,@AMT_PAY_REAL)
3693
			IF @@error<>0 GOTO ABORT;
3694
			FETCH NEXT FROM XmlDataSchedule INTO @PO_ID, @PAY_PHASE, @AMT_PAY, @REQ_ADV_ID, @AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT,
3695
			@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
3696
			END
3697
			CLOSE XmlDataSchedule;
3698
			DEALLOCATE XmlDataSchedule;
3699
		-- END CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG 
3700
			---- VALIDATE SO TIEN
3701
			--IF(@p_REQ_AMT > ISNULL(@TOTAL_SCHEDULE_AMT,0))
3702
			--BEGIN
3703
			--	ROLLBACK TRANSACTION
3704
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+  FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
3705
			--	RETURN '-1'
3706
			--END
3707
	     ------
3708
		END
3709
	-- NEU LA THANH TOAN CAC HOP DONG DINH KY
3710
		IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE='I')
3711
		BEGIN
3712
		-- DELETE
3713
			--DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
3714
			/*
3715
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y')
3716
			BEGIN
3717
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
3718
			END
3719
			*/
3720
		-- DECLARE
3721
			DECLARE @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1), @DELIVERY_DT VARCHAR(20)
3722
		--DECLARE CURSOR THONG TIN HOP DONG DINH KY
3723
			DECLARE XmlDataRecurring CURSOR FOR SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2)
3724
			WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15), DELIVERY_DT VARCHAR(20))
3725
		-- BEGIN CURSOR THONG TIN HOP DONG DINH KY
3726
			OPEN XmlDataRecurring;
3727
			FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT
3728
			WHILE @@fetch_status = 0 
3729
			BEGIN
3730
			-- SET
3731
				SET @INDEX_PO = @INDEX_PO +1
3732
			-- BEGIN VALIDATE
3733
				IF(@p_TYPE_FUNCTION ='SEND') 
3734
				BEGIN
3735
					IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
3736
					BEGIN
3737
						ROLLBACK TRANSACTION
3738
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
3739
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
3740
						RETURN '-1'
3741
					END
3742

    
3743
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID 
3744
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
3745
					BEGIN
3746
						ROLLBACK TRANSACTION
3747
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
3748
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
3749
						RETURN '-1'
3750
					END
3751

    
3752
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
3753
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
3754
					BEGIN
3755
						ROLLBACK TRANSACTION
3756
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
3757
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
3758
						RETURN '-1'
3759
					END
3760
				END
3761
			-- END VALIDATE
3762
				DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
3763
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
3764
				IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
3765
				INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE, DELIVERY_DT) 
3766
				VALUES(@REQ_PAYDTID_PERIOD,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,'C', CONVERT(DATE,@DELIVERY_DT,103))
3767

    
3768
			IF @@error<>0 GOTO ABORT;
3769
			FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT
3770
			END
3771
			CLOSE XmlDataRecurring;
3772
			DEALLOCATE XmlDataRecurring;
3773
		-- END CURSOR THONG TIN HOP DONG DINH KY
3774

    
3775
		-- DECLARE
3776
			DECLARE @INDEX_PERIOD INT
3777
		--SET
3778
			SET @INDEX_PERIOD = 0
3779
		-- DELETE
3780
			DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3781
		-- DECLARE
3782
			DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5), @OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2), @FROM_DATE VARCHAR(20),
3783
			@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15),  @_PROCESS VARCHAR(15),@PARENT_ID VARCHAR(15),@REASON_TTDK NVARCHAR(2000)
3784
		-- DECLARE CURSOR
3785
			DECLARE XmlDataPeriod CURSOR FOR SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
3786
			WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5), OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), 
3787
			RATE DECIMAL(18,0),FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20), AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5),PARENT_ID VARCHAR(15),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))
3788
		-- BEGIN CURSOR THONG TIN THANH TOAN HOP DONG DINH KY
3789
			OPEN XmlDataPeriod;
3790
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, 
3791
			@PAY_PHASE, @REASON_TTDK
3792
			WHILE @@fetch_status=0 
3793
			BEGIN
3794
			-- SET
3795
				SET @INDEX_PERIOD = @INDEX_PERIOD +1
3796
			-- BEGIN VALIDATE
3797
				IF(@p_TYPE_FUNCTION ='SEND') 
3798
				BEGIN
3799
					IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) )
3800
					BEGIN
3801
						ROLLBACK TRANSACTION
3802
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
3803
						RETURN '-1'
3804
					END
3805
					-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
3806
					IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
3807
					BEGIN
3808
						ROLLBACK TRANSACTION
3809
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
3810
						RETURN '-1'
3811
					END
3812
					-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
3813
					IF(@CONTRACT_ID IS NOT NULL AND  @CONTRACT_ID <> '' )
3814
					BEGIN
3815
						IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
3816
						BEGIN
3817
							ROLLBACK TRANSACTION
3818
							SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
3819
							RETURN '-1'
3820
						END
3821
					END
3822
					
3823
					IF(ISNULL(@PARENT_ID, '') = '' AND @_PROCESS = '2')
3824
					BEGIN
3825
						ROLLBACK TRANSACTION
3826
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Không được để trống cột số phiếu tạm ứng.'
3827
						+ CHAR(10) + 
3828
						N'</br> Nếu hợp đồng định kỳ này có kỳ tạm ứng, vui lòng làm như sau để hoàn ứng: '
3829
						+ CHAR(10) + 
3830
						N'</br> Bước 1: Tại lưới thông tin hợp đồng định kỳ, xóa dòng hợp động kịnh kỳ cần hoàn ứng( hợp đồng có ID hợp đồng(hệ thống): ' + @CONTRACT_ID +
3831
						+ CHAR(10) + 
3832
						N'</br> Bước2: Tại lưới thông tin hợp đồng định kỳ, chọn lại hợp đồng cần hoàn ứng( hợp đồng có ID hợp đồng(hệ thống): ' + @CONTRACT_ID 
3833
						ErrorDesc
3834
						RETURN '-1'
3835
					END
3836
				END
3837
			-- END VALIDATE
3838
				DECLARE @PERIOD_ID VARCHAR(15);
3839
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
3840
				IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
3841
				INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE,
3842
				TO_DATE,AD_PAY_ID,PROCESS,PARENT_ID,PAY_PHASE,REASON)
3843
				VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103), @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U', @p_REQ_TYPE_CURRENCY , @p_RATE,
3844
				CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK)
3845
			IF @@error<>0 GOTO ABORT;
3846
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, 
3847
			@PAY_PHASE, @REASON_TTDK
3848
			END
3849
			CLOSE XmlDataPeriod;
3850
			DEALLOCATE XmlDataPeriod;
3851
		END	
3852
	-- END CURSOR THONG TIN THANH TOAN HOP DONG DINH KY
3853
	
3854
--doanptt 15/02/2022		
3855
-- INSERT JOB
3856
-- DS PHIEU YEU CAU CONG TAC
3857
				DELETE FROM TR_REQ_PAY_JOB WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3858
				DECLARE @REQ_PAY_JOB_ID varchar(15) ,@REQ_PAY_ID varchar(15),@REQ_ID varchar(15), @REQ_CODE varchar(15), @MAKER_ID varchar(15),
3859
				@CREATE_DT varchar(15), @PAY_TYPE_J VARCHAR(5), @PAY_PHASE_J NVARCHAR(250), @PAY_AMT DECIMAL(18,0), @PAY_DESC NVARCHAR(1000)
3860
				, @AUTH_STATUS VARCHAR(1), @AUTH_STATUS_KT VARCHAR(1)
3861
				DECLARE XmlDataJob CURSOR LOCAL FOR
3862
				SELECT * FROM OPENXML(@hdocJob, 'Root/XmlDataJob',2) 
3863
				WITH(REQ_PAY_JOB_ID varchar(15) ,REQ_PAY_ID varchar(15),REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), 
3864
				PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1))
3865
				OPEN XmlDataJob
3866

    
3867
--- INSERT PHIEU YEU CAU CONG TAC
3868
				FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J , 
3869
				@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT
3870
				WHILE @@fetch_status=0 
3871
				BEGIN
3872
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3873
					SET @INDEX_NS = @INDEX_NS +1
3874
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3875
					IF(@p_TYPE_FUNCTION ='SEND')
3876
					BEGIN
3877
						IF(ISNULL(@AMT_EXE,0) =0)
3878
						BEGIN
3879
							ROLLBACK TRANSACTION
3880
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
3881
								RETURN '-1'
3882
						END
3883
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
3884
						BEGIN
3885
								ROLLBACK TRANSACTION
3886
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
3887
								RETURN '-1'
3888
						END		
3889
					END
3890
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
3891
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
3892
					BEGIN
3893
								ROLLBACK TRANSACTION
3894
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
3895
								RETURN '-1'
3896
					END*/
3897

    
3898
					DECLARE @p_REQ_JOB_ID VARCHAR(15);
3899
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB', @p_REQ_JOB_ID OUT;
3900
					IF @p_REQ_JOB_ID='' OR @p_REQ_JOB_ID IS NULL GOTO ABORT;
3901
					INSERT INTO TR_REQ_PAY_JOB(REQ_PAY_JOB_ID ,REQ_PAY_ID ,REQ_ID , REQ_CODE, MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT)
3902
					VALUES (@p_REQ_JOB_ID ,@p_REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , GETDATE() , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT)
3903
					IF @@error<>0 GOTO ABORT;
3904
					FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT
3905
				END;
3906
				CLOSE XmlDataJob;
3907
				DEALLOCATE XmlDataJob;
3908
--- END INSERT PHIEU YEU CAU CONG TAC
3909

    
3910
-- INSERT JOB DT 
3911
-- DS CHI TIET PHIEU YEU CAU CONG TAC
3912
				DELETE FROM TR_REQ_PAY_JOB_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3913
				DECLARE @REQ_PAY_JOB_DT_ID varchar(15) , @REQ_PAY_ID_DT varchar(15), @REQ_ID_DT varchar(15), @REQ_CODE_DT varchar(15), @MAKER_ID_DT varchar(15),
3914
				@CREATE_DT_DT varchar(15), @FULLNAME_DT NVARCHAR(250), @TLNAME_DT VARCHAR(15), @JOB_PLACE_DT VARCHAR(15), @FRMDATE_DT VARCHAR(15), @TODATE_DT VARCHAR(15),
3915
				@NUMBER_DAY_DT decimal(18,0), @DAY_RATE_DT decimal(18,0), @JOB_COST_DT decimal(18,0), @TYPE_TRANS_DT varchar(250), @COST_MOVE_DT decimal(18,0), 
3916
				@COST_RESIDENCE_DT decimal(18,0), @COST_OTHER_DT decimal(18,0), @COST_AMT_DT decimal(18,0), @AUTH_STATUS_DT VARCHAR(1), @AUTH_STATUS_KT_DT VARCHAR(1)
3917
				DECLARE XmlDataJobDT CURSOR LOCAL FOR
3918
				SELECT * FROM OPENXML(@hdocJobDT, 'Root/XmlDataJobDT',2) 
3919
				WITH(REQ_PAY_JOB_DT_ID varchar(15), REQ_PAY_ID varchar(15), REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), 
3920
				FULLNAME nvarchar(250), TLNAME_DT VARCHAR(15), JOB_PLACE varchar(15), FRMDATE varchar(15), TODATE varchar(15),NUMBER_DAY decimal(18,0), DAY_RATE decimal(18,0), 
3921
				JOB_COST decimal(18,0), TYPE_TRANS varchar(15), COST_MOVE decimal(18,0), COST_RESIDENCE decimal(18,0), COST_OTHER decimal(18,0), COST_AMT decimal(18,0) , 
3922
				AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) 
3923
				OPEN XmlDataJobDT
3924

    
3925
--- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC
3926
				FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
3927
				@CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT ,
3928
				@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
3929
				@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT
3930
				WHILE @@fetch_status=0 
3931
				BEGIN
3932
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3933
					SET @INDEX_NS = @INDEX_NS +1
3934
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3935
					IF(@p_TYPE_FUNCTION ='SEND')
3936
					BEGIN
3937
						IF(ISNULL(@AMT_EXE,0) =0)
3938
						BEGIN
3939
							ROLLBACK TRANSACTION
3940
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
3941
								RETURN '-1'
3942
						END
3943
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
3944
						BEGIN
3945
								ROLLBACK TRANSACTION
3946
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
3947
								RETURN '-1'
3948
						END		
3949
					END
3950
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
3951
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
3952
					BEGIN
3953
								ROLLBACK TRANSACTION
3954
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
3955
								RETURN '-1'
3956
					END*/
3957

    
3958
					DECLARE @p_REQ_JOB_DT_ID VARCHAR(15);
3959
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB_DT', @p_REQ_JOB_DT_ID OUT;
3960
					IF @p_REQ_JOB_DT_ID='' OR @p_REQ_JOB_DT_ID IS NULL GOTO ABORT;
3961
					INSERT INTO TR_REQ_PAY_JOB_DT(REQ_PAY_JOB_DT_ID , REQ_PAY_ID , REQ_ID , REQ_CODE, MAKER_ID , CREATE_DT , FULLNAME, TLNAME, JOB_PLACE , FRMDATE , TODATE ,NUMBER_DAY , DAY_RATE , 
3962
													JOB_COST , TYPE_TRANS , COST_MOVE , COST_RESIDENCE , COST_OTHER , COST_AMT , AUTH_STATUS, AUTH_STATUS_KT)
3963
					VALUES (@p_REQ_JOB_DT_ID , @p_REQ_PAY_ID, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
3964
							GETDATE() , @FULLNAME_DT ,@TLNAME_DT, @JOB_PLACE_DT , CONVERT(DATE,@FRMDATE_DT,103) , CONVERT(DATE,@TODATE_DT,103) ,
3965
							@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
3966
							@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT)
3967
					IF @@error<>0 GOTO ABORT;
3968
					FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
3969
									@CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT ,
3970
									@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
3971
									@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT
3972
				END;
3973
				CLOSE XmlDataJobDT;
3974
				DEALLOCATE XmlDataJobDT;
3975
--- END INSERT CHI TIET PHIEU YEU CAU CONG TAC
3976

    
3977

    
3978
--doanptt 17/02/2022		
3979
-- INSERT DRIVE
3980
-- DS PHIEU YEU CAU CONG TAC
3981
				DELETE FROM TR_REQ_PAY_DRIVE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3982
				DECLARE @REQ_PAY_DRIVE_ID varchar(15), @CAR_ID varchar(15), @CAR_PLATE varchar(15), @RATE_GAS_100KM decimal(18,0), @CAR_TYPE VARCHAR(15)
3983
				DECLARE XmlDataDrive CURSOR LOCAL FOR
3984
				SELECT * FROM OPENXML(@hdocDrive, 'Root/XmlDataDrive',2) 
3985
				WITH(REQ_PAY_DRIVE_ID varchar(15) ,REQ_PAY_ID varchar(15), CAR_ID varchar(15), CAR_PLATE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), 
3986
				PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1), 
3987
				RATE_GAS_100KM decimal(18,0), CAR_TYPE VARCHAR(15))
3988
				OPEN XmlDataDrive
3989

    
3990
--- INSERT PHIEU YEU CAU CONG TAC
3991
				FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, 
3992
				@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE
3993
				WHILE @@fetch_status=0 
3994
				BEGIN
3995
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3996
					SET @INDEX_NS = @INDEX_NS +1
3997
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3998
					IF(@p_TYPE_FUNCTION ='SEND')
3999
					BEGIN
4000
						IF(ISNULL(@AMT_EXE,0) =0)
4001
						BEGIN
4002
							ROLLBACK TRANSACTION
4003
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
4004
								RETURN '-1'
4005
						END
4006
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
4007
						BEGIN
4008
								ROLLBACK TRANSACTION
4009
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
4010
								RETURN '-1'
4011
						END		
4012
					END
4013
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
4014
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
4015
					BEGIN
4016
								ROLLBACK TRANSACTION
4017
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
4018
								RETURN '-1'
4019
					END*/
4020

    
4021
					DECLARE @p_REQ_DRIVE_ID VARCHAR(15);
4022
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE', @p_REQ_DRIVE_ID OUT;
4023
					IF @p_REQ_DRIVE_ID='' OR @p_REQ_DRIVE_ID IS NULL GOTO ABORT;
4024
					INSERT INTO TR_REQ_PAY_DRIVE(REQ_PAY_DRIVE_ID ,REQ_PAY_ID ,CAR_ID , CAR_PLATE , MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT, RATE_GAS_100KM, CAR_TYPE)
4025
					VALUES (@p_REQ_DRIVE_ID ,@p_REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , GETDATE() , @PAY_TYPE , @PAY_PHASE , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE)
4026
					IF @@error<>0 GOTO ABORT;
4027
					FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, 
4028
					@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE
4029
				END;
4030
				CLOSE XmlDataDrive;
4031
				DEALLOCATE XmlDataDrive;
4032
--- END INSERT PHIEU YEU CAU CONG TAC
4033

    
4034
-- INSERT DRIVE DT 
4035
-- DS CHI TIET PHIEU YEU CAU CONG TAC
4036
				DELETE FROM TR_REQ_PAY_DRIVE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4037
				DECLARE @REQ_PAY_DRIVE_DT_ID varchar(15), @FULLNAME NVARCHAR(250), @BRANCH_REQ VARCHAR(15), 
4038
				@KM_START decimal(18,0), @KM_END varchar(250), @KM_USED decimal(18,0), 
4039
				@RATE_GAS decimal(18,0), @REAL_GAS decimal(18,0), @REDUNDANCY_GAS decimal(18,0), @INVENTORY_GAS decimal(18,0), @COST_INCURRED decimal(18,0),
4040
				@CREATE_SCHEDULE NVARCHAR(250), @TRUONGDONVI VARCHAR(15)
4041
				DECLARE XmlDataDriveDT CURSOR LOCAL FOR
4042
				SELECT * FROM OPENXML(@hdocDriveDT, 'Root/XmlDataDriveDT',2) 
4043
				WITH(REQ_PAY_DRIVE_ID varchar(15), REQ_PAY_ID varchar(15), CAR_ID varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), 
4044
				BRANCH_REQ varchar(15), PAY_PHASE NVARCHAR(250), CAR_TYPE Nvarchar(250), CAR_PLATE varchar(15),RATE_GAS_100KM decimal(18,0), KM_START decimal(18,0), 
4045
				KM_END decimal(18,0), KM_USED varchar(15), RATE_GAS decimal(18,0), REAL_GAS decimal(18,0), REDUNDANCY_GAS decimal(18,0), INVENTORY_GAS decimal(18,0), 
4046
				NOTES NVARCHAR(MAX), COST_INCURRED decimal(18,0), CREATE_SCHEDULE NVARCHAR(250), TRUONGDONVI VARCHAR(15) , 
4047
				AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) 
4048
				OPEN XmlDataDriveDT
4049

    
4050
--- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC
4051
				FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
4052
				@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE,
4053
				@TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT
4054
				WHILE @@fetch_status=0 
4055
				BEGIN
4056
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
4057
					SET @INDEX_NS = @INDEX_NS +1
4058
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
4059
					IF(@p_TYPE_FUNCTION ='SEND')
4060
					BEGIN
4061
						IF(ISNULL(@AMT_EXE,0) =0)
4062
						BEGIN
4063
							ROLLBACK TRANSACTION
4064
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
4065
								RETURN '-1'
4066
						END
4067
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
4068
						BEGIN
4069
								ROLLBACK TRANSACTION
4070
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
4071
								RETURN '-1'
4072
						END		
4073
					END
4074
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
4075
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
4076
					BEGIN
4077
								ROLLBACK TRANSACTION
4078
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
4079
								RETURN '-1'
4080
					END*/
4081

    
4082
					DECLARE @p_REQ_DRIVE_DT_ID VARCHAR(15);
4083
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE_DT', @p_REQ_DRIVE_DT_ID OUT;
4084
					IF @p_REQ_DRIVE_DT_ID='' OR @p_REQ_DRIVE_DT_ID IS NULL GOTO ABORT;
4085
					INSERT INTO TR_REQ_PAY_DRIVE_DT(REQ_PAY_DRIVE_DT_ID, REQ_PAY_ID, CAR_ID, MAKER_ID, CREATE_DT, BRANCH_REQ, PAY_PHASE, CAR_TYPE, CAR_PLATE,
4086
					RATE_GAS_100KM, KM_START, KM_END, KM_USED, RATE_GAS, REAL_GAS, REDUNDANCY_GAS, INVENTORY_GAS, COST_INCURRED, NOTES, CREATE_SCHEDULE, TRUONGDONVI,
4087
					AUTH_STATUS, AUTH_STATUS_KT)
4088
					VALUES (@p_REQ_DRIVE_DT_ID , @p_REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
4089
					@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @COST_INCURRED, @NOTES,
4090
					@CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT)
4091
					IF @@error<>0 GOTO ABORT;
4092
					FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
4093
					@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE,
4094
					@TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT
4095
				END;
4096
				CLOSE XmlDataDriveDT;
4097
				DEALLOCATE XmlDataDriveDT;
4098
--- END INSERT CHI TIET PHIEU YEU CAU CONG TAC
4099
COMMIT TRANSACTION
4100
-- BEIGN VALIDATE SEND APPROVE
4101
	IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
4102
	BEGIN
4103
	-- VALIDATE CAC LUOI THANH TOAN
4104
		IF((SELECT COUNT(*) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'D')
4105
		BEGIN
4106
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin các dịch vụ thanh toán không được để trống'  ErrorDesc
4107
			RETURN '-1'
4108
		END
4109
		/*
4110
		ELSE IF((SELECT COUNT(*) FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'P' AND @p_IS_PERIOD <> 'Y')
4111
		BEGIN
4112
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin PO/ hợp đồng không được để trống'  ErrorDesc
4113
			RETURN '-1'
4114
		END
4115
		ELSE IF((SELECT COUNT(*) FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y')
4116
		BEGIN
4117
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin hợp đồng định kỳ không được để trống'  ErrorDesc
4118
			RETURN '-1'
4119
		END
4120
		*/
4121

    
4122
	-- DECLARE
4123
		DECLARE @BRANCH_TYPE_CR VARCHAR(15)
4124
		DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0),
4125
		@SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0)
4126
	-- SET
4127
		SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
4128
		SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4129
		SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
4130
		AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
4131
		AND TYPE_TRANSFER ='R'))
4132
		SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4133
		SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4134
		SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4135
		SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4136

    
4137
		IF(@p_REQ_TYPE ='I')
4138
		BEGIN
4139
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
4140
			SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
4141
			SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
4142
			SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') -
4143
			(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')
4144
		END
4145
		IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL)
4146
		BEGIN
4147
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4148
			--SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0')
4149
					
4150
		END
4151
		IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL)))
4152
		BEGIN
4153
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)	
4154
			SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4155
		END
4156
		IF(@p_REQ_TYPE ='D')
4157
		BEGIN
4158
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
4159
		END
4160
		IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0))
4161
		BEGIN
4162
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
4163
			RETURN '-1'
4164
		END
4165
		IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
4166
		BEGIN
4167
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' +  FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')  ErrorDesc
4168
			RETURN '-1'
4169
		END
4170
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD')
4171
		BEGIN
4172
			--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4173
			DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4174
			DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4175
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
4176
			RETURN '-1'
4177
		END
4178
		IF(@p_REQ_TYPE <> 'I')
4179
		BEGIN
4180
			IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID))
4181
			BEGIN
4182
				--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4183
				DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4184
				DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4185
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
4186
				RETURN '-1'
4187
			END
4188
			--IF(ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0) <> @SUM_PHUONG_THUC)
4189
			--BEGIN
4190
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán tương ứng với số tiền thanh toán trừ số tiền hoàn tạm ứng: ' + FORMAT((ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0)),'#,#', 'vi-VN')  ErrorDesc
4191
			--	RETURN '-1'
4192
			--END
4193
			IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
4194
			BEGIN
4195
				--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4196
				DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4197
				DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4198
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(ISNULL(@SUM_THANH_TOAN, 0),'#,#', 'vi-VN') ErrorDesc
4199
				RETURN '-1'
4200
			END
4201
		END
4202
		ELSE
4203
		BEGIN
4204
			IF(ISNULL(@SUM_USE_REAL,0) >0)
4205
			BEGIN
4206
				IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID))
4207
				BEGIN
4208
					--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4209
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4210
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4211
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
4212
					RETURN '-1'	
4213
				END
4214
				IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
4215
				BEGIN
4216
					--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4217
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4218
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4219
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')  ErrorDesc
4220
					RETURN '-1'
4221
				END
4222
				IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0)))
4223
				BEGIN
4224
					--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4225
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4226
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4227
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
4228
					RETURN '-1'
4229
				END
4230
			END
4231
			--IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
4232
			IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
4233
			BEGIN
4234
				--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
4235
				DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4236
				DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4237
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') + ' ' + CAST(@SUM_PHUONG_THUC as nvarchar)  ErrorDesc
4238
				RETURN '-1'
4239
			END
4240
		END
4241
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
4242
		IF(ISNULL(@p_TRASFER_USER_RECIVE, '') <> '')
4243
		BEGIN
4244
			UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='W', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
4245
		END
4246
		ELSE
4247
		BEGIN
4248
			UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
4249
		END
4250
		
4251
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
4252
				
4253
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt')
4254
		--- Luu log chinh sua
4255
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
4256
		-----
4257
		UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0
4258
		UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0)
4259
				
4260
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
4261
		BEGIN
4262
			SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
4263
			RETURN '4'
4264
		END
4265
		ELSE
4266
		BEGIN
4267
			SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
4268
			RETURN '4'
4269
		END
4270
	END
4271
-- END VALIDATE SEND APPROVE	
4272

    
4273

    
4274
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
4275
RETURN '0'
4276
ABORT:
4277
BEGIN
4278
		ROLLBACK TRANSACTION
4279
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
4280
		RETURN '-1'
4281
End
4282

    
4283
GO
4284

    
4285
ALTER   PROC [dbo].[TR_BUDGET_YEAR_DETAIL_IMPORT] (
4286
	@GD_ID VARCHAR(20), 
4287
	@BUDGET_TYPE VARCHAR(20), 
4288
	@BRANCH_TYPE VARCHAR(20), 
4289
	@p_MAKER_ID VARCHAR(20), 
4290
	@p_MONTH_IMPORT VARCHAR(20), 
4291
	@p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL XML = NULL
4292
)
4293
AS
4294
	IF(@GD_ID IS NULL OR @GD_ID = '')
4295
	BEGIN
4296
		SELECT '-1' as Result, N'Mã ngân sách chi phí không được để trống' AS ErrorDesc
4297
		RETURN '-1'
4298
	END
4299
	IF(@BUDGET_TYPE IS NULL OR @BUDGET_TYPE = '')
4300
	BEGIN
4301
		SELECT '-1' as Result, N'Loại ngân sách chi phí không được để trống' AS ErrorDesc
4302
		RETURN '-1'
4303
	END
4304
	IF(@BRANCH_TYPE IS NULL OR @BRANCH_TYPE = '')
4305
	BEGIN
4306
		SELECT '-1' as Result, N'Loại đơn vị không được để trống' AS ErrorDesc
4307
		RETURN '-1'
4308
	END
4309
BEGIN TRANSACTION
4310

    
4311
	DECLARE @hdoc INT
4312
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL
4313

    
4314
	DELETE FROM TR_GOODSTYPE WHERE GD_ID = @GD_ID AND BUDGET_TYPE = 'nam'
4315
	INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) 
4316
	VALUES (@GD_ID, 'nam', GETDATE(), @p_MAKER_ID, NULL, NULL, '1', 'A')
4317

    
4318
	DECLARE XmlBudgetLimitYearhDT CURSOR FOR
4319
	SELECT * FROM OPENXML(@hdoc, '/Root/XmlBudgetLimitYearhDT', 2)
4320
	WITH (
4321
		DEP_CODE VARCHAR(15),
4322
		DEP_NAME NVARCHAR(250),
4323
		ROLENAME NVARCHAR(20),
4324
		BUDGET_YEAR VARCHAR(15),
4325
		BUDGET_LIMIT_AMT DECIMAL(18,2),
4326
		BUDGET_MONTH VARCHAR(50),
4327
		M1 DECIMAL(18, 0),
4328
		M2 DECIMAL(18, 0),
4329
		M3 DECIMAL(18, 0),
4330
		M4 DECIMAL(18, 0),
4331
		M5 DECIMAL(18, 0),
4332
		M6 DECIMAL(18, 0),
4333
		M7 DECIMAL(18, 0),
4334
		M8 DECIMAL(18, 0),
4335
		M9 DECIMAL(18, 0),
4336
		M10 DECIMAL(18, 0),
4337
		M11 DECIMAL(18, 0),
4338
		M12 DECIMAL(18, 0)
4339
	)
4340

    
4341
	DECLARE 
4342
		@DEP_CODE VARCHAR(15),
4343
		@DEP_NAME NVARCHAR(250),
4344
		@ROLENAME NVARCHAR(20),
4345
		@BUDGET_YEAR VARCHAR(15),
4346
		@BUDGET_LIMIT_AMT DECIMAL(18,2),
4347
		@BUDGET_MONTH VARCHAR(50),
4348
		@M1 DECIMAL(18, 0),
4349
		@M2 DECIMAL(18, 0),
4350
		@M3 DECIMAL(18, 0),
4351
		@M4 DECIMAL(18, 0),
4352
		@M5 DECIMAL(18, 0),
4353
		@M6 DECIMAL(18, 0),
4354
		@M7 DECIMAL(18, 0),
4355
		@M8 DECIMAL(18, 0),
4356
		@M9 DECIMAL(18, 0),
4357
		@M10 DECIMAL(18, 0),
4358
		@M11 DECIMAL(18, 0),
4359
		@M12 DECIMAL(18, 0)
4360
	------------------------------------------------ validate begin ------------------------------------------------
4361

    
4362
	DECLARE @ERROR_MESSAGE nvarchar(MAX)
4363
	DECLARE @INDEX INT
4364
	SET @INDEX = 2
4365

    
4366
	OPEN XmlBudgetLimitYearhDT;
4367

    
4368
	FETCH NEXT FROM XmlBudgetLimitYearhDT 
4369
	INTO @DEP_CODE, @DEP_NAME , @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
4370
	WHILE @@fetch_status=0 
4371
	BEGIN
4372
		SET @INDEX = @INDEX +1
4373
		----------------------------------------- validate begin -----------------------------------------
4374
		DECLARE @l_DEP_ID VARCHAR(20), @l_TLNAME VARCHAR(20);
4375
		-- NẾU ĐƠN VỊ CHỊU CHI PHÍ LÀ ĐƠN VỊ
4376
		SET @l_DEP_ID = (SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE = @DEP_CODE AND BRANCH_ID = 'DV0001')
4377
		-- NẾU ĐƠN VỊ CHỊU CHI PHÍ LÀ USER
4378
		SET @l_TLNAME = (SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName = @ROLENAME AND TLSUBBRID = 'DV0001' AND DEP_ID = @l_DEP_ID)
4379
		DECLARE @l_KHOI_ID VARCHAR(20), @l_ROLENAME VARCHAR(20), @l_KHOI_NAME NVARCHAR(250);
4380
		IF(ISNULL(@l_DEP_ID,'') <> '' AND ISNULL(@ROLENAME, '') <> '')
4381
		BEGIN
4382
			SET @l_KHOI_ID = (	SELECT TOP 1 A.KHOI_ID
4383
								FROM CM_DEPARTMENT A
4384
								WHERE A.DEP_ID = @l_DEP_ID
4385
			)
4386
			SET @l_KHOI_NAME = (SELECT TOP 1 C.DVDM_NAME
4387
								FROM CM_DEPARTMENT B
4388
								LEFT JOIN CM_DVDM C ON B.KHOI_ID = C.DVDM_ID
4389
								WHERE B.DEP_ID = @l_DEP_ID
4390
			)
4391
			SET @l_ROLENAME = @ROLENAME
4392
		END
4393
		ELSE
4394
		BEGIN
4395
			SET @l_KHOI_ID = NULL
4396
			SET @l_KHOI_NAME = NULL
4397
			SET @l_ROLENAME = NULL
4398
		END
4399

    
4400
		IF(ISNULL(@l_DEP_ID,'') = '')
4401
		BEGIN
4402
			ROLLBACK TRANSACTION
4403
			CLOSE XmlBudgetLimitYearhDT;
4404
			DEALLOCATE XmlBudgetLimitYearhDT;
4405
			SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban ' + @DEP_CODE + N' không có trong hệ thống' AS ErrorDesc
4406
			RETURN '-1'
4407
		END
4408
		IF(ISNULL(@ROLENAME,'') <> '' AND ISNULL(@l_DEP_ID,'') = '')
4409
		BEGIN
4410
			ROLLBACK TRANSACTION
4411
			CLOSE XmlBudgetLimitYearhDT;
4412
			DEALLOCATE XmlBudgetLimitYearhDT;
4413
			SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Khối ' + @l_KHOI_NAME + ' hiện tại không có ' + @ROLENAME  AS ErrorDesc
4414
			RETURN '-1'
4415
		END
4416
		----------------------------------------- validate end -----------------------------------------
4417
		-- NEU DA TON TAI NGAN SACH CHI PHI NAY THI CHI UPDATE
4418
		-- NEU DON VI CHIU CHI PHI LA DON VI
4419
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR) AND ISNULL(@l_DEP_ID,'') <> ''  AND ISNULL(@l_KHOI_ID,'') = '')
4420
		BEGIN
4421
			print 'DON VI'
4422
			print '@GD_ID: ' + @GD_ID;
4423
			print '@l_DEP_ID: ' + @l_DEP_ID;
4424
			print '@BUDGET_YEAR: ' + CONVERT(VARCHAR(20), @BUDGET_YEAR);
4425
			print '@l_ROLENAME: ' + @l_ROLENAME;
4426
			print '@l_KHOI_ID: ' + @l_KHOI_ID;
4427
			print '@l_KHOI_NAME: ' + @l_KHOI_NAME;
4428
			print '@l_TLNAME: ' + @l_TLNAME;
4429
			IF(ISNULL(@M1, 0) > 0)
4430
			BEGIN
4431
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1 = @M1 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4432
			END
4433
			IF(ISNULL(@M2, 0) > 0)
4434
			BEGIN
4435
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2 = @M2 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4436
			END
4437
			IF(ISNULL(@M3, 0) > 0)
4438
			BEGIN
4439
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3 = @M3 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4440
			END
4441
			IF(ISNULL(@M4, 0) > 0)
4442
			BEGIN
4443
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4 = @M4 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4444
			END
4445
			IF(ISNULL(@M5, 0) > 0)
4446
			BEGIN
4447
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5 = @M5 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4448
			END
4449
			IF(ISNULL(@M6, 0) > 0)
4450
			BEGIN
4451
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6 = @M6 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4452
			END
4453
			IF(ISNULL(@M7, 0) > 0)
4454
			BEGIN
4455
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7 = @M7 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4456
			END
4457
			IF(ISNULL(@M8, 0) > 0)
4458
			BEGIN
4459
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8 = @M8 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4460
			END
4461
			IF(ISNULL(@M9, 0) > 0)
4462
			BEGIN
4463
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9 = @M9 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4464
			END
4465
			IF(ISNULL(@M10, 0) > 0)
4466
			BEGIN
4467
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4468
			END
4469
			IF(ISNULL(@M11, 0) > 0)
4470
			BEGIN
4471
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4472
			END
4473
			IF(ISNULL(@M12, 0) > 0)
4474
			BEGIN
4475
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4476
			END
4477
			IF(ISNULL(@BUDGET_LIMIT_AMT, 0) > 0)
4478
			BEGIN
4479
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET BUDGET_LIMIT_AMT = @BUDGET_LIMIT_AMT where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = ''
4480
			END
4481

    
4482
			IF @@error<>0 GOTO ABORT;
4483
			FETCH NEXT FROM XmlBudgetLimitYearhDT 
4484
			INTO @DEP_CODE, @DEP_NAME, @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
4485
		END
4486
		ELSE IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @GD_ID and ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND KHOI_ID = @l_KHOI_ID AND BUDGET_YEAR = @BUDGET_YEAR) AND ISNULL(@l_DEP_ID,'') <> '' AND ISNULL(@l_KHOI_ID,'') <> '')
4487
		BEGIN
4488
			print 'USER'
4489
			print '@GD_ID: ' + @GD_ID;
4490
			print '@l_DEP_ID: ' + @l_DEP_ID;
4491
			print '@BUDGET_YEAR: ' + CONVERT(VARCHAR(20), @BUDGET_YEAR);
4492
			print '@l_ROLENAME: ' + @l_ROLENAME;
4493
			print '@l_KHOI_ID: ' + @l_KHOI_ID;
4494
			print '@l_KHOI_NAME: ' + @l_KHOI_NAME;
4495
			print '@l_TLNAME: ' + @l_TLNAME;
4496
			IF(ISNULL(@M1, 0) > 0)
4497
			BEGIN
4498
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1 = @M1 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4499
			END
4500
			IF(ISNULL(@M2, 0) > 0)
4501
			BEGIN
4502
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2 = @M2 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4503
			END
4504
			IF(ISNULL(@M3, 0) > 0)
4505
			BEGIN
4506
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3 = @M3 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4507
			END
4508
			IF(ISNULL(@M4, 0) > 0)
4509
			BEGIN
4510
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4 = @M4 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4511
			END
4512
			IF(ISNULL(@M5, 0) > 0)
4513
			BEGIN
4514
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5 = @M5 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4515
			END
4516
			IF(ISNULL(@M6, 0) > 0)
4517
			BEGIN
4518
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6 = @M6 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4519
			END
4520
			IF(ISNULL(@M7, 0) > 0)
4521
			BEGIN
4522
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7 = @M7 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4523
			END
4524
			IF(ISNULL(@M8, 0) > 0)
4525
			BEGIN
4526
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8 = @M8 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4527
			END
4528
			IF(ISNULL(@M9, 0) > 0)
4529
			BEGIN
4530
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9 = @M9 WHERE GD_ID = @GD_ID	AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4531
			END
4532
			IF(ISNULL(@M10, 0) > 0)
4533
			BEGIN
4534
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4535
			END
4536
			IF(ISNULL(@M11, 0) > 0)
4537
			BEGIN
4538
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4539
			END
4540
			IF(ISNULL(@M12, 0) > 0)
4541
			BEGIN
4542
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4543
			END
4544
			IF(ISNULL(@BUDGET_LIMIT_AMT, 0) > 0)
4545
			BEGIN
4546
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET TLNAME = @l_TLNAME, BUDGET_LIMIT_AMT = @BUDGET_LIMIT_AMT WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR
4547
			END
4548
			
4549

    
4550
			IF @@error<>0 GOTO ABORT;
4551
			FETCH NEXT FROM XmlBudgetLimitYearhDT 
4552
			INTO @DEP_CODE, @DEP_NAME, @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
4553
		END
4554
		ELSE
4555
		BEGIN
4556
			print 'THEM MOI'
4557
			print '@GD_ID: ' + @GD_ID;
4558
			print '@l_DEP_ID: ' + @l_DEP_ID;
4559
			print '@BUDGET_YEAR: ' + CONVERT(VARCHAR(20), @BUDGET_YEAR);
4560
			print '@l_ROLENAME: ' + @l_ROLENAME;
4561
			print '@l_KHOI_ID: ' + @l_KHOI_ID;
4562
			print '@l_KHOI_NAME: ' + @l_KHOI_NAME;
4563
			print '@l_TLNAME: ' + @l_TLNAME;
4564
			-- Tự động sinh mã code
4565
			DECLARE @BUDGET_YEAR_LIMIT_ID VARCHAR(15);
4566
			EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR', @BUDGET_YEAR_LIMIT_ID OUT;
4567
			IF @BUDGET_YEAR_LIMIT_ID='' OR @BUDGET_YEAR_LIMIT_ID IS NULL GOTO ABORT;
4568

    
4569
			-- NEU LA IMPORT USER CHIU CHI PHI
4570
			IF(ISNULL(@l_TLNAME, '') <> '')
4571
			BEGIN
4572
				INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, BUDGET_LIMIT_AMT, KHOI_ID, TLNAME, ROLENAME,
4573
				M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID, APPROVE_DT)
4574
				VALUES(@BUDGET_YEAR_LIMIT_ID, @GD_ID, 'nam', 'ho', @BUDGET_YEAR, 'DV0001', @l_DEP_ID, @BUDGET_LIMIT_AMT, @l_KHOI_ID, @l_TLNAME, @l_ROLENAME,
4575
				@M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL)
4576
			END
4577
			ELSE
4578
			BEGIN
4579
				INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, BUDGET_LIMIT_AMT,
4580
				M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID, APPROVE_DT)
4581
				VALUES(@BUDGET_YEAR_LIMIT_ID, @GD_ID, 'nam', 'ho', @BUDGET_YEAR, 'DV0001', @l_DEP_ID, @BUDGET_LIMIT_AMT,
4582
				@M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL)
4583
			END
4584
			
4585

    
4586
			IF @@error<>0 GOTO ABORT;
4587
			FETCH NEXT FROM XmlBudgetLimitYearhDT 
4588
			INTO @DEP_CODE, @DEP_NAME, @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
4589
		END
4590
	
4591
	END
4592
	CLOSE XmlBudgetLimitYearhDT;
4593
	DEALLOCATE XmlBudgetLimitYearhDT
4594
COMMIT TRANSACTION
4595

    
4596
SELECT '0' as Result, ''  REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
4597
RETURN '0'
4598

    
4599
ABORT:
4600
BEGIN
4601
		ROLLBACK TRANSACTION
4602
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
4603
		RETURN '-1'
4604
End
4605

    
4606
GO
4607

    
4608
ALTER   PROCEDURE [dbo].[TR_BUDGET_CHECK_LIMIT_YEAR_Byid]
4609
@p_GD_ID	varchar(20)  = NULL,
4610
@p_GD_CODE	varchar(20)  = NULL,
4611
@p_BRANCH_ID varchar(20)  = NULL,
4612
@p_DEP_ID	varchar(20)  = NULL,
4613
@p_KHOI_ID	varchar(20)  = NULL,
4614
@p_TLNAME	varchar(20)  = NULL,
4615
@p_ROLENAME	varchar(20)  = NULL,
4616
@p_MONTH varchar(20) = NULL,
4617
@p_YEAR varchar(20) = NULL,
4618
@p_BUDGET_LIMIT_CURRENT decimal(18,0) OUT,
4619
@p_BUDGET_USED_CURRENT decimal(18,0) OUT
4620
AS
4621
	-- validation
4622
	DECLARE @l_BUDGET_LIMIT_CURRENT DECIMAL(18,0)
4623
	-- Lấy hạn mức đã sử dụng đến hiện tại
4624
	DECLARE @l_BUDGET_USED_CURRENT DECIMAL(18,0)
4625
	DECLARE @l_BUDGET_USED_M1 DECIMAL(18,0), @l_BUDGET_USED_M2 DECIMAL(18,0), @l_BUDGET_USED_M3 DECIMAL(18,0), @l_BUDGET_USED_M4 DECIMAL(18,0), @l_BUDGET_USED_M5 DECIMAL(18,0),
4626
	@l_BUDGET_USED_M6 DECIMAL(18,0), @l_BUDGET_USED_M7 DECIMAL(18,0), @l_BUDGET_USED_M8 DECIMAL(18,0), @l_BUDGET_USED_M9 DECIMAL(18,0), @l_BUDGET_USED_M10 DECIMAL(18,0),
4627
	@l_BUDGET_USED_M11 DECIMAL(18,0), @l_BUDGET_USED_M12 DECIMAL(18,0)
4628

    
4629
	IF(ISNULL(@p_ROLENAME, '') = '')
4630
	BEGIN
4631
		-- duyet moi kiem tra han muc
4632
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @p_GD_ID and DEP_ID = @p_DEP_ID AND BRANCH_ID = @p_BRANCH_ID AND AUTH_STATUS = 'A' AND BUDGET_YEAR = @p_YEAR))
4633
		BEGIN
4634
			--Validation is here
4635
			/*
4636
			NSCP theo định mức năm sẽ được tính bằng lũy kế.
4637
			Ban đầu, sẽ có 1 ngân sách năm được cấp, nhưng chỉ là dự kiến(hứa sẽ cấp), còn ngân sách thật sự sẽ được chia từng tháng.
4638
			VD: Ngân sách năm được cấp 1 tỷ. Nhưng 1 tỷ này sẽ chia ra cho 12 tháng.
4639
			T1 được cấp 100tr, nếu dùng quá định mức sẽ báo.
4640
			*/
4641
			-- Lấy hạn mức lũy kế theo tháng hiện tại
4642
			SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE	WHEN MONTH(GETDATE()) = 1 then M1
4643
																						WHEN MONTH(GETDATE()) = 2 then M2
4644
																						WHEN MONTH(GETDATE()) = 3 then M3
4645
																						WHEN MONTH(GETDATE()) = 4 then M4
4646
																						WHEN MONTH(GETDATE()) = 5 then M5
4647
																						WHEN MONTH(GETDATE()) = 6 then M6
4648
																						WHEN MONTH(GETDATE()) = 7 then M7
4649
																						WHEN MONTH(GETDATE()) = 8 then M8
4650
																						WHEN MONTH(GETDATE()) = 9 then M9
4651
																						WHEN MONTH(GETDATE()) = 10 then M10
4652
																						WHEN MONTH(GETDATE()) = 11 then M11
4653
																						WHEN MONTH(GETDATE()) = 12 then M12
4654
																						ELSE M1
4655
																				END
4656
											FROM TR_REQ_BUDGET_YEAR_LIMIT 
4657
											WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR),0)
4658
			-- Lấy hạn mức đã sử dụng đến hiện tại
4659
			SET @l_BUDGET_USED_M1  = ISNULL((SELECT SUM(M1)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4660
			SET @l_BUDGET_USED_M2  = ISNULL((SELECT SUM(M2)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4661
			SET @l_BUDGET_USED_M3  = ISNULL((SELECT SUM(M3)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4662
			SET @l_BUDGET_USED_M4  = ISNULL((SELECT SUM(M4)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4663
			SET @l_BUDGET_USED_M5  = ISNULL((SELECT SUM(M5)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4664
			SET @l_BUDGET_USED_M6  = ISNULL((SELECT SUM(M6)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4665
			SET @l_BUDGET_USED_M7  = ISNULL((SELECT SUM(M7)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4666
			SET @l_BUDGET_USED_M8  = ISNULL((SELECT SUM(M8)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4667
			SET @l_BUDGET_USED_M9  = ISNULL((SELECT SUM(M9)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4668
			SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4669
			SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4670
			SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' GROUP BY GD_ID),0)
4671

    
4672
			SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 
4673
			+ @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 
4674

    
4675
			SET @p_BUDGET_LIMIT_CURRENT = @l_BUDGET_LIMIT_CURRENT;
4676
			SET @p_BUDGET_USED_CURRENT = @l_BUDGET_USED_CURRENT;
4677
			
4678
			-- CHECK NEU KHONG AP DUNG TINH HAN MUC THI BYPASS
4679
			IF(ISNULL((SELECT BUDGET_LIMIT_AMT FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND ISNULL(ROLENAME, '') = '' ),0) > 0)
4680
			BEGIN
4681
				IF(@l_BUDGET_USED_CURRENT > @l_BUDGET_LIMIT_CURRENT)
4682
				BEGIN
4683
					RETURN '-1'
4684
				END
4685
				ELSE
4686
				BEGIN
4687
					RETURN '0'
4688
				END
4689
			END
4690
			ELSE
4691
			BEGIN
4692
				RETURN '1'
4693
			END
4694
			
4695
		END
4696
		ELSE
4697
		BEGIN
4698
			RETURN '1'
4699
		END
4700
	END
4701
	ELSE
4702
	BEGIN
4703
		print 'tlname'
4704
		-- duyet moi kiem tra han muc
4705
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @p_GD_ID AND KHOI_ID = @p_KHOI_ID AND BRANCH_ID = @p_BRANCH_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A'))
4706
		BEGIN
4707
			print 'da duyet'
4708
			--Validation is here
4709
			/*
4710
			NSCP theo định mức năm sẽ được tính bằng lũy kế.
4711
			Ban đầu, sẽ có 1 ngân sách năm được cấp, nhưng chỉ là dự kiến(hứa sẽ cấp), còn ngân sách thật sự sẽ được chia từng tháng.
4712
			VD: Ngân sách năm được cấp 1 tỷ. Nhưng 1 tỷ này sẽ chia ra cho 12 tháng.
4713
			T1 được cấp 100tr, nếu dùng quá định mức sẽ báo.
4714
			*/
4715
			-- Lấy hạn mức lũy kế theo tháng hiện tại
4716
			SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE	WHEN MONTH(GETDATE()) = 1 then M1
4717
																						WHEN MONTH(GETDATE()) = 2 then M2
4718
																						WHEN MONTH(GETDATE()) = 3 then M3
4719
																						WHEN MONTH(GETDATE()) = 4 then M4
4720
																						WHEN MONTH(GETDATE()) = 5 then M5
4721
																						WHEN MONTH(GETDATE()) = 6 then M6
4722
																						WHEN MONTH(GETDATE()) = 7 then M7
4723
																						WHEN MONTH(GETDATE()) = 8 then M8
4724
																						WHEN MONTH(GETDATE()) = 9 then M9
4725
																						WHEN MONTH(GETDATE()) = 10 then M10
4726
																						WHEN MONTH(GETDATE()) = 11 then M11
4727
																						WHEN MONTH(GETDATE()) = 12 then M12
4728
																						ELSE M1
4729
																				END
4730
											FROM TR_REQ_BUDGET_YEAR_LIMIT 
4731
											WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND TLNAME = @p_TLNAME AND BUDGET_YEAR = @p_YEAR),0)
4732
			-- Lấy hạn mức đã sử dụng đến hiện tại
4733
			SET @l_BUDGET_USED_M1  = ISNULL((SELECT SUM(M1)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4734
			SET @l_BUDGET_USED_M2  = ISNULL((SELECT SUM(M2)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4735
			SET @l_BUDGET_USED_M3  = ISNULL((SELECT SUM(M3)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4736
			SET @l_BUDGET_USED_M4  = ISNULL((SELECT SUM(M4)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4737
			SET @l_BUDGET_USED_M5  = ISNULL((SELECT SUM(M5)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4738
			SET @l_BUDGET_USED_M6  = ISNULL((SELECT SUM(M6)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4739
			SET @l_BUDGET_USED_M7  = ISNULL((SELECT SUM(M7)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4740
			SET @l_BUDGET_USED_M8  = ISNULL((SELECT SUM(M8)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4741
			SET @l_BUDGET_USED_M9  = ISNULL((SELECT SUM(M9)  FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4742
			SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4743
			SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4744
			SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR GROUP BY GD_ID),0)
4745

    
4746
			SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 
4747
			+ @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 
4748

    
4749
			SET @p_BUDGET_LIMIT_CURRENT = @l_BUDGET_LIMIT_CURRENT;
4750
			SET @p_BUDGET_USED_CURRENT = @l_BUDGET_USED_CURRENT;
4751

    
4752
			print @p_BUDGET_LIMIT_CURRENT
4753
			print @p_BUDGET_USED_CURRENT
4754

    
4755
			-- CHECK NEU KHONG AP DUNG TINH HAN MUC THI BYPASS
4756
			IF(ISNULL((SELECT BUDGET_LIMIT_AMT FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR ),0) > 0)
4757
			BEGIN
4758
				IF(@l_BUDGET_USED_CURRENT > @l_BUDGET_LIMIT_CURRENT)
4759
				BEGIN
4760
					RETURN '-1'
4761
				END
4762
				ELSE
4763
				BEGIN
4764
					RETURN '0'
4765
				END
4766
			END
4767
			ELSE
4768
			BEGIN
4769
				RETURN '1'
4770
			END
4771
		END
4772
		ELSE
4773
		BEGIN
4774
			RETURN '1'
4775
		END
4776
	END
4777
	
4778
GO
4779

    
4780
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Upd]
4781
@p_REQ_PAY_ID	varchar(15)= NULL,
4782
@p_REQ_PAY_CODE	varchar(50)	= NULL,
4783
@p_REQ_DT VARCHAR(20)= NULL,
4784
@p_BRANCH_ID	varchar(15)	= NULL,
4785
@p_DEP_ID	varchar(15)	= NULL,
4786
@p_REQ_REASON	nvarchar(MAX)	= NULL,
4787
@p_REQ_TYPE	varchar(15)	= NULL,
4788
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
4789
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
4790
@p_REF_ID	varchar(15)	= NULL,
4791
@p_RECEIVER_PO	nvarchar(250)	= NULL,
4792
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
4793
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
4794
@p_RATE	DECIMAL(18,2) = NULL,
4795
@p_REQ_AMT	decimal(18, 0)	= NULL,
4796
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
4797
@p_MAKER_ID	varchar(15)	= NULL,
4798
@p_CREATE_DT	varchar(25)	= NULL,
4799
@p_EDITOR_ID	varchar(15)	= NULL,
4800
@p_AUTH_STATUS	varchar(1)	= NULL,
4801
@p_CHECKER_ID	varchar(15)	= NULL,
4802
@p_APPROVE_DT	varchar(25)	= NULL,
4803
@p_CREATE_DT_KT	varchar(25)	= NULL,
4804
@p_MAKER_ID_KT	varchar(15)	= NULL,
4805
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
4806
@p_CHECKER_ID_KT	varchar(1)	= NULL,
4807
@p_APPROVE_DT_KT  varchar(25)= null,
4808
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
4809
@p_BRANCH_CREATE	varchar(15)	= NULL,
4810
@p_NOTES	varchar(15)	= NULL,
4811
@p_RECORD_STATUS	varchar(1)	= NULL,
4812
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
4813
@p_TRANSFER_DT	varchar(25)	= NULL,
4814
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
4815
@p_PROCESS	varchar(15)	= NULL,
4816
@p_PAY_PHASE VARCHAR(15) = NULL,
4817
@p_IS_SEND_APPR VARCHAR(15) = NULL,
4818
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
4819
@p_XMP_TEMP_INVOICE XML = NULL,
4820
@p_XMP_TEMP_VAT_INVOICE XML = NULL,
4821
--doanptt 14/03/2022
4822
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL,
4823
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL
4824
AS
4825

    
4826
-- BEGIN VALIDATE UPDATE
4827
	IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL'))
4828
	BEGIN
4829
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
4830
		RETURN '-1'
4831
	END
4832
	IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
4833
	BEGIN
4834
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
4835
		RETURN '-1'
4836
	END
4837
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
4838
	BEGIN
4839
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt thành công trước đó!' ErrorDesc
4840
		RETURN '-1'
4841
	END
4842
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
4843
	BEGIN
4844
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt kế toán thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
4845
		RETURN '-1'
4846
	END
4847
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
4848
	BEGIN
4849
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
4850
		RETURN '-1'
4851
	END
4852
-- END VALIDATE UPDATE
4853

    
4854
	DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
4855
		@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(255),@GL_CODE VARCHAR(100),@GL_CODE_ACCNO VARCHAR(20), @BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
4856
	DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50)=null,
4857
		@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
4858
		@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
4859
		@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@RATE DECIMAL(18,2),@PRICE_KT DECIMAL(18,2) =0,@TOTAL_AMT_KT DECIMAL(18,2) =0,@VAT_KT DECIMAL(18,2) =0,
4860
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15)
4861
	DECLARE @hdoc INT;
4862
	DECLARE @hdocInvoice INT;
4863
	DECLARE @hdocVATInvoice INT;
4864
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
4865
	EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
4866
	EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE;
4867
	
4868
	--hoa don khong co VAT
4869
	DECLARE XmlData CURSOR FOR
4870
	SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
4871
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),
4872
			GOODS_NAME nvarchar(250), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,0),
4873
			VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
4874

    
4875
	OPEN XmlData
4876
	DECLARE @INDEX INT  =0, @INDEX_IV INT =0, @INDEX_VAT INT =0, @INDEX_REC INT = 0;
4877

    
4878
	BEGIN TRANSACTION
4879
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
4880
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
4881
		SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND STATUS_JOB='C')
4882
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
4883

    
4884
		UPDATE TR_REQ_PAYMENT 
4885
		SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTE=@p_CONFIRM_NOTE
4886
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
4887
		-- DOANPTT 291222: THEM LOG KPI
4888
		UPDATE TR_REQ_KPI 
4889
		SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTE, REQ_REASON = @p_REQ_REASON
4890
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U'
4891

    
4892
------------------------------------------------------------------------- BEGIN LUOI HACH TOAN -----------------------------------------------------------------------
4893
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
4894
		BEGIN
4895
			-- hach toan
4896
			DECLARE XmlDataEntries CURSOR FOR
4897
			SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
4898
					WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
4899
					BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100),GL_CODE_ACCNO VARCHAR(20), IS_TRANSFER_EXTERNAL VARCHAR(15))
4900
			OPEN XmlDataEntries;
4901

    
4902
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
4903
			IF @@Error <> 0 GOTO ABORT
4904
			DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
4905
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO, @IS_TRANSFER_EXTERNAL
4906
			WHILE @@fetch_status=0 
4907
			BEGIN
4908

    
4909
				IF(@EXC_RATE IS NULL)
4910
				BEGIN
4911
					SET @EXC_RATE = 1
4912
				END
4913

    
4914
				SET @INDEX = @INDEX +1
4915
				SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
4916

    
4917
				-- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA
4918
				IF(ISNULL(@ACCT_NAME, '') = '' AND ISNULL(@GL_CODE, '') <> '')
4919
				BEGIN
4920
					SET @ACC_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
4921
					SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
4922
				END
4923
				-- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA
4924
				SET @GL_CODE = RIGHT(@GL_CODE,9)
4925
				IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '')
4926
				BEGIN
4927
					SET @ACCT = @GL_CODE_ACCNO
4928
				END
4929

    
4930
				IF(@DR_CR='D')
4931
				BEGIN
4932
					SET @DR_CR_NAME =N'Nợ'
4933
				END
4934
				ELSE
4935
				BEGIN
4936
					SET @DR_CR_NAME =N'Có'
4937
				END
4938

    
4939
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
4940
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
4941
	
4942
				IF(@p_IS_SEND_APPR = 'Y')
4943
				BEGIN
4944
				
4945
				print '@ENTRY_PAIR: ' + @ENTRY_PAIR
4946
				print 'req_pay_id: ' + @p_REQ_PAY_ID
4947
					IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
4948
					BEGIN
4949
						ROLLBACK TRANSACTION
4950
						CLOSE XmlDataEntries;
4951
						DEALLOCATE XmlDataEntries;
4952
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Mã bút toán không được phép để trống' ErrorDesc
4953
						RETURN '-1'
4954
					END
4955

    
4956
					IF(@DR_CR IS NULL OR @DR_CR ='')
4957
					BEGIN
4958
						ROLLBACK TRANSACTION
4959
						CLOSE XmlDataEntries;
4960
						DEALLOCATE XmlDataEntries;
4961
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Nợ/có không được phép để trống' ErrorDesc
4962
						RETURN '-1'
4963
					END
4964

    
4965
					IF(@ACCT IS NULL OR @ACCT ='')
4966
					BEGIN
4967
						ROLLBACK TRANSACTION
4968
						CLOSE XmlDataEntries;
4969
						DEALLOCATE XmlDataEntries;
4970
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tài khoản không được phép để trống' ErrorDesc
4971
						RETURN '-1'
4972
					END
4973

    
4974
					IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
4975
					BEGIN
4976
						ROLLBACK TRANSACTION
4977
						CLOSE XmlDataEntries;
4978
						DEALLOCATE XmlDataEntries;
4979
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
4980
						RETURN '-1'
4981
					END
4982

    
4983
					IF(@AMT IS NULL OR @AMT < 0)
4984
					BEGIN
4985
					ROLLBACK TRANSACTION
4986
							CLOSE XmlDataEntries;	
4987
							DEALLOCATE XmlDataEntries;
4988
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tiền hạch toán phải lớn hơn 0'  ErrorDesc
4989
							RETURN '-1'
4990
					END
4991

    
4992
					IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
4993
					BEGIN
4994
						ROLLBACK TRANSACTION
4995
						CLOSE XmlDataEntries;
4996
						DEALLOCATE XmlDataEntries;
4997
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
4998
						RETURN '-1'
4999
					END
5000

    
5001
					IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
5002
					BEGIN
5003
						ROLLBACK TRANSACTION
5004
						CLOSE XmlDataEntries;
5005
						DEALLOCATE XmlDataEntries;
5006
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
5007
						RETURN '-1'
5008
					END
5009

    
5010
					IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13)
5011
					BEGIN
5012
						ROLLBACK TRANSACTION
5013
						CLOSE XmlDataEntries;
5014
						DEALLOCATE XmlDataEntries;
5015
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
5016
						RETURN '-1'
5017
					END
5018

    
5019
					IF(@GL_CODE IS NULL OR @GL_CODE ='')
5020
					BEGIN
5021
						IF (LEN(@ACCT) >9 AND ((SELECT ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT ISNULL(TK_GL_NAME,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) =''))
5022
						BEGIN
5023
							ROLLBACK TRANSACTION
5024
							CLOSE XmlDataEntries;
5025
							DEALLOCATE XmlDataEntries;
5026
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản CASA chưa có thông tin GL Mapping. Vui lòng bấm vào nút Kiểm tra tài khoản để đồng bộ tài khoản từ Core' ErrorDesc
5027
							RETURN '-1'
5028
						END
5029
					END
5030

    
5031
					IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13)
5032
					BEGIN
5033
						ROLLBACK TRANSACTION
5034
						CLOSE XmlDataEntries;
5035
						DEALLOCATE XmlDataEntries;
5036
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
5037
						RETURN '-1'
5038
					END
5039

    
5040
					IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
5041
					BEGIN
5042
					ROLLBACK TRANSACTION
5043
							CLOSE XmlDataEntries;	
5044
							DEALLOCATE XmlDataEntries;
5045
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA'  ErrorDesc
5046
							RETURN '-1'
5047
					END
5048

    
5049
					-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
5050
					IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
5051
					BEGIN
5052
						ROLLBACK TRANSACTION
5053
						CLOSE XmlDataEntries;	
5054
						DEALLOCATE XmlDataEntries;
5055
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Nếu bạn đang hạch toán CASA trong hệ thống. Vui lòng chọn mã đơn vị khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài  khoản CASA'  ErrorDesc
5056
						RETURN '-1'
5057
					END
5058

    
5059
					--IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(TAX,0) >0 AND ISNULL(VAT,0) >0 AND TYPE_FUNC ='KT'))
5060
					--BEGIN
5061
					--	IF(@ACCT ='353200002' OR @ACCT ='353200001')
5062
					--	BEGIN
5063
					--		SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Bạn không được phép hạch toán tài khoản 353200002,353200001 giao dịch không chứa các hóa đơn có VAT do kế toán lưu trữ '  ErrorDesc
5064
					--		RETURN '-1'
5065
					--	END
5066
					--END select * from TR_REQ_PAY_ENTRIES
5067

    
5068
					--doanptt 20/04/2022
5069
					IF(@ACCT = '353200002')
5070
					BEGIN
5071
						IF(NOT EXISTS(SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)))
5072
						BEGIN
5073
							ROLLBACK TRANSACTION
5074
							CLOSE XmlDataEntries;	
5075
							DEALLOCATE XmlDataEntries;
5076
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Lưới hóa đơn đính kèm không có hóa đơn chứa VAT. Vui lòng xóa tài khoản nợ 353200002 trước khi gửi phê duyệt'  ErrorDesc
5077
							RETURN '-1'
5078
						END
5079
					END
5080
					
5081
					/*
5082
					-- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ
5083
					IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') >= 1 AND 
5084
							(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') = 0)
5085
					BEGIN
5086
						ROLLBACK TRANSACTION
5087
						CLOSE XmlDataEntries;	
5088
						DEALLOCATE XmlDataEntries;
5089
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Nợ - 0 Có)'  ErrorDesc
5090
						RETURN '-1'
5091
					END
5092

    
5093
					IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') = 0 AND 
5094
							(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') >= 1)
5095
					BEGIN
5096
						ROLLBACK TRANSACTION
5097
						CLOSE XmlDataEntries;	
5098
						DEALLOCATE XmlDataEntries;
5099
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - 0 Nợ)'  ErrorDesc
5100
						RETURN '-1'
5101
					END
5102
					*/
5103
					
5104

    
5105
					
5106
				END -- END IF VALIDATE
5107
				/*
5108
				IF(@ACCT = '353200002')
5109
					BEGIN
5110
						DECLARE @SUMVAT DECIMAL(18,0) = 0
5111
						DECLARE @SUM3532 DECIMAL(18,0) = 0
5112
						DECLARE @tmp3532 TABLE(
5113
						AMT DECIMAL(18,0),
5114
						ACCT VARCHAR(20)
5115
						)
5116
						INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
5117
						SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
5118
						SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
5119
						
5120
						IF(@SUM3532 <> @SUMVAT)
5121
						BEGIN
5122
							ROLLBACK TRANSACTION
5123
							CLOSE XmlDataEntries;	
5124
							DEALLOCATE XmlDataEntries;
5125
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán dòng ' + CONVERT(VARCHAR(5),@INDEX) + N': Tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN') + N',Tổng tiền tài khoản 3532: ' + FORMAT(@SUM3532,'#,#', 'vi-VN')   ErrorDesc
5126
							RETURN '-1'
5127
						END
5128
					END
5129
					*/
5130
	
5131
				DECLARE @p_ET_ID VARCHAR(15);
5132
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
5133
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
5134

    
5135
				INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT, TRN_TYPE, CURRENCY, EXC_RATE, IS_TRANSFER_EXTERNAL)
5136
				VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, 'PAYMENT', 'VND', 1, @IS_TRANSFER_EXTERNAL)
5137

    
5138
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
5139
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
5140
				BEGIN
5141
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
5142
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
5143
				END
5144
				ELSE
5145
				BEGIN
5146
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0')
5147
						BEGIN
5148
							UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), EDITOR_DT = GETDATE()
5149
							WHERE ACC_NO=@ACCT
5150
					END
5151
					--UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), CREATE_DT = GETDATE()
5152
					--WHERE ACC_NO=@ACCT
5153
				END
5154
				IF @@error<>0 GOTO ABORT;
5155
				FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO, @IS_TRANSFER_EXTERNAL
5156
			END;--END WHILE
5157
			CLOSE XmlDataEntries;
5158
			DEALLOCATE XmlDataEntries;
5159
		END--END LUOI HACH TOAN
5160
------------------------------------------------------------------------------------------ END LUOI HACH TOAN --------------------------------------------------------------------
5161

    
5162
--INSERT XMLDATAENTRIES
5163
		-- CAP NHAT TAI KHOAN GL
5164

    
5165
		--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM PAY_ENTRIES_POST WHERE ISNULL(REF_NO,'') ='')
5166
		-- CAP NHAT TAI KHOAN GL
5167

    
5168
-- INSERT LUOI HOA DON KHONG VAT
5169
	
5170
		DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000)
5171
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
5172
		FETCH NEXT FROM XmlData  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
5173
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
5174
		WHILE @@FETCH_STATUS=0 BEGIN
5175
			SET @INDEX_IV = @INDEX_IV+1
5176
				IF(@TYPE_FUNC ='HC')
5177
				BEGIN
5178
					SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
5179
					(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX 
5180
					AND AUTH_STATUS <>'D' AND TYPE_FUNC ='HC'
5181
					AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
5182
					FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
5183
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND 
5184
					TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
5185

    
5186
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND 
5187
					TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
5188
					BEGIN
5189
						ROLLBACK TRANSACTION
5190
						CLOSE XmlData;
5191
						DEALLOCATE XmlData;
5192
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Số phiếu: '+ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
5193
						RETURN '-1'
5194
					END	
5195
				END
5196
			DECLARE @p_REQ_INV_ID VARCHAR(15);
5197
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
5198
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
5199

    
5200
		INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,
5201
		AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN, VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
5202
		VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103)  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,
5203
		@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,'HC')
5204
		
5205
		IF @@error<>0 GOTO ABORT;
5206
		FETCH NEXT FROM XmlData 
5207
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
5208
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
5209
		END;
5210
		CLOSE XmlData;
5211
		DEALLOCATE XmlData;
5212

    
5213
-- BEGIN HOA DON CO VAT
5214
		IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL)
5215
		BEGIN
5216
			-- hoa don co VAT
5217
			DECLARE XmlVATInvoice CURSOR FOR
5218
			SELECT *
5219
			FROM
5220
			OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
5221
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
5222
				 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
5223
				 PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,0),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
5224
			OPEN XmlVATInvoice
5225

    
5226
			-- CAP NHAT HOA DON CO VAT
5227
			FETCH NEXT FROM XmlVATInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
5228
			@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
5229
			WHILE @@fetch_status=0 BEGIN
5230
				SET @INDEX_VAT = @INDEX_VAT+1
5231

    
5232
				SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
5233
				(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX 
5234
				AND AUTH_STATUS <>'D' AND TYPE_FUNC ='KT'
5235
				AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
5236
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
5237
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
5238
										AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
5239
										REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
5240

    
5241
				--IF(@TYPE_FUNC ='KT')
5242
				--BEGIN
5243
					IF(EXISTS(SELECT REQ_PAYDT_ID FROM TR_REQ_PAY_INVOICE 
5244
									   WHERE INVOICE_NO =@INVOICE_NO 
5245
											AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
5246
											AND INVOICE_SIGN =@INVOICE_SIGN 
5247
											AND TAX_NO =@TAX_NO 
5248
											AND TAX =@TAX 
5249
											AND TYPE_FUNC = 'KT' 
5250
											AND AUTH_STATUS <>'D' 
5251
											AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))
5252
							  )
5253
					   )
5254
					BEGIN
5255
						ROLLBACK TRANSACTION
5256
						CLOSE XmlVATInvoice;
5257
						DEALLOCATE XmlVATInvoice;
5258
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm có VAT, dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Số phiếu: '+ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
5259
						RETURN '-1'
5260
					END	
5261
				--END
5262
				--doanptt 20/04/2022
5263
				/*
5264
				IF(NOT EXISTS(SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2))  WHERE ACCT = '353200002'))
5265
				BEGIN
5266
					ROLLBACK TRANSACTION
5267
					CLOSE XmlVATInvoice;	
5268
					DEALLOCATE XmlVATInvoice;
5269
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hóa đơn đính kèm có VAT, nhưng lưới hạch toán không có tài khoản nợ 353200002. Vui lòng thêm tài khoản nợ 353200002 trước khi gửi phê duyệt'  ErrorDesc
5270
					RETURN '-1'
5271
				END
5272
				*/
5273
					
5274
				DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
5275
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
5276
				IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
5277
				INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,
5278
				AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,
5279
				TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
5280
				VALUES (@p_REQ_INV_VAT_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103)  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
5281
				@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,
5282
				@TYPE_VAT,'KT')
5283
			IF @@error<>0 GOTO ABORT;
5284

    
5285
			FETCH NEXT FROM XmlVATInvoice 
5286
			INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
5287
			@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
5288
			END;
5289
			CLOSE XmlVATInvoice;
5290
			DEALLOCATE XmlVATInvoice;
5291
		END
5292
-- END HOA DON CO VAT
5293

    
5294

    
5295
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị chuyển
5296
	DECLARE @hdocOutsideTrans INT
5297
	EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS;
5298

    
5299
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
5300
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
5301
-- BEGIN INSERT đơn vị chuyển
5302
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
5303
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
5304
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
5305
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
5306
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
5307
				OPEN XmlDataOutsideTrans
5308

    
5309

    
5310
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
5311
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
5312
				WHILE @@fetch_status=0 
5313
				BEGIN
5314
					--IF(@p_REQ_PAY_ID <> NULL)
5315
					--BEGIN
5316
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
5317
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
5318
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
5319
						INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_TRANS(TR_REQ_TRANS_OUTSIDE_ID ,REQ_PAY_ID ,MAKER_ID , CREATE_DT , AUTH_STATUS, AUTH_STATUS_KT , 
5320
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID)
5321
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
5322
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID)
5323
					--END
5324

    
5325
					IF @@error<>0 GOTO ABORT;
5326
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
5327
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
5328
				END;
5329
				CLOSE XmlDataOutsideTrans;
5330
				DEALLOCATE XmlDataOutsideTrans;
5331
--- END INSERT đơn vị chuyển
5332

    
5333
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận
5334
-- BEGIN INSERT đơn vị nhận
5335
	DECLARE @hdocOutsideRec INT
5336
	EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC;
5337

    
5338
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
5339
				@BRANCH_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_NAME NVARCHAR(255), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX), @REF_NO VARCHAR(50)
5340
-- INSERT đơn vị nhận
5341
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
5342

    
5343
				DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
5344
				SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
5345
				WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(250), OBJECT_RECEIVE_ID VARCHAR(15), 
5346
				BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME NVARCHAR(255), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(120), SUB_BANK_RECEIVE_NAME nvarchar(MAX),  
5347
				ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
5348
				OPEN XmlDataOutsideRec
5349

    
5350
				FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
5351
				@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
5352
				WHILE @@fetch_status=0 
5353
				BEGIN
5354
					SET @INDEX_REC = @INDEX_REC+1
5355

    
5356
					IF(@p_IS_SEND_APPR = 'Y')
5357
					BEGIN
5358
						IF(ISNULL(@ACC_NO_RECEIVE, '') = '')
5359
						BEGIN
5360
							ROLLBACK TRANSACTION
5361
							CLOSE XmlDataOutsideRec;
5362
							DEALLOCATE XmlDataOutsideRec;
5363
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Số tài khoản không được để trống' ErrorDesc
5364
							RETURN '-1'
5365
						END
5366
						IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
5367
						BEGIN
5368
							ROLLBACK TRANSACTION
5369
							CLOSE XmlDataOutsideRec;
5370
							DEALLOCATE XmlDataOutsideRec;
5371
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên đơn vị nhận không được để trống' ErrorDesc
5372
							RETURN '-1'
5373
						END
5374
						IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '')
5375
						BEGIN
5376
							ROLLBACK TRANSACTION
5377
							CLOSE XmlDataOutsideRec;
5378
							DEALLOCATE XmlDataOutsideRec;
5379
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Đối tượng nhận không được để trống' ErrorDesc
5380
							RETURN '-1'
5381
						END
5382
						IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
5383
						BEGIN
5384
							ROLLBACK TRANSACTION
5385
							CLOSE XmlDataOutsideRec;
5386
							DEALLOCATE XmlDataOutsideRec;
5387
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên ngân hàng hưởng trực tiếp không được để trống' ErrorDesc
5388
							RETURN '-1'
5389
						END
5390
						IF(ISNULL(@CITAD1_ID, '') = '')
5391
						BEGIN
5392
							ROLLBACK TRANSACTION
5393
							CLOSE XmlDataOutsideRec;
5394
							DEALLOCATE XmlDataOutsideRec;
5395
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Mã CITAD không được để trống' ErrorDesc
5396
							RETURN '-1'
5397
						END
5398
						IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '')
5399
						BEGIN
5400
							ROLLBACK TRANSACTION
5401
							CLOSE XmlDataOutsideRec;
5402
							DEALLOCATE XmlDataOutsideRec;
5403
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Kênh thanh toán không được để trống' ErrorDesc
5404
							RETURN '-1'
5405
						END
5406
					END
5407

    
5408
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
5409
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
5410
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
5411

    
5412
					INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_REC(REQ_TRANS_OUTSIDE_REC_ID, REQ_PAY_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, AUTH_STATUS_KT,
5413
					CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC, SUB_BANK_RECEIVE_NAME, ENTRY_PAIR, REF_NO)
5414
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
5415
					@CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO)
5416
					IF @@error<>0 GOTO ABORT;
5417
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
5418
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
5419
				END;
5420
				CLOSE XmlDataOutsideRec;
5421
				DEALLOCATE XmlDataOutsideRec;
5422
--- END INSERT đơn vị nhận		
5423

    
5424
		--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
5425
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
5426
		-----
5427
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
5428

    
5429
	COMMIT TRANSACTION
5430

    
5431
-- BEGIN VALIDATE SEND APRROVE
5432
	IF(@p_IS_SEND_APPR = 'Y')
5433
	BEGIN
5434
	-- BEGIN VALIDATE RIGHT
5435
		IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL'))
5436
		BEGIN
5437
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép gửi phê duyêt phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
5438
			RETURN '-1'
5439
		END
5440
		IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
5441
		BEGIN
5442
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
5443
			RETURN '-1'
5444
		END
5445
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
5446
		BEGIN
5447
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
5448
			RETURN '-1'
5449
		END
5450
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
5451
		BEGIN
5452
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt thành công trước đó!' ErrorDesc
5453
			RETURN '-1'
5454
		END
5455
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
5456
		BEGIN
5457
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt kế toán thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
5458
			RETURN '-1'
5459
		END
5460
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
5461
		BEGIN
5462
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
5463
			RETURN '-1'
5464
		END
5465
	-- END VALIDATE RIGHT
5466

    
5467
		DECLARE @SUMVAT DECIMAL(18,0) = 0
5468
		DECLARE @SUM3532 DECIMAL(18,0) = 0
5469
		DECLARE @tmp3532 TABLE(
5470
		AMT DECIMAL(18,0),
5471
		ACCT VARCHAR(20)
5472
		)
5473
		INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
5474
		IF(EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002'))
5475
		BEGIN
5476
			SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
5477
			SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
5478
						
5479
			IF(@SUM3532 <> @SUMVAT)
5480
			BEGIN
5481
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán dòng ' + CONVERT(VARCHAR(5),@INDEX) + N': Tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN') + N',Tổng tiền tài khoản 3532: ' + FORMAT(@SUM3532,'#,#', 'vi-VN')   ErrorDesc
5482
				RETURN '-1'
5483
			END
5484
		END
5485
		
5486

    
5487
		DECLARE  @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) = 0
5488
		DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
5489
		Open cursorProduct
5490

    
5491
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
5492
		WHILE @@FETCH_STATUS = 0
5493
		BEGIN
5494
			--LUCTV 19-07-2021: MỖI MÃ BÚT TOÁN PHẢI THEO NGUYÊN TẮC 1 NỢ NHIỀU CÓ HOẶC 1 CÓ NHIỀU NỢ
5495
			IF	(	 (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='D') > 1 AND 
5496
					(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='C')> 1
5497
				)
5498
			BEGIN
5499
				CLOSE cursorProduct;	
5500
				DEALLOCATE cursorProduct;
5501
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ET_ID+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - Nhiều Nợ)'  ErrorDesc
5502
				RETURN '-1'
5503
			END
5504
			ELSE
5505
			BEGIN
5506
			print 'sai'+@ENTRY_PAIR
5507
			END
5508
			IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
5509
			BEGIN
5510
				SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET)
5511
				IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
5512
				BEGIN
5513
					SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###')  ErrorDesc
5514
					RETURN '-1'
5515
				END
5516
			END
5517
			-- KIEM TRA SO TIEN NO CO
5518
			IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0))
5519
			BEGIN
5520
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có'  ErrorDesc
5521
				RETURN '-1'
5522
			END
5523

    
5524
			FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
5525
		END
5526

    
5527
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
5528
		BEGIN
5529
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
5530
			RETURN '-1'
5531
		END
5532

    
5533
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
5534
		BEGIN
5535
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
5536
			RETURN '-1'
5537
		END
5538

    
5539
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
5540
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
5541
		BEGIN
5542
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
5543
			SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
5544
			SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
5545
			IF(@SUM_CR <> @SUM_DR)
5546
			BEGIN
5547
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
5548
				RETURN '-1'
5549
			END
5550
		END
5551

    
5552
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
5553
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
5554
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
5555
		UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
5556
		-- DOANPTT 291222: THEM LOG KPI
5557
		UPDATE TR_REQ_KPI 
5558
		SET AUTH_STATUS_KT ='P', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTE, REQ_REASON = @p_REQ_REASON
5559
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U'
5560
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
5561
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên cập nhật thông tin')
5562
		SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
5563
		RETURN '4'
5564
	END
5565
-- END VALIDATE SEND APPROVE
5566

    
5567
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
5568
RETURN '0'
5569
ABORT:
5570
BEGIN
5571
		ROLLBACK TRANSACTION
5572
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
5573
		RETURN '-1'
5574
End
5575

    
5576
GO
5577

    
5578
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Upd]
5579
@p_REQ_PAY_ID	varchar(15)= NULL,
5580
@p_REQ_PAY_CODE	varchar(50)	= NULL,
5581
@p_REQ_DT VARCHAR(20)= NULL,
5582
@p_BRANCH_ID	varchar(15)	= NULL,
5583
@p_DEP_ID	varchar(15)	= NULL,
5584
@p_REQ_REASON	nvarchar(MAX)	= NULL,
5585
@p_REQ_TYPE	varchar(15)	= NULL,
5586
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
5587
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
5588
@p_REF_ID	varchar(15)	= NULL,
5589
@p_RECEIVER_PO	nvarchar(250)	= NULL,
5590
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
5591
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
5592
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
5593
@p_REQ_AMT	decimal(18, 0)	= NULL,
5594
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
5595
@p_MAKER_ID	varchar(15)	= NULL,
5596
@p_CREATE_DT	varchar(25)	= NULL,
5597
@p_EDITOR_ID	varchar(15)	= NULL,
5598
@p_AUTH_STATUS	varchar(1)	= NULL,
5599
@p_CHECKER_ID	varchar(15)	= NULL,
5600
@p_APPROVE_DT	varchar(25)	= NULL,
5601
@p_CREATE_DT_KT	varchar(25)	= NULL,
5602
@p_MAKER_ID_KT	varchar(15)	= NULL,
5603
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
5604
@p_CHECKER_ID_KT	varchar(1)	= NULL,
5605
@p_APPROVE_DT_KT  varchar(25)= null,
5606
@p_CONFIRM_NOTES	nvarchar(500)	= NULL,
5607
@p_BRANCH_CREATE	varchar(15)	= NULL,
5608
@p_NOTES	varchar(15)	= NULL,
5609
@p_RECORD_STATUS	varchar(1)	= NULL,
5610
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
5611
@p_TRANSFER_DT	varchar(25)	= NULL,
5612
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
5613
@p_PROCESS	varchar(15)	= NULL,
5614
@p_PAY_PHASE VARCHAR(15)= NULL,
5615
@p_DVDM_ID VARCHAR(15) = NULL,
5616
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
5617
@p_RATE DECIMAL(18,0)= 0,
5618
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
5619
--doanptt 17/02/2022
5620
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL,
5621
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL
5622
AS
5623
-- BEGIN VALIDATE UPDATE
5624
	IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL'))
5625
	BEGIN
5626
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
5627
		RETURN '-1'
5628
	END
5629
	IF ((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
5630
	BEGIN
5631
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
5632
		RETURN '-1'
5633
	END
5634
	IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
5635
	BEGIN
5636
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
5637
		RETURN '-1'
5638
	END
5639
	IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
5640
	BEGIN
5641
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt kế toán thành công trước đó!' ErrorDesc
5642
		RETURN '-1'
5643
	END
5644
	IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
5645
	BEGIN
5646
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
5647
		RETURN '-1'
5648
	END
5649
	IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
5650
	BEGIN
5651
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
5652
		RETURN '-1'
5653
	END
5654
-- END VALIDATE UPDATE
5655

    
5656

    
5657

    
5658
DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
5659
	@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000),@GL_CODE VARCHAR(100),@GL_CODE_ACCNO VARCHAR(20),@BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
5660

    
5661
	DECLARE @INDEX_REC INT = 0
5662

    
5663

    
5664
BEGIN TRANSACTION
5665
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
5666
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
5667
		SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND TYPE_JOB ='XL')
5668
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
5669
		----
5670
		--IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
5671
-- INSERT HACH TOAN
5672
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
5673
		BEGIN
5674
			-- khai báo cursor
5675
			DECLARE @hdocEntries INT;
5676
			EXEC sp_xml_preparedocument @hdocEntries OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
5677

    
5678
			DECLARE XmlDataEntries CURSOR FOR
5679
			SELECT * FROM OPENXML(@hdocEntries, '/Root/XmlDataEntries', 2)
5680
					 WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), 
5681
					 EXC_RATE DECIMAL(18,0), BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000), GL_CODE VARCHAR(100),GL_CODE_ACCNO VARCHAR(20))
5682
			
5683
			OPEN XmlDataEntries;
5684
			DECLARE @INDEX INT = 0
5685

    
5686
			UPDATE TR_REQ_ADVANCE_PAYMENT 
5687
			SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTES=@p_CONFIRM_NOTES
5688
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
5689
			-- DOANPTT 291222: THEM LOG KPI
5690
			UPDATE TR_REQ_KPI 
5691
			SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTES, REQ_REASON = @p_REQ_REASON
5692
			WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U'
5693

    
5694
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
5695
			IF @@Error <> 0 GOTO ABORT
5696

    
5697
			DECLARE @DR_CR_NAME NVARCHAR(50)
5698
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO
5699
			WHILE @@fetch_status=0 BEGIN
5700
				IF(@EXC_RATE IS NULL)
5701
				BEGIN
5702
					SET @EXC_RATE = 1
5703
				END
5704

    
5705
				SET @INDEX = @INDEX +1
5706

    
5707
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
5708
				BEGIN
5709
					SET @GL_CODE = RIGHT(@GL_CODE,9) 
5710
				END-- LUCTV BO SUNG 20211117
5711

    
5712
				SET @ACCT_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
5713
				-- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA
5714
				IF(ISNULL(@GL_CODE, '') <> '')
5715
				BEGIN
5716
					SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
5717
				END
5718
				-- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA
5719
				SET @GL_CODE = RIGHT(@GL_CODE,9)
5720
				IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '')
5721
				BEGIN
5722
					SET @ACCT = @GL_CODE_ACCNO
5723
				END
5724

    
5725
				IF(@DR_CR='D')
5726
				BEGIN
5727
					SET @DR_CR_NAME =N'Nợ'
5728
				END
5729
				ELSE
5730
				BEGIN
5731
					SET @DR_CR_NAME =N'Có'
5732
				END
5733

    
5734
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
5735
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
5736

    
5737
				IF(@p_TYPE_FUNCTION ='SEND')
5738
				BEGIN
5739
					IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
5740
					BEGIN
5741
						ROLLBACK TRANSACTION
5742
						CLOSE XmlDataEntries;
5743
						DEALLOCATE XmlDataEntries;
5744
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Mã bút toán không được phép để trống' ErrorDesc
5745
						RETURN '-1'
5746
					END
5747

    
5748
					IF(@DR_CR IS NULL OR @DR_CR ='')
5749
					BEGIN
5750
						ROLLBACK TRANSACTION
5751
						CLOSE XmlDataEntries;
5752
						DEALLOCATE XmlDataEntries;
5753
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Nợ/có không được phép để trống' ErrorDesc
5754
						RETURN '-1'
5755
					END
5756

    
5757
					IF(@ACCT IS NULL OR @ACCT ='')
5758
					BEGIN
5759
						ROLLBACK TRANSACTION
5760
						CLOSE XmlDataEntries;
5761
						DEALLOCATE XmlDataEntries;
5762
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tài khoản không được phép để trống' ErrorDesc
5763
						RETURN '-1'
5764
					END
5765

    
5766
					IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
5767
					BEGIN
5768
						ROLLBACK TRANSACTION
5769
						CLOSE XmlDataEntries;
5770
						DEALLOCATE XmlDataEntries;
5771
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
5772
						RETURN '-1'
5773
					END
5774

    
5775
					IF(@AMT IS NULL OR @AMT < 0)
5776
					BEGIN
5777
							ROLLBACK TRANSACTION
5778
							CLOSE XmlDataEntries;	
5779
							DEALLOCATE XmlDataEntries;
5780
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tiền hạch toán phải lớn hơn 0'  ErrorDesc
5781
							RETURN '-1'
5782
					END
5783

    
5784
					IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
5785
					BEGIN
5786
						ROLLBACK TRANSACTION
5787
						CLOSE XmlDataEntries;
5788
						DEALLOCATE XmlDataEntries;
5789
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
5790
						RETURN '-1'
5791
					END
5792

    
5793
					IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
5794
					BEGIN
5795
						ROLLBACK TRANSACTION
5796
						CLOSE XmlDataEntries;
5797
						DEALLOCATE XmlDataEntries;
5798
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
5799
						RETURN '-1'
5800
					END
5801

    
5802
					IF(@GL_CODE IS NULL OR @GL_CODE ='')
5803
					BEGIN
5804
						IF (LEN(@ACCT) >9 AND ((SELECT TOP 1 ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT TOP 1 ISNULL(TK_GL_NAME,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) =''))
5805
						BEGIN
5806
							ROLLBACK TRANSACTION
5807
							CLOSE XmlDataEntries;
5808
							DEALLOCATE XmlDataEntries;
5809
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản CASA chưa có thông tin GL Mapping. Vui lòng bấm vào nút Kiểm tra tài khoản để đồng bộ tài khoản từ Core' ErrorDesc
5810
							RETURN '-1'
5811
						END
5812
					END
5813

    
5814
					IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13)
5815
					BEGIN
5816
						ROLLBACK TRANSACTION
5817
						CLOSE XmlDataEntries;
5818
						DEALLOCATE XmlDataEntries;
5819
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
5820
						RETURN '-1'
5821
					END
5822

    
5823
					IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
5824
					BEGIN
5825
							ROLLBACK TRANSACTION
5826
							CLOSE XmlDataEntries;	
5827
							DEALLOCATE XmlDataEntries;
5828
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA'  ErrorDesc
5829
							RETURN '-1'
5830
					END
5831

    
5832
					-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
5833
					PRINT @BRANCH_ID
5834
					IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT TOP 1 ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
5835
					BEGIN
5836
							ROLLBACK TRANSACTION
5837
							CLOSE XmlDataEntries;	
5838
							DEALLOCATE XmlDataEntries;
5839
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Nếu bạn đang hạch toán CASA trong hệ thống. Vui lòng chọn mã đơn vị khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài  khoản CASA'  ErrorDesc
5840
							RETURN '-1'
5841
					END
5842
					
5843
					/*
5844
					-- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ
5845
					IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') >= 1 AND 
5846
							(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') = 0)
5847
					BEGIN
5848
						ROLLBACK TRANSACTION
5849
						CLOSE XmlDataEntries;	
5850
						DEALLOCATE XmlDataEntries;
5851
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Nợ - 0 Có)'  ErrorDesc
5852
						RETURN '-1'
5853
					END
5854

    
5855
					IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') = 0 AND 
5856
							(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') >= 1)
5857
					BEGIN
5858
						ROLLBACK TRANSACTION
5859
						CLOSE XmlDataEntries;	
5860
						DEALLOCATE XmlDataEntries;
5861
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - 0 Nợ)'  ErrorDesc
5862
						RETURN '-1'
5863
					END
5864
					*/
5865

    
5866
				END
5867
				
5868
				/*IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND NOT EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID AND BRANCH_ID =@BRANCH_ID))
5869
					BEGIN
5870
					ROLLBACK TRANSACTION
5871
						CLOSE XmlDataEntries;	
5872
						DEALLOCATE XmlDataEntries;
5873
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA'  ErrorDesc
5874
						RETURN '-1'
5875
				END*/
5876
				
5877

    
5878
				DECLARE @p_ET_ID VARCHAR(15);
5879
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
5880
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
5881

    
5882
				INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR, DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT, TRN_TYPE)
5883
				VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,'VND', 1, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, 'ADVANCE')
5884

    
5885
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
5886
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
5887
				BEGIN
5888
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
5889
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
5890
				END
5891
				ELSE
5892
				BEGIN
5893
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0')
5894
						BEGIN
5895
							UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), EDITOR_DT = GETDATE()
5896
							WHERE ACC_NO=@ACCT
5897
					END
5898
				END
5899

    
5900
				
5901
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO
5902
			END;
5903
		CLOSE XmlDataEntries;
5904
		DEALLOCATE XmlDataEntries;
5905
		-- UPDATE GL THEO RULE
5906
		----UPDATE  CM_ACCOUNT
5907
		----SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001')
5908
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
5909
		----AND SUBSTRING(ACC_NO,4,4) ='7048'
5910

    
5911
		----UPDATE  CM_ACCOUNT
5912
		----SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002')
5913
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
5914
		----AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19'
5915

    
5916
		----UPDATE  CM_ACCOUNT
5917
		----SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001')
5918
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
5919
		----AND SUBSTRING(ACC_NO,4,4) ='7041'
5920

    
5921
		--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
5922

    
5923
		IF @@error<>0 GOTO ABORT;
5924
	END
5925

    
5926
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị chuyển
5927
	DECLARE @hdocOutsideTrans INT
5928
	EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS;
5929

    
5930
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
5931
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
5932
-- INSERT đơn vị chuyển
5933
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
5934
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
5935
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
5936
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
5937
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
5938
				OPEN XmlDataOutsideTrans
5939

    
5940

    
5941
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
5942
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
5943
				WHILE @@fetch_status=0 
5944
				BEGIN
5945
					
5946
					--IF(@p_REQ_PAY_ID <> NULL)
5947
					--BEGIN
5948
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
5949
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
5950
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
5951
						INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_TRANS(TR_REQ_TRANS_OUTSIDE_ID ,REQ_PAY_ID ,MAKER_ID , CREATE_DT , AUTH_STATUS, AUTH_STATUS_KT , 
5952
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID, CURRENCY)
5953
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
5954
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID, @CURRENCY)
5955
					--END
5956

    
5957
					IF @@error<>0 GOTO ABORT;
5958
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
5959
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
5960
				END;
5961
				CLOSE XmlDataOutsideTrans;
5962
				DEALLOCATE XmlDataOutsideTrans;
5963
--- END INSERT đơn vị chuyển
5964

    
5965
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận
5966
-- START INSERT đơn vị nhận
5967
	DECLARE @hdocOutsideRec INT
5968
	EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC;
5969

    
5970
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(20), @CITAD1_ID VARCHAR(20), @BANK_RECEIVE_ID VARCHAR(255), @OBJECT_RECEIVE_ID VARCHAR(20), @REF_NO VARCHAR(50),
5971
				@BRANCH_RECEIVE_ID VARCHAR(255), @BRANCH_RECEIVE_NAME NVARCHAR(MAX), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX)
5972
-- INSERT đơn vị nhận
5973
	DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
5974

    
5975
	DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
5976
	SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
5977
	WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(255), OBJECT_RECEIVE_ID VARCHAR(15), 
5978
	BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME VARCHAR(MAX), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(120), SUB_BANK_RECEIVE_NAME nvarchar(MAX),  
5979
				ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
5980
	OPEN XmlDataOutsideRec
5981

    
5982
	FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
5983
	@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
5984
	WHILE @@fetch_status=0 
5985
	BEGIN
5986
		SET @INDEX_REC = @INDEX_REC+1
5987
		IF(@p_TYPE_FUNCTION ='SEND')
5988
			BEGIN
5989
				IF(ISNULL(@ACC_NO_RECEIVE, '') = '')
5990
				BEGIN
5991
					ROLLBACK TRANSACTION
5992
					CLOSE XmlDataOutsideRec;
5993
					DEALLOCATE XmlDataOutsideRec;
5994
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Số tài khoản không được để trống' ErrorDesc
5995
					RETURN '-1'
5996
				END
5997
				IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
5998
				BEGIN
5999
					ROLLBACK TRANSACTION
6000
					CLOSE XmlDataOutsideRec;
6001
					DEALLOCATE XmlDataOutsideRec;
6002
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên đơn vị nhận không được để trống' ErrorDesc
6003
					RETURN '-1'
6004
				END
6005
				IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '')
6006
				BEGIN
6007
					ROLLBACK TRANSACTION
6008
					CLOSE XmlDataOutsideRec;
6009
					DEALLOCATE XmlDataOutsideRec;
6010
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Đối tượng nhận không được để trống' ErrorDesc
6011
					RETURN '-1'
6012
				END
6013
				IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
6014
				BEGIN
6015
					ROLLBACK TRANSACTION
6016
					CLOSE XmlDataOutsideRec;
6017
					DEALLOCATE XmlDataOutsideRec;
6018
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên ngân hàng hưởng trực tiếp không được để trống' ErrorDesc
6019
					RETURN '-1'
6020
				END
6021
				IF(ISNULL(@CITAD1_ID, '') = '')
6022
				BEGIN
6023
					ROLLBACK TRANSACTION
6024
					CLOSE XmlDataOutsideRec;
6025
					DEALLOCATE XmlDataOutsideRec;
6026
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Mã CITAD không được để trống' ErrorDesc
6027
					RETURN '-1'
6028
				END
6029
				IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '')
6030
				BEGIN
6031
					ROLLBACK TRANSACTION
6032
					CLOSE XmlDataOutsideRec;
6033
					DEALLOCATE XmlDataOutsideRec;
6034
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Kênh thanh toán không được để trống' ErrorDesc
6035
					RETURN '-1'
6036
				END
6037
			END
6038

    
6039
		DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
6040
		EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
6041
		IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
6042
		INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_REC(REQ_TRANS_OUTSIDE_REC_ID, REQ_PAY_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, AUTH_STATUS_KT,
6043
		CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC, SUB_BANK_RECEIVE_NAME, ENTRY_PAIR, REF_NO)
6044
		VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
6045
		@CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO)
6046
		IF @@error<>0 GOTO ABORT;
6047
		FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
6048
		@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
6049
	END;
6050
	CLOSE XmlDataOutsideRec;
6051
	DEALLOCATE XmlDataOutsideRec;
6052
--- END INSERT đơn vị nhận
6053

    
6054

    
6055
COMMIT TRANSACTION
6056
-- BEGIN VALIDATE SEND APPROVE
6057
	IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
6058
	BEGIN
6059
		IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL'))
6060
		BEGIN
6061
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép gửi phê duyệt phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
6062
			RETURN '-1'
6063
		END
6064
		IF ((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
6065
		BEGIN
6066
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
6067
			RETURN '-1'
6068
		END
6069
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
6070
		BEGIN
6071
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
6072
			RETURN '-1'
6073
		END
6074
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
6075
		BEGIN
6076
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt kế toán thành công trước đó!' ErrorDesc
6077
			RETURN '-1'
6078
		END
6079
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
6080
		BEGIN
6081
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
6082
			RETURN '-1'
6083
		END
6084
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
6085
		BEGIN
6086
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
6087
			RETURN '-1'
6088
		END
6089

    
6090
	-- BEGIN VALIDATE LUOI HACH TOAN
6091
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
6092
		BEGIN
6093
			-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
6094
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
6095
			BEGIN
6096
				DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
6097
				SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
6098
				SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
6099
				IF(@SUM_CR<>@SUM_DR)
6100
				BEGIN
6101
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có'  ErrorDesc
6102
					RETURN '-1'
6103
				END
6104
			END
6105
				
6106
			DECLARE @REQ_PAY_ID VARCHAR(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) =0
6107
			DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
6108

    
6109
			Open cursorProduct
6110
			FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
6111
			WHILE @@FETCH_STATUS = 0
6112
			BEGIN
6113
				--LUCTV 19-07-2021: MỖI MÃ BÚT TOÁN PHẢI THEO NGUYÊN TẮC 1 NỢ NHIỀU CÓ HOẶC 1 CÓ NHIỀU NỢ
6114
				IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='D') >1 AND 
6115
						(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='C') >1)
6116
				BEGIN
6117
					CLOSE cursorProduct;	
6118
					DEALLOCATE cursorProduct;
6119
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ET_ID+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - Nhiều Nợ)'  ErrorDesc
6120
					RETURN '-1'
6121
				END
6122
				IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
6123
				BEGIN
6124
					SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET)
6125
					IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
6126
					BEGIN
6127
						SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###')  ErrorDesc
6128
						RETURN '-1'
6129
					END
6130
				END
6131
				-- KIEM TRA SO TIEN NO CO
6132
				IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0))
6133
				BEGIN
6134
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có'  ErrorDesc
6135
					RETURN '-1'
6136
				END
6137
				FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
6138
			END -- END WHILE		
6139
		END 
6140
	-- END VALIDATE LUOI HACH TOAN
6141
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
6142
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
6143
		-- CAP NHAT TINH TRANG VE DANG XU LY
6144
		UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT =GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
6145
		-- DOANPTT 291222: THEM LOG KPI
6146
		UPDATE TR_REQ_KPI 
6147
		SET AUTH_STATUS_KT ='P', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTES, REQ_REASON = @p_REQ_REASON
6148
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U'
6149
		
6150
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
6151
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt phiếu',N'Giao dịch viên cập nhật thông tin')
6152
		
6153
		SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
6154
		RETURN '4'
6155
	END -- END TYPE_FUNCTION
6156
-- END VALIDATE SEND APPROVE
6157

    
6158
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
6159
RETURN '0'
6160
ABORT:
6161
BEGIN
6162
		ROLLBACK TRANSACTION
6163
		CLOSE XmlDataEntries;
6164
		DEALLOCATE XmlDataEntries;
6165
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
6166
		RETURN '-1'
6167
End
6168

    
6169
GO
6170

    
6171
ALTER   PROC [dbo].[TR_BUDGET_YEAR_DVKD_DETAIL_IMPORT] (
6172
	@p_GD_ID VARCHAR(20), 
6173
	@p_BRANCH_ID VARCHAR(20), 
6174
	@p_BUDGET_TYPE VARCHAR(20), 
6175
	@p_BRANCH_TYPE VARCHAR(20), 
6176
	@p_MAKER_ID VARCHAR(20), 
6177
	@p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL XML = NULL
6178
)
6179
AS
6180

    
6181
	IF(@p_GD_ID IS NULL OR @p_GD_ID = '')
6182
	BEGIN
6183
		SELECT '-1' as Result, N'Mã ngân sách chi phí không được để trống' AS ErrorDesc
6184
		RETURN '-1'
6185
	END
6186
	IF(@p_BUDGET_TYPE IS NULL OR @p_BUDGET_TYPE = '')
6187
	BEGIN
6188
		SELECT '-1' as Result, N'Loại ngân sách chi phí không được để trống' AS ErrorDesc
6189
		RETURN '-1'
6190
	END
6191
	IF(@p_BRANCH_TYPE IS NULL OR @p_BRANCH_TYPE = '')
6192
	BEGIN
6193
		SELECT '-1' as Result, N'Loại đơn vị không được để trống' AS ErrorDesc
6194
		RETURN '-1'
6195
	END
6196

    
6197
BEGIN TRANSACTION
6198
	DECLARE @hdoc INT
6199
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL
6200

    
6201
	DELETE FROM TR_GOODSTYPE WHERE GD_ID = @p_GD_ID AND BUDGET_TYPE = 'nam'
6202
	INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) 
6203
	VALUES (@p_GD_ID, 'nam', GETDATE(), @p_MAKER_ID, NULL, NULL, '1', 'A')
6204
	
6205
	DECLARE XmlBudgetLimitYearhDT CURSOR FOR
6206
	SELECT * FROM OPENXML(@hdoc, '/Root/XmlBudgetLimitYearhDT', 2)
6207
	WITH (
6208
		BRANCH_CODE VARCHAR(15),
6209
		BRANCH_NAME NVARCHAR(250),
6210
		BUDGET_YEAR VARCHAR(15),
6211
		BUDGET_LIMIT_AMT DECIMAL(18,2),
6212
		M1 DECIMAL(18, 0),
6213
		M2 DECIMAL(18, 0),
6214
		M3 DECIMAL(18, 0),
6215
		M4 DECIMAL(18, 0),
6216
		M5 DECIMAL(18, 0),
6217
		M6 DECIMAL(18, 0),
6218
		M7 DECIMAL(18, 0),
6219
		M8 DECIMAL(18, 0),
6220
		M9 DECIMAL(18, 0),
6221
		M10 DECIMAL(18, 0),
6222
		M11 DECIMAL(18, 0),
6223
		M12 DECIMAL(18, 0)
6224
	)
6225

    
6226
	DECLARE @BRANCH_CODE VARCHAR(15),
6227
		@BRANCH_NAME NVARCHAR(250),
6228
		@BUDGET_YEAR VARCHAR(15),
6229
		@BUDGET_LIMIT_AMT DECIMAL(18,2),
6230
		@M1 DECIMAL(18, 0),
6231
		@M2 DECIMAL(18, 0),
6232
		@M3 DECIMAL(18, 0),
6233
		@M4 DECIMAL(18, 0),
6234
		@M5 DECIMAL(18, 0),
6235
		@M6 DECIMAL(18, 0),
6236
		@M7 DECIMAL(18, 0),
6237
		@M8 DECIMAL(18, 0),
6238
		@M9 DECIMAL(18, 0),
6239
		@M10 DECIMAL(18, 0),
6240
		@M11 DECIMAL(18, 0),
6241
		@M12 DECIMAL(18, 0)
6242
	
6243
	------------------------------------------------ validate begin ------------------------------------------------
6244

    
6245
	DECLARE @ERROR_MESSAGE nvarchar(MAX)
6246
	DECLARE @INDEX INT
6247
	SET @INDEX = 2
6248

    
6249
	OPEN XmlBudgetLimitYearhDT;
6250

    
6251
	FETCH NEXT FROM XmlBudgetLimitYearhDT 
6252
	INTO @BRANCH_CODE, @BRANCH_NAME , @BUDGET_YEAR , @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
6253
	WHILE @@fetch_status=0 
6254
	BEGIN
6255
		SET @INDEX = @INDEX +1
6256
		DECLARE @l_BRANCH_ID VARCHAR(20);
6257
		DECLARE @l_DEP_ID VARCHAR(20);
6258
		
6259
		SET @l_BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM CM_BRANCH WHERE BRANCH_CODE = @BRANCH_CODE)
6260
		IF(ISNULL(@l_BRANCH_ID,'') = '')
6261
		BEGIN
6262
			ROLLBACK TRANSACTION
6263
			CLOSE XmlBudgetLimitYearhDT;
6264
			DEALLOCATE XmlBudgetLimitYearhDT;
6265
			SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Đơn vị ' + @BRANCH_CODE + N' không có trong hệ thống' AS ErrorDesc
6266
			RETURN '-1'
6267
		END
6268
	-- NEU DA TON TAI NGAN SACH THI CHI UPDATE
6269
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR))
6270
		BEGIN
6271
			IF(ISNULL(@M1, 0) > 0)
6272
			BEGIN
6273
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1  = @M1  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6274
			END
6275
			IF(ISNULL(@M2, 0) > 0)
6276
			BEGIN
6277
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2  = @M2  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6278
			END																						  
6279
			IF(ISNULL(@M3, 0) > 0)																	  
6280
			BEGIN																					  
6281
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3  = @M3  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6282
			END																						  
6283
			IF(ISNULL(@M4, 0) > 0)																	  
6284
			BEGIN																					  
6285
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4  = @M4  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6286
			END																						  
6287
			IF(ISNULL(@M5, 0) > 0)																	  
6288
			BEGIN																					  
6289
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5  = @M5  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6290
			END																						  
6291
			IF(ISNULL(@M6, 0) > 0)																	  
6292
			BEGIN																					  
6293
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6  = @M6  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6294
			END																						  
6295
			IF(ISNULL(@M7, 0) > 0)																	  
6296
			BEGIN																					  
6297
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7  = @M7  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6298
			END																						  
6299
			IF(ISNULL(@M8, 0) > 0)																	  
6300
			BEGIN																					  
6301
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8  = @M8  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6302
			END																						  
6303
			IF(ISNULL(@M9, 0) > 0)																	  
6304
			BEGIN																					  
6305
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9  = @M9  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6306
			END																						  
6307
			IF(ISNULL(@M10, 0) > 0)																	  
6308
			BEGIN																					  
6309
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6310
			END																						  
6311
			IF(ISNULL(@M11, 0) > 0)																	  
6312
			BEGIN																					  
6313
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6314
			END																						  
6315
			IF(ISNULL(@M12, 0) > 0)																	  
6316
			BEGIN																					  
6317
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6318
			END
6319
			IF(ISNULL(@BUDGET_LIMIT_AMT, 0) > 0)																	  
6320
			BEGIN																					  
6321
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET BUDGET_LIMIT_AMT = ISNULL(@BUDGET_LIMIT_AMT, 0) WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR
6322
			END
6323
		IF @@error<>0 GOTO ABORT;
6324
		FETCH NEXT FROM XmlBudgetLimitYearhDT 
6325
		INTO @BRANCH_CODE, @BRANCH_NAME , @BUDGET_YEAR, @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
6326
		END
6327
		ELSE
6328
		BEGIN
6329
			-- Tự động sinh mã code
6330
			DECLARE @BUDGET_YEAR_LIMIT_ID VARCHAR(15);
6331
			EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR', @BUDGET_YEAR_LIMIT_ID OUT;
6332
			IF @BUDGET_YEAR_LIMIT_ID='' OR @BUDGET_YEAR_LIMIT_ID IS NULL GOTO ABORT;
6333

    
6334
			INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, BUDGET_LIMIT_AMT, 
6335
			M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID, APPROVE_DT)
6336
			VALUES(@BUDGET_YEAR_LIMIT_ID, @p_GD_ID, 'nam', @p_BRANCH_TYPE, @BUDGET_YEAR, @l_BRANCH_ID, NULL, ISNULL(@BUDGET_LIMIT_AMT, 0), 
6337
			@M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL)
6338

    
6339
			IF @@error<>0 GOTO ABORT;
6340
			FETCH NEXT FROM XmlBudgetLimitYearhDT 
6341
			INTO @BRANCH_CODE, @BRANCH_NAME , @BUDGET_YEAR, @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
6342
		END
6343
	END
6344
	CLOSE XmlBudgetLimitYearhDT;
6345
	DEALLOCATE XmlBudgetLimitYearhDT
6346
COMMIT TRANSACTION
6347

    
6348
SELECT '0' AS Result, ''  REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
6349
RETURN '0'
6350

    
6351
ABORT:
6352
BEGIN
6353
	ROLLBACK TRANSACTION
6354
	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
6355
	RETURN '-1'
6356
END
6357

    
6358
GO
6359

    
6360
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Appr]
6361
--Luanlt 2019/17/10 - Sửa params
6362
@p_REQ_PAY_ID	varchar(15)= NULL,
6363
@p_CHECKER_ID_KT	varchar(15)	= NULL
6364
AS
6365
	--Luanlt 2019/10/17 Validate CORE NOTE không được rỗng	
6366
	--IF ((SELECT CORE_NOTE FROM TR_REQUEST_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) IS NULL OR (SELECT CORE_NOTE FROM TR_REQUEST_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = '')
6367
	--Luanlt 2019/10/29 Sửa lại validate tồn tại diễn giải hạch toán từ REQUEST_ENTRIES_POST
6368
	--IF (NOT EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID))
6369
	--BEGIN
6370
	--	SELECT '-1' Result,'' REQ_PAY_ID,N'Chưa cập nhật thông tin hạch toán' ErrorDesc
6371
	--	RETURN '-1'
6372
	--END
6373

    
6374
-- BEGIN VALIDATE
6375
	IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE MAKER_ID_KT = @p_CHECKER_ID_KT AND REQ_PAY_ID =@p_REQ_PAY_ID)
6376
	BEGIN
6377
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị thanh toán này! Giao dịch viên không có quyền duyệt phiếu đề nghị thanh toán' ErrorDesc
6378
		RETURN '-1'
6379
	END
6380
	IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID_KT AND TYPE_JOB = 'KS'))
6381
	BEGIN
6382
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được kiểm soát viên khác xử lý' ErrorDesc
6383
		RETURN '-1'
6384
	END
6385
	IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
6386
	BEGIN
6387
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
6388
		RETURN '-1'
6389
	END
6390
	IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
6391
	BEGIN
6392
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc
6393
		RETURN '-1'
6394
	END
6395
	IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
6396
	BEGIN
6397
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc
6398
		RETURN '-1'
6399
	END
6400
-- CHAN CUOI
6401
	IF (EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT <> 'P' AND AUTH_STATUS_KT <> 'S' AND REQ_PAY_ID =@p_REQ_PAY_ID))
6402
	BEGIN
6403
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc
6404
		RETURN '-1'
6405
	END
6406

    
6407
-- VALIDATE LUOI HACH TOAN
6408
		
6409

    
6410
		DECLARE  @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) = 0
6411
		DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
6412
		Open cursorProduct
6413

    
6414
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
6415
		WHILE @@FETCH_STATUS = 0
6416
		BEGIN
6417
			IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
6418
			BEGIN
6419
				SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET)
6420
				IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
6421
				BEGIN
6422
					SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###')  ErrorDesc
6423
					RETURN '-1'
6424
				END
6425
			END
6426
			-- KIEM TRA SO TIEN NO CO
6427
			IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0))
6428
			BEGIN
6429
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có'  ErrorDesc
6430
				RETURN '-1'
6431
			END
6432

    
6433
			FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
6434
		END
6435

    
6436
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
6437
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
6438
		BEGIN
6439
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
6440
			SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
6441
			SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
6442
			IF(@SUM_CR <> @SUM_DR)
6443
			BEGIN
6444
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
6445
				RETURN '-1'
6446
			END
6447
		END
6448

    
6449
-- END VALIDATE
6450

    
6451
BEGIN TRANSACTION
6452
		DECLARE @p_MAKER_ID VARCHAR(15)
6453
		SET @p_MAKER_ID=(SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
6454
		-- CAC BUOC DUYET
6455
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
6456
		SET @LEVEL_JOB =(SELECT TOP 1 LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB='KS')
6457
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
6458
		---
6459
		DECLARE @INDEX1 INT =0, @INDEX INT =0, @INDEX_AD INT =0
6460
		DECLARE @REQ_TYPE VARCHAR(15),@PAY_ADVANCE_ID VARCHAR(15),@AMT_PAY DECIMAL(18,0)
6461
		DECLARE @PAY_ID VARCHAR(15),@PAY_PHASE VARCHAR(15), @AMT_ADVANCE DECIMAL(18,0),@SCHEDULE_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2), @AMT_REMAIN DECIMAL(18,2),@REF_ID VARCHAR(15),
6462
		@TRADED_ID VARCHAR(15), @AMT_EXE DECIMAL(18,2), @AMT_EXE_REMAIN DECIMAL(18,2), @AMT_ADD DECIMAL(18,2), @AMT_REVERT DECIMAL(18,2), @AD_PAY_ID VARCHAR(15),@PARENT_ID VARCHAR(15), 
6463
		@REASON_TTDK NVARCHAR(2000), @GD_ID VARCHAR(15)
6464
		SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
6465
		--- KIEM TRA XEM CO PHAI BUOC DUYET CUOI CUNG CHUA
6466
		IF(@LEVEL_JOB='1')
6467
		BEGIN
6468
		---TRU NGAN SACH 
6469
		DECLARE CURS_TRADE CURSOR FOR SELECT A.TRADE_ID, A.AMT_EXE,A.GD_ID FROM TR_REQ_PAY_BUDGET A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
6470
		OPEN CURS_TRADE
6471
			FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE,@GD_ID
6472
			WHILE @@FETCH_STATUS = 0
6473
			BEGIN
6474
				IF(@REQ_TYPE <> 'P')
6475
				BEGIN
6476
					SET @INDEX = @INDEX +1
6477
					--IF(EXISTS(SELECT * FROM CM_GOODS WHERE GD_ID =@GD_ID AND GD_TYPE_ID ='NS'))
6478
					--BEGIN
6479
					--	SET @AMT_EXE_REMAIN =(SELECT A.AMT_APP - A.AMT_EXE  FROM PL_TRADEDETAIL A WHERE A.TRADE_ID = @TRADED_ID)
6480
					--	 --KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
6481
					--	IF((@AMT_EXE_REMAIN -@AMT_EXE)<0)
6482
					--	BEGIN
6483
					--		ROLLBACK TRANSACTION
6484
					--		SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách sử dụng thực tế đã vượt mức ngân sách sử dụng còn lại: '+ FORMAT(@AMT_EXE_REMAIN,'#,#', 'vi-VN')  ErrorDesc
6485
					--		RETURN '-1'
6486
					--	END
6487
					--END
6488
				END
6489
				UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE*(SELECT TOP 1 RATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)
6490
				WHERE TRADE_ID =@TRADED_ID
6491
				FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE,@GD_ID
6492
			END
6493
		CLOSE CURS_TRADE
6494
		DEALLOCATE CURS_TRADE
6495
		----
6496
		IF(@REQ_TYPE ='I')
6497
		BEGIN
6498
		DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_USE,A.AMT_ADD,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_REQ_PAY_ID
6499
		OPEN CURS
6500
			FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
6501
			WHILE @@FETCH_STATUS = 0
6502
			BEGIN
6503
				SET @INDEX_AD = @INDEX_AD +1
6504
				 --KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
6505
				IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)<=0)
6506
				BEGIN
6507
					ROLLBACK TRANSACTION
6508
					SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc
6509
					RETURN '-1'
6510
				END
6511
				UPDATE TR_REQ_ADVANCE_PAYMENT
6512
				SET PAY_AMT = ISNULL(PAY_AMT,0)+@AMT_PAY +@AMT_REVERT-@AMT_ADD WHERE REQ_PAY_ID=@PAY_ADVANCE_ID
6513
				-- NEU HOAN UNG PDN TAM UNG HD DINH KI THI CUNG PHAI UPDATE
6514
				--UPDATE TR_REQ_PAY_PERIOD SET PROCESS ='2' WHERE REQ_PAY_ID =@PAY_ADVANCE_ID 
6515
				UPDATE TR_REQ_PAY_SCHEDULE SET PROCESS ='2' WHERE REQ_PAY_ID =@PAY_ADVANCE_ID
6516

    
6517
				-- UPDATE PDN TAM UNG THANH PROCESS = 2 ==> DA HOAN UNG
6518
				DECLARE @PAY_AMOUNT_I DECIMAL(18,0),@PAY_DT_I DATETIME,@l_CONTRACT_ID_I VARCHAR(15), @OLD_INDEX_I DECIMAL(18, 0), @NEW_INDEX_I DECIMAL(18, 0), @PARENT_ID_I VARCHAR(15),  
6519
				@PAY_PHASE_I VARCHAR(15), @AD_PAY_ID_I VARCHAR(15), @PROCESS_I VARCHAR(15), @REASON_TTDK_I VARCHAR(15)
6520
				DECLARE CURS_PERIOD_I CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.AD_PAY_ID,A.PROCESS,A.PARENT_ID,A.REASON, A.OLD_INDEX, A.NEW_INDEX FROM TR_REQ_PAY_PERIOD A  WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID
6521
				OPEN CURS_PERIOD_I
6522
				FETCH NEXT FROM CURS_PERIOD_I INTO @PAY_AMOUNT_I ,@PAY_DT_I ,@l_CONTRACT_ID_I,@PAY_PHASE_I,@AD_PAY_ID_I, @PROCESS_I,@PARENT_ID_I,@REASON_TTDK_I, @OLD_INDEX_I, @NEW_INDEX_I
6523
				WHILE @@FETCH_STATUS = 0
6524
				BEGIN
6525
					UPDATE TR_REQ_PAY_PERIOD SET PROCESS ='2' WHERE (PERIOD_ID =@PARENT_ID_I OR AD_PAY_ID =@PARENT_ID_I) AND PAY_TYPE ='ADV_PAY' 
6526
					AND PAY_PHASE = @PAY_PHASE_I AND CONTRACT_ID = @l_CONTRACT_ID_I AND OLD_INDEX = @OLD_INDEX_I AND NEW_INDEX = @NEW_INDEX_I
6527
				IF @@Error <> 0 GOTO ABORT
6528
				FETCH NEXT FROM CURS_PERIOD_I INTO @PAY_AMOUNT_I ,@PAY_DT_I ,@l_CONTRACT_ID_I,@PAY_PHASE_I,@AD_PAY_ID_I, @PROCESS_I,@PARENT_ID_I,@REASON_TTDK_I, @OLD_INDEX_I, @NEW_INDEX_I
6529
				END
6530
				CLOSE CURS_PERIOD_I
6531
				DEALLOCATE CURS_PERIOD_I
6532

    
6533
			FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
6534
			END
6535
		CLOSE CURS
6536
		DEALLOCATE CURS
6537
		END
6538
		-- KIEM TRA NEU LA THANH TOAN PO
6539
		ELSE IF((@REQ_TYPE ='P' AND ((SELECT IS_PERIOD FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) <>'Y' OR (SELECT IS_PERIOD FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) IS NULL )) OR (@REQ_TYPE ='I'))
6540
		BEGIN
6541
			DECLARE @PROCESS VARCHAR(15), @PDN_TAM_UNG VARCHAR(15), @SO_TIEN_TAM_UNG DECIMAL(18,0)
6542
			DECLARE CURS_AD CURSOR FOR SELECT A.SCHEDULE_ID,A.AMT_PAY_DO,A.PAY_ID,A.PAY_PHASE,A.AMT_ADVANCE,A.AMT_PAY_REAL, A.AMT_REMAIN,A.REF_ID,A.PROCESS
6543
			FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
6544
			OPEN CURS_AD
6545
			FETCH NEXT FROM CURS_AD INTO @SCHEDULE_ID,@AMT_PAY,@PAY_ID,@PAY_PHASE,@AMT_ADVANCE,@AMT_PAY_REAL, @AMT_REMAIN,@REF_ID,@PROCESS
6546
			WHILE @@FETCH_STATUS = 0
6547
			BEGIN
6548
				SET @INDEX1 = @INDEX1 +1
6549
				-- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
6550
				--IF((SELECT MIN(A.AMT_REMAIN) FROM TR_REQ_PAY_SCHEDULE A WHERE A.PAY_ID = @PAY_ID GROUP BY A.PAY_ID )=0)
6551
				--BEGIN
6552
				--	ROLLBACK TRANSACTION
6553
				--	SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX1)+ N':Kì '+ @PAY_PHASE+N' đã thanh toán xong'  ErrorDesc
6554
				--	RETURN '-1'
6555
				--END
6556
					IF(@AMT_ADVANCE >0 AND @AMT_PAY=0)
6557
					BEGIN
6558
						UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCHEDULE_ID
6559
					END
6560
					ELSE IF(@AMT_PAY_REAL>0)
6561
					BEGIN
6562
						UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCHEDULE_ID
6563
					END
6564
					ELSE IF(@AMT_PAY=0 AND @AMT_ADVANCE =0 AND @AMT_PAY_REAL =0)
6565
					BEGIN
6566
						UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCHEDULE_ID
6567
					END
6568
					ELSE IF(@AMT_REMAIN =0)
6569
					BEGIN
6570
						UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='TTX' WHERE SCHEDULE_ID=@SCHEDULE_ID
6571
					END
6572
					-- HOAN TAM UNG 100% CHO 1 DOT THANH TOAN PO NAO DO
6573
					IF(@PROCESS ='2')
6574
					BEGIN
6575
						SET @PDN_TAM_UNG = (SELECT TOP 1 REQ_PAY_ID FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID)
6576
						SET @SO_TIEN_TAM_UNG =(SELECT TOP 1 AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID)
6577
						UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT =ISNULL(PAY_AMT,0) + @SO_TIEN_TAM_UNG WHERE REQ_PAY_ID =@PDN_TAM_UNG
6578
						-- CAP NHAT DOT TAM UNG VE TINH TRANG LA DA HOAN TAM UNG
6579
						UPDATE TR_REQ_PAY_SCHEDULE SET PROCESS ='2' WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' AND REQ_PAY_ID=@PDN_TAM_UNG
6580
					END
6581
					IF(@PROCESS ='0')
6582
					BEGIN
6583
						SET @PDN_TAM_UNG = (SELECT TOP 1 REQ_PAY_ID FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID)
6584
						SET @SO_TIEN_TAM_UNG =(SELECT TOP 1 AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID)
6585
						UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT =ISNULL(PAY_AMT,0) + @SO_TIEN_TAM_UNG WHERE REQ_PAY_ID =@PDN_TAM_UNG
6586
						-- CAP NHAT DOT TAM UNG VE TINH TRANG LA DA HOAN TAM UNG
6587
						UPDATE TR_REQ_PAY_SCHEDULE SET PROCESS ='2' WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' AND REQ_PAY_ID=@PDN_TAM_UNG
6588
					END
6589
				--UPDATE TR_REQ_ADVANCE_PAYMENT
6590
				--SET PAY_AMT = ISNULL(PAY_AMT,0)+@AMT_PAY
6591

    
6592
				FETCH NEXT FROM CURS_AD INTO @SCHEDULE_ID,@AMT_PAY,@PAY_ID,@PAY_PHASE,@AMT_ADVANCE,@AMT_PAY_REAL, @AMT_REMAIN,@REF_ID,@PROCESS
6593
			END
6594
			CLOSE CURS_AD
6595
			DEALLOCATE CURS_AD
6596

    
6597
			DECLARE  @IS_CLOSED VARCHAR(1)
6598
			DECLARE CURS_PO CURSOR FOR SELECT A.REF_ID, A.IS_CLOSED FROM TR_REQ_ADVANCE_DT A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
6599
			OPEN CURS_PO
6600
			FETCH NEXT FROM CURS_PO INTO  @REF_ID , @IS_CLOSED 
6601
			WHILE @@FETCH_STATUS = 0
6602
			BEGIN -- BAT DAU KIEM TRA DONG PO
6603
				IF(@IS_CLOSED ='Y')
6604
				BEGIN
6605
					IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@REF_ID))
6606
					BEGIN
6607
						UPDATE TR_CONTRACT SET IS_CLOSED='Y' WHERE CONTRACT_ID =@REF_ID
6608
					END
6609
					ELSE
6610
					BEGIN
6611
						UPDATE TR_PO_MASTER SET IS_CLOSED='Y' WHERE PO_ID =@REF_ID
6612
					END
6613
				END
6614
				ELSE
6615
				BEGIN
6616
					DECLARE @TOAL_PAY_REAL DECIMAL(18,2) =0,@TOAL_PAY_DK DECIMAL(18,2) =0, @TOTAL_AMT_BACK DECIMAL(18,2)
6617
					-- TONG SO TIEN THANH TOAN VA HOAN UNG
6618
					SET @TOAL_PAY_REAL =(SELECT SUM(AMT_PAY_REAL) FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID=@REF_ID)
6619
					-- @TOTAL_AMT_BACK: TONG SO TIEN CON LAI CAN THANH TOAN
6620
					SET @TOTAL_AMT_BACK =(SELECT SUM(AMT_REMAIN) FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID=@REF_ID AND REQ_ADV_ID IS NOT NULL)
6621
					IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@REF_ID))
6622
					BEGIN
6623
						-- @TOAL_PAY_DK: TONG SO TIEN TAT CA KY THANH TOAN
6624
						SET @TOAL_PAY_DK =(SELECT SUM(AMOUNT) FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID=@REF_ID)
6625
						IF((@TOAL_PAY_DK-@TOAL_PAY_REAL-@TOTAL_AMT_BACK)=0)
6626
						BEGIN
6627
							UPDATE TR_CONTRACT SET IS_CLOSED='Y' WHERE CONTRACT_ID =@REF_ID
6628
						END
6629
					END
6630
					BEGIN
6631
						SET @TOAL_PAY_DK =(SELECT SUM(AMOUNT) FROM TR_PO_PAYMENT WHERE PO_ID=@REF_ID)
6632
						IF((@TOAL_PAY_DK- @TOAL_PAY_REAL-@TOTAL_AMT_BACK)=0)
6633
						BEGIN
6634
							UPDATE TR_PO_MASTER SET IS_CLOSED='Y' WHERE PO_ID =@REF_ID
6635
						END
6636
					END
6637
				END
6638
				FETCH NEXT FROM CURS_PO INTO  @REF_ID , @IS_CLOSED
6639
			END -- KET THUC KIEM TRA DONG PO
6640
			CLOSE CURS_PO
6641
			DEALLOCATE CURS_PO
6642

    
6643
		END -- KET THUC KIEM TRA NEU LA THANH TOAN PO
6644

    
6645
		--- KIEM TRA NEU LA THANH TOAN CAC HOP DONG DINH KI
6646
		ELSE IF((@REQ_TYPE ='P' AND (SELECT IS_PERIOD FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='Y') OR (@REQ_TYPE ='I'))
6647
		BEGIN
6648
			UPDATE TR_REQ_PAY_PERIOD SET PAY_DT_REAL = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
6649
			DECLARE @PAY_AMOUNT DECIMAL(18,0),@PAY_DT DATETIME,@l_CONTRACT_ID VARCHAR(15), @OLD_INDEX DECIMAL(18, 0), @NEW_INDEX DECIMAL(18, 0)
6650
			DECLARE CURS_PERIOD CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.AD_PAY_ID,A.PROCESS,A.PARENT_ID,A.REASON, A.OLD_INDEX, A.NEW_INDEX FROM TR_REQ_PAY_PERIOD A  WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID
6651
			OPEN CURS_PERIOD
6652
			FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@PAY_PHASE,@AD_PAY_ID, @PROCESS,@PARENT_ID,@REASON_TTDK, @OLD_INDEX, @NEW_INDEX
6653
			WHILE @@FETCH_STATUS = 0
6654
			BEGIN
6655
				IF(@PROCESS ='1')
6656
				BEGIN
6657
					DECLARE @l_PAY_ID VARCHAR(15)
6658
					EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
6659
					IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
6660
					INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
6661
					VALUES(@PAY_AMOUNT,CONVERT(DATE,@PAY_DT,103), 
6662
					@l_PAY_ID ,@l_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATE,@PAY_DT,103),100,@PAY_AMOUNT,'1',@REASON_TTDK ,'1' ,@p_MAKER_ID ,GETDATE() ,'A' ,@p_CHECKER_ID_KT,GETDATE())
6663
				END
6664
				ELSE
6665
				BEGIN
6666
					IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID =''))
6667
					BEGIN
6668
						ROLLBACK TRANSACTION
6669
						SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc
6670
						RETURN '-1'
6671
					END
6672
					UPDATE TR_REQ_PAY_PERIOD SET PROCESS ='2' WHERE (PERIOD_ID =@PARENT_ID OR AD_PAY_ID =@PARENT_ID) AND PAY_TYPE ='ADV_PAY' AND PAY_PHASE = @PAY_PHASE AND CONTRACT_ID = @l_CONTRACT_ID AND OLD_INDEX = @OLD_INDEX AND NEW_INDEX = @NEW_INDEX
6673
					UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT, 0) + @PAY_AMOUNT WHERE REQ_PAY_ID =@AD_PAY_ID
6674
				END
6675
			IF @@Error <> 0 GOTO ABORT
6676
			FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@PAY_PHASE,@AD_PAY_ID, @PROCESS,@PARENT_ID,@REASON_TTDK, @OLD_INDEX, @NEW_INDEX
6677
			END
6678
			CLOSE CURS_PERIOD
6679
			DEALLOCATE CURS_PERIOD
6680
		END
6681
		---END
6682
		UPDATE TR_REQ_PAYMENT
6683
	    SET    AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT =  GETDATE()
6684
	    WHERE  REQ_PAY_ID = @p_REQ_PAY_ID
6685
		-- DOANPTT 291222: THEM LOG KPI
6686
		UPDATE TR_REQ_KPI 
6687
		SET AUTH_STATUS_KT ='A', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_CHECKER_ID_KT, REQ_STATUS = 'APP'
6688
		WHERE REQ_ID = @p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'
6689
		
6690
		---UPDATE DETAIL
6691
		UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS_KT='A',CHECKER_ID_KT =@p_CHECKER_ID_KT,APPROVE_DT_KT = GETDATE()
6692
		WHERE PAY_ID =@p_REQ_PAY_ID
6693
		-- UPDATE SCHEDULE
6694
		UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
6695
		-- UPDATE PERIOD
6696
		UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
6697
		-- INSERT VAO PL_PROCESS
6698
	   INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
6699
	   VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm soát viên phê duyệt phiếu',N'Kế toán duyệt phiếu')
6700
		IF @@Error <> 0 GOTO ABORT
6701
	   UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TYPE_JOB ='KS' AND LEVEL_JOB =@LEVEL_JOB
6702
			--thieuvq ban vao core - 171219 BEGIN 
6703
			DECLARE @MAKER VARCHAR(15) = (SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)
6704
			DECLARE @RES VARCHAR(10)
6705
			--- BAN BUT TOAN VAO CORE
6706
			EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @p_REQ_PAY_ID,@MAKER,@p_CHECKER_ID_KT, @RES OUT 
6707
			--END
6708
		END
6709
		ELSE
6710
		BEGIN
6711
			-- CAP NHAT C CHO CAP CHA
6712
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_CHECKER_ID_KT
6713
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
6714
			SELECT '2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Xác nhận phiếu thành công' ErrorDesc
6715
			RETURN '2'
6716
			
6717
		END
6718
		
6719
COMMIT TRANSACTION
6720
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt thành công!' ErrorDesc
6721
		RETURN '0'
6722
ABORT:
6723
BEGIN
6724
		ROLLBACK TRANSACTION
6725
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
6726
		RETURN '-1'
6727
END
6728
GO
6729

    
6730
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Appr]
6731
--Luanlt 2019/17/10 - Sửa params
6732
@p_REQ_PAY_ID	varchar(15)= NULL,
6733
@p_CHECKER_ID_KT	varchar(15)	= NULL,
6734
@p_AUTH_STATUS_KT VARCHAR(10) = NULL
6735
AS
6736
	
6737
-- BEGIN VALIDATE
6738
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID_KT = @p_CHECKER_ID_KT AND REQ_PAY_ID =@p_REQ_PAY_ID)
6739
	BEGIN
6740
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này! Giao dịch viên không có quyền duyệt phiếu đề nghị tạm ứng' ErrorDesc
6741
		RETURN '-1'
6742
	END
6743
	IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID_KT AND TYPE_JOB = 'KS'))
6744
	BEGIN
6745
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được kiểm soát viên khác xử lý' ErrorDesc
6746
		RETURN '-1'
6747
	END
6748
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
6749
	BEGIN
6750
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
6751
		RETURN '-1'
6752
	END
6753
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
6754
	BEGIN
6755
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc
6756
		RETURN '-1'
6757
	END
6758
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
6759
	BEGIN
6760
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc
6761
		RETURN '-1'
6762
	END
6763
-- CHAN CUOI
6764
	IF (EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT <> 'P' AND AUTH_STATUS_KT <> 'S' AND REQ_PAY_ID =@p_REQ_PAY_ID))
6765
	BEGIN
6766
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc
6767
		RETURN '-1'
6768
	END
6769
-- END VALIDATE
6770

    
6771
	DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
6772
	SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB='KS')
6773
	SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
6774
BEGIN TRANSACTION
6775
		IF(@LEVEL_JOB='1')
6776
		BEGIN
6777
			UPDATE TR_REQ_ADVANCE_PAYMENT
6778
			SET  AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT =  GETDATE()
6779
			WHERE  REQ_PAY_ID = @p_REQ_PAY_ID
6780
			-- DOANPTT 291222: THEM LOG KPI
6781
			UPDATE TR_REQ_KPI 
6782
			SET AUTH_STATUS_KT ='A', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_CHECKER_ID_KT, REQ_STATUS = 'APP'
6783
			WHERE REQ_ID = @p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'
6784
			-- UPDATE LICH THANH TOAN
6785
			UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
6786
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND (TLNAME=@p_CHECKER_ID_KT OR TYPE_JOB ='KS')
6787
			-- INSERT VAO PL_PROCESS
6788
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
6789
			VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm soát viên duyệt phiếu',N'Kế toán duyệt phiếu')
6790
			--thieuvq ban vao core - 171219 BEGIN 
6791
			DECLARE @MAKER VARCHAR(15) = (SELECT MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)
6792
			DECLARE @RES VARCHAR(10)
6793
			--- BAN BUT TOAN VAO CORE
6794
			EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @p_REQ_PAY_ID,@MAKER,@p_CHECKER_ID_KT, @RES OUT 
6795
			--END
6796
			--- NEU LA TAM UNG DINH KI THI BO SUNG 1 KI THANHH TOAN
6797
			--- KIEM TRA NEU LA THANH TOAN CAC HOP DONG DINH KI
6798
		IF(((SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='P') AND (SELECT IS_PERIOD FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='Y')
6799
		BEGIN
6800
		DECLARE @PAY_AMOUNT DECIMAL(18,0),@PAY_DT DATETIME,@l_CONTRACT_ID VARCHAR(15),@p_PAY_PHASE NVARCHAR(100),@REASON_TTDK NVARCHAR(2000)
6801
		DECLARE CURS_PERIOD CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.REASON FROM TR_REQ_PAY_PERIOD A  WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID
6802
		OPEN CURS_PERIOD
6803
			FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK
6804
			WHILE @@FETCH_STATUS = 0
6805
			BEGIN
6806
				DECLARE @l_PAY_ID VARCHAR(15)
6807
				EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
6808
				IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
6809
				INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
6810
				VALUES(@PAY_AMOUNT,GETDATE(), 
6811
				@l_PAY_ID ,@l_CONTRACT_ID ,@p_PAY_PHASE ,GETDATE(),100,@PAY_AMOUNT,'2' ,@REASON_TTDK ,'1' ,@p_CHECKER_ID_KT ,GETDATE() ,'A' ,@p_CHECKER_ID_KT,GETDATE())
6812
				IF @@Error <> 0 GOTO ABORT
6813
				FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK
6814
			END
6815
		CLOSE CURS_PERIOD
6816
		DEALLOCATE CURS_PERIOD
6817
		-- CAP NHAT DETAIL
6818
		UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
6819
		END
6820
		END
6821
		ELSE
6822
		BEGIN
6823
			-- CAP NHAT C CHO CAP CHA
6824
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_CHECKER_ID_KT
6825
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
6826
			COMMIT TRANSACTION
6827
			SELECT '2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Xác nhận phiếu thành công' ErrorDesc
6828
			RETURN '2'
6829
			
6830
		END
6831
		IF @@Error <> 0 GOTO ABORT
6832
COMMIT TRANSACTION
6833
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt thành công!' ErrorDesc
6834
RETURN '0'
6835
ABORT:
6836
BEGIN
6837
		ROLLBACK TRANSACTION
6838
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
6839
		RETURN '-1'
6840
END
6841
GO
6842

    
6843
ALTER   PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_Upd]
6844
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
6845
@p_TRANSFER_DT	varchar(25)	= NULL,
6846
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
6847
@p_TRANSFER_TYPE	varchar(15)	= NULL,
6848
@p_XMP_TEMP XML = NULL
6849
AS
6850
--Validation is here
6851
/* 
6852
*/
6853
	DECLARE @LIST_REQ_PAY_ID VARCHAR(500) ='', @PROCESS_ID VARCHAR(15)
6854
	Declare @hdoc INT
6855
	Exec sp_xml_preparedocument @hdoc Output,@p_XMP_TEMP
6856
	DECLARE TransferData CURSOR FOR
6857
	SELECT *
6858
	FROM OPENXML(@hDoc,'/Root/XmlData',2)
6859
	WITH 
6860
	(
6861
		REQ_PAY_ID	varchar(15)  ,
6862
		TRANSFER_MAKER	nvarchar(15) ,
6863
		TRASFER_USER_RECIVE	varchar(15),
6864
		TRANSFER_ACTION VARCHAR(15)
6865
	)
6866
	OPEN TransferData
6867
	BEGIN TRANSACTION
6868
		DECLARE @ROLE_USER VARCHAR(20)
6869
		SET @ROLE_USER =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER)
6870
		DECLARE @REQ_PAY_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRASFER_USER_RECIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15)
6871
		DECLARE @INDEX INT =0
6872
		FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION
6873
		WHILE @@FETCH_STATUS = 0	
6874
		BEGIN
6875
				SET @PROCESS_ID ='3'
6876
				SET @INDEX = @INDEX+1
6877
				-- BO SUNG NEU TO PDN TẠM ỨNG NẾU ĐÃ ĐƯỢC TRƯỞNG VĂN PHÒNG ĐIỀU PHỐI
6878
				IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND ISNULL(AUTH_STATUS, '') <> 'A'))
6879
				BEGIN
6880
					IF EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TKTGD' AND REQ_ID =@REQ_PAY_ID AND STATUS ='C')
6881
					BEGIN
6882
						SET @PROCESS_ID ='1'
6883
						UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_XL_TLNAME =@TRASFER_USER_RECIVE WHERE REQ_PAY_ID =@REQ_PAY_ID
6884
					END
6885
					IF EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TKHDQT' AND REQ_ID =@REQ_PAY_ID AND STATUS ='C')
6886
					BEGIN
6887
						SET @PROCESS_ID ='2'
6888
						UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_HDQT_XL_TLNAME =@TRASFER_USER_RECIVE WHERE REQ_PAY_ID =@REQ_PAY_ID
6889
					END
6890
					----
6891
					IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P'  AND ROLE_USER IN ('TKTGD') AND @ROLE_USER ='TKTGD'))
6892
					BEGIN
6893
						ROLLBACK TRANSACTION
6894
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc
6895
						RETURN '-1'
6896
					END
6897
					IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P'  AND ROLE_USER IN ('TKHDQT') AND @ROLE_USER ='TKHDQT'))
6898
						BEGIN
6899
						ROLLBACK TRANSACTION
6900
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc
6901
						RETURN '-1'
6902
					END
6903
				END
6904
				IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND AUTH_STATUS = 'A'))
6905
				BEGIN
6906
					IF (EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER AND RoleName IN ('TKTGD','TKHDQT')))
6907
					BEGIN
6908
						ROLLBACK TRANSACTION
6909
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được các cấp phê duyệt hạn mức hoàn tất. Phiếu đang chờ bộ phận kế toán xử lý, vui lòng không thực hiện điều phối' ErrorDesc
6910
						RETURN '-1'
6911
					END
6912
				END
6913

    
6914
				-- doanptt 12/04/2022
6915
				IF(@TRANSFER_MAKER = @TRASFER_USER_RECIVE)
6916
				BEGIN
6917
					ROLLBACK TRANSACTION
6918
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Người điều phối không được điều phối cho chính mình. Vui lòng không thực hiện điều phối' ErrorDesc
6919
					RETURN '-1'
6920
				END
6921
				------	
6922
				DELETE FROM  PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID
6923
				-- DOANPTT 291222: THEM LOG KPI
6924
				DELETE FROM  TR_REQ_KPI WHERE REQ_ID = @REQ_PAY_ID AND ISNULL(MAKER_ID_KT, '') = ''
6925
				-- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI
6926
				IF(@TRASFER_USER_RECIVE ='' OR @TRASFER_USER_RECIVE IS NULL)
6927
				BEGIN
6928
					ROLLBACK TRANSACTION
6929
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Nhân viên được giao xử lý không được phép để trống' ErrorDesc
6930
					RETURN '-1'
6931
				END
6932
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A'))
6933
				BEGIN
6934
					ROLLBACK TRANSACTION
6935
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán duyệt' ErrorDesc
6936
					RETURN '-1'
6937
				END
6938
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S'))
6939
				BEGIN
6940
					ROLLBACK TRANSACTION
6941
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đang được đề xuất từ  chối và KSV đang xem xét' ErrorDesc
6942
					RETURN '-1'
6943
				END
6944
				IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S'))
6945
				BEGIN
6946
					ROLLBACK TRANSACTION
6947
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc
6948
					RETURN '-1'
6949
				END
6950
				IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A'))
6951
				BEGIN
6952
					ROLLBACK TRANSACTION
6953
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán duyệt' ErrorDesc
6954
					RETURN '-1'
6955
				END
6956
				IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS')
6957
				BEGIN
6958
					ROLLBACK TRANSACTION
6959
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc
6960
					RETURN '-1'
6961
				END
6962
				IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL')
6963
				BEGIN
6964
					ROLLBACK TRANSACTION
6965
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc
6966
					RETURN '-1'
6967
				END
6968
				IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS')
6969
				BEGIN
6970
					ROLLBACK TRANSACTION
6971
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc
6972
					RETURN '-1'
6973
				END
6974
				IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL')
6975
				BEGIN
6976
					ROLLBACK TRANSACTION
6977
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc
6978
					RETURN '-1'
6979
				END
6980
				--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
6981
				--BEGIN
6982
				--	ROLLBACK TRANSACTION
6983
				--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc
6984
				--	RETURN '-1'
6985
				--END
6986
				--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
6987
				--BEGIN
6988
				--	ROLLBACK TRANSACTION
6989
				--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc
6990
				--	RETURN '-1'
6991
				--END
6992
				--IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL))
6993
				--BEGIN
6994
				--	ROLLBACK TRANSACTION
6995
				--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán cập nhật thông tin' ErrorDesc
6996
				--	RETURN '-1'
6997
				--END
6998
				IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRANSFER_MAKER))
6999
				BEGIN
7000
					INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT)
7001
					VALUES (@REQ_PAY_ID,@PROCESS_ID,@TRANSFER_MAKER,'KS',CONVERT(VARCHAR(5),'1'),'P','1', GETDATE())
7002
				END
7003
				-- KHAI BAO MAX LEVEL
7004
				DECLARE @MAX_LEVEL VARCHAR(5), @NEXT_LEVEL INT,  @PREV_LEVEL INT
7005
				SET @MAX_LEVEL= (SELECT MAX(LEVEL_JOB) FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_PAY_ID)
7006
				SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1
7007
				SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1
7008
				IF(@TRANSFER_ACTION ='XL')
7009
				BEGIN
7010
					--UPDATE TR_REQ_ADVANCE_PAYMENT SET 
7011
					--AUTH_STATUS_KT ='U',
7012
					--TRANSFER_DT = CONVERT(DATE,GETDATE(),103),
7013
					--TRANSFER_MAKER = @TRANSFER_MAKER,
7014
					--TRASFER_USER_RECIVE = @TRASFER_USER_RECIVE
7015
					--WHERE REQ_PAY_ID =@REQ_PAY_ID
7016
					IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID  AND TYPE_JOB =@TRANSFER_ACTION))
7017
					BEGIN
7018
						INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT)
7019
						VALUES (@REQ_PAY_ID,@PROCESS_ID,@TRASFER_USER_RECIVE,'XL',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE())
7020
						INSERT INTO PL_PROCESS VALUES (@REQ_PAY_ID,'TRANSF',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' +@TRASFER_USER_RECIVE,N'Điều phối thanh toán/ tạm ứng')
7021

    
7022
						-- DOANPTT 291222: THEM LOG KPI
7023
						INSERT INTO TR_REQ_KPI(KPI_TYPE, REQ_TYPE, REQ_STATUS, REQ_ID, REQ_REASON, CORE_NOTE, AUTH_STATUS_KT, TRANSFER_DT, MAKER_ID_KT, CREATE_DT_KT, CHECKER_ID_KT, APPROVE_DT_KT) 
7024
						VALUES ('PAY', 'TR_REQ_PAYMENT', NULL, @REQ_PAY_ID, NULL, NULL, 'U', GETDATE(), NULL, NULL, NULL, NULL )
7025
					END
7026
					ELSE
7027
					BEGIN
7028
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRASFER_USER_RECIVE WHERE REQ_ID =@REQ_PAY_ID  AND TYPE_JOB =@TRANSFER_ACTION
7029
					END
7030
					-- UPDATE BUOC TRUOC DO VE P
7031
					--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID  AND LEVEL_JOB =@MAX_LEVEL
7032
				END
7033
				ELSE
7034
				BEGIN
7035
					IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID  AND TYPE_JOB =@TRANSFER_ACTION))
7036
					BEGIN
7037
						INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT)
7038
						VALUES (@REQ_PAY_ID,@PROCESS_ID,@TRASFER_USER_RECIVE,'KS',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE())
7039
					END
7040
					ELSE
7041
					BEGIN
7042
						UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID  AND TLNAME =@TRASFER_USER_RECIVE
7043
					END
7044
					-- UPDATE BUOC TRUOC DO VE P
7045
					--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID  AND LEVEL_JOB =@MAX_LEVEL
7046
				END
7047
			--LUCTV - 06042021 BO SUNG KHI DIEU PHOI XONG CAP NHAT NGAY DIEU PHOI VAO BANG MASTER THANH TOAN / TAM UNG
7048
			IF(@p_TRANSFER_TYPE='A')
7049
			BEGIN
7050
				UPDATE TR_REQ_ADVANCE_PAYMENT SET 
7051
				AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE()
7052
				WHERE REQ_PAY_ID =@REQ_PAY_ID
7053
			END
7054
			ELSE
7055
			BEGIN
7056
				UPDATE TR_REQ_PAYMENT SET 
7057
				AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE()
7058
				WHERE REQ_PAY_ID =@REQ_PAY_ID	
7059
			END
7060
			SET  @LIST_REQ_PAY_ID = @LIST_REQ_PAY_ID+','+@REQ_PAY_ID
7061
		IF @@ERROR <> 0 GOTO ABORT
7062
		FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION
7063
		END
7064
	CLOSE TransferData
7065
	DEALLOCATE TransferData
7066
		IF @@Error <> 0 GOTO ABORT
7067
COMMIT TRANSACTION
7068
SELECT '0' as Result, @LIST_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
7069
RETURN '0'
7070
ABORT:
7071
BEGIN
7072
		ROLLBACK TRANSACTION
7073
		CLOSE TransferData
7074
		DEALLOCATE TransferData
7075
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
7076
		RETURN '-1'
7077
End
7078
GO
7079

    
7080
ALTER PROC [dbo].[rpt_TR_REQ_PAY_KPI_Report]
7081
@p_TYPE_REPORT VARCHAR(250) = NULL,
7082
@p_ROLE VARCHAR(20) = NULL,
7083
@p_MAKER_ID VARCHAR(20) = NULL,
7084
@p_USER_LOGIN VARCHAR(50) = NULL,
7085
@p_FRM_DATE VARCHAR(20) = NULL,
7086
@p_TO_DATE VARCHAR(20) = NULL
7087
AS
7088
BEGIN
7089

    
7090
	-- Get Role
7091
	DECLARE @tbl_GDV TABLE(TLNAME VARCHAR(15))
7092
	DECLARE @tbl_KSV TABLE(TLNAME VARCHAR(15))
7093
	DECLARE @tbl_ALL TABLE(TLNAME VARCHAR(15))
7094
	insert into @tbl_GDV  SELECT TLNANME  FROM TL_USER WHERE RoleName = 'GDV'
7095
	insert into @tbl_KSV  SELECT TLNANME  FROM TL_USER WHERE RoleName = 'KSV'
7096
	insert into @tbl_ALL  SELECT TLNANME  FROM TL_USER WHERE RoleName = 'GDV' OR RoleName = 'KSV'
7097

    
7098
	DECLARE @p_FROM_DT DATE, @p_TO_DT DATE
7099
	SET @p_FROM_DT =ISNULL(CONVERT(DATE,@p_FRM_DATE,103),'')
7100
	SET @p_TO_DT =CONVERT(DATE,@p_TO_DATE,103)
7101
	print '@p_FROM_DT: ' + CONVERT(VARCHAR(50),@p_FROM_DT)
7102
	print '@p_TO_DT: ' + CONVERT(VARCHAR(50),@p_TO_DT)
7103

    
7104
	IF(@p_ROLE = 'GDV')
7105
	BEGIN
7106
		IF (@p_TYPE_REPORT='ASS')
7107
		BEGIN
7108
			SELECT ADDNEW_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7109
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7110
			MAKER_ID_KT AS GDV,
7111
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7112
			CHECKER_ID_KT AS KSV,
7113
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7114
			FROM ASS_ADDNEW A
7115
			WHERE 1=1
7116
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7117
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7118
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7119
			UNION
7120
			SELECT USER_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7121
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7122
			MAKER_ID_KT AS GDV,
7123
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7124
			CHECKER_ID_KT AS KSV,
7125
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7126
			FROM dbo.ASS_USE_MULTI_MASTER A
7127
			WHERE 1=1
7128
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7129
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7130
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7131
			UNION
7132
			SELECT TRANS_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7133
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7134
			MAKER_ID_KT AS GDV,
7135
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7136
			CHECKER_ID_KT AS KSV,
7137
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7138
			FROM dbo.ASS_TRANSFER_MULTI_MASTER A
7139
			WHERE 1=1
7140
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7141
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7142
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7143
			UNION
7144
			SELECT COL_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7145
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7146
			MAKER_ID_KT AS GDV,
7147
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7148
			CHECKER_ID_KT AS KSV,
7149
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7150
			FROM dbo.ASS_COLLECT_MULTI_MASTER A
7151
			WHERE 1=1
7152
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7153
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7154
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7155
			UNION
7156
			SELECT LIQ_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7157
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7158
			MAKER_ID_KT AS GDV,
7159
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7160
			CHECKER_ID_KT AS KSV,
7161
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7162
			FROM dbo.ASS_LIQUIDATION A
7163
			WHERE 1=1 
7164
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7165
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7166
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7167
		END
7168
		ELSE IF (@p_TYPE_REPORT='MW')
7169
		BEGIN
7170
			SELECT A.IN_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7171
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7172
			A.MAKER_ID_KT AS GDV, 
7173
			CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7174
			CHECKER_ID_KT AS KSV,
7175
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7176
			FROM MW_IN_MASTER A
7177
			WHERE 1=1
7178
			AND A.AUTH_STATUS ='A'
7179
			AND (	((ISNULL(@p_FROM_DT, '') = '' OR A.CREATE_DT_KT >=@p_FROM_DT ) AND A.CREATE_DT_KT <=@p_TO_DT)
7180
					OR (( ISNULL(@p_FROM_DT, '') = '' OR A.APPROVE_DT_KT >=@p_FROM_DT) AND A.APPROVE_DT_KT <=@p_TO_DT)
7181
				)
7182
			--AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103))
7183
			--AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103))
7184
			AND A.MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7185
			AND (ISNULL(A.MAKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7186
			AND (	(@p_ROLE = 'GDV' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') 
7187
					OR (@p_ROLE = 'KSV' AND A.AUTH_STATUS_KT IN ('A')) 
7188
					OR (ISNULL(@p_ROLE, '') = '' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') 
7189
				)
7190
			UNION
7191
			SELECT OUT_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7192
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7193
			A.KT_MAKER_ID AS GDV, 
7194
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7195
			KT_CHECKER_ID AS KSV, 
7196
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7197
			FROM MW_OUT A
7198
			WHERE 1=1 
7199
			AND A.AUTH_STATUS ='A'
7200
			AND (	((ISNULL(@p_FROM_DT, '') = '' OR A.KT_CREATE_DT >=@p_FROM_DT) AND A.KT_CREATE_DT <=@p_TO_DT)
7201
					OR ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_APPROVE_DT >=@p_FROM_DT) AND A.KT_APPROVE_DT <=@p_TO_DT)
7202
				)
7203
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7204
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7205
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7206
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7207
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7208
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7209
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7210
				)
7211
			UNION
7212
			SELECT A.TRANSFER_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7213
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7214
			A.KT_MAKER_ID AS GDV, 
7215
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7216
			A.KT_CHECKER_ID AS KSV, 
7217
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7218
			FROM MW_TRANSFER A
7219
			WHERE 1=1 
7220
			AND A.AUTH_STATUS ='A'
7221
			AND (	((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT)
7222
					OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT)
7223
				)
7224
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7225
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7226
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7227
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7228
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7229
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7230
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7231
				)
7232
			UNION
7233
			SELECT A.LIQ_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7234
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7235
			A.KT_MAKER_ID AS GDV, 
7236
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7237
			A.KT_CHECKER_ID AS KSV, 
7238
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7239
			FROM MW_LIQ_MASTER A
7240
			WHERE 1=1 
7241
			AND A.AUTH_STATUS ='A'
7242
			AND (	((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '')  AND A.KT_CREATE_DT <=@p_TO_DT)
7243
					OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT)
7244
				)
7245
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7246
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7247
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7248
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7249
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7250
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7251
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7252
				)
7253
		END
7254
		ELSE IF (@p_TYPE_REPORT='PAY')
7255
		BEGIN
7256
			SELECT H.* FROM 
7257
			(
7258
				SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG,
7259
				CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2)  AS NGAY_NHAN_PHIEU,
7260
				A.MAKER_ID_KT AS GDV,
7261
				CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET,
7262
				A.CHECKER_ID_KT AS KSV, 
7263
				CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT,
7264
				PR.ID
7265
				FROM TR_REQ_PAYMENT A
7266
				LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.PROCESS_ID = 'SUG' OR PR.PROCESS_ID = 'SEND') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_GDV)
7267
				WHERE 1=1
7268
				AND	(PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT)
7269
				AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7270

    
7271
				UNION
7272

    
7273
				SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, 
7274
				CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2)  AS NGAY_NHAN_PHIEU,
7275
				A.MAKER_ID_KT AS GDV,
7276
				CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET,
7277
				A.CHECKER_ID_KT AS KSV, 
7278
				CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT ,
7279
				PR.ID
7280
				FROM TR_REQ_ADVANCE_PAYMENT A
7281
				LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.PROCESS_ID = 'SUG' OR PR.PROCESS_ID = 'SEND') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_GDV)
7282
				WHERE 1=1
7283
				AND	(PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT)
7284
				AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7285
			) H
7286
			ORDER BY H.MA_SO_PHIEU
7287
		END
7288
	END
7289
	ELSE IF(@p_ROLE = 'KSV')
7290
	BEGIN
7291
		IF (@p_TYPE_REPORT='ASS')
7292
		BEGIN
7293
			SELECT ADDNEW_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7294
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7295
			MAKER_ID_KT AS GDV,
7296
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7297
			CHECKER_ID_KT AS KSV,
7298
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7299
			FROM ASS_ADDNEW A
7300
			WHERE 1=1
7301
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7302
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7303
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7304
			UNION
7305
			SELECT USER_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7306
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7307
			MAKER_ID_KT AS GDV,
7308
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7309
			CHECKER_ID_KT AS KSV,
7310
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7311
			FROM dbo.ASS_USE_MULTI_MASTER A
7312
			WHERE 1=1
7313
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7314
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7315
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7316
			UNION
7317
			SELECT TRANS_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7318
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7319
			MAKER_ID_KT AS GDV,
7320
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7321
			CHECKER_ID_KT AS KSV,
7322
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7323
			FROM dbo.ASS_TRANSFER_MULTI_MASTER A
7324
			WHERE 1=1
7325
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7326
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7327
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7328
			UNION
7329
			SELECT COL_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7330
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7331
			MAKER_ID_KT AS GDV,
7332
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7333
			CHECKER_ID_KT AS KSV,
7334
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7335
			FROM dbo.ASS_COLLECT_MULTI_MASTER A
7336
			WHERE 1=1
7337
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7338
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7339
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7340
			UNION
7341
			SELECT LIQ_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7342
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7343
			MAKER_ID_KT AS GDV,
7344
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7345
			CHECKER_ID_KT AS KSV,
7346
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7347
			FROM dbo.ASS_LIQUIDATION A
7348
			WHERE 1=1 
7349
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7350
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7351
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7352
		END
7353
		ELSE IF (@p_TYPE_REPORT='MW')
7354
		BEGIN
7355
			SELECT A.IN_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7356
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7357
			A.MAKER_ID_KT AS GDV, 
7358
			CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7359
			CHECKER_ID_KT AS KSV,
7360
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7361
			FROM MW_IN_MASTER A
7362
			WHERE 1=1
7363
			AND A.AUTH_STATUS ='A'
7364
			AND (	((ISNULL(@p_FROM_DT, '') = '' OR A.CREATE_DT_KT >=@p_FROM_DT ) AND A.CREATE_DT_KT <=@p_TO_DT)
7365
					OR (( ISNULL(@p_FROM_DT, '') = '' OR A.APPROVE_DT_KT >=@p_FROM_DT) AND A.APPROVE_DT_KT <=@p_TO_DT)
7366
				)
7367
			--AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103))
7368
			--AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103))
7369
			AND A.MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7370
			AND (ISNULL(A.MAKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7371
			AND (	(@p_ROLE = 'GDV' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') 
7372
					OR (@p_ROLE = 'KSV' AND A.AUTH_STATUS_KT IN ('A')) 
7373
					OR (ISNULL(@p_ROLE, '') = '' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') 
7374
				)
7375
			UNION
7376
			SELECT OUT_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7377
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7378
			A.KT_MAKER_ID AS GDV, 
7379
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7380
			KT_CHECKER_ID AS KSV, 
7381
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7382
			FROM MW_OUT A
7383
			WHERE 1=1 
7384
			AND A.AUTH_STATUS ='A'
7385
			AND (	((ISNULL(@p_FROM_DT, '') = '' OR A.KT_CREATE_DT >=@p_FROM_DT) AND A.KT_CREATE_DT <=@p_TO_DT)
7386
					OR ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_APPROVE_DT >=@p_FROM_DT) AND A.KT_APPROVE_DT <=@p_TO_DT)
7387
				)
7388
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7389
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7390
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7391
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7392
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7393
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7394
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7395
				)
7396
			UNION
7397
			SELECT A.TRANSFER_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7398
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7399
			A.KT_MAKER_ID AS GDV, 
7400
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7401
			A.KT_CHECKER_ID AS KSV, 
7402
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7403
			FROM MW_TRANSFER A
7404
			WHERE 1=1 
7405
			AND A.AUTH_STATUS ='A'
7406
			AND (	((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT)
7407
					OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT)
7408
				)
7409
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7410
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7411
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7412
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7413
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7414
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7415
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7416
				)
7417
			UNION
7418
			SELECT A.LIQ_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7419
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7420
			A.KT_MAKER_ID AS GDV, 
7421
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7422
			A.KT_CHECKER_ID AS KSV, 
7423
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7424
			FROM MW_LIQ_MASTER A
7425
			WHERE 1=1 
7426
			AND A.AUTH_STATUS ='A'
7427
			AND (	((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '')  AND A.KT_CREATE_DT <=@p_TO_DT)
7428
					OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT)
7429
				)
7430
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7431
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7432
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7433
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7434
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7435
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7436
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7437
				)
7438
		END
7439
		ELSE IF (@p_TYPE_REPORT='PAY')
7440
		BEGIN
7441
			SELECT H.* FROM 
7442
			(
7443
				SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG,
7444
				CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2)  AS NGAY_NHAN_PHIEU,
7445
				A.MAKER_ID_KT AS GDV,
7446
				CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET,
7447
				A.CHECKER_ID_KT AS KSV, 
7448
				CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT,
7449
				PR.ID
7450
				FROM TR_REQ_PAYMENT A
7451
				LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.NOTES =N'Trả về cho người tạo phiếu' OR PR.NOTES =N'Trả về' OR PR.PROCESS_ID = 'APP') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_KSV)
7452
				WHERE 1=1
7453
				AND	(PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT)
7454
				AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7455

    
7456
				UNION
7457

    
7458
				SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, 
7459
				CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2)  AS NGAY_NHAN_PHIEU,
7460
				A.MAKER_ID_KT AS GDV,
7461
				CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET,
7462
				A.CHECKER_ID_KT AS KSV, 
7463
				CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT ,
7464
				PR.ID
7465
				FROM TR_REQ_ADVANCE_PAYMENT A
7466
				LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.NOTES =N'Trả về cho người tạo phiếu' OR PR.NOTES =N'Trả về' OR PR.PROCESS_ID = 'APP') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_KSV)
7467
				WHERE 1=1
7468
				AND	(PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT)
7469
				AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7470
			) H
7471
			ORDER BY H.MA_SO_PHIEU
7472
		END
7473
	END
7474
	ELSE
7475
	BEGIN
7476
		IF (@p_TYPE_REPORT='ASS')
7477
		BEGIN
7478
			SELECT ADDNEW_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7479
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7480
			MAKER_ID_KT AS GDV,
7481
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7482
			CHECKER_ID_KT AS KSV,
7483
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7484
			FROM ASS_ADDNEW A
7485
			WHERE 1=1
7486
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7487
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7488
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7489
			UNION
7490
			SELECT USER_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7491
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7492
			MAKER_ID_KT AS GDV,
7493
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7494
			CHECKER_ID_KT AS KSV,
7495
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7496
			FROM dbo.ASS_USE_MULTI_MASTER A
7497
			WHERE 1=1
7498
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7499
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7500
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7501
			UNION
7502
			SELECT TRANS_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7503
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7504
			MAKER_ID_KT AS GDV,
7505
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7506
			CHECKER_ID_KT AS KSV,
7507
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7508
			FROM dbo.ASS_TRANSFER_MULTI_MASTER A
7509
			WHERE 1=1
7510
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7511
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7512
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7513
			UNION
7514
			SELECT COL_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7515
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7516
			MAKER_ID_KT AS GDV,
7517
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7518
			CHECKER_ID_KT AS KSV,
7519
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7520
			FROM dbo.ASS_COLLECT_MULTI_MASTER A
7521
			WHERE 1=1
7522
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7523
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7524
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7525
			UNION
7526
			SELECT LIQ_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7527
			CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7528
			MAKER_ID_KT AS GDV,
7529
			CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7530
			CHECKER_ID_KT AS KSV,
7531
			CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7532
			FROM dbo.ASS_LIQUIDATION A
7533
			WHERE 1=1 
7534
			AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT  >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') 
7535
			AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT  <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='')
7536
			AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7537
		END
7538
		ELSE IF (@p_TYPE_REPORT='MW')
7539
		BEGIN
7540
			SELECT A.IN_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7541
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7542
			A.MAKER_ID_KT AS GDV, 
7543
			CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, 
7544
			CHECKER_ID_KT AS KSV,
7545
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET
7546
			FROM MW_IN_MASTER A
7547
			WHERE 1=1
7548
			AND A.AUTH_STATUS ='A'
7549
			AND (	((ISNULL(@p_FROM_DT, '') = '' OR A.CREATE_DT_KT >=@p_FROM_DT ) AND A.CREATE_DT_KT <=@p_TO_DT)
7550
					OR (( ISNULL(@p_FROM_DT, '') = '' OR A.APPROVE_DT_KT >=@p_FROM_DT) AND A.APPROVE_DT_KT <=@p_TO_DT)
7551
				)
7552
			--AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103))
7553
			--AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103))
7554
			AND A.MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7555
			AND (ISNULL(A.MAKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7556
			AND (	(@p_ROLE = 'GDV' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') 
7557
					OR (@p_ROLE = 'KSV' AND A.AUTH_STATUS_KT IN ('A')) 
7558
					OR (ISNULL(@p_ROLE, '') = '' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') 
7559
				)
7560
			UNION
7561
			SELECT OUT_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG,
7562
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7563
			A.KT_MAKER_ID AS GDV, 
7564
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7565
			KT_CHECKER_ID AS KSV, 
7566
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7567
			FROM MW_OUT A
7568
			WHERE 1=1 
7569
			AND A.AUTH_STATUS ='A'
7570
			AND (	((ISNULL(@p_FROM_DT, '') = '' OR A.KT_CREATE_DT >=@p_FROM_DT) AND A.KT_CREATE_DT <=@p_TO_DT)
7571
					OR ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_APPROVE_DT >=@p_FROM_DT) AND A.KT_APPROVE_DT <=@p_TO_DT)
7572
				)
7573
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7574
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7575
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7576
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7577
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7578
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7579
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7580
				)
7581
			UNION
7582
			SELECT A.TRANSFER_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7583
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7584
			A.KT_MAKER_ID AS GDV, 
7585
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7586
			A.KT_CHECKER_ID AS KSV, 
7587
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7588
			FROM MW_TRANSFER A
7589
			WHERE 1=1 
7590
			AND A.AUTH_STATUS ='A'
7591
			AND (	((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT)
7592
					OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT)
7593
				)
7594
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7595
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7596
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7597
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7598
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7599
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7600
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7601
				)
7602
			UNION
7603
			SELECT A.LIQ_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, 
7604
			CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, 
7605
			A.KT_MAKER_ID AS GDV, 
7606
			CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, 
7607
			A.KT_CHECKER_ID AS KSV, 
7608
			CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET 
7609
			FROM MW_LIQ_MASTER A
7610
			WHERE 1=1 
7611
			AND A.AUTH_STATUS ='A'
7612
			AND (	((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '')  AND A.KT_CREATE_DT <=@p_TO_DT)
7613
					OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT)
7614
				)
7615
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103))
7616
			--AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103))
7617
			AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022')
7618
			AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7619
			AND (	(@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7620
					OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) 
7621
					OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') 
7622
				)
7623
		END
7624
		ELSE IF (@p_TYPE_REPORT='PAY')
7625
		BEGIN
7626
			SELECT H.* 
7627
			FROM 
7628
			(
7629
				SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG,
7630
				CONVERT(VARCHAR,MONTH(B.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(B.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(B.TRANSFER_DT),2)  AS NGAY_NHAN_PHIEU,
7631
				B.MAKER_ID_KT AS GDV,
7632
				CONVERT(VARCHAR,MONTH(B.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(B.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(B.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET,
7633
				B.CHECKER_ID_KT AS KSV, 
7634
				CONVERT(VARCHAR,MONTH(B.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(B.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(B.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, B.AUTH_STATUS_KT,
7635
				B.ID
7636
				FROM TR_REQ_PAYMENT A
7637
				JOIN TR_REQ_KPI B ON A.REQ_PAY_ID = B.REQ_ID
7638
				WHERE 1=1
7639
				AND	(CONVERT(DATE,B.TRANSFER_DT,103) >= @p_FROM_DT AND CONVERT(DATE,B.TRANSFER_DT,103) <= @p_TO_DT)
7640
				AND (ISNULL(B.MAKER_ID_KT, '') = @p_MAKER_ID OR ISNULL(B.CHECKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7641

    
7642
				UNION
7643

    
7644
				SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, 
7645
				CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2)  AS NGAY_NHAN_PHIEU,
7646
				A.MAKER_ID_KT AS GDV,
7647
				CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET,
7648
				A.CHECKER_ID_KT AS KSV, 
7649
				CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT ,
7650
				B.ID
7651
				FROM TR_REQ_ADVANCE_PAYMENT A
7652
				JOIN TR_REQ_KPI B ON A.REQ_PAY_ID = B.REQ_ID
7653
				WHERE 1=1
7654
				AND	(CONVERT(DATE,B.TRANSFER_DT,103) >= @p_FROM_DT AND CONVERT(DATE,B.TRANSFER_DT,103) <= @p_TO_DT)
7655
				AND (ISNULL(B.MAKER_ID_KT, '') = @p_MAKER_ID OR ISNULL(B.CHECKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL)
7656
			) H
7657
			ORDER BY H.MA_SO_PHIEU
7658
		END
7659
	END
7660
	
7661
END