Project

General

Profile

[GSOFT - BVBANK].1.26032025. Stored TR_REQUEST_DOC_SENDAPP.txt

Luc Tran Van, 03/26/2025 02:20 PM

 
1
ALTER PROCEDURE [dbo].[TR_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
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_DT IS NULL OR REQ_DT='')) )
9
	BEGIN
10
			ROLLBACK TRANSACTION
11
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu bắt buộc nhập' ErrorDesc
12
			RETURN '-1'
13
	END
14
	IF((SELECT CONVERT(DATE, REQ_DT, 103) FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID) > CONVERT(DATE, GETDATE(),103))
15
	BEGIN
16
			ROLLBACK TRANSACTION
17
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu mua sắm không được phép lớn hơn ngày hiện tại' ErrorDesc
18
			RETURN '-1'
19
	END
20
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_REASON IS NULL OR REQ_REASON='')) )
21
	BEGIN
22
			ROLLBACK TRANSACTION
23
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Mục đích yêu cầu bắt buộc nhập' ErrorDesc
24
			RETURN '-1'
25
	END
26
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (PL_REQ_ID IS NULL OR PL_REQ_ID='')) )
27
	BEGIN
28
			ROLLBACK TRANSACTION
29
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Tờ trình chủ trương bắt buộc nhập' ErrorDesc
30
			RETURN '-1'
31
	END
32
	IF(NOT EXISTS(SELECT REQ_DOC_ID FROM dbo.TR_REQUEST_DOC_DT WHERE  REQ_DOC_ID=@p_REQ_ID ) )
33
	BEGIN
34
			ROLLBACK TRANSACTION
35
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Chi tiết hàng hóa bắt buộc nhập' ErrorDesc
36
			RETURN '-1'
37
	END	
38

    
39
	-------------------BAODNQ 24/10/2022 : XÓA DATA DVCM KHI GỬI PHÊ DUYỆT-----------------
40
	DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
41
	-----------------------------ENDBAODNQ---------------------
42

    
43
	--- XOA DATA CU
44
	DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID
45
	-----
46
	DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50)
47
	SET @PL_REQ_CODE =(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
48
	SET @NS_TO_TRINH =(SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
49
	SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)
50
	SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN 
51
	(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) AND PROCESS_ID='APPROVE')),0)
52
	DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME
53
	SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT  FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
54
	--IF( EXISTS(
55
	--		SELECT Temp.GD_ID FROM (SELECT GD_ID,SUM(TOTAL_AMT) AS TOTAL_AMT_ETM FROM dbo.TR_REQUEST_DOC_DT   WHERE REQ_DOC_ID=@p_REQ_ID
56
	--		GROUP BY GD_ID) Temp WHERE    TOTAL_AMT_ETM > 
57
	--		((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM
58
	--		(SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
59
	--		WHERE REQ_ID=@p_PL_REQ_ID
60
	--		UNION 
61
	--		SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
62
	--		WHERE REQ_ID=(SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_PL_REQ_ID) ) TEMP2 WHERE TEMP2.GOODS_ID=Temp.GD_ID
63
	--		GROUP BY TEMP2.GOODS_ID) - (SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT_EXE FROM dbo.TR_REQUEST_DOC_DT WHERE GD_ID=Temp.GD_ID AND REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_PL_REQ_ID AND PROCESS_ID='APPROVE')
64
	--		GROUP BY GD_ID))))
65
	--	BEGIN
66
	--		ROLLBACK TRANSACTION
67
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
68
	--		N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
69
	--		+CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@NS_LUY_KE ,'#,#', 'vi-VN')
70
	--		+CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(@NS_TO_TRINH -@NS_LUY_KE ,'#,#', 'vi-VN')
