Project

General

Profile

PL_REQ_DOC_SendApp.txt

Luc Tran Van, 03/07/2023 10:54 PM

 
1
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_SendApp]
2
@p_REQ_ID VARCHAR(20),
3
@p_PROCESS_ID VARCHAR(20),
4
@p_TLNAME VARCHAR(20),
5
@p_MAKER_ID VARCHAR(20)
6
AS
7
BEGIN TRANSACTION
8
	DECLARE @GD_TYPE_ID_NOT_VALIDATE VARCHAR(15)
9
	SET @GD_TYPE_ID_NOT_VALIDATE =(SELECT TOP 1 GD_TYPE_ID FROM CM_GOODSTYPE WHERE GD_TYPE_CODE ='OS')
10
	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (PL_BASED_ID IS  NULL OR PL_BASED_ID ='')))
11
	BEGIN
12
	-- XÁC ĐỊNH HẠN MƯC CÒN ĐỦ HAY KO
13
	--- KIEM TRA NGAN SACH LUCTV 18052020
14
	DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
15
	SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_TLNAME,@p_PROCESS_ID)
16
	IF(@ERROR=1)
17
		BEGIN
18
		ROLLBACK TRANSACTION;
19
			SELECT '-1'  Result, @EROOR_DES ErrorDesc
20
			RETURN '-1';
21
		END
22
	END
23
	-----
24
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
25
	@BRANCH_CREATE_TYPE VARCHAR(10)
26
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND EXISTS(SELECT TLNANME FROM dbo.TL_USER WHERE TLNANME=SIGN_USER AND BRANCH_CREATE=TLSUBBRID AND (RoleName='TPGD' OR RoleName='GDDV'))))
27
	BEGIN
28
	ROLLBACK TRANSACTION  
29
	SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Người ký nháy không được là trường phòng, trưởng đơn vị.' ErrorDesc  
30
	RETURN '-1'  
31
	END
32
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  ( CAST(REQ_DT AS DATE) > CAST(GETDATE() AS DATE))) )
33
	BEGIN
34
			ROLLBACK TRANSACTION
35
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày tạo không được lớn hơn ngày hiện tại' ErrorDesc
36
			RETURN '-1'
37
	END
38

    
39
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_NAME IS NULL OR REQ_NAME='')) )
40
	BEGIN
41
			ROLLBACK TRANSACTION
42
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Tên tờ trình bắt buộc nhập' ErrorDesc
43
			RETURN '-1'
44
	END
45
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_CONTENT IS NULL OR REQ_CONTENT='')) )
46
	BEGIN
47
			ROLLBACK TRANSACTION
48
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Nội dung tờ trình bắt buộc nhập' ErrorDesc
49
			RETURN '-1'
50
	END
51
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND ( REQ_REASON IS NULL OR REQ_REASON='')) )
52
	BEGIN
53
			ROLLBACK TRANSACTION
54
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lý do trình chủ trương bắt buộc nhập' ErrorDesc
55
			RETURN '-1'
56
	END
57
	IF(NOT EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID ) )
58
	BEGIN
59
			ROLLBACK TRANSACTION
60
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Danh sách hàng hóa bắt buộc nhập' ErrorDesc
61
			RETURN '-1'
62
	END
63
  IF(EXISTS(SELECT * FROM PL_REQUEST_DOC prd LEFT JOIN CM_BRANCH cb ON prd.BRANCH_ID = cb.BRANCH_ID WHERE prd.REQ_ID = @p_REQ_ID AND cb.BRANCH_CODE IN ('799','899','699')))
64
  BEGIN
65
      ROLLBACK TRANSACTION
66
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Không được chọn đơn vị tạo tờ trình là: 799, 899, 699' ErrorDesc
67
			RETURN '-1'
68
  END
69

    
70
	-- GIANT 10/11/2021 
71
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>''))
72
	BEGIN
73
		DECLARE @PL_BASED_ID VARCHAR(20),
74
				@PL_BASE_CODE VARCHAR(20),
75
				@PL_BASE_TOTAL_USED DECIMAL(18,2), -- CÓ THỂ SỬ DỤNG
76
				@PL_BASE_TOTAL_PRICE DECIMAL(18,2), -- TỔNG TIỀN CỦA TTCT
77
				@TOTAL_PRICE DECIMAL(18,2) -- TỔNG TIỀN CỦA TỜ TRÌNH HIỆN TẠI SỬ DỤNG
78
		SET @PL_BASED_ID=(SELECT PL_BASED_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID )
