Project

General

Profile

TR_REQUEST_DOC_SendApp_BK.txt

Luc Tran Van, 01/28/2021 02:23 PM

 
1
CREATE 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
--- XOA DATA CU  
40
DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID  
41
-----  
42
DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50)  
43
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))  
44
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))  
45
SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)  
46
SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN  
47
(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)  
48
DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME  
49
SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID  
50
--IF( EXISTS(  
51
-- 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  
52
-- GROUP BY GD_ID) Temp WHERE TOTAL_AMT_ETM >  
53
-- ((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM  
54
-- (SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT  
55
-- WHERE REQ_ID=@p_PL_REQ_ID  
56
-- UNION  
57
-- SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT  
58
-- 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  
59
-- 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')  
60
-- GROUP BY GD_ID))))  
61
-- BEGIN  
62
-- ROLLBACK TRANSACTION  
63
-- SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,  
64
-- 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  
65
-- +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')  
66
-- +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')  
67
-- +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.'  
68
-- +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  
69
-- RETURN '0'  
70
-- END  
71
-- LUCTV: 05-12-2020: KHAI BAO CURSOR DE KIEM TRA TONG HAN MUC SU DUNG PYC LINK TỚI TỜ TRÌNH  
72
-- LẤY SUM TỜ TRÌNH CHA  
73
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)  
74
SET @SUM_TO_TRINH_CHINH =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_PL_REQ_ID)  
75
-- LẤY SUM TỜ TRÌNH CON  
76
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))  
77
---  
78
SET @SUM_PYC_LUY_KE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  
79
IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS IN ('U','A'))  
80
AND REQ_DOC_ID <> @p_REQ_ID)  
81
IF(ISNULL(@SUM_TO_TRINH_CHINH,0) + ISNULL(@SUM_TO_TRINH_CON,0) <@SUM_PYC_LUY_KE+@NS_PYCMS_USE)  
82
BEGIN  
83
ROLLBACK TRANSACTION  
84
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')  
85
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))  
86
SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,  
87
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  
88
+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')  
89
+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')  
90
+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  
91
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), @REMAIN_AMT DECIMAL(18,0), @AMT_PL_DT DECIMAL(18,0), @AMT_PL_DT_EX 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 IN ('U','A'))  
107
AND PL_REQDT_ID =@PL_DT_ID)  
108
SET @AMT_PL_DT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID)  
109
SET @REMAIN_AMT = ISNULL(@AMT_PL_DT,0) -ISNULL(@SUM_@PL_DT_ID,0)  
110
--SET @SUM_@PL_DT_ID = ISNULL(@SUM_@PL_DT_ID,0)+ISNULL(@TOTAL_AMT_DETAIL,0)  
111
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)  
112
--AND PL_REQDT_ID =@PL_DT_ID)  
113
--PRINT @SUM_@PL_DT_ID  
114
IF(ISNULL(@SUM_@PL_DT_ID,0)+ ISNULL(@AMT_PL_DT_EX,0) > @AMT_PL_DT)  
115
--IF(1<2)  
116
BEGIN  
117
ROLLBACK TRANSACTION  
118
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: '+  
119
(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.'  
120
+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')  
121
+CHAR(10)+ 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  
122
--+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')  
123
ErrorDesc  
124
RETURN '-1'  
125
END  
126
--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  
127
-- SO SÁNH TỔNG BREAK DOWN TỪ 1 HẠNG MỤC  
128
--IF(SELECT SUM())  
129
FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL  
130
END  
131
CLOSE CURS  
132
DEALLOCATE CURS  
133
--: HẾT ĐOẠN BỔ SUNG CỦA LỰCTV  
134
--IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))  
135
--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))  
136
-- BEGIN  
137
-- ROLLBACK TRANSACTION  
138
-- 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  
139
-- RETURN '0'  
140
--END  
141
IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))  
142
BEGIN  
143
ROLLBACK TRANSACTION  
144
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  
145
RETURN '0'  
146
END  
147
IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND (REQ_DT IS NULL OR REQ_DT ='')))  
148
BEGIN  
149
ROLLBACK TRANSACTION  
150
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  
151
RETURN '0'  
152
END  
153
DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),  
154
@BRANCH_CREATE_TYPE VARCHAR(10)  
155
 
156
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID  
157
 