71
	--		+CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(@NS_LUY_KE+@NS_PYCMS_USE -@NS_TO_TRINH ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
72
	--		+CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm để biết thêm thông tin chi tiêt!' ErrorDesc 
73
	--		RETURN '0'
74
	--	END
75
	-- LUCTV: 05-12-2020: KHAI BAO CURSOR DE  KIEM TRA TONG HAN MUC SU DUNG PYC LINK TỚI TỜ TRÌNH
76
	-- LẤY SUM TỜ TRÌNH CHA
77
	DECLARE @SUM_TO_TRINH_CHINH DECIMAL(18) =0, @SUM_TO_TRINH_CON DECIMAL(18,0), @SUM_PYC_LUY_KE DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(100), @SUM_THANH_TOAN DECIMAL(18,0), @PDNTT_CODE_LIST VARCHAR(250)
78
	SET @SUM_TO_TRINH_CHINH =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID =@p_PL_REQ_ID)
79
	-- LẤY SUM TỜ TRÌNH CON
80
	SET @SUM_TO_TRINH_CON =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_DOC WHERE REQ_PARENT_ID =@p_PL_REQ_ID))
81
	--- LŨY KẾ PHASE 1 LÀ GIÁ TRỊ NHỮNG PYCMS ĐÃ APPROVE
82
	--- NGUYÊN TD ĐIỀU CHỈNH LẠI CÔNG THỨC TẠI ĐÂY
83
	--- LUCTV 12032025: LŨY KẾ ĐẦU TIÊN LÀ GIÁ TRỊ MUA SẮM THỰC TẾ ĐỐI VỚI NHỮNG PHIẾU YÊU CẦU MUA SẮM ĐÃ HOÁN TẤT THANH TOÁN
84
	SET @SUM_PYC_LUY_KE =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID 
85
							IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND PROCESS_ID = 'APPROVE') 
86
							AND REQ_DOC_ID <> @p_REQ_ID AND DBO.FN_CHECK_TR_REQ_DOC_DONE_PAYMENT (REQ_DOC_ID) =1)
87
					
88
     --- LUCTV 12032025: LŨY KẾ THỨ 2 LÀ GIÁ TRỊ MUA SẮM THỰC TẾ ĐỐI VỚI NHỮNG PHIẾU YÊU CẦU MUA SẮM CHƯA HOÁN TẤT THANH TOÁN
89
	 SET @SUM_PYC_LUY_KE = @SUM_PYC_LUY_KE + (SELECT ISNULL(SUM(TOTAL_AMT_ETM),0) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID 
90
							IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND PROCESS_ID = 'APPROVE') 
91
							AND REQ_DOC_ID <> @p_REQ_ID AND DBO.FN_CHECK_TR_REQ_DOC_DONE_PAYMENT (REQ_DOC_ID) =0)
92
	--- END LUCTV 12032025
93
	--- LŨY KẾ PHASE 2 LÀ GIÁ TRỊ NHỮNG PYCMS ĐÃ GỬI DUYỆT NHƯNG CHƯA APPROVE THÌ TÍNH SUM TOTAL_AMT_ETM
94
	--- NGUYÊN TD CODE TẠI ĐÂY
95
	SET @SUM_PYC_LUY_KE =@SUM_PYC_LUY_KE + (SELECT ISNULL(SUM(TOTAL_AMT_ETM),0) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID 
96
							IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS IN('U', 'A') AND PROCESS_ID <> 'APPROVE') 
97
							AND REQ_DOC_ID <> @p_REQ_ID)
98
	----------------------BAODNQ 29/12/2022: CỘNG THÊM VÀO SUM_LUY_KE THÀNH TIỀN DỰ KIẾN CỦA NHỮNG PYCMS KHÁC CÓ HẠNG MỤC LÀ XUẤT KHO----------------------------
99
	SET @SUM_PYC_LUY_KE = @SUM_PYC_LUY_KE + (SELECT ISNULL(SUM(TOTAL_AMT_ETM),0) FROM TR_REQUEST_DOC_DT  WHERE REQ_DOC_ID 
100
												IN (SELECT REQ_ID FROM TR_REQUEST_DOC  WHERE PL_REQ_ID = @p_PL_REQ_ID AND AUTH_STATUS IN('U', 'A'))
101
												AND REQ_DOC_ID <> @p_REQ_ID AND TRAN_TYPE_ID = 'TRN0000000006'
102
											)
