Project

General

Profile

TR_REQ_DOC_SENDAPP.txt

Luc Tran Van, 12/07/2020 03:59 PM

 
1

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

    
40
	--- XOA DATA CU
41
	DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID
42
	-----
43
	DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50)
44
	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))
45
	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))
46
	SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)
47
	SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN 
48
	(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)
49
	DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME
50
	SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT  FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
51
	--IF( EXISTS(
52
	--		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
53
	--		GROUP BY GD_ID) Temp WHERE    TOTAL_AMT_ETM > 
54
	--		((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM
55
	--		(SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
56
	--		WHERE REQ_ID=@p_PL_REQ_ID
57
	--		UNION 
58
	--		SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
59
	--		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
60
	--		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')
61
	--		GROUP BY GD_ID))))
62
	--	BEGIN
63
	--		ROLLBACK TRANSACTION
64
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
65
	--		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
66
	--		+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')
67
	--		+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')
68
	--		+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.'
69
	--		+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 
70
	--		RETURN '0'
71
	--	END
72
	-- LUCTV: 05-12-2020: KHAI BAO CURSOR DE  KIEM TRA TONG HAN MUC SU DUNG PYC LINK TỚI TỜ TRÌNH
73
	-- LẤY SUM TỜ TRÌNH CHA
74
	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)
75
	SET @SUM_TO_TRINH_CHINH =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID =@p_PL_REQ_ID)
76
	-- LẤY SUM TỜ TRÌNH CON
77
	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))
78
	---
79
	SET @SUM_PYC_LUY_KE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID 
80
							IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS <> 'E') 
81
							AND REQ_DOC_ID <> @p_REQ_ID)   
82
	IF(ISNULL(@SUM_TO_TRINH_CHINH,0) + ISNULL(@SUM_TO_TRINH_CON,0) <@SUM_PYC_LUY_KE+@NS_PYCMS_USE)
83
	BEGIN
84
	ROLLBACK TRANSACTION
85
			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 <> 'E'
86
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
87
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
88
			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
89
			+CHAR(10)+ 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')
90
			+CHAR(10)+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 ,'#,#', 'vi-VN')
91
			+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(ISNULL(@SUM_PYC_LUY_KE,0)+@NS_PYCMS_USE -(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.'
92
			+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 số: '+ISNULL(@PYCMS_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!' ErrorDesc 
93
			RETURN '0'
94
	END
95
	-- KHAI BÁO CURRS0R ĐỂ CHECK LŨY KẾ TỪNG HẠNG MỤC
96
	DECLARE @PL_DT_ID VARCHAR(15), @SUM_@PL_DT_ID  DECIMAL(18,0), @INDEX INT =0, @TOTAL_AMT_DETAIL DECIMAL(18,0)
97
	DECLARE CURS CURSOR FOR SELECT PL_REQDT_ID, TOTAL_AMT  FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID
98
		OPEN CURS
99
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
100
			WHILE @@FETCH_STATUS = 0
101
			BEGIN
102
				SET @INDEX = @INDEX +1
103
				-- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
104
				--IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0)
105

    
106
				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 <> 'E') 
107
										     AND PL_REQDT_ID =@PL_DT_ID)
108
				IF(ISNULL(@SUM_@PL_DT_ID,0) +ISNULL(@TOTAL_AMT_DETAIL,0) >  (SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID))
109
				BEGIN
110
					ROLLBACK TRANSACTION
111
					SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách sử dụng của hạng mục: '+
112
					(SELECT ISNULL(DESCRIPTION,'') FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) +N' đã vượt quá số tiền trình chủ trương.'
113
					+CHAR(10)+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')
114
					+CHAR(10)+ N'Số tiền còn lại có thể sử dụng: '+ FORMAT(ISNULL(@TOTAL_AMT_DETAIL,0) ,'#,#', 'vi-VN')
115
					+CHAR(10)+N'Số tiền vượt hạn mức: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) +ISNULL(@TOTAL_AMT_DETAIL,0) -  (SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) ,'#,#', 'vi-VN') ErrorDesc
116
					RETURN '-1'
117
				END
118
				--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
119
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
120
		END
121
		CLOSE CURS
122
		DEALLOCATE CURS
123
	--: HẾT ĐOẠN BỔ SUNG CỦA LỰCTV
124
	--IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
125
	--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))
126
	--	BEGIN
