Project

General

Profile

FN_CHECK_VALIDATE_APP.txt

Luc Tran Van, 08/09/2022 10:33 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(100))
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')
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')
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 AND TB.FR_BRN_ID=@BRANCH_ID AND @DEP_ID=TB.FR_DEP_ID
109
						GROUP BY TB.FR_TRADE_ID
110
						)Temp
111
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
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
			END
126

    
127
		END
128
		ELSE IF(@BRANCH_TYPE<>'HS')
129
		BEGIN
130
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID 
131
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
132
			BEGIN
133
				INSERT INTO @Results
134
			(
135
			    ERROR,
136
			    ERROR_DES
137
			)
138
			VALUES
139
			(    1, -- ERROR - bit
140
			    N'Vui lòng chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
141
			 )
142
			RETURN 
143
			END
144
			ELSE
145
			BEGIN
146
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
147
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
148
						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)
149
            -
150
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
151
            FROM dbo.PL_REQUEST_DOC_DT DDT
152
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
153
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
154
            AND doc.REQ_ID <> @REQ_ID
155
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
156
            -
157
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
158
            FROM dbo.PL_REQUEST_TRANSFER DDT
159
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
160
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
161
            AND doc.REQ_ID <> @REQ_ID
162
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
163
						FROM dbo.PL_REQUEST_TRANSFER TB
164
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
165
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID 
166
						GROUP BY TB.FR_TRADE_ID
167
						)Temp
168
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
169
						BEGIN
170
						
171
								INSERT INTO @Results
172
							(
173
								ERROR,
174
								ERROR_DES
175
							)
176
							VALUES
177
							(    1, -- ERROR - bit
178
								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)
179
							 )
180
							RETURN 
181
						END
182
			END
183
		END
184
		IF(EXISTS(SELECT Temp.TRADE_ID FROM (
185
		SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
186
		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)
187
    -
188
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
189
    FROM dbo.PL_REQUEST_DOC_DT DDT
190
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
191
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
192
    AND doc.REQ_ID <> @REQ_ID
193
    AND DDT.TRADE_ID = TB.TRADE_ID)
194
    -
195
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
196
    FROM dbo.PL_REQUEST_TRANSFER DDT
197
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
198
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
199
    AND doc.REQ_ID <> @REQ_ID
200
    AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN,
201
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
202
		FROM dbo.PL_REQUEST_DOC_DT TB
203
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
204
		LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
205
		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
206
		WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID
207
		GROUP BY TB.TRADE_ID
208
		)Temp
209
		WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN))
210
		BEGIN
211
			INSERT INTO @Results
212
			(
213
			    ERROR,
214
			    ERROR_DES
215
			)
216
			VALUES
217
			(    1, -- ERROR - bit
218
			    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)
219
			 )
220
			RETURN 
221
		END
222

    
223
		
224

    
225
		IF(EXISTS(SELECT Temp.GOODS_ID FROM (
226
		SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
227
		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 ,
228
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
229
		FROM dbo.PL_REQUEST_DOC_DT TB
230
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
231
		LEFT JOIN
232
		(
233
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID
234
			GROUP BY TO_GOOD_ID,REQ_DOC_ID 
235
		) PLTF  ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
236
		WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID
237
		GROUP BY TB.GOODS_ID
238
		)Temp
239
		WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF)))
240
		BEGIN
241
			INSERT INTO @Results
242
			(
243
			    ERROR,
244
			    ERROR_DES
245
			)
246
			VALUES
247
			(    1, -- ERROR - bit
248
			    --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)
249
				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'
250
			 )
251
			RETURN 
252
		END
253

    
254

    
255
		 
256
	END
257
	ELSE IF (@TYPE_VALIDATE='PDDC')
258
	BEGIN
259
		IF(@PROCESS_ID='DVDM_DC')
260
		BEGIN
261
					IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
262
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
263
						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)
264
            -
265
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
266
            FROM dbo.PL_REQUEST_DOC_DT DDT
