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
|