Project

General

Profile

FN_CHECK_VALIDATE_APP.txt

Luc Tran Van, 10/21/2022 11:07 AM

 
1

    
2

    
3
ALTER FUNCTION dbo.FN_CHECK_VALIDATE_APP
4
(	
5
	-- Add the parameters for the function here
6
	@REQ_ID VARCHAR(20),
7
	@TYPE_VALIDATE VARCHAR(20),
8
	@REF_VALIDATE VARCHAR(20),
9
	@MAKER_ID VARCHAR(20),
10
	@PROCESS_ID VARCHAR(20)
11
)
12
RETURNS  @Results TABLE (ERROR BIT , ERROR_DES NVARCHAR(1000))
13
AS
14
BEGIN
15

    
16

    
17
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>''))
18
	BEGIN
19
		 INSERT INTO @Results
20
			(
21
			    ERROR,
22
			    ERROR_DES
23
			)
24
			VALUES
25
			(    0, -- ERROR - bit
26
			    N''   -- ERROR_DES - nvarchar(100)
27
			)
28
		RETURN
29
	END
30

    
31
	DECLARE @BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR(20),@BRANCH_TYPE VARCHAR(20),@ROLE_ID VARCHAR(20)
32
	DECLARE @LST_DVDM TABLE(DVDM_ID VARCHAR(20))
33
	DECLARE @LST_KHOI TABLE(KHOI_ID VARCHAR(20))
34
	SELECT @BRANCH_ID=TLSUBBRID,@BRANCH_TYPE=BRANCH_TYPE,@DEP_ID=SECUR_CODE,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@MAKER_ID
35

    
36
	IF(@ROLE_ID='TC' OR @ROLE_ID='TGD')
37
	BEGIN
38
		INSERT INTO @LST_DVDM
39
		SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD
40
	
41
		WHERE CD.IS_DVDM=1
42

    
43

    
44
		INSERT INTO @LST_KHOI
45
		SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD
46
	
47
		WHERE CD.IS_KHOI=1 
48
	END
49
	ELSE
50
	BEGIN
51
			INSERT INTO @LST_DVDM
52
			SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD
53
			LEFT JOIN dbo.PL_COSTCENTER PC ON PC.DVDM_ID=CD.DVDM_ID
54
			LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID=PC.COST_ID
55
			WHERE CD.IS_DVDM=1 AND PCDT.DEP_ID=@DEP_ID AND PCDT.BRANCH_ID=@BRANCH_ID
56

    
57

    
58
			INSERT INTO @LST_KHOI
59
			SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD
60
			LEFT JOIN dbo.PL_COSTCENTER PC ON PC.DVDM_ID=CD.DVDM_ID
61
			LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID=PC.COST_ID
62
			WHERE CD.IS_KHOI=1 AND PCDT.DEP_ID=@DEP_ID AND PCDT.BRANCH_ID=@BRANCH_ID
63
	END
64

    
65

    
66

    
67
 IF(@REF_VALIDATE='PL_REQUEST_DOC')
68
 BEGIN
69
	IF(@TYPE_VALIDATE='APPNEW')
70
	BEGIN
71
		IF(@BRANCH_TYPE='HS')
72
		BEGIN
73
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND FR_DEP_ID=@DEP_ID
74
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
75
			BEGIN
76
				INSERT INTO @Results
77
			(
78
			    ERROR,
79
			    ERROR_DES
80
			)
81
			VALUES
82
			(    1, -- ERROR - bit
83
			    N'Vui lòng chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
84
			 )
85
			RETURN 
86
			END
87
			ELSE
88
			BEGIN
89
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
90
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
91
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
92
            -
93
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
94
            FROM dbo.PL_REQUEST_DOC_DT DDT
95
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
96
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
97
            AND doc.REQ_ID <> @REQ_ID
98
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
99
            -
100
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
101
            FROM dbo.PL_REQUEST_TRANSFER DDT
102
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
103
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
104
            AND doc.REQ_ID <> @REQ_ID
105
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
106
						FROM dbo.PL_REQUEST_TRANSFER TB
107
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
108
						WHERE  TB.REQ_DOC_ID=@REQ_ID
109
						GROUP BY TB.FR_TRADE_ID
110
						)Temp
111
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> ''))
112
						BEGIN
113
						
114
								INSERT INTO @Results
115
							(
116
								ERROR,
117
								ERROR_DES
118
							)
119
							VALUES
120
							(    1, -- ERROR - bit
121
								N'Lưới điều chuyển ngân sách: Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
122
							 )
123
							RETURN 
124
						END
