Project

General

Profile

REQ_PAYMENT_APRR.txt

Luc Tran Van, 11/08/2022 09:59 AM

 
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