103
	-----------------------ENDBAODNQ 29/12/2022--------------------------------
104

    
105
	SET @SUM_THANH_TOAN = (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_PL_REQ_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS IN ('U','A')))
106
	IF(ISNULL(@SUM_TO_TRINH_CHINH,0) + ISNULL(@SUM_TO_TRINH_CON,0) <@SUM_PYC_LUY_KE+@NS_PYCMS_USE + ISNULL(@SUM_THANH_TOAN,0))
107
	BEGIN
108
	ROLLBACK TRANSACTION
109
			SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN  ('U','A')
110
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
111
			SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_PL_REQ_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS IN ('U','A')))
112
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
113
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
114
			N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
115
			+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@SUM_PYC_LUY_KE ,'#,#', 'vi-VN'),
116
			+ N'Tổng số tiền lũy kế đã thanh toán cho tờ trình: '+FORMAT(isnull(@SUM_THANH_TOAN,0) ,'#,#', 'vi-VN')
117
			+ N'\n Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0) -@SUM_PYC_LUY_KE -ISNULL(@SUM_THANH_TOAN,0) ,'#,#', 'vi-VN')
118
			+ N'\n Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(ISNULL(@SUM_PYC_LUY_KE,0)+@NS_PYCMS_USE +ISNULL(@SUM_THANH_TOAN,0) -(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0)) ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
119
			+ N'\n Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm số: '+ISNULL(@PYCMS_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!'
120
			+ N'\n Vui lòng tra cứu tổng số tiền trên các phiếu thanh toán: '+ISNULL(@PDNTT_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!' ErrorDesc 
121
			RETURN '0'
122
	END
123

    
124
	---------------BAODNQ 3/1/2022: KHAI BÁO BẢNG TẠM LƯU NHỮNG DÒNG BÁO LỖI------------
125
	DECLARE @t_ERROR_ROW TABLE(STT INT, PL_DT_ID VARCHAR(15))
126
	INSERT INTO @t_ERROR_ROW(STT, PL_DT_ID) 
127
		SELECT ROW_NUMBER() OVER (ORDER BY REQDT_ID) AS STT,
128
			PL_REQDT_ID AS PL_DT_ID
129
		FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID
130
	DECLARE @p_TOTAL_ERROR_ROW VARCHAR(MAX)
131
	----------------ENDBAODNQ------------
132

    
133
	-- KHAI BÁO CURRS0R ĐỂ CHECK LŨY KẾ TỪNG HẠNG MỤC
134
	DECLARE @PL_DT_ID VARCHAR(15), @SUM_@PL_DT_ID  DECIMAL(18,0), @INDEX INT =0, @TOTAL_AMT_DETAIL DECIMAL(18,0), @REMAIN_AMT DECIMAL(18,0), @AMT_PL_DT DECIMAL(18,0), @AMT_PL_DT_EX DECIMAL(18,0)
135
	DECLARE CURS CURSOR FOR SELECT PL_REQDT_ID, TOTAL_AMT  FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID
136
		OPEN CURS
137
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
138
			WHILE @@FETCH_STATUS = 0
139
			BEGIN
140
				SET @INDEX = @INDEX +1
141

    
142
				----------------BAODNQ 20/12/2022: NẾU LƯỚI CHI TIẾT MUA SẮM THỰC TẾ K CÓ CHỌN DANH MỤC HÀNG HÓA THEO TỜ TRÌNH, KO CHO LƯU------------
143
				IF(@PL_DT_ID IS NULL OR @PL_DT_ID = '')
144
				BEGIN
145
					ROLLBACK TRANSACTION
146
					SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, 
147
					N'Lưới chi tiết mua sắm thực tế, dòng :' + CONVERT(VARCHAR,@INDEX)+ 
148
					N': Hàng hóa theo tờ trình không được bỏ trống' ErrorDesc
149
					RETURN '-1'
150
				END
151

    
152
				-- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
153
				--IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0)
154

    
155
				SET @SUM_@PL_DT_ID =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN ('U','A')) 
