Project

General

Profile

2.4 TRANSFER TTCT VE GDK TAI CHINH.txt

Luc Tran Van, 09/13/2021 08:36 PM

 
1
INSERT INTO PL_REQUEST_PROCESS VALUES ('PLRD00000202429','GDK_DC','C','GDK','DV0001','',NULL,'TC','N','','DM0000000000017',N'Chờ GĐK Tài Chính xác nhận','0','')
2
UPDATE PL_REQUEST_DOC SET PROCESS_ID ='GDK_DC' WHERE REQ_ID ='PLRD00000202429'
3
UPDATE PL_REQUEST_PROCESS SET PARENT_PROCESS_ID ='GDK_DC', STATUS ='U' WHERE ID ='29894'
4
SELECT * FROM PL_TRADEDETAIL_HIST WHERE REQ_ID ='PLRD00000201631' ---2021913
5
¿
6
ALTER PROC [dbo].[PL_REQUEST_DOC_Settlment]
7
@p_REQ_ID VARCHAR (15) = NULL,
8
@p_AMT_SETT DECIMAL(18,2) =NULL,
9
@p_AMT_USE DECIMAL(18,2) = NULL,
10
@p_AMT_REVERT DECIMAL(18,2)= NULL
11
AS
12
BEGIN TRANSACTION
13
		DECLARE @ERROR NVARCHAR(500)
14

    
15
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE IS_SETTLMENT=1 AND REQ_ID=@p_REQ_ID))
16
		BEGIN 
17
			SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
18
			ROLLBACK TRANSACTION
19
			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
20
			RETURN '-1'
21
		END
22
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE PROCESS_ID <>'APPROVE' AND REQ_ID=@p_REQ_ID))
23
		BEGIN 
24
			--SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
25
			ROLLBACK TRANSACTION
26
			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
27
			RETURN '-1'
28
		END
29
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_REQ_ID))
30
		BEGIN 
31
			--SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
32
			ROLLBACK TRANSACTION
33
			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
34
			RETURN '-1'
35
		END
36
		-- KIEM TRA NEU TO TRINH  DANG DUOC THUC HIEN THANH TOAN / TAM UNG THI PHAI HUY PHIEU TRUOC KHI QUYET TOAN TO TRINH
37
		IF(EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A
38
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
39
		WHERE A.REF_ID IN 
40
		(
41
			SELECT CONTRACT_ID FROM TR_CONTRACT
42
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
43
			UNION 
44
			SELECT PO_ID FROM TR_PO_MASTER
45
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
46
		)
47
		AND B.AUTH_STATUS_KT <>'A'))
48
		BEGIN 
49
			ROLLBACK TRANSACTION
50
			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
51
			RETURN '-1'
52
		END
53
		-- KIEM TRA XEM CO DANG THUC HIEN THANH TOAN HAY KHONG
54
		IF(EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A
55
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
56
		WHERE A.REF_ID IN 
57
		(
58
			SELECT CONTRACT_ID FROM TR_CONTRACT
59
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
60
			UNION 
61
			SELECT PO_ID FROM TR_PO_MASTER
62
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
63
		)
64
		AND B.AUTH_STATUS_KT <>'A'))
65
		BEGIN 
66
			ROLLBACK TRANSACTION
67
			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
68
			RETURN '-1'
69
		END
70
		--- KIEM TRA DANH SACH NGAN SACH CUA NHUNG PDN THANH TOAN CO SU DUNG NGAN SACH CUA TO TRINH
71
		IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID AND PROCESS_ID <> 'APPROVE'))
72
		BEGIN
73
			ROLLBACK TRANSACTION
74
			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
75
			RETURN '-1'
76
		END
77
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE ISNULL(PL_BASED_ID,'') <> '' AND REQ_ID=@p_REQ_ID))
78
		BEGIN 
79
			--SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
80
			ROLLBACK TRANSACTION
81
			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! Đây là tờ trình căn cứ / không ảnh hướng đến ngân sách' ErrorDesc
82
			RETURN '-1'
83
		END
84

    
85
		--IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID AND PROCESS_ID = 'APPROVE' ) )
86
		--BEGIN
87
		--	ROLLBACK TRANSACTION
88
		--	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
89
		--	RETURN '-1'
90
		--END
91

    
92
		--	DECLARE @listTRADE TABLE
93
		--	(
94
		--		TRADE_ID VARCHAR(20),
95
		--		AMT_APP DECIMAL(18,2),
96
		--		AMT_ROLEBACK DECIMAL(18,2)
97
		--	)
98

    
99
		--	INSERT @listTRADE
100
		--	SELECT TRADE_ID,SUM(TOTAL_AMT),0 FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID GROUP BY TRADE_ID
101
		---- LAY DS PYCMS CUA TO TRINH
102
		--	DECLARE @listID TABLE (
103
		--		TR_REQ_ID VARCHAR(15)
104
		--	)
105

    
106
		--	INSERT INTO @listID
107
		--	SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_REQ_ID
108
		--	DECLARE @listREF TABLE (
109
		--		REF_ID VARCHAR(15)
110
		--	)
111
		--	INSERT INTO @listREF
112
		--	SELECT CONTRACT_ID FROM TR_CONTRACT T
113
		--	WHERE EXISTS  (SELECT REQ_DOC_ID  FROM @listID L WHERE T.REQ_DOC_ID=L.TR_REQ_ID)
114
		--	UNION 
115
		--	SELECT PO_ID FROM TR_PO_MASTER P
116
		--	WHERE EXISTS (SELECT REQ_DOC_ID FROM @listID L WHERE P.REQ_DOC_ID=L.TR_REQ_ID)
117

    
118
		--	DECLARE @listREQPAYID TABLE (
119
			
120
		--		REQ_PAY_ID VARCHAR(20)
121
		--	)
122
		--	INSERT INTO @listREQPAYID
123
		--	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)
124
			
125
		--	DECLARE @listTRADE_EXE TABLE
126
		--	(
127
		--		TRADE_ID VARCHAR(20),
128
		--		AMT_EXE DECIMAL(18,2)
129
				
130
		--	)
131
		--	INSERT INTO @listTRADE_EXE		
132
		--	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
133

    
134

    
135
		--	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)
136
			
137

    
138
		--	UPDATE dbo.PL_TRADEDETAIL SET AMT_ETM=AMT_ETM- (SELECT AMT_ROLEBACK FROM @listTRADE WHERE [@listTRADE].TRADE_ID=PL_TRADEDETAIL.TRADE_ID)  
139
		--	WHERE EXISTS (SELECT TRADE_ID FROM @listTRADE WHERE [@listTRADE].TRADE_ID=PL_TRADEDETAIL.TRADE_ID)
140

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