79
		SET @PL_BASE_CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID)
80
		SET @PL_BASE_TOTAL_USED = (SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_DOC WHERE PL_BASED_ID = @PL_BASED_ID AND AUTH_STATUS NOT IN ('E','R'))
81
		SET @PL_BASE_TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID)
82
		SET @TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)
83
		--IF( EXISTS(SELECT DT.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT DT WHERE DT.REQ_ID=@p_REQ_ID AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT DTB WHERE DTB.REQ_ID=@PL_BASED_ID AND DTB.TRADE_ID=DT.TRADE_ID AND DTB.HANGHOA_ID=DT.HANGHOA_ID)))
84
		--BEGIN
85
		--	ROLLBACK TRANSACTION
86
		--	SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Danh sách hàng hóa không có trong tờ trình căn cứ' ErrorDesc
87
		--	RETURN '-1'
88
		--END
89

    
90
		-- KIỂM TRA CÁC TỔNG CÁC TỜ TRÌNH SỬ DỤNG TTCC VƯỢT QUÁ SỐ TIỀN CỦA TTCC CHO PHÉP HAY CHƯA
91
		-- Tổng giá trị những tờ trình con đã sử dụng tờ trình số: <Lấy số TTCC ra> làm tờ trình căn cứ: 30 triệu. Giá trị còn lại có thể sử dụng: 70 triệu	
92
		PRINT  @PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED
93
		IF (@PL_BASE_TOTAL_PRICE < (@PL_BASE_TOTAL_USED + @TOTAL_PRICE))
94
		BEGIN
95
			ROLLBACK TRANSACTION
96
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Tổng giá trị những tờ trình con đã sử dụng tờ trình số: ' + @PL_BASE_CODE + N'  làm tờ trình căn cứ: ' + CONVERT(NVARCHAR(20),CAST(@PL_BASE_TOTAL_USED AS money),1) + N' VND. Giá trị còn lại có thể sử dụng: ' + CONVERT(NVARCHAR(20),CAST(@PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED AS money),1) + ' VND' ErrorDesc
97
			RETURN '-1'
98
		END
99

    
100

    
101
		-- KIỂM TRA HẠNG MỤC ĐƯỢC CHỌN CÓ THUỘC VÀO HẠNG MỨC CHO PHÉP CỦA TTCC
102
		DECLARE LISTS CURSOR LOCAL FOR SELECT REQDT_ID,TRADE_ID,REQ_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID
103
		OPEN LISTS
104
		DECLARE @REQDT_ID VARCHAR(15),
105
				@TRADE_ID VARCHAR(15),
106
				@REQ_ID VARCHAR(15),
107
				@COUNT INT = 1
108
	
109
		FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID
110
		WHILE @@FETCH_STATUS = 0
111
		BEGIN
112
			-- Chỉ sử dụng hàng hóa từ tờ trình căn cứ
113
			IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID AND HANGHOA_ID IN (SELECT HANGHOA_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID)))
114
			BEGIN
115
				ROLLBACK TRANSACTION
116
				SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hàng hóa mua sắm đã chọn không thuộc vào Hàng hóa mua sắm cho phép của Tờ trình căn cứ' ErrorDesc
117
				RETURN '-1'
118
			END
119

    
120
			-- Chỉ sử dụng hạng mục ngân sách từ tờ trình căn cứ
121
			IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID AND TRADE_ID IN (SELECT TRADE_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID)))
122
			BEGIN
123
				ROLLBACK TRANSACTION
124
				SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hạng mục ngân sách đã chọn không thuộc vào hạng mục ngân sách cho phép của Tờ trình căn cứ' ErrorDesc
125
				RETURN '-1'
126
			END
127

    
128
			-- SỐ NGÂN SÁCH CHỌN VƯỢT QUÁ NGÂN SÁCH CHO PHÉP CỦA HẠN MỤC ĐÓ
129
			IF ((SELECT TOTAL_AMT FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID AND TRADE_ID = @TRADE_ID) < (SELECT TOTAL_AMT FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID))
130
			BEGIN
131
				ROLLBACK TRANSACTION
132
				SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hạng mục ngân sách đã chọn vượt quá hạng mục cho phép của Tờ trình căn cứ' ErrorDesc
133
				RETURN '-1'
134
			END
135

    
136
      IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC_DT prdd WHERE  REQDT_ID = @REQDT_ID AND prdd.HANGHOA_ID NOT IN (SELECT HH_ID FROM SYS_HH_GROUP_LIMIT)))