156
										     AND PL_REQDT_ID =@PL_DT_ID)
157
				SET @AMT_PL_DT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID)
158
				SET @REMAIN_AMT = ISNULL(@AMT_PL_DT,0) -ISNULL(@SUM_@PL_DT_ID,0)
159
				--SET @SUM_@PL_DT_ID = ISNULL(@SUM_@PL_DT_ID,0)+ISNULL(@TOTAL_AMT_DETAIL,0)
160
				SET @AMT_PL_DT_EX =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID AND PL_REQDT_ID =@PL_DT_ID)
161
										     --AND PL_REQDT_ID =@PL_DT_ID)
162
				--PRINT @SUM_@PL_DT_ID
163

    
164
				-----------------BAODNQ 3/1/2022------------
165
				-----------LẤY NHỮNG DÒNG CHI TIẾT MUA SẮM THỰC TẾ CÓ DÙNG HẠNG MỤC THEO TỜ TRÌNH-----------
166
				SET @p_TOTAL_ERROR_ROW = STUFF(
167
					(SELECT ',' + CONVERT(VARCHAR(3),STT)
168
					FROM @t_ERROR_ROW WHERE PL_DT_ID = @PL_DT_ID
169
					FOR XML PATH('')), 1, 1, ''
170
				)
171
				----------------END BADNQ------------------
172

    
173
				IF(ISNULL(@SUM_@PL_DT_ID,0)+ ISNULL(@AMT_PL_DT_EX,0) >  @AMT_PL_DT)
174
				--IF(1<2)
175
				BEGIN
176
					ROLLBACK TRANSACTION
177
					SELECT '-1' Result,'' REQ_PAY_ID,
178
					N'Lưới chi tiết mua sắm thực tế:' 
179
					+ N'\nDòng '+ @p_TOTAL_ERROR_ROW+ N': Ngân sách sử dụng của hạng mục: '+
180
					(SELECT ISNULL(DESCRIPTION,'') FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) + N' là: ' +CONVERT(VARCHAR, FORMAT(ISNULL(@AMT_PL_DT_EX, 0), '#,#', 'vi-VN')) 
181
					+ N' đã vượt quá số tiền trình chủ trương.'
182
					+ N'\n Số tiền đã gửi phê duyệt thành công trong những PUR khác: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) ,'#,#', 'vi-VN')
183
					+ N'\n Số tiền còn lại có thể sử dụng: '+ CASE WHEN @REMAIN_AMT >0 THEN FORMAT(ISNULL(@REMAIN_AMT,0) ,'#,#', 'vi-VN') ELSE '0.00' END
184
					--+CHAR(10)+N'Số tiền vượt hạn mức: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) +ISNULL(@TOTAL_AMT_DETAIL,0) -  (@AMT_PL_DT) ,'#,#', 'vi-VN') 
185
					ErrorDesc
186
					RETURN '-1'
187
				END
188
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT,0) + ISNULL(@AMT_PAY,0.00) +ISNULL(@AMT_REVERT,0.00) WHERE REQ_PAY_ID =@PAY_ADVANCE_ID
189
				-- SO SÁNH TỔNG BREAK DOWN TỪ 1 HẠNG MỤC
190
				--IF(SELECT SUM())
191
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
192
		END
193
		CLOSE CURS
194
		DEALLOCATE CURS
195
	--: HẾT ĐOẠN BỔ SUNG CỦA LỰCTV
196
	--IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
197
	--IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
198
	--	BEGIN
199
	--		ROLLBACK TRANSACTION
200
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa theo tờ trình: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
201
	--		RETURN '0'
202
	--END
203
	IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
204
		BEGIN
205
			ROLLBACK TRANSACTION
