Project

General

Profile

2.2 CONFIG QUYET TOAN TO TRINH.txt

Luc Tran Van, 08/19/2021 05:11 PM

 
1
UPDATE PL_TRADEDETAIL SET AMT_ETM =89000000 WHERE TRADE_ID ='PLT000000278913'
2
¿
3
ALTER PROC [dbo].[PL_REQUEST_DOC_Settlment]
4
@p_REQ_ID VARCHAR (15) = NULL,
5
@p_AMT_SETT DECIMAL(18,2) =NULL,
6
@p_AMT_USE DECIMAL(18,2) = NULL,
7
@p_AMT_REVERT DECIMAL(18,2)= NULL
8
AS
9
BEGIN TRANSACTION
10
		DECLARE @ERROR NVARCHAR(500)
11

    
12
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE IS_SETTLMENT=1 AND REQ_ID=@p_REQ_ID))
13
		BEGIN 
14
			SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
15
			ROLLBACK TRANSACTION
16
			SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại! Tờ trình đã được quyết toán' ErrorDesc
17
			RETURN '-1'
18
		END
19
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE PROCESS_ID <>'APPROVE' AND REQ_ID=@p_REQ_ID))
20
		BEGIN 
21
			--SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
22
			ROLLBACK TRANSACTION
23
			SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình số '+ (SELECT ISNULL(REQ_CODE, REQ_ID) FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)+N' thất bại! Tờ trình chưa được phê duyệt hoàn tất' ErrorDesc
24
			RETURN '-1'
25
		END
26
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_REQ_ID))
27
		BEGIN 
28
			--SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
29
			ROLLBACK TRANSACTION
30
			SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình số '+ (SELECT ISNULL(REQ_CODE, REQ_ID) FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)+N' thất bại! Tờ trình đã được thanh toán trước đó' ErrorDesc
31
			RETURN '-1'
32
		END
33
		-- KIEM TRA NEU TO TRINH  DANG DUOC THUC HIEN THANH TOAN / TAM UNG THI PHAI HUY PHIEU TRUOC KHI QUYET TOAN TO TRINH
34
		IF(EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A
35
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
36
		WHERE A.REF_ID IN 
37
		(
38
			SELECT CONTRACT_ID FROM TR_CONTRACT
39
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
40
			UNION 
41
			SELECT PO_ID FROM TR_PO_MASTER
42
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
43
		)
44
		AND B.AUTH_STATUS_KT <>'A'))
45
		BEGIN 
46
			ROLLBACK TRANSACTION
47
			SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại! Đang có giao dịch tạm ứng sử dụng ngân sách của tờ trình. Vui lòng hủy phiếu tạm ứng trước khi quyết toán tờ trình' ErrorDesc
48
			RETURN '-1'
49
		END
50
		-- KIEM TRA XEM CO DANG THUC HIEN THANH TOAN HAY KHONG
51
		IF(EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A
52
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
53
		WHERE A.REF_ID IN 
54
		(
55
			SELECT CONTRACT_ID FROM TR_CONTRACT
56
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
57
			UNION 
58
			SELECT PO_ID FROM TR_PO_MASTER
59
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
60
		)
61
		AND B.AUTH_STATUS_KT <>'A'))
62
		BEGIN 
63
			ROLLBACK TRANSACTION
64
			SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại! Đang có giao dịch thanh toán sử dụng ngân sách của tờ trình. Vui lòng hủy phiếu thanh toán trước khi quyết toán tờ trình' ErrorDesc
65
			RETURN '-1'
66
		END
67
		--- KIEM TRA DANH SACH NGAN SACH CUA NHUNG PDN THANH TOAN CO SU DUNG NGAN SACH CUA TO TRINH
68
		IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID AND PROCESS_ID <> 'APPROVE'))
69
		BEGIN
70
			ROLLBACK TRANSACTION
71
			SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại! Đang tồn tại phiếu yêu cầu mua sắm chưa được phê duyệt. Vui lòng hủy các phiếu mua sắm chưa hoàn tất hoặc hoàn tất xong mới thực hiện quyết toán' ErrorDesc
72
			RETURN '-1'
73
		END
74

    
75
		--IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID AND PROCESS_ID = 'APPROVE' ) )
76
		--BEGIN
77
		--	ROLLBACK TRANSACTION
78
		--	SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại! Đang tồn tại phiếu yêu cầu mua sắm chưa được phê duyệt' ErrorDesc
79
		--	RETURN '-1'
80
		--END
81

    
82
		--	DECLARE @listTRADE TABLE
83
		--	(
84
		--		TRADE_ID VARCHAR(20),
85
		--		AMT_APP DECIMAL(18,2),
86
		--		AMT_ROLEBACK DECIMAL(18,2)
87
		--	)
88

    
89
		--	INSERT @listTRADE