125

    
126
            IF(EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @REQ_ID AND prt.FR_TRADE_ID IS NOT NULL AND prt.FR_TRADE_ID = prt.TO_TRADE_ID))
127
            BEGIN
128
              INSERT INTO @Results
129
							(
130
								ERROR,
131
								ERROR_DES
132
							)
133
							VALUES
134
							(    1, -- ERROR - bit
135
								N'Lưới điều chuyển ngân sách: Không được điều chuyển ngân sách từ hạng mục ngân sách giống với hạng mục ngân sách nhận'   -- ERROR_DES - nvarchar(100)
136
					    )
137
							RETURN 
138
            END
139
			END
140

    
141
		END
142
		ELSE IF(@BRANCH_TYPE<>'HS')
143
		BEGIN
144
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID 
145
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
146
			BEGIN
147
				INSERT INTO @Results
148
			(
149
			    ERROR,
150
			    ERROR_DES
151
			)
152
			VALUES
153
			(    1, -- ERROR - bit
154
			    N'Vui lòng chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
155
			 )
156
			RETURN 
157
			END
158
			ELSE
159
			BEGIN
160
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
161
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
162
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
163
            -
164
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
165
            FROM dbo.PL_REQUEST_DOC_DT DDT
166
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
167
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
168
            AND doc.REQ_ID <> @REQ_ID
169
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
170
            -
171
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
172
            FROM dbo.PL_REQUEST_TRANSFER DDT
173
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
174
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
175
            AND doc.REQ_ID <> @REQ_ID
176
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
177
						FROM dbo.PL_REQUEST_TRANSFER TB
178
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
179
						WHERE  TB.REQ_DOC_ID=@REQ_ID
180
						GROUP BY TB.FR_TRADE_ID
181
						)Temp
182
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> ''))
183
						BEGIN
184
						
185
								INSERT INTO @Results
186
							(
187
								ERROR,
188
								ERROR_DES
189
							)
190
							VALUES
191
							(    1, -- ERROR - bit
192
								N'Lưới điều chuyển ngân sách: Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
193
							 )
194
							RETURN 
195
						END
196

    
197
        IF(EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @REQ_ID AND prt.FR_TRADE_ID IS NOT NULL AND prt.FR_TRADE_ID = prt.TO_TRADE_ID))
198
        BEGIN
199
          INSERT INTO @Results
200
    			(
201
    				ERROR,
202
    				ERROR_DES
203
    			)
204
    			VALUES
205
    			(    1, -- ERROR - bit
206
    				N'Lưới điều chuyển ngân sách: Không được điều chuyển ngân sách từ hạng mục ngân sách giống với hạng mục ngân sách nhận'   -- ERROR_DES - nvarchar(100)
207
    	    )
208
    			RETURN 
209
        END
210
			END
211
		END
212
		IF(EXISTS(SELECT Temp.TRADE_ID FROM (
213
		SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
214
		SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.TRADE_ID)
215
    -
216
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
217
    FROM dbo.PL_REQUEST_DOC_DT DDT
218
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
219
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
220
    AND doc.REQ_ID <> @REQ_ID
221
    AND DDT.TRADE_ID = TB.TRADE_ID)
222
    -
223
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
224
    FROM dbo.PL_REQUEST_TRANSFER DDT
225
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
226
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
227
    AND doc.REQ_ID <> @REQ_ID
228
    AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN,
229
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
230
		FROM dbo.PL_REQUEST_DOC_DT TB
231
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
232
		LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
233
		LEFT JOIN dbo.PL_REQUEST_TRANSFER PLTF ON PLTF.FR_BRN_ID=PM.BRANCH_ID AND PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
234
		WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID
235
		GROUP BY TB.TRADE_ID
236
		)Temp
237
		WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN))
238
		BEGIN
239
			INSERT INTO @Results
240
			(
241
			    ERROR,
242
			    ERROR_DES
243
			)
244
			VALUES
245
			(    1, -- ERROR - bit
246
			    N'Lưới hàng hóa: Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách'   -- ERROR_DES - nvarchar(100)
247
			 )
248
			RETURN 
249
		END
250

    
251
		
252

    
253
		IF(EXISTS(SELECT Temp.GOODS_ID FROM (
254
		SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
255
		SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0)) AS TOTAL_AMT_REMAIN ,
256
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
257
		FROM dbo.PL_REQUEST_DOC_DT TB
258
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
259
		LEFT JOIN
260
		(
261
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID
262
			GROUP BY TO_GOOD_ID,REQ_DOC_ID 
263
		) PLTF  ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
264
		WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID
265
		GROUP BY TB.GOODS_ID
266
		)Temp
267
		WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF)))
268
		BEGIN
269
			INSERT INTO @Results