137
    	BEGIN
138
    			ROLLBACK TRANSACTION
139
    			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hàng hóa mua sắm đã chọn không có hạn mức phê duyệt' ErrorDesc
140
    			RETURN '-1'
141
    	END
142

    
143
			SET @COUNT += 1
144
			FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID
145
		END
146
		CLOSE LISTS
147
		DEALLOCATE LISTS
148

    
149

    
150
	END
151

    
152
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND  (HANGHOA_ID IS NULL OR HANGHOA_ID ='')) )
153
	BEGIN
154
			ROLLBACK TRANSACTION
155
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Hàng hóa bắt buộc nhập' ErrorDesc
156
			RETURN '-1'
157
	END
158
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND  (GOODS_ID IS NULL OR GOODS_ID ='')) )
159
	BEGIN
160
			ROLLBACK TRANSACTION
161
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Hạng mục ngân sách bắt buộc nhập' ErrorDesc
162
			RETURN '-1'
163
	END
164

    
165
	IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (TOTAL_AMT IS NULL OR TOTAL_AMT = 0)) )
166
	BEGIN
167
			ROLLBACK TRANSACTION
168
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới điều chuyển ngân sách: Vui lòng nhập số tiền điều chuyển' ErrorDesc
169
			RETURN '-1'
170
	END
171

    
172
  IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER A 
173
    LEFT JOIN CM_BRANCH cb ON A.FR_BRN_ID = cb.BRANCH_ID
174
    LEFT JOIN CM_DEPARTMENT cd ON A.FR_DEP_ID = cd.DEP_ID
175
    WHERE REQ_DOC_ID=@p_REQ_ID
176
    AND ((FR_BRN_ID = 'DV0001' AND FR_DEP_ID IN ('DEP000000000001','DEP000000000024'))
177
    OR cb.BRANCH_CODE IN ('DV0003','000','799','899','699'))))
178
	BEGIN
179
			ROLLBACK TRANSACTION
180
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển không hợp lệ, vui lòng không chọn Hội sở - Chung, Chung - CNTT, KV Tổng, KV Khác' ErrorDesc
181
			RETURN '-1'
182
	END
183

    
184
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
185
	-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
186
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='VCCB' AND SUP_ID <>'' AND SUP_ID IS NOT NULL AND REQ_ID =@p_REQ_ID))
187
			BEGIN
188
				SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm theo quy định VCCB thì bạn không được phép chọn nhà cung cấp. Vui lòng để trống nhà cung cấp' ErrorDesc 
189
				ROLLBACK TRANSACTION
190
				RETURN '-1'
191
	END
192
	--- LUCTV 06-03-2023 KIEM TRA THEM NEU MUA SAM THEO QUY DINH VCCB THI KHONG DUOC PHEP NHAP LY DO CHI DINH
193
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='VCCB' AND [NAME] <>'' AND [NAME] IS NOT NULL AND REQ_ID =@p_REQ_ID))
194
	BEGIN
195
				SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm theo quy định VCCB thì bạn không được phép nhập lý do chỉ định thầu. Vui lòng để trống lý do chỉ định thầu' ErrorDesc 
196
				ROLLBACK TRANSACTION
197
				RETURN '-1'
198
	END
199
	--
200
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( SUP_ID ='' OR SUP_ID IS NULL) AND REQ_ID =@p_REQ_ID))
201
			BEGIN
202
				SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm chỉ định thầu thì bạn không được phép bỏ trống nhà cung cấp. Vui lòng chọn nhà cung cấp' ErrorDesc 
203
				ROLLBACK TRANSACTION
204
				RETURN '-1'
205
	END
206
	---- NEU HINH THUC MUA SAM CHI DINH THAU THI KHONG DUOC PHEP DE TRONG LY DO CHI DINH
207
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( [NAME] ='' OR [NAME] IS NULL) AND REQ_ID =@p_REQ_ID))
208
			BEGIN
209
				SELECT 'REQ-00001' Result, '' REQ_ID, N'Lưới Danh sách hàng hóa: Nếu hình thức mua sắm chỉ định thầu thì bạn không được phép bỏ trống lý do chỉ định thầu. Vui lòng nhập lý do chỉ định thầu' ErrorDesc 
210
				ROLLBACK TRANSACTION
211
				RETURN '-1'
212
	END
213
	--
214
	--LUCTV: 04052021 BO SUNG RANG BUOC NEU TIEN TE LA VND THI DON GIA BAO GOM VAT * SO LUONG MUA MUA = VOI NS SU DUNG