267
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
268
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
269
            AND doc.REQ_ID <> @REQ_ID
270
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
271
            -
272
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
273
            FROM dbo.PL_REQUEST_TRANSFER DDT
274
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
275
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
276
            AND doc.REQ_ID <> @REQ_ID
277
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
278
						FROM dbo.PL_REQUEST_TRANSFER TB
279
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
280
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND TB.FR_DVDM_ID IN (SELECT DVDM_ID FROM @LST_DVDM)
281
						GROUP BY TB.FR_TRADE_ID
282
						)Temp
283
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
284
						BEGIN
285
								INSERT INTO @Results
286
							(
287
								ERROR,
288
								ERROR_DES
289
							)
290
							VALUES
291
							(    1, -- ERROR - bit
292
								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)
293
							 )
294
							RETURN 
295
						END
296
		END
297
		ELSE IF(@PROCESS_ID='TC')
298
		BEGIN
299
			IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
300
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
301
						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)
302
            -
303
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
304
            FROM dbo.PL_REQUEST_DOC_DT DDT
305
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
306
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
307
            AND doc.REQ_ID <> @REQ_ID
308
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
309
            -
310
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
311
            FROM dbo.PL_REQUEST_TRANSFER DDT
312
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
313
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
314
            AND doc.REQ_ID <> @REQ_ID
315
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
316
						FROM dbo.PL_REQUEST_TRANSFER TB
317
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
318
						WHERE  TB.REQ_DOC_ID=@REQ_ID
319
						GROUP BY TB.FR_TRADE_ID
320
						)Temp
321
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
322
						BEGIN
323
								INSERT INTO @Results
324
							(
325
								ERROR,
326
								ERROR_DES
327
							)
328
							VALUES
329
							(    1, -- ERROR - bit
330
								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)
331
							 )
332
							RETURN 
333
						END
334
		END
335
		ELSE
336
		BEGIN
337
		IF(@BRANCH_TYPE='HS')
338
		BEGIN
339
			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
340
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
341
			BEGIN
342
				INSERT INTO @Results
343
			(
344
			    ERROR,
345
			    ERROR_DES
346
			)
347
			VALUES
348
			(    1, -- ERROR - bit
349
			    N'Chưa chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
350
			 )
351
			RETURN 
352
			END
353
			ELSE
354
			BEGIN
355
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
356
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
357
						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)
358
            -
359
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
360
            FROM dbo.PL_REQUEST_DOC_DT DDT
361
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
362
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
363
            AND doc.REQ_ID <> @REQ_ID
364
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
365
            -
366
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
367
            FROM dbo.PL_REQUEST_TRANSFER DDT
368
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
369
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
370
            AND doc.REQ_ID <> @REQ_ID
371
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
372
						FROM dbo.PL_REQUEST_TRANSFER TB
373
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
374
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID AND @DEP_ID=TB.FR_DEP_ID
375
						GROUP BY TB.FR_TRADE_ID
376
						)Temp
377
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
378
						BEGIN
379
						
380
								INSERT INTO @Results
381
							(
382
								ERROR,
383
								ERROR_DES
384
							)
385
							VALUES
386
							(    1, -- ERROR - bit
387
								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)
388
							 )
389
							RETURN 
390
						END
391
			END
392

    
393
		END
394
		ELSE IF(@BRANCH_TYPE<>'HS')
395
		BEGIN
396
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID 
397
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
398
			BEGIN
399
				INSERT INTO @Results
400
			(
401
			    ERROR,
402
			    ERROR_DES
403
			)
404
			VALUES
405
			(    1, -- ERROR - bit
406
			    N'Chưa chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
407
			 )
408
			RETURN 
409
			END
410
			ELSE
411
			BEGIN
412
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
413
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
414
						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)
415
            -
416
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
417
            FROM dbo.PL_REQUEST_DOC_DT DDT
418
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
419
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
420
            AND doc.REQ_ID <> @REQ_ID
421
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
422
            -