270
			(
271
			    ERROR,
272
			    ERROR_DES
273
			)
274
			VALUES
275
			(    1, -- ERROR - bit
276
			    --N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách và số tiền điều chuyển'   -- ERROR_DES - nvarchar(100)
277
				N'Lưới hàng hóa: Số tiền ngân sách sử dụng đang vượt quá số tiền chuyển của lưới điều chuyển ngân sách'
278
			 )
279
			RETURN 
280
		END
281

    
282

    
283
		 
284
	END
285
	ELSE IF (@TYPE_VALIDATE='PDDC')
286
	BEGIN
287
		IF(@PROCESS_ID='DVDM_DC')
288
		BEGIN
289
					IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
290
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
291
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
292
            -
293
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
294
            FROM dbo.PL_REQUEST_DOC_DT DDT
295
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
296
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
297
            AND doc.REQ_ID <> @REQ_ID
298
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
299
            -
300
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
301
            FROM dbo.PL_REQUEST_TRANSFER DDT
302
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
303
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
304
            AND doc.REQ_ID <> @REQ_ID
305
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
306
						FROM dbo.PL_REQUEST_TRANSFER TB
307
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
308
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND TB.FR_DVDM_ID IN (SELECT DVDM_ID FROM @LST_DVDM)
309
						GROUP BY TB.FR_TRADE_ID
310
						)Temp
311
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
312
						BEGIN
313
								INSERT INTO @Results
314
							(
315
								ERROR,
316
								ERROR_DES
317
							)
318
							VALUES
319
							(    1, -- ERROR - bit
320
								N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
321
							 )
322
							RETURN 
323
						END
324
		END
325
		ELSE IF(@PROCESS_ID='TC')
326
		BEGIN
327
			IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
328
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
329
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
330
            -
331
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
332
            FROM dbo.PL_REQUEST_DOC_DT DDT
333
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
334
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
335
            AND doc.REQ_ID <> @REQ_ID
336
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
337
            -
338
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
339
            FROM dbo.PL_REQUEST_TRANSFER DDT
340
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
341
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
342
            AND doc.REQ_ID <> @REQ_ID
343
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
344
						FROM dbo.PL_REQUEST_TRANSFER TB
345
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
346
						WHERE  TB.REQ_DOC_ID=@REQ_ID
347
						GROUP BY TB.FR_TRADE_ID
348
						)Temp
349
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
350
						BEGIN
351
								INSERT INTO @Results
352
							(
353
								ERROR,
354
								ERROR_DES
355
							)
356
							VALUES
357
							(    1, -- ERROR - bit
358
								N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
359
							 )
360
							RETURN 
361
						END
362
		END
363
		ELSE
364
		BEGIN
365
		IF(@BRANCH_TYPE='HS')
366
		BEGIN
367
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND FR_DEP_ID=@DEP_ID
368
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
369
			BEGIN
370
				INSERT INTO @Results
371
			(
372
			    ERROR,
373
			    ERROR_DES
374
			)
375
			VALUES
376
			(    1, -- ERROR - bit
377
			    N'Chưa chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
378
			 )
379
			RETURN 
380
			END
381
			ELSE
382
			BEGIN
383
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
384
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
385
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
386
            -
387
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
388
            FROM dbo.PL_REQUEST_DOC_DT DDT
389
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
390
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
391
            AND doc.REQ_ID <> @REQ_ID
392
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
393
            -
394
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
395
            FROM dbo.PL_REQUEST_TRANSFER DDT
396
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
397
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
398
            AND doc.REQ_ID <> @REQ_ID
399
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
400
						FROM dbo.PL_REQUEST_TRANSFER TB
401
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
402
						WHERE  TB.REQ_DOC_ID=@REQ_ID
403
						GROUP BY TB.FR_TRADE_ID
404
						)Temp
405
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> ''))
406
						BEGIN
407
						
408
								INSERT INTO @Results
409
							(
410
								ERROR,
411
								ERROR_DES
412
							)
413
							VALUES
414
							(    1, -- ERROR - bit
415
								N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
416
							 )
417
							RETURN 
418
						END
419
			END
420

    
421
		END
422
		ELSE IF(@BRANCH_TYPE<>'HS')
423
		BEGIN
424
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID 
425
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
426
			BEGIN
427
				INSERT INTO @Results
428
			(
429
			    ERROR,
430
			    ERROR_DES
431
			)
432
			VALUES
433
			(    1, -- ERROR - bit
434
			    N'Chưa chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
435
			 )
436
			RETURN 
437
			END
438
			ELSE
439
			BEGIN
440
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
441
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
442
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
443
            -
