1
|
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Appr]
|
2
|
--Luanlt 2019/17/10 - Sửa params
|
3
|
@p_REQ_PAY_ID varchar(15)= NULL,
|
4
|
@p_CHECKER_ID varchar(15) = NULL
|
5
|
AS
|
6
|
|
7
|
-- BEGIN VALIDATE
|
8
|
IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
9
|
BEGIN
|
10
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị thanh toán ứ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
|
11
|
RETURN '-1'
|
12
|
END
|
13
|
IF ( EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE ISNULL(TRASFER_USER_RECIVE, '') <> '' AND TRASFER_USER_RECIVE = @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ị thanh toán ứng này này! Người phê duyệt phiếu phải khác với người phê duyệt trung gian' ErrorDesc
|
16
|
RETURN '-1'
|
17
|
END
|
18
|
IF EXISTS (SELECT * FROM TR_REQ_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ị thanh toán ứng thất bại! Phiếu đề nghị thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_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_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ị thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_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_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ị thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_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_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ị thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_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_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ị thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_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_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ị thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_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
|
DECLARE @ROLE_ID VARCHAR(15)
|
53
|
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
54
|
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','PPGD'))
|
55
|
BEGIN
|
56
|
PRINT @ROLE_ID
|
57
|
END
|
58
|
ELSE
|
59
|
BEGIN
|
60
|
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
|
61
|
IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
|
62
|
BEGIN
|
63
|
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))
|
64
|
END
|
65
|
END
|
66
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
67
|
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID
|
68
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
|
69
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
|
70
|
IF(@ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK') AND
|
71
|
NOT EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK')))
|
72
|
BEGIN
|
73
|
ROLLBACK TRANSACTION
|
74
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không nằm trong nhóm quyền được phép phê duyệt phiếu đề nghị thanh toán' ErrorDesc
|
75
|
RETURN '-1'
|
76
|
END
|
77
|
-- KIEM TRA NGUOI TAO PHAI KHAC NGUOI DUYET
|
78
|
IF(EXISTS(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID AND RoleName NOT IN ('GDK','GDDV','PTGD','TGD','HDQT','TBP')))
|
79
|
BEGIN
|
80
|
IF EXISTS (SELECT TOP 1 REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE MAKER_ID = @p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
81
|
BEGIN
|
82
|
ROLLBACK TRANSACTION
|
83
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn là người tạo phiếu đề nghị thanh toán. Bạn không được phép duyệt phiếu này' ErrorDesc
|
84
|
RETURN '-1'
|
85
|
END
|
86
|
END
|
87
|
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
|
88
|
IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
89
|
BEGIN
|
90
|
ROLLBACK TRANSACTION
|
91
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toá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
|
92
|
RETURN '-1'
|
93
|
END
|
94
|
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
|
95
|
IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
96
|
BEGIN
|
97
|
ROLLBACK TRANSACTION
|
98
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toá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
|
99
|
RETURN '-1'
|
100
|
END
|
101
|
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
|
102
|
IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
103
|
BEGIN
|
104
|
ROLLBACK TRANSACTION
|
105
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được KSV phê duyệt trước đó' ErrorDesc
|
106
|
RETURN '-1'
|
107
|
END
|
108
|
IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
|
109
|
BEGIN
|
110
|
ROLLBACK TRANSACTION
|
111
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt trước đó' ErrorDesc
|
112
|
RETURN '-1'
|
113
|
END
|
114
|
-- CHECK XEM CO CAP DUYET TRUNG GIAN HAY KHONG
|
115
|
IF((SELECT ISNULL(PROCESS, '') FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) = '')
|
116
|
BEGIN
|
117
|
DECLARE @USER_SIGN VARCHAR(15)
|
118
|
SET @USER_SIGN =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
119
|
IF(@p_CHECKER_ID <> @USER_SIGN AND @USER_SIGN <> '' AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = 'SEND')
|
120
|
BEGIN
|
121
|
ROLLBACK TRANSACTION
|
122
|
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị thanh toán đang chờ cấp phê duyệt trung gian xác nhận. User domain: '+ISNULL(@USER_SIGN,'') ErrorDesc
|
123
|
RETURN '-1'
|
124
|
END
|
125
|
END
|
126
|
|
127
|
|
128
|
--END - CAP NHAT CODE TRONG QUA TRINH TEST UAT 19 11 2019
|
129
|
DECLARE @INDEX INT =0
|
130
|
DECLARE @PAY_ID VARCHAR(15),@PAY_PHASE VARCHAR(15)
|
131
|
DECLARE @REQ_TYPE VARCHAR(15),@PAY_ADVANCE_ID VARCHAR(15),@AMT_PAY DECIMAL(18,2), @AMT_USE DECIMAL(18,2), @AMT_REVERT DECIMAL(12)
|
132
|
SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
133
|
IF(@REQ_TYPE ='I')
|
134
|
BEGIN
|
135
|
DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_REMAIN,A.AMT_USE,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_REQ_PAY_ID
|
136
|
OPEN CURS
|
137
|
FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_USE, @AMT_REVERT
|
138
|
WHILE @@FETCH_STATUS = 0
|
139
|
BEGIN
|
140
|
SET @INDEX = @INDEX +1
|
141
|
-- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
|
142
|
IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0)
|
143
|
BEGIN
|
144
|
ROLLBACK TRANSACTION
|
145
|
SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc
|
146
|
RETURN '-1'
|
147
|
END
|
148
|
--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
|
149
|
FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_USE, @AMT_REVERT
|
150
|
END
|
151
|
CLOSE CURS
|
152
|
DEALLOCATE CURS
|
153
|
END
|
154
|
-- NEU LOAI TAM UNG LA THANH TOAN PO
|
155
|
ELSE IF(@REQ_TYPE ='P')
|
156
|
BEGIN
|
157
|
DECLARE CURS CURSOR FOR SELECT A.PAY_ID, A.PAY_PHASE FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
|
158
|
OPEN CURS
|
159
|
FETCH NEXT FROM CURS INTO @PAY_ID,@PAY_PHASE
|
160
|
WHILE @@FETCH_STATUS = 0
|
161
|
BEGIN
|
162
|
SET @INDEX = @INDEX +1
|
163
|
---- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
|
164
|
--IF((SELECT MIN(A.AMT_REMAIN)FROM TR_REQ_PAY_SCHEDULE A WHERE A.PAY_ID =@PAY_ID GROUP BY A.PAY_ID)=0)
|
165
|
--BEGIN
|
166
|
-- ROLLBACK TRANSACTION
|
167
|
-- SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N':Kì '+ @PAY_PHASE+N' đã thanh toán xong' ErrorDesc
|
168
|
-- RETURN '-1'
|
169
|
--END
|
170
|
FETCH NEXT FROM CURS INTO @PAY_ID,@PAY_PHASE
|
171
|
END
|
172
|
CLOSE CURS
|
173
|
DEALLOCATE CURS
|
174
|
END
|
175
|
UPDATE TR_REQ_PAYMENT
|
176
|
SET AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE(), AUTH_STATUS_KT='U'
|
177
|
WHERE REQ_PAY_ID = @p_REQ_PAY_ID
|
178
|
--UPDATE DETAIL
|
179
|
UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS='A',CHECKER_ID =@p_CHECKER_ID,APPROVE_DT = GETDATE()
|
180
|
WHERE PAY_ID =@p_REQ_PAY_ID
|
181
|
-- INSERT VAO PL_PROCESS
|
182
|
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
183
|
VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị phê duyệt phiếu',N'Phê duyệt cấp đơn vị')
|
184
|
IF @@Error <> 0 GOTO ABORT
|
185
|
COMMIT TRANSACTION
|
186
|
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,'' ErrorDesc
|
187
|
RETURN '0'
|
188
|
ABORT:
|
189
|
BEGIN
|
190
|
ROLLBACK TRANSACTION
|
191
|
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
192
|
RETURN '-1'
|
193
|
END
|