90
		--	SELECT TRADE_ID,SUM(TOTAL_AMT),0 FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID GROUP BY TRADE_ID
91
		---- LAY DS PYCMS CUA TO TRINH
92
		--	DECLARE @listID TABLE (
93
		--		TR_REQ_ID VARCHAR(15)
94
		--	)
95

    
96
		--	INSERT INTO @listID
97
		--	SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_REQ_ID
98
		--	DECLARE @listREF TABLE (
99
		--		REF_ID VARCHAR(15)
100
		--	)
101
		--	INSERT INTO @listREF
102
		--	SELECT CONTRACT_ID FROM TR_CONTRACT T
103
		--	WHERE EXISTS  (SELECT REQ_DOC_ID  FROM @listID L WHERE T.REQ_DOC_ID=L.TR_REQ_ID)
104
		--	UNION 
105
		--	SELECT PO_ID FROM TR_PO_MASTER P
106
		--	WHERE EXISTS (SELECT REQ_DOC_ID FROM @listID L WHERE P.REQ_DOC_ID=L.TR_REQ_ID)
107

    
108
		--	DECLARE @listREQPAYID TABLE (
109
			
110
		--		REQ_PAY_ID VARCHAR(20)
111
		--	)
112
		--	INSERT INTO @listREQPAYID
113
		--	SELECT REQ_PAY_ID FROM dbo.TR_REQ_ADVANCE_DT A WHERE EXISTS (SELECT REF_ID FROM @listREF B WHERE B.REF_ID=A.REF_ID)
114
			
115
		--	DECLARE @listTRADE_EXE TABLE
116
		--	(
117
		--		TRADE_ID VARCHAR(20),
118
		--		AMT_EXE DECIMAL(18,2)
119
				
120
		--	)
121
		--	INSERT INTO @listTRADE_EXE		
122
		--	SELECT T.TRADE_ID,SUM(T.AMT_EXE)  FROM dbo.TR_REQ_PAY_BUDGET T WHERE EXISTS(SELECT  L.REQ_PAY_ID FROM @listREQPAYID L WHERE L.REQ_PAY_ID=T.REQ_PAY_ID) GROUP BY T.TRADE_ID
123

    
124

    
125
		--	UPDATE @listTRADE SET AMT_ROLEBACK=AMT_APP-(SELECT AMT_EXE FROM @listTRADE_EXE WHERE [@listTRADE].TRADE_ID=[@listTRADE_EXE].TRADE_ID) WHERE EXISTS (SELECT TRADE_ID FROM @listTRADE_EXE WHERE [@listTRADE].TRADE_ID=[@listTRADE_EXE].TRADE_ID)
126
			
127

    
128
		--	UPDATE dbo.PL_TRADEDETAIL SET AMT_ETM=AMT_ETM- (SELECT AMT_ROLEBACK FROM @listTRADE WHERE [@listTRADE].TRADE_ID=PL_TRADEDETAIL.TRADE_ID)  
129
		--	WHERE EXISTS (SELECT TRADE_ID FROM @listTRADE WHERE [@listTRADE].TRADE_ID=PL_TRADEDETAIL.TRADE_ID)
130

    
131
			-- LUCTV: 05052021 LUCTV FIX QUYET TOAN TO TRINH
132
			UPDATE dbo.PL_REQUEST_DOC SET IS_SETTLMENT=1, PROCESS_ID ='SETTLMENT' WHERE REQ_ID=@p_REQ_ID
133
			-- LUCTV 01-06-2021: NEU QUYET TOAN THI PHAI XÓA LOG ĐI
134
			UPDATE PL_TRADEDETAIL_HIST SET TRADE_ID ='X'+ RIGHT(TRADE_ID, 14) WHERE REQ_ID =@p_REQ_ID
135
			-- UPDATE DE HỆ THỐNG THÔNG BÁO TỜ TRÌNH NÀY ĐÃ ĐƯỢC QUYẾT TOÁN
136
			UPDATE PL_REQUEST_PROCESS SET NOTES =N'Tờ trình được quyết toán', PROCESS_ID ='SETTLMENT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='APPROVE'
137
			UPDATE PL_REQUEST_PROCESS SET NOTES =N'Tờ trình đã được quyết toán thành công' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID =(SELECT PARENT_PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='APPROVE')
138
			INSERT INTO PL_PROCESS (PROCESS_DESC, APPROVE_DT,CHECKER_ID, REQ_ID,NOTES) VALUES (N'Thực hiện quyết toán tờ trình',GETDATE(),(SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID), @p_REQ_ID,N'Quyết toán tờ trình')
139
			DECLARE @TRADE_ID VARCHAR(15), @AMT_ETM DECIMAL(18,0), @AMT_RECIVE DECIMAL(18,0), @AMT_TRANSFER DECIMAL(18,0),@TO_TRADE_ID VARCHAR(15)