215
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND ROUND(QUANTITY * PRICE,0) <> ROUND(TOTAL_AMT,0) AND CURRENCY='VND'))
216
	BEGIN
217
			ROLLBACK TRANSACTION
218
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Đối với tiền tệ VNĐ, Cột Ngân sách sử dụng chưa khớp với Đơn giá bao gồm VAT * Số lượng trình mua sắm ' ErrorDesc
219
			RETURN '-1'
220
	END
221
	IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_CREATE AND (FR_GOOD_ID IS NULL OR FR_GOOD_ID='')
222
	AND ((FR_DEP_ID=@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') AND (FR_DEP_ID IS NULL OR FR_DEP_ID=''))) ))
223
	BEGIN
224
		ROLLBACK TRANSACTION
225
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Bạn là đơn vị chuyển ngân sách, vui lòng chọn hạn mục ngân sách chuyển' ErrorDesc
226
			RETURN '-1'
227
	END
228
	IF(EXISTS(SELECT Temp.TRADE_ID FROM (
229
		SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
230
		SUM(ISNULL(PT.AMT_APP,0) +  ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) - ISNULL(PT.AMT_ETM,0)) AS TOTAL_AMT_REMAIN 
231
		FROM dbo.PL_REQUEST_DOC_DT TB
232
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
233
		INNER JOIN PL_REQUEST_DOC PL ON TB.REQ_ID = PL.REQ_ID
234
		WHERE TB.REQ_ID=@p_REQ_ID AND  TB.REQDT_TYPE='I' 
235
		---- LUCTV 06.02.2023 BỔ SUNG THÊM ĐIỀU KIỆN TỜ TRÌNH ĐÓ KHÔNG PHẢI LÀ TỜ TRÌNH CĂN CỨ
236
		AND ISNULL(PL.PL_BASED_ID,'') =''
237
		--- END LUCTV 06.02.23
238
		AND PT.GOODS_ID NOT IN (SELECT ISNULL(GD_ID,'') FROM CM_GOODS WHERE GD_TYPE_ID =@GD_TYPE_ID_NOT_VALIDATE)
239
		GROUP BY TB.TRADE_ID
240
		)Temp
241
		WHERE Temp.TOTAL_AMT_EXE > Temp.TOTAL_AMT_REMAIN))
242
		BEGIN
243
					ROLLBACK TRANSACTION
244
					SELECT '-1' AS RESULT , '' REQ_CODE,''  REQ_ID, N'Số tiền sử dụng lớn hơn số tiền dự kiến còn lại của hạng mục trong ngân sách' ErrorDesc
245
					RETURN '-1'
246
		END
247

    
248
	IF( EXISTS(SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND  REQDT_TYPE='O') AND  NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE  REQ_DOC_ID=@p_REQ_ID AND  TO_GOOD_ID IN (SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND REQDT_TYPE='O')))
249
		BEGIN
250
					ROLLBACK TRANSACTION
251
					SELECT '-1' AS RESULT ,'' REQ_CODE, ''  REQ_ID, N'Hạng mục ngoài ngân sách, vui lòng thêm danh sách điều chuyển ngân sách' ErrorDesc
252
					RETURN '-1'
253
		END
254
	IF( NOT EXISTS(SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND  REQDT_TYPE='O') AND   EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE  REQ_DOC_ID=@p_REQ_ID AND  TO_GOOD_ID IN (SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND REQDT_TYPE='O')))
255
	BEGIN
256
					ROLLBACK TRANSACTION
257
					SELECT '-1' AS RESULT ,'' REQ_CODE, ''  REQ_ID, N'Hạng mục trong ngân sách, vui lòng không thêm danh sách điều chuyển ngân sách' ErrorDesc
258
					RETURN '-1'
259
	END
260
	IF( EXISTS(SELECT PLDT.GOODS_ID FROM dbo.PL_REQUEST_DOC_DT PLDT WHERE  PLDT.REQ_ID=@p_REQ_ID AND  PLDT.REQDT_TYPE='O' AND NOT EXISTS(SELECT PLTF.REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER PLTF WHERE PLTF.TO_GOOD_ID=PLDT.GOODS_ID AND ISNULL(PLTF.TO_TRADE_ID,'')=ISNULL(PLDT.TRADE_ID,''))) )
261
	BEGIN
262
					ROLLBACK TRANSACTION