444
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
445
            FROM dbo.PL_REQUEST_DOC_DT DDT
446
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
447
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
448
            AND doc.REQ_ID <> @REQ_ID
449
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
450
            -
451
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
452
            FROM dbo.PL_REQUEST_TRANSFER DDT
453
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
454
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
455
            AND doc.REQ_ID <> @REQ_ID
456
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
457
						FROM dbo.PL_REQUEST_TRANSFER TB
458
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
459
						WHERE  TB.REQ_DOC_ID=@REQ_ID
460
						GROUP BY TB.FR_TRADE_ID
461
						)Temp
462
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> ''))
463
						BEGIN
464
						
465
								INSERT INTO @Results
466
								(
467
									ERROR,
468
									ERROR_DES
469
								)
470
								VALUES
471
								(    1, -- ERROR - bit
472
									N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
473
								 )
474
								RETURN 
475
						END
476
			END
477
		END
478
		END
479
	END
480
	ELSE IF(@TYPE_VALIDATE='PDTT')
481
	BEGIN
482
		
483
		IF(EXISTS(SELECT Temp.TRADE_ID FROM (
484
		SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
485
		SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.TRADE_ID)
486
    -
487
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
488
    FROM dbo.PL_REQUEST_DOC_DT DDT
489
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
490
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
491
    AND doc.REQ_ID <> @REQ_ID
492
    AND DDT.TRADE_ID = TB.TRADE_ID)
493
    -
494
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
495
    FROM dbo.PL_REQUEST_TRANSFER DDT
496
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
497
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
498
    AND doc.REQ_ID <> @REQ_ID
499
    AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN ,
500
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
501
		FROM dbo.PL_REQUEST_DOC_DT TB
502
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
503
		LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
504
		LEFT JOIN dbo.PL_REQUEST_TRANSFER PLTF ON PLTF.FR_BRN_ID=PM.BRANCH_ID AND PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
505
		WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI)
506
		GROUP BY TB.TRADE_ID
507
		)Temp
508
		WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN))
509
		BEGIN
510
			INSERT INTO @Results
511
			(
512
			    ERROR,
513
			    ERROR_DES
514
			)
515
			VALUES
516
			(    1, -- ERROR - bit
517
			    N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách'   -- ERROR_DES - nvarchar(100)
518
			 )
519
			RETURN 
520
		END
521

    
522
		
523

    
524
		IF(EXISTS(SELECT Temp.GOODS_ID FROM (
525
		SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
526
		SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0)) AS TOTAL_AMT_REMAIN ,
527
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
528
		FROM dbo.PL_REQUEST_DOC_DT TB
529
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
530
			LEFT JOIN
531
		(
532
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID
533
			GROUP BY TO_GOOD_ID,REQ_DOC_ID 
534
		) PLTF  ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
535
		WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI)
536
		GROUP BY TB.GOODS_ID
537
		)Temp
538
		WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF)))
539
		BEGIN
540
			INSERT INTO @Results
541
			(
542
			    ERROR,
543
			    ERROR_DES
544
			)
545
			VALUES
546
			(    1, -- ERROR - bit
547
			    N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách và số tiền điều chuyển'   -- ERROR_DES - nvarchar(100)
548
			 )
549
			RETURN 
550
		END
551

    
552
					IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
553
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
554
						SUM(ROUND(ISNULL(PT.AMT_APP,0),0) +  ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) -  ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID)
555
            -
556
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
557
            FROM dbo.PL_REQUEST_DOC_DT DDT
558
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
559
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
560
            AND doc.REQ_ID <> @REQ_ID
561
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
562
            -
563
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
564
            FROM dbo.PL_REQUEST_TRANSFER DDT
565
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
566
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
567
            AND doc.REQ_ID <> @REQ_ID
568
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
569
						FROM dbo.PL_REQUEST_TRANSFER TB
570
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
571
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND  TB.FR_KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) 
572
						GROUP BY TB.FR_TRADE_ID
573
						)Temp
574
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
575
						BEGIN
576
						
577
								INSERT INTO @Results
578
							(
579
								ERROR,
580
								ERROR_DES
581
							)
582
							VALUES
583
							(    1, -- ERROR - bit
584
								N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại'   -- ERROR_DES - nvarchar(100)
585
							 )
586
							RETURN 
587
						END
588

    
589

    
590
	END
591
 END
592

    
593
 INSERT INTO @Results
594
			(
595
			    ERROR,
596
			    ERROR_DES
597
			)
598
			VALUES
599
			(    0, -- ERROR - bit
600
			    N''   -- ERROR_DES - nvarchar(100)
601
			)
602

    
603
RETURN 
604
END