140
			-- 1.0 KIEM TRA NEU TO TRINH DUYET XONG & CHUA PHAT SINH PYCMS DA DUYET
141
			IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID))
142
			BEGIN
143
				
144
				-- REVERT LAI NGAN SACH
145
					DECLARE CUR_TRADE  CURSOR LOCAL FOR
146
					SELECT TRADE_ID, TOTAL_AMT FROM PL_REQUEST_DOC_DT A WHERE A.REQ_ID =@p_REQ_ID
147
					Open CUR_TRADE
148
					FETCH NEXT FROM CUR_TRADE INTO @TRADE_ID, @AMT_ETM
149
					WHILE @@FETCH_STATUS = 0
150
					BEGIN
151
					   UPDATE PL_TRADEDETAIL SET AMT_ETM = ISNULL(AMT_ETM,0) - @AMT_ETM WHERE TRADE_ID =@TRADE_ID
152
					FETCH NEXT FROM CUR_TRADE INTO  @TRADE_ID, @AMT_ETM
153
					END
154
				-- KIEM TRA XEM CO DIEU CHUYEN NGAN SACH HAY KHONG
155
				IF(NOT EXISTS(SELECT * FROM PL_REQUEST_TRANSFER WHERE REQ_DOC_ID =@p_REQ_ID))
156
				BEGIN
157
					PRINT 'KHONG CO DIEU CHUYEN NGAN SACH'
158
				END
159
				ELSE
160
				BEGIN
161
					-- REVERT LAI NGAN SACH
162
						DECLARE CUR_TRADE_TF  CURSOR LOCAL FOR
163
						SELECT FR_TRADE_ID, TO_TRADE_ID, TOTAL_AMT FROM PL_REQUEST_TRANSFER A WHERE A.REQ_DOC_ID =@p_REQ_ID
164
						Open CUR_TRADE_TF
165
						FETCH NEXT FROM CUR_TRADE_TF INTO @TRADE_ID,@TO_TRADE_ID, @AMT_ETM
166
						WHILE @@FETCH_STATUS = 0
167
						BEGIN
168
						   UPDATE PL_TRADEDETAIL SET AMT_RECEIVE_TF = ISNULL(AMT_RECEIVE_TF,0) - @AMT_ETM WHERE TRADE_ID =@TO_TRADE_ID
169
						   UPDATE PL_TRADEDETAIL SET AMT_TF = ISNULL(AMT_TF,0) - @AMT_ETM WHERE TRADE_ID =@TRADE_ID
170
						FETCH NEXT FROM CUR_TRADE_TF INTO @TRADE_ID,@TO_TRADE_ID, @AMT_ETM
171
					END
172
				END
173
			END -- NGUOC LAI NEU TO TRINH NAY DA DUOC PYCMS LINK TOI --> TINH GIA TRI NHỮNG PYCMS DA DUOC DUYET
174
			ELSE
175
			BEGIN
176
				DECLARE @SUM_LUY_KE_PUR DECIMAL(18,0), @PL_REQ_DT VARCHAR(15)
177
				DECLARE CUR_TRADE_PUR  CURSOR LOCAL FOR
178
				SELECT TRADE_ID, TOTAL_AMT, REQDT_ID FROM PL_REQUEST_DOC_DT A WHERE A.REQ_ID =@p_REQ_ID
179
				Open CUR_TRADE_PUR
180
				FETCH NEXT FROM CUR_TRADE_PUR INTO @TRADE_ID, @AMT_ETM,@PL_REQ_DT
181
					WHILE @@FETCH_STATUS = 0
182
					BEGIN
183
						-- TINH SO TIEN DA SU DUNG CUA NHUNG PYCMS LINK TOI TUNG HANG MỤC DETAIL TO TRINH
184
						SET @SUM_LUY_KE_PUR =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE PL_REQDT_ID =@PL_REQ_DT)
185
					    UPDATE PL_TRADEDETAIL SET AMT_ETM = ISNULL(AMT_ETM,0) - (@AMT_ETM - ISNULL(@SUM_LUY_KE_PUR,0)) WHERE TRADE_ID =@TRADE_ID
186
					FETCH NEXT FROM CUR_TRADE_PUR INTO  @TRADE_ID, @AMT_ETM,@PL_REQ_DT
187
				END
188
			END
189
			--- END LUCTV 05-05-2021
190
COMMIT TRANSACTION
191
SELECT '0' as Result, @p_REQ_ID  REQ_PAY_ID ,N'Quyết toán tờ trình thành công' ErrorDesc
192
RETURN '0'
193
ABORT:
194
BEGIN
195
		ROLLBACK TRANSACTION
196
		SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại' ErrorDesc
197
		RETURN '-1'
198
END