Project

General

Profile

1.0 PL REQUEST DOC SENDAPP.txt

Luc Tran Van, 11/14/2022 10:36 AM

 
1

    
2
ALTER   PROCEDURE [dbo].[PL_REQUEST_DOC_SendApp]
3
@p_REQ_ID VARCHAR(20),
4
@p_PROCESS_ID VARCHAR(20),
5
@p_TLNAME VARCHAR(20),
6
@p_MAKER_ID VARCHAR(20)
7
AS
8
BEGIN TRANSACTION
9
	DECLARE @GD_TYPE_ID_NOT_VALIDATE VARCHAR(15)
10
	SET @GD_TYPE_ID_NOT_VALIDATE =(SELECT TOP 1 GD_TYPE_ID FROM CM_GOODSTYPE WHERE GD_TYPE_CODE ='OS')
11
	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (PL_BASED_ID IS  NULL OR PL_BASED_ID ='')))
12
	BEGIN
13
	-- XÁC ĐỊNH HẠN MƯC CÒN ĐỦ HAY KO
14
	--- KIEM TRA NGAN SACH LUCTV 18052020
15
	DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
16
	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)
17
	IF(@ERROR=1)
18
		BEGIN
19
		ROLLBACK TRANSACTION;
20
			SELECT '-1'  Result, @EROOR_DES ErrorDesc
21
			RETURN '-1';
22
		END
23
	END
24
	-----
25
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
26
	@BRANCH_CREATE_TYPE VARCHAR(10)
27
	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'))))
28
	BEGIN
29
	ROLLBACK TRANSACTION  
30
	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  
31
	RETURN '-1'  
32
	END
33
	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))) )
34
	BEGIN
35
			ROLLBACK TRANSACTION
36
			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
37
			RETURN '-1'
38
	END
39

    
40
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_NAME IS NULL OR REQ_NAME='')) )
41
	BEGIN
42
			ROLLBACK TRANSACTION
43
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Tên tờ trình bắt buộc nhập' ErrorDesc
44
			RETURN '-1'
45
	END
46
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_CONTENT IS NULL OR REQ_CONTENT='')) )
47
	BEGIN
48
			ROLLBACK TRANSACTION
49
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Nội dung tờ trình bắt buộc nhập' ErrorDesc
50
			RETURN '-1'
51
	END
52
	IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND ( REQ_REASON IS NULL OR REQ_REASON='')) )
53
	BEGIN
54
			ROLLBACK TRANSACTION
55
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Lý do trình chủ trương bắt buộc nhập' ErrorDesc
56
			RETURN '-1'
57
	END
58
	IF(NOT EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID ) )
59
	BEGIN
60
			ROLLBACK TRANSACTION
61
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Danh sách hàng hóa bắt buộc nhập' ErrorDesc
62
			RETURN '-1'
63
	END
64

    
65
	-- GIANT 10/11/2021 
66
	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 <>''))
67
	BEGIN
68
		DECLARE @PL_BASED_ID VARCHAR(20),
69
				@PL_BASE_CODE VARCHAR(20),
70
				@PL_BASE_TOTAL_USED DECIMAL(18,2), -- CÓ THỂ SỬ DỤNG
71
				@PL_BASE_TOTAL_PRICE DECIMAL(18,2), -- TỔNG TIỀN CỦA TTCT
72
				@TOTAL_PRICE DECIMAL(18,2) -- TỔNG TIỀN CỦA TỜ TRÌNH HIỆN TẠI SỬ DỤNG
73
		SET @PL_BASED_ID=(SELECT PL_BASED_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID )
74
		SET @PL_BASE_CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID)
75
		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'))
76
		SET @PL_BASE_TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID)
77
		SET @TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)
78
		--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)))
79
		--BEGIN
80
		--	ROLLBACK TRANSACTION
81
		--	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
82
		--	RETURN '-1'
83
		--END
84

    
85
		-- 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
86
		-- 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	
87
		PRINT  @PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED
88
		IF (@PL_BASE_TOTAL_PRICE < (@PL_BASE_TOTAL_USED + @TOTAL_PRICE))
