Project

General

Profile

FN_CHECK_VALIDATE_APP.txt

Luc Tran Van, 12/06/2022 03:54 PM

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

    
14

    
15
	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 <>''))
16
	BEGIN
17
		 INSERT INTO @Results
18
			(
19
			    ERROR,
20
			    ERROR_DES
21
			)
22
			VALUES
23
			(    0, -- ERROR - bit
24
			    N''   -- ERROR_DES - nvarchar(100)
25
			)
26
		RETURN
27
	END
28

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

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

    
41

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

    
55

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

    
63

    
64

    
65
 IF(@REF_VALIDATE='PL_REQUEST_DOC')
66
 BEGIN
67
	IF(@TYPE_VALIDATE='APPNEW')
68
	BEGIN
69
		IF(@BRANCH_TYPE='HS')
70
		BEGIN
71
			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
72
			AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID ='')))
73
			BEGIN
74
				INSERT INTO @Results
75
			(
76
			    ERROR,
77
			    ERROR_DES
78
			)
79
			VALUES
80
			(    1, -- ERROR - bit
81
			    N'Vui lòng chọn hạng mục ngân sách điều chuyển'   -- ERROR_DES - nvarchar(100)
82
			 )
83
			RETURN 
84
			END
85
			ELSE
86
			BEGIN
87
						IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
88
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
89
						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)
90
            -
91
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
92
            FROM dbo.PL_REQUEST_DOC_DT DDT
93
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
94
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
95
            AND doc.REQ_ID <> @REQ_ID
96
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
97
            -
98
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
99
            FROM dbo.PL_REQUEST_TRANSFER DDT
100
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
101
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
102
            AND doc.REQ_ID <> @REQ_ID
103
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
104
						FROM dbo.PL_REQUEST_TRANSFER TB
105
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
106
						WHERE  TB.REQ_DOC_ID=@REQ_ID
107
						GROUP BY TB.FR_TRADE_ID
108
						)Temp
109
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> ''))
110
						BEGIN
111
						
112
								INSERT INTO @Results
113
							(
114
								ERROR,
115
								ERROR_DES
116
							)
117
							VALUES
118
							(    1, -- ERROR - bit
119
								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)
120
							 )
121
							RETURN 
122
						END
123
			--- LUCTV 10.11.2022 BO SUNG DIEU KIEN CA FRM_TRADE VA TO_TRADE DEU KHAC NULL MOI CHECK
124
            IF(EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @REQ_ID AND ISNULL(prt.FR_TRADE_ID,'') <> ''  AND ISNULL(prt.TO_TRADE_ID,'') <> '' AND prt.FR_TRADE_ID = prt.TO_TRADE_ID))
125
            BEGIN
126
              INSERT INTO @Results
127
							(
128
								ERROR,
129
								ERROR_DES
130
							)
131
							VALUES
132
							(    1, -- ERROR - bit
133
								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)
134
					    )
135
							RETURN 
136
            END
137
			END
138

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

    
195
        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))
196
        BEGIN
197
          INSERT INTO @Results
198
    			(
199
    				ERROR,
200
    				ERROR_DES
201
    			)
202
    			VALUES
203
    			(    1, -- ERROR - bit
204
    				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)
205
    	    )
206
    			RETURN 
207
        END
208
			END
209
		END
210
		IF(EXISTS(SELECT Temp.TRADE_ID FROM (
211
		SELECT TB.TRADE_ID,
212
    TB.TOTAL_AMT AS TOTAL_AMT_EXE,
213
		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)
214
    -
215
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
216
    FROM dbo.PL_REQUEST_DOC_DT DDT
217
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
218
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
219
    AND doc.REQ_ID <> @REQ_ID
220
    AND DDT.TRADE_ID = TB.TRADE_ID)
221
    -
222
    (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
223
    FROM dbo.PL_REQUEST_TRANSFER DDT
224
    LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
225
    WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
226
    AND doc.REQ_ID <> @REQ_ID
227
    AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN,
228
		ISNULL(PLTF.TOTAL_AMT,0) AS TOTAL_TF
229
		FROM
230
    (
231
      SELECT TEMP1.TRADE_ID, TEMP1.REQ_ID, SUM(TEMP1.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT TEMP1
232
      WHERE TEMP1.REQDT_TYPE='I' AND TEMP1.REQ_ID=@REQ_ID
233
      GROUP BY TEMP1.TRADE_ID,TEMP1.REQ_ID
234
    ) TB
235
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
236
		LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
237
		LEFT JOIN 
238
    (
239
      SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT, TEMP2.FR_TRADE_ID, TEMP2.REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER TEMP2
240
      GROUP BY TEMP2.FR_TRADE_ID, TEMP2.REQ_DOC_ID
241
		) PLTF ON PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
242
		)Temp
243
		WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN))