206
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
207
			RETURN '0'
208
	END
209
	IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND (REQ_DT IS NULL OR REQ_DT ='')))
210
		BEGIN
211
			ROLLBACK TRANSACTION
212
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
213
			RETURN '0'
214
	END
215
	IF(EXISTS(SELECT [DESCRIPTION] FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND ([DESCRIPTION] IS NULL OR [DESCRIPTION] ='')))
216
		BEGIN
217
			ROLLBACK TRANSACTION
218
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Mô tả hàng hóa/ dịch vụ không được phép để trống' ErrorDesc 
219
			RETURN '0'
220
	END
221
	IF(EXISTS(SELECT UNIT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (UNIT_ID IS NULL OR UNIT_ID ='')))
222
		BEGIN
223
			ROLLBACK TRANSACTION
224
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Đơn vị tính không được phép để trống' ErrorDesc 
225
			RETURN '0'
226
	END
227
	IF(EXISTS(SELECT QUANTITY FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (QUANTITY IS NULL OR QUANTITY ='')))
228
		BEGIN
229
			ROLLBACK TRANSACTION
230
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Số lượng không được phép để trống' ErrorDesc 
231
			RETURN '0'
232
	END
233
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
234
	@BRANCH_CREATE_TYPE VARCHAR(10)
235

    
236
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
237

    
238
	-----------------BAODNQ 25/8/2022 : Nếu ĐV tạo khác HS, ko lấy theo phòng ban------------
239
	IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) <> 'HS')
240
	BEGIN
241
		SET @DEP_CREATE = NULL
242
	END
243

    
244
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
245
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
246
	-- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG
247
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
248
	BEGIN
249
		UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID
250
		INSERT INTO dbo.PL_REQUEST_PROCESS
251
		(
252
		    REQ_ID,
253
		    PROCESS_ID,
254
		    STATUS,
255
		    ROLE_USER,
256
		    BRANCH_ID,
257
			DEP_ID,
258
		    CHECKER_ID,
259
		    APPROVE_DT,
260
		    PARENT_PROCESS_ID,
261
		    IS_LEAF,
262
		    COST_ID,
263
		    DVDM_ID,
264
		    NOTES,
265
		    IS_HAS_CHILD
266
		)
267
		VALUES
268
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
269
		    'SIGN',        -- PROCESS_ID - varchar(10)
270
		    'C',        -- STATUS - varchar(5)
271
		    (SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)),  -- ROLE_USER - varchar(50)
272
		    @BRANCH_CREATE,  
273
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
274
		    '',        -- CHECKER_ID - varchar(15)
275
		    NULL,      -- APPROVE_DT - datetime
276
		    '',        -- PARENT_PROCESS_ID - varchar(10)
277
		    'N',        -- IS_LEAF - varchar(1)
278
		    '',        -- COST_ID - varchar(15)
279
		    '',        -- DVDM_ID - varchar(15)
280
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
281
		    NULL       -- IS_HAS_CHILD - bit
282
		 )
283
	END
284
	ELSE
285
	BEGIN
286
	--IF(@BRANCH_CREATE_TYPE='PGD')
287
	--	SET @BRANCH_CREATE=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
288
	UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
289
	IF(@BRANCH_CREATE_TYPE='PGD')
290
	BEGIN
291
		INSERT INTO dbo.PL_REQUEST_PROCESS
292
		(
293
		    REQ_ID,
294
		    PROCESS_ID,
295
		    STATUS,
296
		    ROLE_USER,
297
		    BRANCH_ID,
298
			DEP_ID,
299
		    CHECKER_ID,
300
		    APPROVE_DT,
301
		    PARENT_PROCESS_ID,
302
		    IS_LEAF,
303
		    COST_ID,
304
		    DVDM_ID,
305
		    NOTES,
306
		    IS_HAS_CHILD
307
		)
308
		VALUES
309
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
310
		    'APPNEW',        -- PROCESS_ID - varchar(10)
