1
|
|
2
|
|
3
|
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Appr]
|
4
|
--Luanlt 2019/17/10 - Sửa params
|
5
|
@p_REQ_PAY_ID varchar(15)= NULL,
|
6
|
@p_CHECKER_ID varchar(15) = NULL,
|
7
|
@p_AUTH_STATUS varchar(15) = NULL,
|
8
|
@p_COST_ID VARCHAR(15) = NULL,
|
9
|
@p_IS_AUTHORITY varchar(1) = NULL,
|
10
|
@p_PROCESS_NOTES nvarchar(max) = NULL
|
11
|
AS
|
12
|
-- BEGIN VALIDATE
|
13
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
14
|
BEGIN
|
15
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này này! Người phê duyệt phiếu phải khác với người tạo phiếu' ErrorDesc
|
16
|
RETURN '-1'
|
17
|
END
|
18
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
19
|
BEGIN
|
20
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phê duyệt phiếu đề nghị tạm ứng thất bại! Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt trước đó' ErrorDesc
|
21
|
RETURN '-1'
|
22
|
END
|
23
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
24
|
BEGIN
|
25
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đ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
|
26
|
RETURN '-1'
|
27
|
END
|
28
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
29
|
BEGIN
|
30
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc
|
31
|
RETURN '-1'
|
32
|
END
|
33
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
34
|
BEGIN
|
35
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc
|
36
|
RETURN '-1'
|
37
|
END
|
38
|
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='S' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
39
|
BEGIN
|
40
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được đề xuất từ chối. Vui lòng kiểm tra lại thông tin' ErrorDesc
|
41
|
RETURN '-1'
|
42
|
END
|
43
|
-- CHAN CUOI
|
44
|
IF (EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS <> 'U' AND REQ_PAY_ID =@p_REQ_PAY_ID))
|
45
|
BEGIN
|
46
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc
|
47
|
RETURN '-1'
|
48
|
END
|
49
|
-- END VALIDATE
|
50
|
|
51
|
BEGIN TRANSACTION
|
52
|
IF(@p_IS_AUTHORITY <> 'Y')
|
53
|
BEGIN
|
54
|
SET @p_IS_AUTHORITY = 'N'
|
55
|
END
|
56
|
-- KHAI BAO THEM ROLE NHAN UY QUYEN
|
57
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
58
|
INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
59
|
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)
|
60
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
|
61
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
|
62
|
AND TLNAME =@p_CHECKER_ID
|
63
|
|
64
|
-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
|
65
|
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
|
66
|
INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID
|
67
|
--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
|
68
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
|
69
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
|
70
|
DECLARE @BRANCH_CREATE VARCHAR(15), @p_DEP_ID VARCHAR(15)
|
71
|
--PRINT @BRANCH_CREATE
|
72
|
SET @BRANCH_CREATE =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
73
|
DECLARE @DEP_CODE_NEXT VARCHAR(15)
|
74
|
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE)<>'HS')
|
75
|
BEGIN
|
76
|
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))
|
77
|
SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
|
78
|
--PRINT @DEP_CODE_NEXT
|
79
|
END
|
80
|
ELSE
|
81
|
BEGIN
|
82
|
SET @p_DEP_ID =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
83
|
SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
|
84
|
END
|
85
|
|
86
|
IF (ISNULL(@p_COST_ID, '') <> '' AND (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE) = 'HS')
|
87
|
BEGIN
|
88
|
ROLLBACK TRANSACTION
|
89
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Xác nhận phiếu đề nghị tạm ứng thất bại! Nhân viên ở hội sở không được phép chọn khối phê duyệt' ErrorDesc
|
90
|
RETURN '-1'
|
91
|
END
|
92
|
|
93
|
--- KHAI BAO CHUNG
|
94
|
DECLARE @ROLE_ID VARCHAR(200), @BRANCH_TYPE VARCHAR(15), @TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0), @BRANCH_ID VARCHAR(15),
|
95
|
@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)
|
96
|
DECLARE @LIMIT_AMT DECIMAL(18,0), @REQ_AMT DECIMAL(18,2) =0, @TONG_PGD DECIMAL(18,0), @TONG_PGD_HOAN DECIMAL(18,0)
|
97
|
SET @REQ_AMT = (SELECT REQ_AMT *ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
98
|
--SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
|
99
|
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
|
100
|
--SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
|
101
|
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'))
|
102
|
BEGIN
|
103
|
PRINT @ROLE_ID
|
104
|
END
|
105
|
ELSE
|
106
|
BEGIN
|
107
|
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
|
108
|
IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
|
109
|
BEGIN
|
110
|
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))
|
111
|
END
|
112
|
END
|
113
|
SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
114
|
SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
115
|
SET @DEP_ID_RQ =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
116
|
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
|
117
|
DECLARE @tmp table(BRANCH_ID varchar(15))
|
118
|
INSERT into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_ID)
|
119
|
DECLARE @tmp_CN table(BRANCH_ID varchar(15))
|
120
|
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
|
121
|
BEGIN
|
122
|
--INSERT into @tmp_CN SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
|
123
|
INSERT into @tmp_CN VALUES (@BRANCH_RQ)
|
124
|
END
|
125
|
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
|
126
|
BEGIN
|
127
|
--DECLARE @FATHER_ID VARCHAR(15) = NULL
|
128
|
--SET @FATHER_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
|
129
|
--INSERT into @tmp_CN SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
|
130
|
INSERT into @tmp_CN VALUES (@BRANCH_RQ)
|
131
|
END
|
132
|
--DECLARE @DEP_ID_LG VARCHAR(15) = NULL
|
133
|
--SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
|
134
|
DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
|
135
|
INSERT INTO @TMP_DVDM
|
136
|
SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
|
137
|
FROM PL_COSTCENTER A
|
138
|
LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
|
139
|
WHERE B.DEP_ID = @DEP_ID_RQ
|
140
|
GROUP BY A.DVDM_ID
|
141
|
-- KHAI BAO BRANCH CUA USER DUYET
|
142
|
SET @BRANCH_LOGIN = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
143
|
DECLARE @LIMIT_REMAIN DECIMAL(18,0)
|
144
|
--CAP NHAT CODE TRONG QUA TRINH TEST UAT
|
145
|
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
|
146
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
|
147
|
BEGIN
|
148
|
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE) ='HS')
|
149
|
BEGIN
|
150
|
IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ISNULL(ROLE_AUTH,'') IN ('GDDV','TP') AND (SELECT ISNULL(PROCESS,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) =''))
|
151
|
BEGIN
|
152
|
-- doanptt them note khi xac nhan
|
153
|
IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
|
154
|
BEGIN
|
155
|
SET @p_PROCESS_NOTES = N'Trưởng đơn vị xác nhận phiếu';
|
156
|
END
|
157
|
|
158
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0', NOTES ='' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
159
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(), @p_PROCESS_NOTES,N'Xác nhận phiếu tạm ứng')
|
160
|
COMMIT TRANSACTION
|
161
|
SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'' ErrorDesc
|
162
|
RETURN '1'
|
163
|
END
|
164
|
END
|
165
|
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID))
|
166
|
BEGIN
|
167
|
ROLLBACK TRANSACTION
|
168
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không có quyền phê duyệt phiếu tạm ứng nội bộ. Vui lòng chọn giao dịch khác để duyệt' ErrorDesc
|
169
|
RETURN '-1'
|
170
|
END
|
171
|
IF NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND STATUS = 'C')
|
172
|
BEGIN
|
173
|
ROLLBACK TRANSACTION
|
174
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được bạn phê duyệt xong trước đó! Vui lòng đợi cấp tiếp theo phê duyệt tạm ứng' ErrorDesc
|
175
|
RETURN '-1'
|
176
|
END
|
177
|
|
178
|
--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID AND BRANCH_ID= @BRANCH_ID AND STATUS ='P'))
|
179
|
--BEGIN
|
180
|
-- ROLLBACK TRANSACTION
|
181
|
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn đã thực hiện xác nhận phiếu tạm ứng trước đó' ErrorDesc
|
182
|
-- RETURN '-1'
|
183
|
--END
|
184
|
-- KIEM TRA AUTH_STATUS TRUYEN XUONG LA GI, A: DUYET, C: CONFIRM
|
185
|
IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
|
186
|
BEGIN
|
187
|
-- KIEM TRA NEU ROLE CHUA CO HAN MUC PHE DUYET THI PHAI THONG BAO
|
188
|
IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE ROLE_ID =@ROLE_ID AND LIMIT_TYPE ='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN))
|
189
|
BEGIN
|
190
|
ROLLBACK TRANSACTION
|
191
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn chưa được cấu hình hạn mức phê duyệt tạm ứng nội bộ. Vui lòng thông báo Admin cấu hình hạn mức phê duyệt' ErrorDesc
|
192
|
RETURN '-1'
|
193
|
END
|
194
|
-- BAT DAU DUYET THEO NGAN SACH
|
195
|
--- LAY HAN MUC CUA USER
|
196
|
SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
197
|
|
198
|
--print @LIMIT_AMT
|
199
|
SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
200
|
IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
|
201
|
BEGIN
|
202
|
SET @LIMIT_AMT =6000000000 -- TANG LEN 6 TY
|
203
|
SET @LIMIT_ONE_OF =1000000000
|
204
|
|
205
|
END
|
206
|
IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
|
207
|
BEGIN
|
208
|
SET @LIMIT_AMT =4000000000 --- TANG LEN 4 TY
|
209
|
SET @LIMIT_ONE_OF =500000000
|
210
|
IF(EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD ='PTGD' AND ROLE_NEW ='TGD'
|
211
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
|
212
|
BEGIN
|
213
|
SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
214
|
SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
215
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID))
|
216
|
BEGIN
|
217
|
UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='PTGD' AND REQ_ID =@p_REQ_PAY_ID
|
218
|
UPDATE PL_REQUEST_PROCESS SET STATUS ='C',ROLE_USER ='PTGD' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
|
219
|
SET @ROLE_ID ='TGD'
|
220
|
END
|
221
|
END
|
222
|
|
223
|
END
|
224
|
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
|
225
|
SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
|
226
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
|
227
|
SET @TONG_PGD_HOAN =(
|
228
|
--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
|
229
|
--FROM TR_REQ_PAYMENT_DT B
|
230
|
--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
|
231
|
--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
|
232
|
SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
|
233
|
WHERE A.BRANCH_ID = @BRANCH_RQ
|
234
|
AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I')
|
235
|
IF(@BRANCH_TYPE='HS')
|
236
|
BEGIN
|
237
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
238
|
DEP_ID IN
|
239
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
240
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
241
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
|
242
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
243
|
SET @TOTAL_PAYBACK =
|
244
|
ISNULL(
|
245
|
(
|
246
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
247
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
248
|
WHERE C.DEP_ID IN
|
249
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
250
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
251
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
|
252
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
253
|
),0)
|
254
|
END
|
255
|
--- BO SUNG NEU RIENG PHONG THUONG HIEU VA TRUYEN THONG --- 2021824
|
256
|
IF(@BRANCH_TYPE='HS' AND @DEP_CODE_NEXT ='0690405' )
|
257
|
BEGIN
|
258
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
259
|
DEP_ID IN
|
260
|
(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
|
261
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
262
|
SET @TOTAL_PAYBACK =
|
263
|
ISNULL(
|
264
|
(
|
265
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
266
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
267
|
WHERE C.DEP_ID IN
|
268
|
(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
|
269
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
270
|
),0)
|
271
|
PRINT @TOTAL_ADVANCE
|
272
|
PRINT @TOTAL_PAYBACK
|
273
|
END
|
274
|
--- END
|
275
|
-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
|
276
|
ELSE IF(@BRANCH_TYPE <>'HS')
|
277
|
BEGIN
|
278
|
SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
|
279
|
AND REQ_TYPE ='I' AND AUTH_STATUS='A')
|
280
|
SET @TOTAL_PAYBACK =
|
281
|
(
|
282
|
SELECT (SUM(ISNULL(B.PAY_AMT,0)))
|
283
|
FROM TR_REQ_ADVANCE_PAYMENT B
|
284
|
WHERE B.BRANCH_ID IN
|
285
|
(SELECT BRANCH_ID FROM @tmp_CN)
|
286
|
AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
|
287
|
)
|
288
|
END
|
289
|
|
290
|
SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
|
291
|
PRINT @LIMIT_REMAIN
|
292
|
-- KIEM TRA NEU LA CHU TICH HDQT THI PHE DUYET LUON, KHONG CAN XET HAN MUC GI
|
293
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName ='HDQT'))
|
294
|
BEGIN
|
295
|
ROLLBACK TRANSACTION
|
296
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
297
|
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
298
|
--+ CHAR(10) +
|
299
|
--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
300
|
--+ CHAR(10) + CHAR(13) +
|
301
|
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')
|
302
|
+ CHAR(10) +
|
303
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
304
|
RETURN '-4'
|
305
|
END
|
306
|
IF(@LIMIT_AMT <(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) + @LIMIT_REMAIN)
|
307
|
BEGIN
|
308
|
ROLLBACK TRANSACTION
|
309
|
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
310
|
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') + CHAR(10)+
|
311
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
312
|
+ CHAR(10) + CHAR(13)+
|
313
|
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')
|
314
|
+ CHAR(10) +
|
315
|
N'Số tiền tạm ứng đã vượt mức phê duyệt là: '+ FORMAT((@LIMIT_REMAIN +@REQ_AMT) -@LIMIT_AMT,'#,#', 'vi-VN')
|
316
|
+ CHAR(10) +
|
317
|
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
|
318
|
RETURN '-2'
|
319
|
END
|
320
|
--- NEU DU HAN MUC THI THONG BAO DE NGUOI DUYET CAN NHAC CO NEN DUYET PHIEU HAY KHONG
|
321
|
IF(@LIMIT_AMT >=(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) +@LIMIT_REMAIN)
|
322
|
BEGIN
|
323
|
IF(@REQ_AMT >@LIMIT_ONE_OF)
|
324
|
BEGIN
|
325
|
ROLLBACK TRANSACTION
|
326
|
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
327
|
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
328
|
+ CHAR(10)+
|
329
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
330
|
+ CHAR(10) + CHAR(13) +
|
331
|
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')
|
332
|
+ CHAR(10) +
|
333
|
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')
|
334
|
+ CHAR(10) +
|
335
|
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
|
336
|
RETURN '-2'
|
337
|
END
|
338
|
ELSE
|
339
|
BEGIN
|
340
|
-- KIEM TRA NEU LA PGD THI CANH BAO
|
341
|
IF(@BRANCH_TYPE ='HS')
|
342
|
BEGIN
|
343
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
|
344
|
BEGIN
|
345
|
ROLLBACK TRANSACTION
|
346
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
347
|
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
348
|
--+ CHAR(10) + CHAR(13) +
|
349
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
350
|
+ CHAR(10) +
|
351
|
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')
|
352
|
+ CHAR(10) +
|
353
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
354
|
RETURN '-4'
|
355
|
END
|
356
|
ELSE
|
357
|
BEGIN
|
358
|
ROLLBACK TRANSACTION
|
359
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
360
|
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
361
|
--+ CHAR(10) + CHAR(13) +
|
362
|
--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
363
|
--+ CHAR(10) +
|
364
|
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')
|
365
|
+ CHAR(10) +
|
366
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
367
|
RETURN '-4'
|
368
|
END
|
369
|
END
|
370
|
ELSE IF(@BRANCH_TYPE ='CN')
|
371
|
BEGIN
|
372
|
---LUCTV 24.11.2022 NẾU PHIẾU TỪ CN GỬI LÊN THÌ CHỈ CẦN XÉT SỐ TIỀN DUYỆT 1 LẦN CÓ ĐỦ HẠN MỨC KHÔNG
|
373
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName IN('GDK','PTGD','TGD')))
|
374
|
BEGIN
|
375
|
IF(@REQ_AMT >@LIMIT_ONE_OF)
|
376
|
BEGIN
|
377
|
ROLLBACK TRANSACTION
|
378
|
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
379
|
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
380
|
+ CHAR(10)+
|
381
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
382
|
+ CHAR(10) + CHAR(13) +
|
383
|
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')
|
384
|
+ CHAR(10) +
|
385
|
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')
|
386
|
+ CHAR(10) +
|
387
|
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
|
388
|
RETURN '-2'
|
389
|
END
|
390
|
ELSE
|
391
|
BEGIN
|
392
|
ROLLBACK TRANSACTION
|
393
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
394
|
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
395
|
--+ CHAR(10) +
|
396
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
397
|
+ CHAR(10) + CHAR(13) +
|
398
|
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')
|
399
|
+ CHAR(10) +
|
400
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
401
|
RETURN '-4'
|
402
|
END
|
403
|
END--- END LUCTV
|
404
|
ELSE IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 40000000)
|
405
|
BEGIN
|
406
|
ROLLBACK TRANSACTION
|
407
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
408
|
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
409
|
+ CHAR(10) +
|
410
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
411
|
+ CHAR(10) + CHAR(13) +
|
412
|
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')
|
413
|
+ CHAR(10) +
|
414
|
N'Số tiền tạm ứng đang vượt quá số tổng hạn mức tạm ứng của 1 CN: '+ FORMAT(40000000,'#,#', 'vi-VN') +N'. Số tiền vượt là: '+ FORMAT(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0)-40000000,'#,#', 'vi-VN')
|
415
|
+ CHAR(10) +
|
416
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
417
|
RETURN '-4'
|
418
|
END
|
419
|
ELSE
|
420
|
BEGIN
|
421
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
|
422
|
BEGIN
|
423
|
ROLLBACK TRANSACTION
|
424
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
425
|
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
426
|
--+ CHAR(10) +
|
427
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
428
|
+ CHAR(10) + CHAR(13) +
|
429
|
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')
|
430
|
+ CHAR(10) +
|
431
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
432
|
RETURN '-4'
|
433
|
END
|
434
|
ELSE
|
435
|
BEGIN
|
436
|
ROLLBACK TRANSACTION
|
437
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
438
|
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
439
|
--+ CHAR(10) +
|
440
|
--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
441
|
--+ CHAR(10) + CHAR(13) +
|
442
|
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')
|
443
|
+ CHAR(10) +
|
444
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
445
|
RETURN '-4'
|
446
|
END
|
447
|
END
|
448
|
END
|
449
|
ELSE IF(@BRANCH_TYPE ='PGD')
|
450
|
BEGIN
|
451
|
IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 10000000)
|
452
|
BEGIN
|
453
|
ROLLBACK TRANSACTION
|
454
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
455
|
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')+ CHAR(10) +
|
456
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
457
|
+ CHAR(10) + CHAR(13) +
|
458
|
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')
|
459
|
+ CHAR(10) +
|
460
|
N'Số tiền tạm ứng đang vượt quá số tổng hạn mức tạm ứng của 1 PGD: '+ FORMAT(10000000,'#,#', 'vi-VN') +N'. Số tiền vượt là: '+ FORMAT(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0)-10000000,'#,#', 'vi-VN')
|
461
|
+ CHAR(10) +
|
462
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
463
|
RETURN '-4'
|
464
|
END
|
465
|
ELSE
|
466
|
BEGIN
|
467
|
ROLLBACK TRANSACTION
|
468
|
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
|
469
|
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
|
470
|
+ CHAR(10) +
|
471
|
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
|
472
|
+ CHAR(10) + CHAR(13) +
|
473
|
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')
|
474
|
+ CHAR(10) +
|
475
|
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
|
476
|
RETURN '-4'
|
477
|
END
|
478
|
END
|
479
|
END
|
480
|
END
|
481
|
-- NEU THOA MAN CAC DIEU KIEN SE TIEN HANH DUYET
|
482
|
END -- END DU HAN MUC DUYET
|
483
|
ELSE IF(@p_AUTH_STATUS='A')
|
484
|
BEGIN
|
485
|
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)
|
486
|
SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
487
|
--
|
488
|
SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
489
|
IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
|
490
|
BEGIN
|
491
|
SET @LIMIT_AMT =6000000000 -- TANG LEN 6 TY ROLE HAN MUC GDK
|
492
|
SET @LIMIT_ONE_OF =1000000000 --- TANG LEN 1 TY 1 LAN VOI GDK HO TRO
|
493
|
|
494
|
END
|
495
|
IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
|
496
|
BEGIN
|
497
|
SET @LIMIT_AMT =4000000000 --- TANG LEN 4 TY
|
498
|
SET @LIMIT_ONE_OF =500000000
|
499
|
IF(EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD ='PTGD' AND ROLE_NEW ='TGD'
|
500
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
|
501
|
BEGIN
|
502
|
SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
503
|
SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
|
504
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID))
|
505
|
BEGIN
|
506
|
UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='PTGD' AND REQ_ID =@p_REQ_PAY_ID
|
507
|
UPDATE PL_REQUEST_PROCESS SET STATUS ='C',ROLE_USER ='PTGD' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
|
508
|
SET @ROLE_ID ='TGD'
|
509
|
END
|
510
|
END
|
511
|
END
|
512
|
UPDATE TR_REQ_ADVANCE_PAYMENT
|
513
|
SET AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE(), AUTH_STATUS_KT='U', IS_AUTHORITY = @p_IS_AUTHORITY
|
514
|
WHERE REQ_PAY_ID = @p_REQ_PAY_ID
|
515
|
--- CAP NHAT LAI TINH TRANG TRONG REQUEST_PROCESS
|
516
|
DECLARE @PROCESS_CURR VARCHAR(5)
|
517
|
SET @PROCESS_CURR =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER =@ROLE_ID)
|
518
|
IF(ISNULL(@p_PROCESS_NOTES,'') <> '')
|
519
|
BEGIN
|
520
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@PROCESS_CURR,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N': ' + ISNULL(@p_PROCESS_NOTES,'') FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
|
521
|
END
|
522
|
ELSE
|
523
|
BEGIN
|
524
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@PROCESS_CURR,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
|
525
|
END
|
526
|
--- CAP NHAT PROCESS CUA PHIEU DE NGHI TAM UNG LA DA DUYET
|
527
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS=@PROCESS_CURR WHERE REQ_PAY_ID=@p_REQ_PAY_ID
|
528
|
--
|
529
|
UPDATE PL_REQUEST_PROCESS SET STATUS ='A', NOTES = (SELECT ROLE_DESC + N' duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID) WHERE ROLE_USER =@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID
|
530
|
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
|
531
|
SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
|
532
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
|
533
|
SET @TONG_PGD_HOAN =(
|
534
|
--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
|
535
|
--FROM TR_REQ_PAYMENT_DT B
|
536
|
--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
|
537
|
--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
|
538
|
SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
|
539
|
WHERE A.BRANCH_ID = @BRANCH_RQ
|
540
|
AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I')
|
541
|
IF(@BRANCH_TYPE='HS')
|
542
|
BEGIN
|
543
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
544
|
DEP_ID IN
|
545
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
546
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
547
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
|
548
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
549
|
SET @TOTAL_PAYBACK =
|
550
|
ISNULL(
|
551
|
(
|
552
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
553
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
554
|
WHERE C.DEP_ID IN
|
555
|
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
|
556
|
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
|
557
|
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
|
558
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
559
|
),0)
|
560
|
END
|
561
|
--- BO SUNG NEU RIENG PHONG THUONG HIEU VA TRUYEN THONG --- 2021824
|
562
|
IF(@BRANCH_TYPE='HS' AND @DEP_CODE_NEXT ='0690405' )
|
563
|
BEGIN
|
564
|
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
|
565
|
DEP_ID IN
|
566
|
(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
|
567
|
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
|
568
|
SET @TOTAL_PAYBACK =
|
569
|
ISNULL(
|
570
|
(
|
571
|
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
|
572
|
FROM TR_REQ_ADVANCE_PAYMENT C
|
573
|
WHERE C.DEP_ID IN
|
574
|
(SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND BRANCH_ID =@BRANCH_RQ)
|
575
|
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
|
576
|
),0)
|
577
|
END
|
578
|
--- END
|
579
|
-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
|
580
|
-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
|
581
|
ELSE IF(@BRANCH_TYPE <>'HS')
|
582
|
BEGIN
|
583
|
SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
|
584
|
AND REQ_TYPE ='I' AND AUTH_STATUS='A')
|
585
|
SET @TOTAL_PAYBACK =
|
586
|
(
|
587
|
SELECT (SUM(ISNULL(B.PAY_AMT,0)))
|
588
|
FROM TR_REQ_ADVANCE_PAYMENT B
|
589
|
WHERE B.BRANCH_ID IN
|
590
|
(SELECT BRANCH_ID FROM @tmp_CN)
|
591
|
AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
|
592
|
)
|
593
|
END
|
594
|
SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
|
595
|
--- INSERT VAO BANG LOG
|
596
|
INSERT INTO TR_REQ_ADVANCE_LIMIT_LOG VALUES (@p_REQ_PAY_ID,@LIMIT_REMAIN,GETDATE())
|
597
|
----
|
598
|
END
|
599
|
--ELSE IF (@p_AUTH_STATUS='T')
|
600
|
--BEGIN
|
601
|
---- NEU AUTH_STATUS = T LA THU KI TGD / HDQT
|
602
|
-- IF( @ROLE_ID ='TKTGD')
|
603
|
-- BEGIN
|
604
|
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
|
605
|
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='TKTGD' AND REQ_ID =@p_REQ_PAY_ID
|
606
|
-- INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
607
|
-- VALUES(@p_REQ_PAY_ID,'TKTGD',@p_CHECKER_ID,GETDATE(), N'Thư kí văn phòng Tổng Giám Đốc đã phê duyệt',N'Thư kí văn phòng Tổng Giám Đốc phê duyệt')
|
608
|
-- END
|
609
|
-- ELSE IF( @ROLE_ID ='TKHDQT')
|
610
|
-- BEGIN
|
611
|
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE ROLE_USER ='HDQT' AND REQ_ID =@p_REQ_PAY_ID
|
612
|
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='TKHDQT' AND REQ_ID =@p_REQ_PAY_ID
|
613
|
-- INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
614
|
-- VALUES(@p_REQ_PAY_ID,'TKHDQT',@p_CHECKER_ID,GETDATE(), N'Thư kí văn phòng Hội Đồng Quản Trị đã phê duyệt',N'Thư kí văn phòng Hội Đồng Quản Trị phê duyệt')
|
615
|
-- END
|
616
|
--ENDr
|
617
|
ELSE -- NEW KHONG DU HAN MUC THI BAT DAU XAC NHAN VA DUYET THEO HAN MUC
|
618
|
BEGIN
|
619
|
DECLARE @t_REQ_AMT DECIMAL(18,0) = (SELECT REQ_AMT*ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
620
|
|
621
|
--PRINT @t_REQ_AMT
|
622
|
--- NEU GIAM DOC KHOI VAN CHUA DU HAN MUC THI GIAM DOC KHOI XAC NHAN VÀ TIEP TUC BUOC TIEP THEO LA PHO TONG GIAM DOC
|
623
|
DECLARE @MAX_STEP INT, @NEXT_ROLE VARCHAR(20), @MESSAGE NVARCHAR(100), @PROCESS_ID_NEXT VARCHAR(5), @PROCESS_PARENT VARCHAR(5),
|
624
|
@BRANCH_ID_PROC VARCHAR(15), @NEX_ROLE_STEP VARCHAR(25), @CURRENT_PROCESS VARCHAR(15)
|
625
|
|
626
|
SET @CURRENT_PROCESS =(SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER IN (SELECT ROLE_AUTH FROM @TABLE_ROLE))
|
627
|
SET @NEX_ROLE_STEP = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE PARENT_PROCESS_ID =@CURRENT_PROCESS AND REQ_ID = @p_REQ_PAY_ID )
|
628
|
--PRINT @NEX_ROLE_STEP
|
629
|
--SET @MAX_STEP = CONVERT(INT,(SELECT MAX(PROCESS_ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID))
|
630
|
SET @PROCESS_ID_NEXT = CONVERT(VARCHAR(5),@CURRENT_PROCESS+1)
|
631
|
--SET @PROCESS_PARENT = CONVERT(VARCHAR(5),@MAX_STEP)
|
632
|
DECLARE @TMP_ROLE TABLE (ROLE_ID VARCHAR(15), BRANCH_ID VARCHAR(15), LIMIT_VALUE DECIMAL(18,0),LIMIT_TYPE VARCHAR(15))
|
633
|
--IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)
|
634
|
IF(LEFT(@DEP_CODE_NEXT,5) ='06908' OR @DEP_CODE_NEXT ='0690605' OR @DEP_CODE_NEXT LIKE '06906%')
|
635
|
BEGIN
|
636
|
--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
|
637
|
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
|
638
|
--INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
|
639
|
END
|
640
|
ELSE
|
641
|
BEGIN
|
642
|
IF( @DEP_CODE_NEXT ='0690405')
|
643
|
BEGIN
|
644
|
--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
|
645
|
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <> 'GDK'
|
646
|
--INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
|
647
|
END
|
648
|
--ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
|
649
|
ELSE IF(LEFT(@DEP_CODE_NEXT,5) ='06910')
|
650
|
BEGIN
|
651
|
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
|
652
|
END
|
653
|
--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)
|
654
|
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID)
|
655
|
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID))
|
656
|
ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06900') OR (LEFT(@DEP_CODE_NEXT,5)) ='06901' OR (LEFT(@DEP_CODE_NEXT,5))='06904'
|
657
|
OR (LEFT(@DEP_CODE_NEXT,5))='06902' OR (LEFT(@DEP_CODE_NEXT,5))='06903' OR (LEFT(@DEP_CODE_NEXT,5))='06920' OR (LEFT(@DEP_CODE_NEXT,3))='799' OR (LEFT(@DEP_CODE_NEXT,3))='899')
|
658
|
BEGIN
|
659
|
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD')
|
660
|
END
|
661
|
--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
|
662
|
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID)
|
663
|
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
|
664
|
ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06907') OR (LEFT(@DEP_CODE_NEXT,5)) ='06909' OR (LEFT(@DEP_CODE_NEXT,5))='06911'
|
665
|
OR (LEFT(@DEP_CODE_NEXT,5))='06922' OR (LEFT(@DEP_CODE_NEXT,5))='06921' OR (LEFT(@DEP_CODE_NEXT,5))='06920')
|
666
|
BEGIN
|
667
|
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
|
668
|
END
|
669
|
ELSE
|
670
|
BEGIN
|
671
|
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' ORDER BY LIMIT_VALUE
|
672
|
END
|
673
|
END
|
674
|
|
675
|
SET @BRANCH_ID_PROC= (SELECT TOP 1 BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
|
676
|
--print @DEP_CODE_NEXT
|
677
|
--print @BRANCH_ID_PROC
|
678
|
--print @NEX_ROLE_STEP
|
679
|
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@NEX_ROLE_STEP AND REQ_ID= @p_REQ_PAY_ID))
|
680
|
BEGIN
|
681
|
-- doanptt them note khi xac nhan
|
682
|
IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
|
683
|
BEGIN
|
684
|
SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
|
685
|
END
|
686
|
--SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE LIMIT_VALUE >@t_REQ_AMT
|
687
|
SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE 1 =1
|
688
|
AND ROLE_ID NOT IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID) AND LIMIT_TYPE ='ADV_PAY' ORDER BY LIMIT_VALUE)
|
689
|
--print @NEXT_ROLE
|
690
|
SET @BRANCH_ID_PROC= (SELECT TOP 1 BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
|
691
|
SET @MESSAGE = (SELECT TOP 1 N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @NEXT_ROLE)
|
692
|
INSERT INTO PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF, COST_ID, DVDM_ID, NOTES)
|
693
|
VALUES (@p_REQ_PAY_ID,@PROCESS_ID_NEXT,'C',@NEXT_ROLE,@BRANCH_ID_PROC,@NEXT_ROLE,GETDATE(),@PROCESS_PARENT,'Y',NULL,@p_COST_ID,@MESSAGE)
|
694
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(), @p_PROCESS_NOTES,N'Các cấp phê duyệt theo hạn mức')
|
695
|
END
|
696
|
ELSE
|
697
|
BEGIN
|
698
|
-- doanptt them note khi xac nhan
|
699
|
IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
|
700
|
BEGIN
|
701
|
SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
|
702
|
END
|
703
|
ELSE
|
704
|
BEGIN
|
705
|
SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N': ' + @p_PROCESS_NOTES FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
|
706
|
END
|
707
|
|
708
|
SET @NEXT_ROLE =@NEX_ROLE_STEP
|
709
|
UPDATE PL_REQUEST_PROCESS SET STATUS='C',DVDM_ID=@p_COST_ID WHERE ROLE_USER =@NEXT_ROLE AND REQ_ID = @p_REQ_PAY_ID
|
710
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(), @p_PROCESS_NOTES,N'Các cấp phê duyệt theo hạn mức')
|
711
|
END
|
712
|
--
|
713
|
IF @@Error <> 0 GOTO ABORT
|
714
|
-- UPDATE STATUS CUA STEP HIEN TAI
|
715
|
UPDATE PL_REQUEST_PROCESS SET STATUS='P',IS_LEAF ='N', NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID =@ROLE_ID)
|
716
|
WHERE ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID
|
717
|
--INSERT VAO TR_PROCESS
|
718
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS =@CURRENT_PROCESS , AUTH_STATUS='U',DVDM_ID = @p_COST_ID WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
719
|
---
|
720
|
UPDATE PL_REQUEST_PROCESS SET DVDM_ID= @p_COST_ID WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER <>@ROLE_ID
|
721
|
END
|
722
|
END
|
723
|
ELSE
|
724
|
BEGIN
|
725
|
--- NEU LA TAM UNG NHA CUNG CAP THI CHECK XEM KI TAM UNG DO DA HOAN THANH HAY CHUA, NEU DA HOAN THANH THI KHONG CHO DUYET
|
726
|
DECLARE @PAY_ID VARCHAR(15), @SUM_OF_PAY_ID DECIMAL(18,2), @SUM_ADVANCE DECIMAL(18,2),
|
727
|
@AMOUNT DECIMAL(18,2),@AMT_PAY_DO DECIMAL(18,2),@SCH_ID VARCHAR(15),@AMT_ADVANCE DECIMAL(18,0)
|
728
|
DECLARE CUR_SH CURSOR FOR SELECT A.PAY_ID,A.AMT_PAY, A.AMT_PAY_DO,A.SCHEDULE_ID,A.AMT_ADVANCE FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID= @p_REQ_PAY_ID
|
729
|
OPEN CUR_SH
|
730
|
FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
|
731
|
WHILE @@FETCH_STATUS =0
|
732
|
BEGIN
|
733
|
SET @SUM_OF_PAY_ID =(SELECT TOP 1 SUM(AMT_PAY_DO) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
|
734
|
SET @SUM_ADVANCE =(SELECT TOP 1 SUM(AMT_ADVANCE) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
|
735
|
IF(@SUM_OF_PAY_ID +@AMT_PAY_DO >@AMOUNT)
|
736
|
BEGIN
|
737
|
ROLLBACK TRANSACTION
|
738
|
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Số tiền tạm ứng đã vượt mức số tiền còn lại cần phải thanh toán' ErrorDesc
|
739
|
RETURN '-1'
|
740
|
END
|
741
|
IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE < @AMOUNT)
|
742
|
BEGIN
|
743
|
UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCH_ID
|
744
|
END
|
745
|
ELSE IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE = @AMOUNT)
|
746
|
BEGIN
|
747
|
UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCH_ID
|
748
|
END
|
749
|
ELSE IF(@SUM_OF_PAY_ID=0 AND @SUM_ADVANCE =0 )
|
750
|
BEGIN
|
751
|
UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCH_ID
|
752
|
END
|
753
|
FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
|
754
|
END
|
755
|
CLOSE CUR_SH
|
756
|
DEALLOCATE CUR_SH
|
757
|
|
758
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS='A', CHECKER_ID=@p_CHECKER_ID, APPROVE_DT = GETDATE(),AUTH_STATUS_KT='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
759
|
UPDATE PL_REQUEST_PROCESS SET [STATUS] ='A' WHERE [STATUS] ='C' AND REQ_ID =@p_REQ_PAY_ID
|
760
|
SET @p_AUTH_STATUS ='A'
|
761
|
--- INSERT 1 DONG VAO PL_PROCESS
|
762
|
-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
|
763
|
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
764
|
VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị đã phê duyệt',N'Trưởng đơn vị phê duyệt')
|
765
|
END
|
766
|
IF @@Error <> 0 GOTO ABORT
|
767
|
COMMIT TRANSACTION
|
768
|
IF(@p_AUTH_STATUS='A')
|
769
|
BEGIN
|
770
|
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
|
771
|
RETURN '0'
|
772
|
END
|
773
|
--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKTGD')
|
774
|
--BEGIN
|
775
|
-- SELECT '5' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Thư kí văn phòng Tổng Giám Đốc phê duyệt phiếu đề nghị tạm ứng số: ' +(SELECT TOP 1 REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' thành công' +@DEP_CODE_NEXT ErrorDesc
|
776
|
-- RETURN '5'
|
777
|
--END
|
778
|
--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKHDQT')
|
779
|
--BEGIN
|
780
|
-- SELECT '5' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Thư kí văn phòng Hội Đồng Quản Trị phê duyệt phiếu đề nghị tạm ứng số: ' +(SELECT TOP 1 REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' thành công' +@DEP_CODE_NEXT ErrorDesc
|
781
|
-- RETURN '5'
|
782
|
--END
|
783
|
ELSE
|
784
|
BEGIN
|
785
|
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
|
786
|
RETURN '1'
|
787
|
END
|
788
|
ABORT:
|
789
|
BEGIN
|
790
|
ROLLBACK TRANSACTION
|
791
|
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
792
|
RETURN '-1'
|
793
|
END
|