263
					SELECT '-1' AS RESULT ,'' REQ_CODE, ''  REQ_ID, N'Hạng mục ngoài ngân sách, vui lòng nhập danh sách điều chuyển ngân sách' ErrorDesc
264
					RETURN '-1'
265
	END		
266

    
267

    
268
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND  (PRICE IS NULL OR PRICE=0 OR QUANTITY IS NULL OR QUANTITY=0)) )
269
	BEGIN
270
			ROLLBACK TRANSACTION
271
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Số luợng, đơn giá của hàng hóa bắt buộc nhập' ErrorDesc
272
			RETURN '-1'
273
	END
274
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND  (DESCRIPTION IS NULL OR DESCRIPTION='')) )
275
	BEGIN
276
			ROLLBACK TRANSACTION
277
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Quy cách kỹ thuật bắt buộc nhập' ErrorDesc
278
			RETURN '-1'
279
	END
280

    
281
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND  (UNIT_NAME IS NULL OR UNIT_NAME='')) )
282
	BEGIN
283
			ROLLBACK TRANSACTION
284
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm: Đơn vị tính bắt buộc nhập' ErrorDesc
285
			RETURN '-1'
286
	END		
287
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND  (UNIT_NAME IS NULL OR UNIT_NAME='')) )
288
	BEGIN
289
			ROLLBACK TRANSACTION
290
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới hàng hóa mua sắm:  Đây là thông tin bắt buộc nhập' ErrorDesc
291
			RETURN '-1'
292
	END	
293
	--- LUCTV 14.11.2022 CHECK NEU CO DIEU CHUYEN NGAN SACH THI DON VI NHAN, DON VI CHUYEN PHAI KHAC NULL
294
	IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (ISNULL(FR_BRN_ID,'')='' OR ISNULL(TO_BRN_ID,'')='')))
295
	BEGIN
296
			ROLLBACK TRANSACTION
297
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển, đơn vị nhận không được phép để trống' ErrorDesc
298
			RETURN '-1'
299
	END	
300
	IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (ISNULL(FR_BRN_ID,'')='DV0001' AND ISNULL(FR_DEP_ID,'')='')))
301
	BEGIN
302
			ROLLBACK TRANSACTION
303
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển ngân sách nếu ở Hội Sở thì bạn phải chọn cụ thể phòng ban' ErrorDesc
304
			RETURN '-1'
305
	END	
306
	IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (ISNULL(TO_BRN_ID,'')='DV0001' AND ISNULL(TO_DEP_ID,'')='')))
307
	BEGIN
308
			ROLLBACK TRANSACTION
309
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị nhận ngân sách nếu ở Hội Sở thì bạn phải cụ thể chọn phòng ban' ErrorDesc
310
			RETURN '-1'
311
	END	
312
	---- END LUCTV
313
	DECLARE lstTransfer CURSOR FOR 
314
	SELECT FR_GOOD_ID,TO_GOOD_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
315
	OPEN lstTransfer
316
	DECLARE @FR_GOOD_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20)
317

    
318
	FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID
319
	WHILE @@FETCH_STATUS=0
320
	BEGIN
321
		IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'')
322
			BEGIN
323
				DECLARE @FR_GD_TYPE VARCHAR(20),@TO_GD_TYPE VARCHAR(20)
324

    
325
				SET @FR_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM 
326
				(
327
					SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@FR_GOOD_ID
328
				) CG
329
				LEFT JOIN dbo.CM_GOODSTYPE GT ON  CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%')
330

    
331

    
332
				SET @TO_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM 
333
				(
334
					SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@TO_GOOD_ID
335
				) CG
336
				LEFT JOIN dbo.CM_GOODSTYPE GT ON  CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%')
337

    
338
				IF(NOT EXISTS(SELECT * FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID= @FR_GD_TYPE AND @TO_GD_TYPE IN (SELECT value FROM dbo.wsiSplit(NOTES,';')) )  )
339
				BEGIN
340
					DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100)
341
					SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE)
342
					SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE)
343
					
344
						ROLLBACK TRANSACTION
345
						SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Không được điều chuyển từ ' + @FR_GD_TYPE_NAME +N' sang ' + @TO_GD_TYPE_NAME ErrorDesc
346
						CLOSE lstTransfer
347
						DEALLOCATE lstTransfer
348
            RETURN '-1'
349
				END
350
			END
351
		FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID
352
	END
353
	CLOSE lstTransfer
354
	DEALLOCATE lstTransfer
355
	--END
356
	UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
357
	SELECT @BRANCH_ID =BRANCH_ID,@DEP_ID=DEP_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