89
		BEGIN
90
			ROLLBACK TRANSACTION
91
			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
92
			RETURN '-1'
93
		END
94

    
95

    
96
		-- 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
97
		DECLARE LISTS CURSOR LOCAL FOR SELECT REQDT_ID,TRADE_ID,REQ_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID
98
		OPEN LISTS
99
		DECLARE @REQDT_ID VARCHAR(15),
100
				@TRADE_ID VARCHAR(15),
101
				@REQ_ID VARCHAR(15),
102
				@COUNT INT = 1
103
	
104
		FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID
105
		WHILE @@FETCH_STATUS = 0
106
		BEGIN
107
			-- Chỉ sử dụng hàng hóa từ tờ trình căn cứ
108
			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)))
109
			BEGIN
110
				ROLLBACK TRANSACTION
111
				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
112
				RETURN '-1'
113
			END
114

    
115
			-- Chỉ sử dụng hạng mục ngân sách từ tờ trình căn cứ
116
			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)))
117
			BEGIN
118
				ROLLBACK TRANSACTION
119
				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
120
				RETURN '-1'
121
			END
122

    
123
			-- SỐ NGÂN SÁCH CHỌN VƯỢT QUÁ NGÂN SÁCH CHO PHÉP CỦA HẠN MỤC ĐÓ
124
			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))
125
			BEGIN
126
				ROLLBACK TRANSACTION
127
				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
128
				RETURN '-1'
129
			END
130

    
131
      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)))
132
    	BEGIN
133
    			ROLLBACK TRANSACTION
134
    			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
135
    			RETURN '-1'
136
    	END
137

    
138
			SET @COUNT += 1
139
			FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID
140
		END
141
		CLOSE LISTS
142
		DEALLOCATE LISTS
143

    
144

    
145
	END
146

    
147
	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 ='')) )
148
	BEGIN
149
			ROLLBACK TRANSACTION
150
			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
151
			RETURN '-1'
152
	END
153
	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 ='')) )
154
	BEGIN
155
			ROLLBACK TRANSACTION
156
			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
157
			RETURN '-1'
158
	END
159

    
160
	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)) )
161
	BEGIN
162
			ROLLBACK TRANSACTION
163
			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
164
			RETURN '-1'
165
	END
166

    
167
  IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
168
    AND ((FR_BRN_ID = 'DV0001' AND FR_DEP_ID IN ('DEP000000000001','DEP000000000024'))
169
    OR FR_BRN_ID IN ('BR000001053460','DV0002'))))
170
	BEGIN
171
			ROLLBACK TRANSACTION
172
			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
173
			RETURN '-1'
174
	END
175

    
176
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
177
	-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
178
	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))
179
			BEGIN
180
				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 
181
				ROLLBACK TRANSACTION
182
				RETURN '-1'
183
	END
184
	--
185
	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))
186
			BEGIN
187
				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 
188
				ROLLBACK TRANSACTION
189
				RETURN '-1'
190
	END
191
	---- NEU HINH THUC MUA SAM CHI DINH THAU THI KHONG DUOC PHEP DE TRONG LY DO CHI DINH
192
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( [NAME] ='' OR [NAME] IS NULL) AND REQ_ID =@p_REQ_ID))
193
			BEGIN
194
				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 
195
				ROLLBACK TRANSACTION
196
				RETURN '-1'
197
	END
198
	--
199
	--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
200
	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'))
201
	BEGIN
202
			ROLLBACK TRANSACTION
203
			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
204
			RETURN '-1'
205
	END
206
	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='')