244
		BEGIN
245
			INSERT INTO @Results
246
			(
247
			    ERROR,
248
			    ERROR_DES
249
			)
250
			VALUES
251
			(    1, -- ERROR - bit
252
			    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)
253
			 )
254
			RETURN 
255
		END
256

    
257
		
258

    
259
		IF(EXISTS(SELECT Temp.GOODS_ID FROM (
260
		SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
261
		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 ,
262
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
263
		FROM dbo.PL_REQUEST_DOC_DT TB
264
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
265
		LEFT JOIN
266
		(
267
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID
268
			GROUP BY TO_GOOD_ID,REQ_DOC_ID 
269
		) PLTF  ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
270
		WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID
271
		GROUP BY TB.GOODS_ID
272
		)Temp
273
		WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF)))
274
		BEGIN
275
			INSERT INTO @Results
276
			(
277
			    ERROR,
278
			    ERROR_DES
279
			)
280
			VALUES
281
			(    1, -- ERROR - bit
282
			    --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)
283
				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'
284
			 )
285
			RETURN 
286
		END
287

    
288

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

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

    
528
		
529

    
530
		IF(EXISTS(SELECT Temp.GOODS_ID FROM (
531
		SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
532
		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 ,
533
		SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF
534
		FROM dbo.PL_REQUEST_DOC_DT TB
535
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
536
			LEFT JOIN
537
		(
538
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID
539
			GROUP BY TO_GOOD_ID,REQ_DOC_ID 
540
		) PLTF  ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID
541
		WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI)
542
		GROUP BY TB.GOODS_ID
543
		)Temp
544
		WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF)))
545
		BEGIN
546
			INSERT INTO @Results
547
			(
548
			    ERROR,
549
			    ERROR_DES
550
			)
551
			VALUES
552
			(    1, -- ERROR - bit
553
			    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)
554
			 )
555
			RETURN 
556
		END
557

    
558
					IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM (
559
						SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
560
						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)
561
            -
562
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
563
            FROM dbo.PL_REQUEST_DOC_DT DDT
564
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
565
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
566
            AND doc.REQ_ID <> @REQ_ID
567
            AND DDT.TRADE_ID = TB.FR_TRADE_ID)
568
            -
569
            (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
570
            FROM dbo.PL_REQUEST_TRANSFER DDT
571
            LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
572
            WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
573
            AND doc.REQ_ID <> @REQ_ID
574
            AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN 
575
						FROM dbo.PL_REQUEST_TRANSFER TB
576
						LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
577
						WHERE  TB.REQ_DOC_ID=@REQ_ID AND  TB.FR_KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) 
578
						GROUP BY TB.FR_TRADE_ID
579
						)Temp
580
						WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN))
581
						BEGIN
582
						
583
								INSERT INTO @Results
584
							(
585
								ERROR,
586
								ERROR_DES
587
							)
588
							VALUES
589
							(    1, -- ERROR - bit
590
								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)
591
							 )
592
							RETURN 
593
						END
594

    
595

    
596
	END
597
 END
598

    
599
 INSERT INTO @Results
600
			(
601
			    ERROR,
602
			    ERROR_DES
603
			)
604
			VALUES
605
			(    0, -- ERROR - bit
606
			    N''   -- ERROR_DES - nvarchar(100)
607
			)
608

    
609
RETURN 
610
END