358

    
359
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
360
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
361

    
362
	
363
	--IF(@BRANCH_TYPE='PGD')
364
	--	SET @BRANCH_ID=(SELECT BRANCH_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
365
	
366
	
367
	DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
368
	---KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20-05-2020 LUCTV
369
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
370
	BEGIN
371
		DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20)
372

    
373
		SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)
374

    
375
		UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN', TOTAL_AMT =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID
376
		INSERT INTO dbo.PL_REQUEST_PROCESS
377
		(
378
		    REQ_ID,
379
		    PROCESS_ID,
380
		    STATUS,
381
		    ROLE_USER,
382
		    BRANCH_ID,
383
			DEP_ID,
384
		    CHECKER_ID,
385
		    APPROVE_DT,
386
		    PARENT_PROCESS_ID,
387
		    IS_LEAF,
388
		    COST_ID,
389
		    DVDM_ID,
390
		    NOTES,
391
		    IS_HAS_CHILD
392
		)
393
		VALUES
394
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
395
		    'SIGN',        -- PROCESS_ID - varchar(10)
396
		    'C',        -- STATUS - varchar(5)
397
		    @ROLE_SIGN,  -- ROLE_USER - varchar(50)
398
		    @BRANCH_SIGN_ID,  
399
			CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,      -- BRANCH_ID - varchar(15)
400
		    '',        -- CHECKER_ID - varchar(15)
401
		    NULL,      -- APPROVE_DT - datetime
402
		    '',        -- PARENT_PROCESS_ID - varchar(10)
403
		    'N',        -- IS_LEAF - varchar(1)
404
		    '',        -- COST_ID - varchar(15)
405
		    '',        -- DVDM_ID - varchar(15)
406
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
407
		    NULL       -- IS_HAS_CHILD - bit
408
		 )
409
	END
410
	ELSE -- NGUOC LAI KHONG CO CAP PHE DUYET TRUNG GIAN
411
	BEGIN
412
	INSERT INTO dbo.PL_REQUEST_PROCESS
413
		(
414
		    REQ_ID,
415
		    PROCESS_ID,
416
		    STATUS,
417
		    ROLE_USER,
418
		    BRANCH_ID,
419
			DEP_ID,
420
		    CHECKER_ID,
421
		    APPROVE_DT,
422
		    PARENT_PROCESS_ID,
423
		    IS_LEAF,
424
		    COST_ID,
425
		    DVDM_ID,
426
		    NOTES,
427
		    IS_HAS_CHILD
428
		)
429
		VALUES
430
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
431
		    'APPNEW',        -- PROCESS_ID - varchar(10)
432
		    'C',        -- STATUS - varchar(5)
433
		    'GDDV',        -- ROLE_USER - varchar(50)
434
		    @BRANCH_ID,  
435
			@DEP_ID,      -- BRANCH_ID - varchar(15)
436
		    '',        -- CHECKER_ID - varchar(15)
437
		    NULL,      -- APPROVE_DT - datetime
438
		    '',        -- PARENT_PROCESS_ID - varchar(10)
439
		    'N',        -- IS_LEAF - varchar(1)
440
		    '',        -- COST_ID - varchar(15)
441
		    '',        -- DVDM_ID - varchar(15)
442
		   -- N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
443
		    N'Chờ trưởng đơn vị phê duyệt' ,
444
		    NULL       -- IS_HAS_CHILD - bit
445
		 )
446
		
447
	END
448
	INSERT INTO dbo.PL_PROCESS
449
					(
450
					    REQ_ID,
451
					    PROCESS_ID,
452
					    CHECKER_ID,
453
					    APPROVE_DT,
454
					    PROCESS_DESC,
455
					    NOTES
456
					)
457
					VALUES
458
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
459
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
460
						'SEND',
461
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
462
					    GETDATE(), -- APPROVE_DT - datetime
463
					    N'Người tạo tờ trình gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
464
					    N'Nhân viên gửi phê duyệt '        -- NOTES - nvarchar(1000)
465
					 )
466

    
467

    
468

    
469
IF @@Error <> 0 GOTO ABORT
470
COMMIT TRANSACTION
471
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='SIGN'))
472
BEGIN
473
	SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID  = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
474
	RETURN '0'
475
END
476
ELSE
477
BEGIN
478
	SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID  = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
479
	RETURN '0'
480
END
481
ABORT:
482
BEGIN
483
		ROLLBACK TRANSACTION
484
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
485
		RETURN '-1'
486
End