1
|
USE [AMSGD3]
|
2
|
GO
|
3
|
/****** Object: StoredProcedure [dbo].[TR_REQ_ADVANCE_PAYMENT_TPHC_Appr] Script Date: 5/9/2022 2:22:31 PM ******/
|
4
|
SET ANSI_NULLS ON
|
5
|
GO
|
6
|
SET QUOTED_IDENTIFIER ON
|
7
|
GO
|
8
|
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_TPHC_Appr]
|
9
|
--Luanlt 2019/17/10 - Sửa params
|
10
|
@p_REQ_PAY_ID varchar(15)= NULL,
|
11
|
@p_CHECKER_ID varchar(15) = NULL,
|
12
|
@p_AUTH_STATUS varchar(15) = NULL,
|
13
|
@p_COST_ID VARCHAR(15) = NULL,
|
14
|
@p_IS_AUTHORITY varchar(1) = NULL
|
15
|
AS
|
16
|
BEGIN TRANSACTION
|
17
|
--------------------------------------------------------------- START VALIDATE -------------------------------------------------------------------------------------
|
18
|
IF(@p_IS_AUTHORITY <> 'Y')
|
19
|
BEGIN
|
20
|
SET @p_IS_AUTHORITY = 'N'
|
21
|
END
|
22
|
-- KHAI BAO THEM ROLE NHAN UY QUYEN
|
23
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
24
|
INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
25
|
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
26
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
|
27
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
|
28
|
AND TLNAME =@p_CHECKER_ID
|
29
|
|
30
|
-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
|
31
|
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
|
32
|
INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID
|
33
|
--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
|
34
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
|
35
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
|
36
|
DECLARE @BRANCH_CREATE VARCHAR(15), @p_DEP_ID VARCHAR(15)
|
37
|
--PRINT @BRANCH_CREATE
|
38
|
SET @BRANCH_CREATE =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
39
|
DECLARE @DEP_CODE_NEXT VARCHAR(15)
|
40
|
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE)<>'HS')
|
41
|
BEGIN
|
42
|
SET @p_DEP_ID =(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE LEFT(DEP_CODE,5) IN (SELECT TOP 1 LEFT(DVDM_CODE,5) FROM CM_DVDM WHERE DVDM_ID =@p_COST_ID))
|
43
|
SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
|
44
|
END
|
45
|
ELSE
|
46
|
BEGIN
|
47
|
SET @p_DEP_ID =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
48
|
SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
|
49
|
END
|
50
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
51
|
BEGIN
|
52
|
ROLLBACK TRANSACTION
|
53
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Người phê duyệt phiếu phải khác với người tạo phiếu! Bạn không được phép duyệt đối tượng này' ErrorDesc
|
54
|
RETURN '-1'
|
55
|
END
|
56
|
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
|
57
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
58
|
BEGIN
|
59
|
ROLLBACK TRANSACTION
|
60
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
61
|
RETURN '-1'
|
62
|
END
|
63
|
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
|
64
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
65
|
BEGIN
|
66
|
ROLLBACK TRANSACTION
|
67
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
68
|
RETURN '-1'
|
69
|
END
|
70
|
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
|
71
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
72
|
BEGIN
|
73
|
ROLLBACK TRANSACTION
|
74
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được KSV phê duyệt trước đó' ErrorDesc
|
75
|
RETURN '-1'
|
76
|
END
|
77
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
78
|
BEGIN
|
79
|
ROLLBACK TRANSACTION
|
80
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt trước đó' ErrorDesc
|
81
|
RETURN '-1'
|
82
|
END
|
83
|
--------------------------------------------------------------- END VALIDATE -------------------------------------------------------------------------------------
|
84
|
|
85
|
--- KHAI BAO CHUNG
|
86
|
DECLARE @ROLE_ID VARCHAR(200), @BRANCH_TYPE VARCHAR(15), @TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0), @BRANCH_ID VARCHAR(15),
|
87
|
@DEP_ID VARCHAR(15), @COSTCENTER_ID VARCHAR(15)= NULL, @BRANCH_RQ VARCHAR(15) = NULL,@DEP_ID_RQ VARCHAR(15), @BRANCH_LOGIN VARCHAR(15),@LIMIT_ONE_OF DECIMAL(18,2)
|
88
|
DECLARE @LIMIT_AMT DECIMAL(18,0), @REQ_AMT DECIMAL(18,2) =0, @TONG_PGD DECIMAL(18,0), @TONG_PGD_HOAN DECIMAL(18,0)
|
89
|
SET @REQ_AMT = (SELECT REQ_AMT *ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
90
|
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
|
91
|
IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
|
92
|
BEGIN
|
93
|
PRINT @ROLE_ID
|
94
|
END
|
95
|
ELSE
|
96
|
BEGIN
|
97
|
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
|
98
|
IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
|
99
|
BEGIN
|
100
|
SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID))
|
101
|
END
|
102
|
END
|
103
|
SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
104
|
SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
105
|
SET @DEP_ID_RQ =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
106
|
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
|
107
|
DECLARE @tmp table(BRANCH_ID varchar(15))
|
108
|
INSERT into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_ID)
|
109
|
DECLARE @tmp_CN table(BRANCH_ID varchar(15))
|
110
|
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
|
111
|
BEGIN
|
112
|
INSERT into @tmp_CN VALUES (@BRANCH_RQ)
|
113
|
END
|
114
|
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
|
115
|
BEGIN
|
116
|
INSERT into @tmp_CN VALUES (@BRANCH_RQ)
|
117
|
END
|
118
|
DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
|
119
|
INSERT INTO @TMP_DVDM
|
120
|
SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
|
121
|
FROM PL_COSTCENTER A
|
122
|
LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
|
123
|
WHERE B.DEP_ID = @DEP_ID_RQ
|
124
|
GROUP BY A.DVDM_ID
|
125
|
-- KHAI BAO BRANCH CUA USER DUYET
|
126
|
SET @BRANCH_LOGIN = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
127
|
DECLARE @LIMIT_REMAIN DECIMAL(18,0)
|
128
|
--CAP NHAT CODE TRONG QUA TRINH TEST UAT
|
129
|
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
|
130
|
-- NẾU LÀ TẠM ỨNG NỘI BỘ
|
131
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
|
132
|
BEGIN
|
133
|
-- POPUP GỬI LÊN LẦN 1 ĐỂ THÔNG BÁO HẠN MỨC CHO NGƯỜI DUYỆT
|
134
|
IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
|
135
|
BEGIN
|
136
|
|
137
|
-- doanptt 19/04/2022 set hạn mức cho TP Hành chính ở HO
|
138
|
IF(@ROLE_ID ='GDDV' AND ((SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604'))
|
139
|
BEGIN
|
140
|
SET @LIMIT_AMT =1000000000 -- 1 tỷ
|
141
|
SET @LIMIT_ONE_OF = 50000000 -- 50 triệu
|
142
|
|
143
|
END
|
144
|
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
|
145
|
SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
|
146
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
|
147
|
SET @TONG_PGD_HOAN =(
|
148
|
SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
|
149
|
WHERE A.BRANCH_ID = @BRANCH_RQ
|
150
|
AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I')
|
151
|
IF(@BRANCH_TYPE='HS')
|
152
|
BEGIN
|
153
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
154
|
DEP_ID IN
|
155
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
156
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
157
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
|
158
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
159
|
SET @TOTAL_PAYBACK =
|
160
|
ISNULL(
|
161
|
(
|
162
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
163
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
164
|
WHERE C.DEP_ID IN
|
165
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
166
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
167
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
|
168
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
169
|
),0)
|
170
|
END
|
171
|
--- BO SUNG NEU RIENG PHONG HANH CHINH O HOI SO
|
172
|
IF(@BRANCH_TYPE='HS' AND @DEP_CODE_NEXT ='0690604' )
|
173
|
BEGIN
|
174
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
175
|
DEP_ID IN
|
176
|
(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690604' AND BRANCH_ID =@BRANCH_RQ)
|
177
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
178
|
SET @TOTAL_PAYBACK =
|
179
|
ISNULL(
|
180
|
(
|
181
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
182
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
183
|
WHERE C.DEP_ID IN
|
184
|
(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690604' AND BRANCH_ID =@BRANCH_RQ)
|
185
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
186
|
),0)
|
187
|
PRINT @TOTAL_ADVANCE
|
188
|
PRINT @TOTAL_PAYBACK
|
189
|
END
|
190
|
--- END
|
191
|
|
192
|
SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
|
193
|
PRINT @LIMIT_REMAIN
|
194
|
-- NẾU KHÔNG ĐỦ HẠN MỨC THÌ THÔNG BÁO
|
195
|
IF(@LIMIT_AMT <(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) + @LIMIT_REMAIN)
|
196
|
BEGIN
|
197
|
ROLLBACK TRANSACTION
|
198
|
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
199
|
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') + CHAR(10)+
|
200
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
201
|
+ CHAR(10) + CHAR(13)+
|
202
|
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN +@REQ_AMT ,'#,#', 'vi-VN')
|
203
|
+ CHAR(10) +
|
204
|
N'Số tiền tạm ứng đã vượt mức phê duyệt là: '+ FORMAT((@LIMIT_REMAIN +@REQ_AMT) -@LIMIT_AMT,'#,#', 'vi-VN')
|
205
|
+ CHAR(10) +
|
206
|
N'Bạn muốn chuyển giao dịch lên cấp cao hơn để duyệt hay tiếp tục chờ duyệt' ErrorDesc
|
207
|
RETURN '-2'
|
208
|
END
|
209
|
--- NẾU ĐỦ HẠN MỨC THÌ THÔNG BÁO CHO NGƯỜI DÙNG CÂN NHẮC CÓ DUYỆT HAY KHÔNG
|
210
|
IF(@LIMIT_AMT >=(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) +@LIMIT_REMAIN)
|
211
|
BEGIN
|
212
|
IF(@REQ_AMT >@LIMIT_ONE_OF)
|
213
|
BEGIN
|
214
|
ROLLBACK TRANSACTION
|
215
|
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
216
|
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
217
|
+ CHAR(10)+
|
218
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
219
|
+ CHAR(10) + CHAR(13) +
|
220
|
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN +@REQ_AMT ,'#,#', 'vi-VN')
|
221
|
+ CHAR(10) +
|
222
|
N'Số tiền tạm ứng đã vượt mức so với số tiền của một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
223
|
+ CHAR(10) +
|
224
|
N'Bạn muốn chuyển giao dịch lên cấp cao hơn để duyệt hay tiếp tục chờ duyệt' ErrorDesc
|
225
|
RETURN '-2'
|
226
|
END
|
227
|
ELSE
|
228
|
BEGIN
|
229
|
-- KIEM TRA NEU LA PGD THI CANH BAO
|
230
|
IF(@BRANCH_TYPE ='HS')
|
231
|
BEGIN
|
232
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
|
233
|
BEGIN
|
234
|
ROLLBACK TRANSACTION
|
235
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
236
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
237
|
+ CHAR(10) +
|
238
|
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
|
239
|
+ CHAR(10) +
|
240
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
241
|
RETURN '-4'
|
242
|
END
|
243
|
ELSE
|
244
|
BEGIN
|
245
|
ROLLBACK TRANSACTION
|
246
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
247
|
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
|
248
|
+ CHAR(10) +
|
249
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
250
|
RETURN '-4'
|
251
|
END
|
252
|
END
|
253
|
END
|
254
|
END
|
255
|
-- NEU THOA MAN CAC DIEU KIEN SE TIEN HANH DUYET
|
256
|
END -- END DU HAN MUC DUYET
|
257
|
-- NẾU ĐỦ HẠN MỨC
|
258
|
ELSE IF(@p_AUTH_STATUS='A')
|
259
|
BEGIN
|
260
|
DECLARE @l_REQ_AMT DECIMAL(18,0) = (SELECT REQ_AMT*ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
261
|
|
262
|
IF(@ROLE_ID ='GDDV' AND ((SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604'))
|
263
|
BEGIN
|
264
|
SET @LIMIT_AMT =1000000000 -- 1 tỷ
|
265
|
SET @LIMIT_ONE_OF = 50000000 -- 50 triệu
|
266
|
|
267
|
END
|
268
|
-- UPDATE phiếu đề nghị tạm ứng là đã duyệt
|
269
|
UPDATE TR_REQ_ADVANCE_PAYMENT
|
270
|
SET AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE(), AUTH_STATUS_KT='U', IS_AUTHORITY = @p_IS_AUTHORITY
|
271
|
WHERE REQ_PAY_ID = @p_REQ_PAY_ID
|
272
|
|
273
|
-- CAP NHAT LAI TINH TRANG TRONG REQUEST_PROCESS select * from PL_PROCESS select process, auth_status from TR_REQ_ADVANCE_PAYMENT select * from PL_REQUEST_PROCESS
|
274
|
-- Lưu lịch sử xử lý
|
275
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'APP',@p_CHECKER_ID, GETDATE(),N'Trưởng phòng hành chính duyệt',N'Các cấp phê duyệt theo hạn mức')
|
276
|
--- CAP NHAT PROCESS CUA PHIEU DE NGHI TAM UNG LA DA DUYET
|
277
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='APP' WHERE REQ_PAY_ID=@p_REQ_PAY_ID
|
278
|
--
|
279
|
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
|
280
|
SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
|
281
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
|
282
|
SET @TONG_PGD_HOAN =(
|
283
|
SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
|
284
|
WHERE A.BRANCH_ID = @BRANCH_RQ
|
285
|
AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I')
|
286
|
-- NẾU Ở HO
|
287
|
IF(@BRANCH_TYPE='HS')
|
288
|
BEGIN
|
289
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
290
|
DEP_ID IN
|
291
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
292
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
293
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
|
294
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
295
|
SET @TOTAL_PAYBACK =
|
296
|
ISNULL(
|
297
|
(
|
298
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
299
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
300
|
WHERE C.DEP_ID IN
|
301
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
302
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
303
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
|
304
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
305
|
),0)
|
306
|
END
|
307
|
|
308
|
SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
|
309
|
--- INSERT VAO BANG LOG
|
310
|
INSERT INTO TR_REQ_ADVANCE_LIMIT_LOG VALUES (@p_REQ_PAY_ID,@LIMIT_REMAIN,GETDATE())
|
311
|
|
312
|
DELETE FROM PL_REQUEST_PROCESS where REQ_ID = @p_REQ_PAY_ID
|
313
|
----
|
314
|
END
|
315
|
-- NẾU KHÔNG ĐỦ HẠN MỨC --> CHUYỂN CẤP (AUTH_STATUS='C')
|
316
|
ELSE
|
317
|
BEGIN
|
318
|
-- Thêm vào lịch sử xử lý
|
319
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'',@p_CHECKER_ID, GETDATE(),(SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
|
320
|
IF @@Error <> 0 GOTO ABORT
|
321
|
-- update phiếu đề nghị tạm ứng
|
322
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS ='' , AUTH_STATUS='U', DVDM_ID = @p_COST_ID WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
323
|
END
|
324
|
END
|
325
|
-- NẾU KHÔNG PHẢI TẠM ỨNG NỘI BỘ
|
326
|
ELSE
|
327
|
BEGIN
|
328
|
BEGIN
|
329
|
ROLLBACK TRANSACTION
|
330
|
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,'Lỗi hệ thống. Đây không phải phiếu đề nghị tạm ứng nội bộ, nhưng đang xét duyệt theo hình thức tạm ứng nội bộ.' ErrorDesc
|
331
|
RETURN '-1'
|
332
|
END
|
333
|
END
|
334
|
IF @@Error <> 0 GOTO ABORT
|
335
|
COMMIT TRANSACTION
|
336
|
IF(@p_AUTH_STATUS='A')
|
337
|
BEGIN
|
338
|
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
|
339
|
RETURN '0'
|
340
|
END
|
341
|
ELSE
|
342
|
BEGIN
|
343
|
SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,'Phiếu đề nghị tạm ứng số: ' + @p_REQ_PAY_ID + ' đã được phê duyệt thành công. Vui lòng đợi bộ phận kế toán xử lý phiếu.' ErrorDesc
|
344
|
RETURN '1'
|
345
|
END
|
346
|
ABORT:
|
347
|
BEGIN
|
348
|
ROLLBACK TRANSACTION
|
349
|
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
350
|
RETURN '-1'
|
351
|
END
|
352
|
|
353
|
|
354
|
|
355
|
|
356
|
|