127
	--		ROLLBACK TRANSACTION
128
	--		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 
129
	--		RETURN '0'
130
	--END
131
	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))
132
		BEGIN
133
			ROLLBACK TRANSACTION
134
			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 
135
			RETURN '0'
136
	END
137
	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 ='')))
138
		BEGIN
139
			ROLLBACK TRANSACTION
140
			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 
141
			RETURN '0'
142
	END
143
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
144
	@BRANCH_CREATE_TYPE VARCHAR(10)
145

    
146
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
147

    
148
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
149
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
150
	-- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG
151
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
152
	BEGIN
153
		UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID
154
		INSERT INTO dbo.PL_REQUEST_PROCESS
155
		(
156
		    REQ_ID,
157
		    PROCESS_ID,
158
		    STATUS,
159
		    ROLE_USER,
160
		    BRANCH_ID,
161
			DEP_ID,
162
		    CHECKER_ID,
163
		    APPROVE_DT,
164
		    PARENT_PROCESS_ID,
165
		    IS_LEAF,
166
		    COST_ID,
167
		    DVDM_ID,
168
		    NOTES,
169
		    IS_HAS_CHILD
170
		)
171
		VALUES
172
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
173
		    'SIGN',        -- PROCESS_ID - varchar(10)
174
		    'C',        -- STATUS - varchar(5)
175
		    (SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)),  -- ROLE_USER - varchar(50)
176
		    @BRANCH_CREATE,  
177
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
178
		    '',        -- CHECKER_ID - varchar(15)
179
		    NULL,      -- APPROVE_DT - datetime
180
		    '',        -- PARENT_PROCESS_ID - varchar(10)
181
		    'N',        -- IS_LEAF - varchar(1)
182
		    '',        -- COST_ID - varchar(15)
183
		    '',        -- DVDM_ID - varchar(15)
184
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
185
		    NULL       -- IS_HAS_CHILD - bit
186
		 )
187
	END
188
	ELSE
189
	BEGIN
190
	--IF(@BRANCH_CREATE_TYPE='PGD')
191
	--	SET @BRANCH_CREATE=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
192
	
193
	UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
194
	INSERT INTO dbo.PL_REQUEST_PROCESS
195
		(
196
		    REQ_ID,
197
		    PROCESS_ID,
198
		    STATUS,
199
		    ROLE_USER,
200
		    BRANCH_ID,
201
			DEP_ID,
202
		    CHECKER_ID,
203
		    APPROVE_DT,
204
		    PARENT_PROCESS_ID,
205
		    IS_LEAF,
206
		    COST_ID,
207
		    DVDM_ID,
208
		    NOTES,
209
		    IS_HAS_CHILD
210
		)
211
		VALUES
212
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
213
		    'APPNEW',        -- PROCESS_ID - varchar(10)
214
		    'C',        -- STATUS - varchar(5)
215
		    'GDDV',        -- ROLE_USER - varchar(50)
216
		    @BRANCH_CREATE,  
217
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
218
		    '',        -- CHECKER_ID - varchar(15)
219
		    NULL,      -- APPROVE_DT - datetime
220
		    '',        -- PARENT_PROCESS_ID - varchar(10)
221
		    'N',        -- IS_LEAF - varchar(1)
222
		    '',        -- COST_ID - varchar(15)
223
		    '',        -- DVDM_ID - varchar(15)
224
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
225
		    NULL       -- IS_HAS_CHILD - bit
226
		 )
227
	END	
228
	INSERT INTO dbo.PL_PROCESS
229
					(
230
					    REQ_ID,
231
					    PROCESS_ID,
232
					    CHECKER_ID,
233
					    APPROVE_DT,
234
					    PROCESS_DESC,
235
					    NOTES
236
					)
237
					VALUES
238
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
239
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
240
						'SEND',
241
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
242
					    GETDATE(), -- APPROVE_DT - datetime
243
					    N'Nhân viên tạo phiếu và gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
244
					    N'Nhân viên gửi phê duyệt '        -- NOTES - nvarchar(1000)
245
					 )
246
	
247
		IF @@Error <> 0 GOTO ABORT
248
COMMIT TRANSACTION
249
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
250
RETURN '0'
251
ABORT:
252
BEGIN
253
		ROLLBACK TRANSACTION
254
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
255
		RETURN '-1'
256
End
257

    
258

    
259

    
260

    
261

    
262