207
	AND ((FR_DEP_ID=@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') AND (FR_DEP_ID IS NULL OR FR_DEP_ID=''))) ))
208
	BEGIN
209
		ROLLBACK TRANSACTION
210
			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
211
			RETURN '-1'
212
	END
213
	IF(EXISTS(SELECT Temp.TRADE_ID FROM (
214
		SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
215
		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 
216
		FROM dbo.PL_REQUEST_DOC_DT TB
217
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
218
		WHERE   TB.REQ_ID=@p_REQ_ID AND  TB.REQDT_TYPE='I' 
219
		AND PT.GOODS_ID NOT IN (SELECT ISNULL(GD_ID,'') FROM CM_GOODS WHERE GD_TYPE_ID =@GD_TYPE_ID_NOT_VALIDATE)
220
		GROUP BY TB.TRADE_ID
221
		)Temp
222
		WHERE Temp.TOTAL_AMT_EXE > Temp.TOTAL_AMT_REMAIN))
223
		BEGIN
224
					ROLLBACK TRANSACTION
225
					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
226
					RETURN '-1'
227
		END
228

    
229
	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')))
230
		BEGIN
231
					ROLLBACK TRANSACTION
232
					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
233
					RETURN '-1'
234
		END
235
	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')))
236
	BEGIN
237
					ROLLBACK TRANSACTION
238
					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
239
					RETURN '-1'
240
	END
241
	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,''))) )
242
	BEGIN
243
					ROLLBACK TRANSACTION
244
					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
245
					RETURN '-1'
246
	END		
247

    
248

    
249
	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)) )
250
	BEGIN
251
			ROLLBACK TRANSACTION
252
			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
253
			RETURN '-1'
254
	END
255
	IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE  REQ_ID=@p_REQ_ID AND  (DESCRIPTION IS NULL OR DESCRIPTION='')) )
256
	BEGIN
257
			ROLLBACK TRANSACTION
258
			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
259
			RETURN '-1'
260
	END
261

    
262
	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='')) )
263
	BEGIN
264
			ROLLBACK TRANSACTION
265
			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
266
			RETURN '-1'
267
	END		
268
	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='')) )
269
	BEGIN
270
			ROLLBACK TRANSACTION
271
			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
272
			RETURN '-1'
273
	END	
274
	--- LUCTV 14.11.2022 CHECK NEU CO DIEU CHUYEN NGAN SACH THI DON VI NHAN, DON VI CHUYEN PHAI KHAC NULL
275
	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,'')='')))
276
	BEGIN
277
			ROLLBACK TRANSACTION
278
			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
279
			RETURN '-1'
280
	END	
281
	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,'')='')))
282
	BEGIN
283
			ROLLBACK TRANSACTION
284
			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
285
			RETURN '-1'
286
	END	
287
	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,'')='')))
288
	BEGIN
289
			ROLLBACK TRANSACTION
290
			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
291
			RETURN '-1'
292
	END	
293
	---- END LUCTV
294
	DECLARE lstTransfer CURSOR FOR 
295
	SELECT FR_GOOD_ID,TO_GOOD_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
296
	OPEN lstTransfer
297
	DECLARE @FR_GOOD_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20)
298

    
299
	FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID
300
	WHILE @@FETCH_STATUS=0
301
	BEGIN
302
		IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'')
303
			BEGIN
304
				DECLARE @FR_GD_TYPE VARCHAR(20),@TO_GD_TYPE VARCHAR(20)
305

    
306
				SET @FR_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM 
307
				(
308
					SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@FR_GOOD_ID
309
				) CG
310
				LEFT JOIN dbo.CM_GOODSTYPE GT ON  CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%')
311

    
312

    
313
				SET @TO_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM 
314
				(
315
					SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@TO_GOOD_ID
316
				) CG
317
				LEFT JOIN dbo.CM_GOODSTYPE GT ON  CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%')
318

    
319
				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,';')) )  )
320
				BEGIN
321
					DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100)
322
					SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE)
323
					SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE)
324
					
325
						ROLLBACK TRANSACTION
326
						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
327
						CLOSE lstTransfer
328
						DEALLOCATE lstTransfer
329
            RETURN '-1'
330
				END
331
			END
332
		FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID
333
	END
334
	CLOSE lstTransfer
335
	DEALLOCATE lstTransfer
336
	--END
337
	UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
338
	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
339

    
340
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
341
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
342

    
343
	
344
	--IF(@BRANCH_TYPE='PGD')
345
	--	SET @BRANCH_ID=(SELECT BRANCH_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
346
	
347
	
348
	DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
349
	---KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20-05-2020 LUCTV
350
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
351
	BEGIN
352
		DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20)
