Project

General

Profile

UPDATE QUYET TOAN.txt

Truong Nguyen Vu, 01/22/2021 02:52 PM

 
1

    
2
ALTER PROC [dbo].[PL_REQUEST_DOC_Settlment]
3
@p_REQ_ID VARCHAR (15) = NULL,
4
@p_AMT_SETT DECIMAL(18,2) =NULL,
5
@p_AMT_USE DECIMAL(18,2) = NULL,
6
@p_AMT_REVERT DECIMAL(18,2)= NULL
7
AS
8
BEGIN TRANSACTION
9

    
10

    
11

    
12
		DECLARE @ERROR NVARCHAR(500)
13

    
14
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE IS_SETTLMENT=1 AND REQ_ID=@p_REQ_ID))
15
		BEGIN 
16
			SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
17
			ROLLBACK TRANSACTION
18
			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
19
			RETURN '-1'
20
		END
21
		IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE PROCESS_ID <>'APPROVE' AND REQ_ID=@p_REQ_ID))
22
		BEGIN 
23
			--SET @ERROR = (SELECT ErrorDesc FROM dbo.SYS_ERROR WHERE ErrorCode='SETTLMENT-001')
24
			ROLLBACK TRANSACTION
25
			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
26
			RETURN '-1'
27
		END
28
		-- KIEM TRA NEU TO TRINH  DANG DUOC THUC HIEN THANH TOAN / TAM UNG THI PHAI HUY PHIEU TRUOC KHI QUYET TOAN TO TRINH
29
		IF(EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A
30
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
31
		WHERE A.REF_ID IN 
32
		(
33
			SELECT CONTRACT_ID FROM TR_CONTRACT
34
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
35
			UNION 
36
			SELECT PO_ID FROM TR_PO_MASTER
37
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
38
		)
39
		AND B.AUTH_STATUS_KT <>'A'))
40
		BEGIN 
41
			ROLLBACK TRANSACTION
42
			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
43
			RETURN '-1'
44
		END
45
		-- KIEM TRA XEM CO DANG THUC HIEN THANH TOAN HAY KHONG
46
		IF(EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A
47
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
48
		WHERE A.REF_ID IN 
49
		(
50
			SELECT CONTRACT_ID FROM TR_CONTRACT
51
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
52
			UNION 
53
			SELECT PO_ID FROM TR_PO_MASTER
54
			WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID)
55
		)
56
		AND B.AUTH_STATUS_KT <>'A'))
57
		BEGIN 
58
			ROLLBACK TRANSACTION
59
			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
60
			RETURN '-1'
61
		END
62
		--- KIEM TRA DANH SACH NGAN SACH CUA NHUNG PDN THANH TOAN CO SU DUNG NGAN SACH CUA TO TRINH
63

    
64
		IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID =@p_REQ_ID AND PROCESS_ID <> 'APPROVE' ) )
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 tồn tại phiếu yêu cầu mua sắm chưa được phê duyệt' ErrorDesc
68
			RETURN '-1'
69
		END
70

    
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' ErrorDesc
75
		--	RETURN '-1'
76
		--END
77

    
78
			DECLARE @listTRADE TABLE
79
			(
80
				TRADE_ID VARCHAR(20),
81
				AMT_APP DECIMAL(18,2),
82
				AMT_ROLEBACK DECIMAL(18,2)
83
			)
84

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

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

    
104
			DECLARE @listREQPAYID TABLE (
105
			
106
				REQ_PAY_ID VARCHAR(20)
107
			)
108
			INSERT INTO @listREQPAYID
109
			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)
110
			
111
			DECLARE @listTRADE_EXE TABLE
112
			(
113
				TRADE_ID VARCHAR(20),
114
				AMT_EXE DECIMAL(18,2)
115
				
116
			)
117
			INSERT INTO @listTRADE_EXE		
118
			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
119

    
120

    
121
			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)
122
			
123

    
124
			UPDATE dbo.PL_TRADEDETAIL SET AMT_ETM=AMT_ETM- (SELECT AMT_ROLEBACK FROM @listTRADE WHERE [@listTRADE].TRADE_ID=PL_TRADEDETAIL.TRADE_ID)  
125
			WHERE EXISTS (SELECT TRADE_ID FROM @listTRADE WHERE [@listTRADE].TRADE_ID=PL_TRADEDETAIL.TRADE_ID)
126

    
127

    
128
			UPDATE dbo.PL_REQUEST_DOC SET IS_SETTLMENT=1 WHERE REQ_ID=@p_REQ_ID
129
		
130

    
131
COMMIT TRANSACTION
132
SELECT '0' as Result, @p_REQ_ID  REQ_PAY_ID ,N'Quyết toán tờ trình thành công' ErrorDesc
133
RETURN '0'
134
ABORT:
135
BEGIN
136
		ROLLBACK TRANSACTION
137
		SELECT '-1' as Result, @p_REQ_ID AS REQ_PAY_ID, N'Quyết toán tờ trình thất bại' ErrorDesc
138
		RETURN '-1'
139
END