311
		    'C',        -- STATUS - varchar(5)
312
		    'TPGD',        -- ROLE_USER - varchar(50)
313
		    @BRANCH_CREATE,  
314
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
315
		    '',        -- CHECKER_ID - varchar(15)
316
		    NULL,      -- APPROVE_DT - datetime
317
		    '',        -- PARENT_PROCESS_ID - varchar(10)
318
		    'N',        -- IS_LEAF - varchar(1)
319
		    '',        -- COST_ID - varchar(15)
320
		    '',        -- DVDM_ID - varchar(15)
321
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
322
		    NULL       -- IS_HAS_CHILD - bit
323
		 )
324
	END
325
	ELSE
326
	BEGIN
327
		INSERT INTO dbo.PL_REQUEST_PROCESS
328
		(
329
		    REQ_ID,
330
		    PROCESS_ID,
331
		    STATUS,
332
		    ROLE_USER,
333
		    BRANCH_ID,
334
			DEP_ID,
335
		    CHECKER_ID,
336
		    APPROVE_DT,
337
		    PARENT_PROCESS_ID,
338
		    IS_LEAF,
339
		    COST_ID,
340
		    DVDM_ID,
341
		    NOTES,
342
		    IS_HAS_CHILD
343
		)
344
		VALUES
345
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
346
		    'APPNEW',        -- PROCESS_ID - varchar(10)
347
		    'C',        -- STATUS - varchar(5)
348
		    'GDDV',        -- ROLE_USER - varchar(50)
349
		    @BRANCH_CREATE,  
350
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
351
		    '',        -- CHECKER_ID - varchar(15)
352
		    NULL,      -- APPROVE_DT - datetime
353
		    '',        -- PARENT_PROCESS_ID - varchar(10)
354
		    'N',        -- IS_LEAF - varchar(1)
355
		    '',        -- COST_ID - varchar(15)
356
		    '',        -- DVDM_ID - varchar(15)
357
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
358
		    NULL       -- IS_HAS_CHILD - bit
359
		 )
360
		END
361
	END
362
	--------------BAODNQ 4/11/2022: NG TẠO GỬI PHÊ DUYỆT MÀ K CÓ DVCM THÌ GHI LOG--------------
363
	DECLARE @p_LOG_MESSAGE NVARCHAR(MAX)
364
	IF(NOT EXISTS (SELECT * FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID))
365
	BEGIN
366
		SET @p_LOG_MESSAGE = N'Nhân viên gửi phê duyệt và không chọn DVCM'
367
	END
368
	ELSE
369
	BEGIN
370
		SET @p_LOG_MESSAGE = N'Nhân viên gửi phê duyệt'
371
	END
372

    
373
	-------------------ENDBAODNQ---------------------------
374
	INSERT INTO dbo.PL_PROCESS
375
					(
376
					    REQ_ID,
377
					    PROCESS_ID,
378
					    CHECKER_ID,
379
					    APPROVE_DT,
380
					    PROCESS_DESC,
381
					    NOTES
382
					)
383
					VALUES
384
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
385
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
386
						'SEND',
387
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
388
					    GETDATE(), -- APPROVE_DT - datetime
389
					    N'Nhân viên tạo phiếu và gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
390
					    @p_LOG_MESSAGE       -- NOTES - nvarchar(1000)
391
					 )
392
	
393
		IF @@Error <> 0 GOTO ABORT
394

    
395
		------BAODNQ 26/3/2022: Trả ra kết quả PROCESS_ID-------
396
		DECLARE @PROCESS_ID VARCHAR(50) = (
397
			SELECT PROCESS_ID FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID
398
		)
399

    
400
COMMIT TRANSACTION
401
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, @PROCESS_ID PROCESS_ID,'' ErrorDesc
402
RETURN '0'
403
ABORT:
404
BEGIN
405
		ROLLBACK TRANSACTION
406
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' PROCESS_ID,'' ErrorDesc
407
		RETURN '-1'
408
End