353

    
354
		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)
355

    
356
		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
357
		INSERT INTO dbo.PL_REQUEST_PROCESS
358
		(
359
		    REQ_ID,
360
		    PROCESS_ID,
361
		    STATUS,
362
		    ROLE_USER,
363
		    BRANCH_ID,
364
			DEP_ID,
365
		    CHECKER_ID,
366
		    APPROVE_DT,
367
		    PARENT_PROCESS_ID,
368
		    IS_LEAF,
369
		    COST_ID,
370
		    DVDM_ID,
371
		    NOTES,
372
		    IS_HAS_CHILD
373
		)
374
		VALUES
375
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
376
		    'SIGN',        -- PROCESS_ID - varchar(10)
377
		    'C',        -- STATUS - varchar(5)
378
		    @ROLE_SIGN,  -- ROLE_USER - varchar(50)
379
		    @BRANCH_SIGN_ID,  
380
			CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,      -- BRANCH_ID - varchar(15)
381
		    '',        -- CHECKER_ID - varchar(15)
382
		    NULL,      -- APPROVE_DT - datetime
383
		    '',        -- PARENT_PROCESS_ID - varchar(10)
384
		    'N',        -- IS_LEAF - varchar(1)
385
		    '',        -- COST_ID - varchar(15)
386
		    '',        -- DVDM_ID - varchar(15)
387
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
388
		    NULL       -- IS_HAS_CHILD - bit
389
		 )
390
	END
391
	ELSE -- NGUOC LAI KHONG CO CAP PHE DUYET TRUNG GIAN
392
	BEGIN
393
	INSERT INTO dbo.PL_REQUEST_PROCESS
394
		(
395
		    REQ_ID,
396
		    PROCESS_ID,
397
		    STATUS,
398
		    ROLE_USER,
399
		    BRANCH_ID,
400
			DEP_ID,
401
		    CHECKER_ID,
402
		    APPROVE_DT,
403
		    PARENT_PROCESS_ID,
404
		    IS_LEAF,
405
		    COST_ID,
406
		    DVDM_ID,
407
		    NOTES,
408
		    IS_HAS_CHILD
409
		)
410
		VALUES
411
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
412
		    'APPNEW',        -- PROCESS_ID - varchar(10)
413
		    'C',        -- STATUS - varchar(5)
414
		    'GDDV',        -- ROLE_USER - varchar(50)
415
		    @BRANCH_ID,  
416
			@DEP_ID,      -- BRANCH_ID - varchar(15)
417
		    '',        -- CHECKER_ID - varchar(15)
418
		    NULL,      -- APPROVE_DT - datetime
419
		    '',        -- PARENT_PROCESS_ID - varchar(10)
420
		    'N',        -- IS_LEAF - varchar(1)
421
		    '',        -- COST_ID - varchar(15)
422
		    '',        -- DVDM_ID - varchar(15)
423
		   -- N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
424
		    N'Chờ trưởng đơn vị phê duyệt' ,
425
		    NULL       -- IS_HAS_CHILD - bit
426
		 )
427
		
428
	END
429
	INSERT INTO dbo.PL_PROCESS
430
					(
431
					    REQ_ID,
432
					    PROCESS_ID,
433
					    CHECKER_ID,
434
					    APPROVE_DT,
435
					    PROCESS_DESC,
436
					    NOTES
437
					)
438
					VALUES
439
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
440
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
441
						'SEND',
442
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
443
					    GETDATE(), -- APPROVE_DT - datetime
444
					    N'Người tạo tờ trình gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
445
					    N'Nhân viên gửi phê duyệt '        -- NOTES - nvarchar(1000)
446
					 )
447

    
448

    
449

    
450
IF @@Error <> 0 GOTO ABORT
451
COMMIT TRANSACTION
452
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='SIGN'))
453
BEGIN
454
	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
455
	RETURN '0'
456
END
457
ELSE
458
BEGIN
459
	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
460
	RETURN '0'
461
END
462
ABORT:
463
BEGIN
464
		ROLLBACK TRANSACTION
465
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
466
		RETURN '-1'
467
End