423
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
424
            FROM dbo.PL_REQUEST_TRANSFER DDT
425
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
426
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
427
            AND doc.REQ_ID <> @REQ_ID
428
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
429
						FROM dbo.PL_REQUEST_TRANSFER TB
430
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
431
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID 
432
						GROUP BY TB.FR_TRADE_ID
433
						)Temp
434
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
435
						BEGIN
436
						
437
								INSERT INTO @Results
438
								(
439
									ERROR,
440
									ERROR_DES
441
								)
442
								VALUES
443
								(    1, -- ERROR - bit
444
									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)
445
								 )
446
								RETURN 
447
						END
448
			END
449
		END
450
		END
451
	END
452
	ELSE IF(@TYPE_VALIDATE='PDTT')
453
	BEGIN
454
		
455
		IF(EXISTS(SELECT Temp.TRADE_ID FROM (
456
		SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
457
		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)
458
    -
459
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
460
    FROM dbo.PL_REQUEST_DOC_DT DDT
461
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
462
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
463
    AND doc.REQ_ID <> @REQ_ID
464
    AND DDT.TRADE_ID = TB.TRADE_ID)
465
    -
466
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
467
    FROM dbo.PL_REQUEST_TRANSFER DDT
468
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
469
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
470
    AND doc.REQ_ID <> @REQ_ID
471
    AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN ,
472
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
473
		FROM dbo.PL_REQUEST_DOC_DT TB
474
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
475
		LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
476
		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
477
		WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI)
478
		GROUP BY TB.TRADE_ID
479
		)Temp
480
		WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN))
481
		BEGIN
482
			INSERT INTO @Results
483
			(
484
			    ERROR,
485
			    ERROR_DES
486
			)
487
			VALUES
488
			(    1, -- ERROR - bit
489
			    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)
490
			 )
491
			RETURN 
492
		END
493

    
494
		
495

    
496
		IF(EXISTS(SELECT Temp.GOODS_ID FROM (
497
		SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
498
		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 ,
499
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
500
		FROM dbo.PL_REQUEST_DOC_DT TB
501
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
502
			LEFT JOIN
503
		(
504
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID
505
			GROUP BY TO_GOOD_ID,REQ_DOC_ID 
506
		) PLTF  ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
507
		WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI)
508
		GROUP BY TB.GOODS_ID
509
		)Temp
510
		WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF)))
511
		BEGIN
512
			INSERT INTO @Results
513
			(
514
			    ERROR,
515
			    ERROR_DES
516
			)
517
			VALUES
518
			(    1, -- ERROR - bit
519
			    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)
520
			 )
521
			RETURN 
522
		END
523

    
524
					IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
525
						SELECT TB.FR_TRADE_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))/COUNT(TB.FR_TRADE_ID)
527
            -
528
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
529
            FROM dbo.PL_REQUEST_DOC_DT DDT
530
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
531
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
532
            AND doc.REQ_ID <> @REQ_ID
533
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
534
            -
535
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
536
            FROM dbo.PL_REQUEST_TRANSFER DDT
537
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
538
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
539
            AND doc.REQ_ID <> @REQ_ID
540
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
541
						FROM dbo.PL_REQUEST_TRANSFER TB
542
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
543
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND  TB.FR_KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) 
544
						GROUP BY TB.FR_TRADE_ID
545
						)Temp
546
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
547
						BEGIN
548
						
549
								INSERT INTO @Results
550
							(
551
								ERROR,
552
								ERROR_DES
553
							)
554
							VALUES
555
							(    1, -- ERROR - bit
556
								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)
557
							 )
558
							RETURN 
559
						END
560

    
561

    
562
	END
563
 END
564

    
565
 INSERT INTO @Results
566
			(
567
			    ERROR,
568
			    ERROR_DES
569
			)
570
			VALUES
571
			(    0, -- ERROR - bit
572
			    N''   -- ERROR_DES - nvarchar(100)
573
			)
574

    
575
RETURN 
576
END