158
SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)  
159
SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)  
160
-- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG  
161
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))  
162
BEGIN  
163
UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID  
164
INSERT INTO dbo.PL_REQUEST_PROCESS  
165
(  
166
REQ_ID,  
167
PROCESS_ID,  
168
STATUS,  
169
ROLE_USER,  
170
BRANCH_ID,  
171
DEP_ID,  
172
CHECKER_ID,  
173
APPROVE_DT,  
174
PARENT_PROCESS_ID,  
175
IS_LEAF,  
176
COST_ID,  
177
DVDM_ID,  
178
NOTES,  
179
IS_HAS_CHILD  
180
)  
181
VALUES  
182
( @p_REQ_ID, -- REQ_ID - varchar(15)  
183
'SIGN', -- PROCESS_ID - varchar(10)  
184
'C', -- STATUS - varchar(5)  
185
(SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)), -- ROLE_USER - varchar(50)  
186
@BRANCH_CREATE,  
187
@DEP_CREATE, -- BRANCH_ID - varchar(15)  
188
'', -- CHECKER_ID - varchar(15)  
189
NULL, -- APPROVE_DT - datetime  
190
'', -- PARENT_PROCESS_ID - varchar(10)  
191
'N', -- IS_LEAF - varchar(1)  
192
'', -- COST_ID - varchar(15)  
193
'', -- DVDM_ID - varchar(15)  
194
N'Chờ cấp phê duyệt trung gian xác nhận phiếu', -- NOTES - nvarchar(500)  
195
NULL -- IS_HAS_CHILD - bit  
196
)  
197
END  
198
ELSE  
199
BEGIN  
200
--IF(@BRANCH_CREATE_TYPE='PGD')  
201
--SET @BRANCH_CREATE=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)  
202
 
203
UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID  
204
INSERT INTO dbo.PL_REQUEST_PROCESS  
205
(  
206
REQ_ID,  
207
PROCESS_ID,  
208
STATUS,  
209
ROLE_USER,  
210
BRANCH_ID,  
211
DEP_ID,  
212
CHECKER_ID,  
213
APPROVE_DT,  
214
PARENT_PROCESS_ID,  
215
IS_LEAF,  
216
COST_ID,  
217
DVDM_ID,  
218
NOTES,  
219
IS_HAS_CHILD  
220
)  
221
VALUES  
222
( @p_REQ_ID, -- REQ_ID - varchar(15)  
223
'APPNEW', -- PROCESS_ID - varchar(10)  
224
'C', -- STATUS - varchar(5)  
225
'GDDV', -- ROLE_USER - varchar(50)  
226
@BRANCH_CREATE,  
227
@DEP_CREATE, -- BRANCH_ID - varchar(15)  
228
'', -- CHECKER_ID - varchar(15)  
229
NULL, -- APPROVE_DT - datetime  
230
'', -- PARENT_PROCESS_ID - varchar(10)  
231
'N', -- IS_LEAF - varchar(1)  
232
'', -- COST_ID - varchar(15)  
233
'', -- DVDM_ID - varchar(15)  
234
N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500)  
235
NULL -- IS_HAS_CHILD - bit  
236
)  
237
END  
238
INSERT INTO dbo.PL_PROCESS  
239
(  
240
REQ_ID,  
241
PROCESS_ID,  
242
CHECKER_ID,  
243
APPROVE_DT,  
244
PROCESS_DESC,  
245
NOTES  
246
)  
247
VALUES  
248
( @p_REQ_ID, -- REQ_ID - varchar(15)  
249
--@p_PROCESS_ID, -- PROCESS_ID - varchar(10)  
250
'SEND',  
251
@p_TLNAME, -- CHECKER_ID - varchar(15)  
252
GETDATE(), -- APPROVE_DT - datetime  
253
N'Nhân viên tạo phiếu và gửi phê duyệt thành công' , -- PROCESS_DESC - nvarchar(1000)  
254
N'Nhân viên gửi phê duyệt ' -- NOTES - nvarchar(1000)  
255
)  
256
 
257
IF @@Error <> 0 GOTO ABORT  
258
COMMIT TRANSACTION  
259
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc  
260
RETURN '0'  
261
ABORT:  
262
BEGIN  
263
ROLLBACK TRANSACTION  
264
SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc  
265
RETURN '-1'  
266
End