Project

General

Profile

req_pay_kt_upd.txt

Luc Tran Van, 03/27/2023 03:18 PM

 
1

    
2
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Upd]
3
@p_REQ_PAY_ID	varchar(15)= NULL,
4
@p_REQ_PAY_CODE	varchar(50)	= NULL,
5
@p_REQ_DT VARCHAR(20)= NULL,
6
@p_BRANCH_ID	varchar(15)	= NULL,
7
@p_DEP_ID	varchar(15)	= NULL,
8
@p_REQ_REASON	nvarchar(MAX)	= NULL,
9
@p_REQ_TYPE	varchar(15)	= NULL,
10
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
11
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
12
@p_REF_ID	varchar(15)	= NULL,
13
@p_RECEIVER_PO	nvarchar(250)	= NULL,
14
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
15
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
16
@p_RATE	DECIMAL(18,2) = NULL,
17
@p_REQ_AMT	decimal(18, 0)	= NULL,
18
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
19
@p_MAKER_ID	varchar(15)	= NULL,
20
@p_CREATE_DT	varchar(25)	= NULL,
21
@p_EDITOR_ID	varchar(15)	= NULL,
22
@p_AUTH_STATUS	varchar(1)	= NULL,
23
@p_CHECKER_ID	varchar(15)	= NULL,
24
@p_APPROVE_DT	varchar(25)	= NULL,
25
@p_CREATE_DT_KT	varchar(25)	= NULL,
26
@p_MAKER_ID_KT	varchar(15)	= NULL,
27
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
28
@p_CHECKER_ID_KT	varchar(1)	= NULL,
29
@p_APPROVE_DT_KT  varchar(25)= null,
30
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
31
@p_BRANCH_CREATE	varchar(15)	= NULL,
32
@p_NOTES	varchar(15)	= NULL,
33
@p_RECORD_STATUS	varchar(1)	= NULL,
34
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
35
@p_TRANSFER_DT	varchar(25)	= NULL,
36
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
37
@p_PROCESS	varchar(15)	= NULL,
38
@p_PAY_PHASE VARCHAR(15) = NULL,
39
@p_IS_SEND_APPR VARCHAR(15) = NULL,
40
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
41
@p_XMP_TEMP_INVOICE XML = NULL,
42
@p_XMP_TEMP_VAT_INVOICE XML = NULL,
43
--doanptt 14/03/2022
44
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL,
45
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL
46
AS
47

    
48
-- BEGIN VALIDATE UPDATE
49
	IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL'))
50
	BEGIN
51
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
52
		RETURN '-1'
53
	END
54
	IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
55
	BEGIN
56
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
57
		RETURN '-1'
58
	END
59
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
60
	BEGIN
61
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt thành công trước đó!' ErrorDesc
62
		RETURN '-1'
63
	END
64
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
65
	BEGIN
66
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt kế toán thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
67
		RETURN '-1'
68
	END
69
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
70
	BEGIN
71
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
72
		RETURN '-1'
73
	END
74
-- END VALIDATE UPDATE
75

    
76
	DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
77
		@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(255),@GL_CODE VARCHAR(100),@GL_CODE_ACCNO VARCHAR(20), @BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
78
	DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50)=null,
79
		@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
80
		@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
81
		@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@RATE DECIMAL(18,2),@PRICE_KT DECIMAL(18,2) =0,@TOTAL_AMT_KT DECIMAL(18,2) =0,@VAT_KT DECIMAL(18,2) =0,
82
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15)
83
	DECLARE @hdoc INT;
84
	DECLARE @hdocInvoice INT;
85
	DECLARE @hdocVATInvoice INT;
86
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
87
	EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
88
	EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE;
89
	
90
	--hoa don khong co VAT
91
	DECLARE XmlData CURSOR FOR
92
	SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
93
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),
94
			GOODS_NAME nvarchar(250), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,0),
95
			VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
96

    
97
	OPEN XmlData
98
	DECLARE @INDEX INT  =0, @INDEX_IV INT =0, @INDEX_VAT INT =0, @INDEX_REC INT = 0;
99

    
100
	BEGIN TRANSACTION
101
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
102
		IF(ISNULL(@p_MAKER_ID_KT, '') = '')
103
		BEGIN
104
			SET @p_MAKER_ID_KT = (SELECT TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TYPE_JOB = 'XL')
105
		END
106
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
107
		SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND STATUS_JOB='C')
108
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
109

    
110
		UPDATE TR_REQ_PAYMENT 
111
		SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTE=@p_CONFIRM_NOTE
112
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
113
		-- DOANPTT 291222: THEM LOG KPI
114
		UPDATE TR_REQ_KPI 
115
		SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTE, REQ_REASON = @p_REQ_REASON
116
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
117

    
118
------------------------------------------------------------------------- BEGIN LUOI HACH TOAN -----------------------------------------------------------------------
119
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
120
		BEGIN
121
			-- hach toan
122
			DECLARE XmlDataEntries CURSOR FOR
123
			SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
124
					WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
125
					BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100),GL_CODE_ACCNO VARCHAR(20), IS_TRANSFER_EXTERNAL VARCHAR(15))
126
			OPEN XmlDataEntries;
127

    
128
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
129
			IF @@Error <> 0 GOTO ABORT
130
			DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
131
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO, @IS_TRANSFER_EXTERNAL
132
			WHILE @@fetch_status=0 
133
			BEGIN
134

    
135
				IF(@EXC_RATE IS NULL)
136
				BEGIN
137
					SET @EXC_RATE = 1
138
				END
139

    
140
				SET @INDEX = @INDEX +1
141
				SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
142

    
143
				-- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA
144
				IF(ISNULL(@GL_CODE, '') <> '')
145
				BEGIN
146
					SET @ACC_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
147
					SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
148
				END
149
				-- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA
150
				SET @GL_CODE = RIGHT(@GL_CODE,9)
151
				IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '')
152
				BEGIN
153
					SET @ACCT = @GL_CODE_ACCNO
154
				END
155

    
156
				IF(@DR_CR='D')
157
				BEGIN
158
					SET @DR_CR_NAME =N'Nợ'
159
				END
160
				ELSE
161
				BEGIN
162
					SET @DR_CR_NAME =N'Có'
163
				END
164

    
165
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
166
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
167
	
168
				IF(@p_IS_SEND_APPR = 'Y')
169
				BEGIN
170
				
171
				print '@ENTRY_PAIR: ' + @ENTRY_PAIR
172
				print 'req_pay_id: ' + @p_REQ_PAY_ID
173
					IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
174
					BEGIN
175
						ROLLBACK TRANSACTION
176
						CLOSE XmlDataEntries;
177
						DEALLOCATE XmlDataEntries;
178
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Mã bút toán không được phép để trống' ErrorDesc
179
						RETURN '-1'
180
					END
181

    
182
					IF(@DR_CR IS NULL OR @DR_CR ='')
183
					BEGIN
184
						ROLLBACK TRANSACTION
185
						CLOSE XmlDataEntries;
186
						DEALLOCATE XmlDataEntries;
187
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Nợ/có không được phép để trống' ErrorDesc
188
						RETURN '-1'
189
					END
190

    
191
					IF(@ACCT IS NULL OR @ACCT ='')
192
					BEGIN
193
						ROLLBACK TRANSACTION
194
						CLOSE XmlDataEntries;
195
						DEALLOCATE XmlDataEntries;
196
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tài khoản không được phép để trống' ErrorDesc
197
						RETURN '-1'
198
					END
199

    
200
					IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
201
					BEGIN
202
						ROLLBACK TRANSACTION
203
						CLOSE XmlDataEntries;
204
						DEALLOCATE XmlDataEntries;
205
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
206
						RETURN '-1'
207
					END
208

    
209
					IF(@AMT IS NULL OR @AMT < 0)
210
					BEGIN
211
					ROLLBACK TRANSACTION
212
							CLOSE XmlDataEntries;	
213
							DEALLOCATE XmlDataEntries;
214
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tiền hạch toán phải lớn hơn 0'  ErrorDesc
215
							RETURN '-1'
216
					END
217

    
218
					IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
219
					BEGIN
220
						ROLLBACK TRANSACTION
221
						CLOSE XmlDataEntries;
222
						DEALLOCATE XmlDataEntries;
223
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
224
						RETURN '-1'
225
					END
226

    
227
					IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
228
					BEGIN
229
						ROLLBACK TRANSACTION
230
						CLOSE XmlDataEntries;
231
						DEALLOCATE XmlDataEntries;
232
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
233
						RETURN '-1'
234
					END
235

    
236
					IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13)
237
					BEGIN
238
						ROLLBACK TRANSACTION
239
						CLOSE XmlDataEntries;
240
						DEALLOCATE XmlDataEntries;
241
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
242
						RETURN '-1'
243
					END
244

    
245
					IF(@GL_CODE IS NULL OR @GL_CODE ='')
246
					BEGIN
247
						IF (LEN(@ACCT) >9 AND ((SELECT ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT ISNULL(TK_GL_NAME,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) =''))
248
						BEGIN
249
							ROLLBACK TRANSACTION
250
							CLOSE XmlDataEntries;
251
							DEALLOCATE XmlDataEntries;
252
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản CASA chưa có thông tin GL Mapping. Vui lòng bấm vào nút Kiểm tra tài khoản để đồng bộ tài khoản từ Core' ErrorDesc
253
							RETURN '-1'
254
						END
255
					END
256

    
257
					IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13)
258
					BEGIN
259
						ROLLBACK TRANSACTION
260
						CLOSE XmlDataEntries;
261
						DEALLOCATE XmlDataEntries;
262
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
263
						RETURN '-1'
264
					END
265

    
266
					IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
267
					BEGIN
268
					ROLLBACK TRANSACTION
269
							CLOSE XmlDataEntries;	
270
							DEALLOCATE XmlDataEntries;
271
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA'  ErrorDesc
272
							RETURN '-1'
273
					END
274

    
275
					-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
276
					IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
277
					BEGIN
278
						ROLLBACK TRANSACTION
279
						CLOSE XmlDataEntries;	
280
						DEALLOCATE XmlDataEntries;
281
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Nếu bạn đang hạch toán CASA trong hệ thống. Vui lòng chọn mã đơn vị khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài  khoản CASA'  ErrorDesc
282
						RETURN '-1'
283
					END
284

    
285
					--IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(TAX,0) >0 AND ISNULL(VAT,0) >0 AND TYPE_FUNC ='KT'))
286
					--BEGIN
287
					--	IF(@ACCT ='353200002' OR @ACCT ='353200001')
288
					--	BEGIN
289
					--		SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Bạn không được phép hạch toán tài khoản 353200002,353200001 giao dịch không chứa các hóa đơn có VAT do kế toán lưu trữ '  ErrorDesc
290
					--		RETURN '-1'
291
					--	END
292
					--END select * from TR_REQ_PAY_ENTRIES
293

    
294
					--doanptt 20/04/2022
295
					IF(@ACCT = '353200002')
296
					BEGIN
297
						IF(NOT EXISTS(SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)))
298
						BEGIN
299
							ROLLBACK TRANSACTION
300
							CLOSE XmlDataEntries;	
301
							DEALLOCATE XmlDataEntries;
302
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Lưới hóa đơn đính kèm không có hóa đơn chứa VAT. Vui lòng xóa tài khoản nợ 353200002 trước khi gửi phê duyệt'  ErrorDesc
303
							RETURN '-1'
304
						END
305
					END
306
					
307
					/*
308
					-- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ
309
					IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') >= 1 AND 
310
							(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') = 0)
311
					BEGIN
312
						ROLLBACK TRANSACTION
313
						CLOSE XmlDataEntries;	
314
						DEALLOCATE XmlDataEntries;
315
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Nợ - 0 Có)'  ErrorDesc
316
						RETURN '-1'
317
					END
318

    
319
					IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') = 0 AND 
320
							(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') >= 1)
321
					BEGIN
322
						ROLLBACK TRANSACTION
323
						CLOSE XmlDataEntries;	
324
						DEALLOCATE XmlDataEntries;
325
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - 0 Nợ)'  ErrorDesc
326
						RETURN '-1'
327
					END
328
					*/
329
					
330

    
331
					
332
				END -- END IF VALIDATE
333
				/*
334
				IF(@ACCT = '353200002')
335
					BEGIN
336
						DECLARE @SUMVAT DECIMAL(18,0) = 0
337
						DECLARE @SUM3532 DECIMAL(18,0) = 0
338
						DECLARE @tmp3532 TABLE(
339
						AMT DECIMAL(18,0),
340
						ACCT VARCHAR(20)
341
						)
342
						INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
343
						SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
344
						SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
345
						
346
						IF(@SUM3532 <> @SUMVAT)
347
						BEGIN
348
							ROLLBACK TRANSACTION
349
							CLOSE XmlDataEntries;	
350
							DEALLOCATE XmlDataEntries;
351
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán dòng ' + CONVERT(VARCHAR(5),@INDEX) + N': Tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN') + N',Tổng tiền tài khoản 3532: ' + FORMAT(@SUM3532,'#,#', 'vi-VN')   ErrorDesc
352
							RETURN '-1'
353
						END
354
					END
355
					*/
356
	
357
				DECLARE @p_ET_ID VARCHAR(15);
358
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
359
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
360

    
361
				INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT, TRN_TYPE, CURRENCY, EXC_RATE, IS_TRANSFER_EXTERNAL)
362
				VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, 'PAYMENT', 'VND', 1, @IS_TRANSFER_EXTERNAL)
363

    
364
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
365
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
366
				BEGIN
367
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
368
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
369
				END
370
				ELSE
371
				BEGIN
372
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0')
373
						BEGIN
374
							UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), EDITOR_DT = GETDATE()
375
							WHERE ACC_NO=@ACCT
376
					END
377
					--UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), CREATE_DT = GETDATE()
378
					--WHERE ACC_NO=@ACCT
379
				END
380
				IF @@error<>0 GOTO ABORT;
381
				FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO, @IS_TRANSFER_EXTERNAL
382
			END;--END WHILE
383
			CLOSE XmlDataEntries;
384
			DEALLOCATE XmlDataEntries;
385
		END--END LUOI HACH TOAN
386
------------------------------------------------------------------------------------------ END LUOI HACH TOAN --------------------------------------------------------------------
387

    
388
--INSERT XMLDATAENTRIES
389
		-- CAP NHAT TAI KHOAN GL
390

    
391
		--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM PAY_ENTRIES_POST WHERE ISNULL(REF_NO,'') ='')
392
		-- CAP NHAT TAI KHOAN GL
393

    
394
-- INSERT LUOI HOA DON KHONG VAT
395
	
396
		DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000)
397
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
398
		FETCH NEXT FROM XmlData  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
399
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
400
		WHILE @@FETCH_STATUS=0 BEGIN
401
			SET @INDEX_IV = @INDEX_IV+1
402
				IF(@TYPE_FUNC ='HC')
403
				BEGIN
404
					SET @PDN_TT_LIST_INVOICE = (	SELECT STUFF	(	(	SELECT '; ' + DTA.REQ_PAY_CODE 
405
																			FROM TR_REQ_PAYMENT DTA 
406
																			WHERE REQ_PAY_ID IN (	SELECT REQ_PAY_ID 
407
																									FROM TR_REQ_PAY_INVOICE 
408
																									WHERE INVOICE_NO =@INVOICE_NO 
409
																									AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
410
																									AND INVOICE_SIGN = @INVOICE_SIGN 
411
																									AND TAX_NO =@TAX_NO 
412
																									AND TAX =@TAX 
413
																									AND AUTH_STATUS <>'D' 
414
																									AND TYPE_FUNC ='HC' 
415
																									AND REQ_PAY_ID IN	(	SELECT REQ_PAY_ID 
416
																															FROM TR_REQ_PAYMENT 
417
																															WHERE AUTH_STATUS NOT IN ('E','D') 
418
																															AND MAKER_ID NOT IN	(	SELECT TLNANME 
419
																																					FROM TL_USER 
420
																																					WHERE RoleName ='DISABLE' 
421
																																					OR AUTH_STATUS ='U'
422
																																				)
423
																														)
424
																								)
425
																			FOR XML PATH(''), TYPE
426
																		).value('.[1]', 'nvarchar(max)'), 1, 2, ''
427
																	)
428
												)
429
					IF	(	EXISTS	(	SELECT * 
430
										FROM TR_REQ_PAY_INVOICE 
431
										WHERE INVOICE_NO = @INVOICE_NO 
432
										AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
433
										AND INVOICE_SIGN =@INVOICE_SIGN 
434
										AND TAX_NO =@TAX_NO 
435
										AND TAX =@TAX 
436
										AND TYPE_FUNC ='HC' 
437
										AND AUTH_STATUS <>'D' 
438
										AND REQ_PAY_ID IN	(	SELECT REQ_PAY_ID 
439
																FROM TR_REQ_PAYMENT 
440
																WHERE AUTH_STATUS NOT IN ('E','D') 
441
																AND MAKER_ID NOT IN	(	SELECT TLNANME 
442
																						FROM TL_USER 
443
																						WHERE RoleName ='DISABLE' 
444
																						OR AUTH_STATUS ='U'
445
																					)
446
															)
447
									)
448
						)
449

    
450
					IF	(	EXISTS	(	SELECT * 
451
										FROM TR_REQ_PAY_INVOICE 
452
										WHERE INVOICE_NO = @INVOICE_NO 
453
										AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
454
										AND INVOICE_SIGN =@INVOICE_SIGN 
455
										AND TAX_NO = @TAX_NO 
456
										AND TAX =@TAX 
457
										AND TYPE_FUNC ='HC' 
458
										AND AUTH_STATUS <>'D' AND 
459
										REQ_PAY_ID IN	(	SELECT REQ_PAY_ID 
460
															FROM TR_REQ_PAYMENT 
461
															WHERE AUTH_STATUS NOT IN ('E','D') 
462
															AND MAKER_ID NOT IN	(	SELECT TLNANME 
463
																					FROM TL_USER 
464
																					WHERE RoleName ='DISABLE' 
465
																					OR AUTH_STATUS ='U'
466
																				)
467
														)
468
									)
469
						)
470
					BEGIN
471
						ROLLBACK TRANSACTION
472
						CLOSE XmlData;
473
						DEALLOCATE XmlData;
474
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Số phiếu: '+ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
475
						RETURN '-1'
476
					END	
477
				END
478
			DECLARE @p_REQ_INV_ID VARCHAR(15);
479
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
480
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
481

    
482
		INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,
483
		AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN, VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
484
		VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103)  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,
485
		@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,'HC')
486
		
487
		IF @@error<>0 GOTO ABORT;
488
		FETCH NEXT FROM XmlData 
489
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
490
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
491
		END;
492
		CLOSE XmlData;
493
		DEALLOCATE XmlData;
494

    
495
-- BEGIN HOA DON CO VAT
496
		IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL)
497
		BEGIN
498
			-- hoa don co VAT
499
			DECLARE XmlVATInvoice CURSOR FOR
500
			SELECT *
501
			FROM
502
			OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
503
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
504
				 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
505
				 PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,0),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
506
			OPEN XmlVATInvoice
507

    
508
			-- CAP NHAT HOA DON CO VAT
509
			FETCH NEXT FROM XmlVATInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
510
			@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
511
			WHILE @@fetch_status=0 BEGIN
512
				SET @INDEX_VAT = @INDEX_VAT+1
513

    
514
				SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
515
				(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX 
516
				AND AUTH_STATUS <>'D' AND TYPE_FUNC ='KT'
517
				AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
518
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
519
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
520
										AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
521
										REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
522

    
523
				--IF(@TYPE_FUNC ='KT')
524
				--BEGIN
525
					IF(EXISTS(SELECT REQ_PAYDT_ID FROM TR_REQ_PAY_INVOICE 
526
									   WHERE INVOICE_NO =@INVOICE_NO 
527
											AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
528
											AND INVOICE_SIGN =@INVOICE_SIGN 
529
											AND TAX_NO =@TAX_NO 
530
											AND TAX =@TAX 
531
											AND TYPE_FUNC = 'KT' 
532
											AND AUTH_STATUS <>'D' 
533
											AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))
534
							  )
535
					   )
536
					BEGIN
537
						ROLLBACK TRANSACTION
538
						CLOSE XmlVATInvoice;
539
						DEALLOCATE XmlVATInvoice;
540
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm có VAT, dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Số phiếu: '+ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
541
						RETURN '-1'
542
					END	
543
				--END
544
				--doanptt 20/04/2022
545
				/*
546
				IF(NOT EXISTS(SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2))  WHERE ACCT = '353200002'))
547
				BEGIN
548
					ROLLBACK TRANSACTION
549
					CLOSE XmlVATInvoice;	
550
					DEALLOCATE XmlVATInvoice;
551
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hóa đơn đính kèm có VAT, nhưng lưới hạch toán không có tài khoản nợ 353200002. Vui lòng thêm tài khoản nợ 353200002 trước khi gửi phê duyệt'  ErrorDesc
552
					RETURN '-1'
553
				END
554
				*/
555
					
556
				DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
557
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
558
				IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
559
				INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,
560
				AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,
561
				TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
562
				VALUES (@p_REQ_INV_VAT_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103)  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
563
				@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,
564
				@TYPE_VAT,'KT')
565
			IF @@error<>0 GOTO ABORT;
566

    
567
			FETCH NEXT FROM XmlVATInvoice 
568
			INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
569
			@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
570
			END;
571
			CLOSE XmlVATInvoice;
572
			DEALLOCATE XmlVATInvoice;
573
		END
574
-- END HOA DON CO VAT
575

    
576

    
577
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị chuyển
578
	DECLARE @hdocOutsideTrans INT
579
	EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS;
580

    
581
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
582
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
583
-- BEGIN INSERT đơn vị chuyển
584
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
585
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
586
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
587
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
588
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
589
				OPEN XmlDataOutsideTrans
590

    
591

    
592
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
593
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
594
				WHILE @@fetch_status=0 
595
				BEGIN
596
					--IF(@p_REQ_PAY_ID <> NULL)
597
					--BEGIN
598
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
599
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
600
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
601
						INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_TRANS(TR_REQ_TRANS_OUTSIDE_ID ,REQ_PAY_ID ,MAKER_ID , CREATE_DT , AUTH_STATUS, AUTH_STATUS_KT , 
602
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID)
603
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
604
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID)
605
					--END
606

    
607
					IF @@error<>0 GOTO ABORT;
608
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
609
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
610
				END;
611
				CLOSE XmlDataOutsideTrans;
612
				DEALLOCATE XmlDataOutsideTrans;
613
--- END INSERT đơn vị chuyển
614

    
615
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận
616
-- BEGIN INSERT đơn vị nhận
617
	DECLARE @hdocOutsideRec INT
618
	EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC;
619

    
620
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
621
				@BRANCH_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_NAME NVARCHAR(255), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX), @REF_NO VARCHAR(50)
622
-- INSERT đơn vị nhận
623
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
624

    
625
				DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
626
				SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
627
				WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(250), OBJECT_RECEIVE_ID VARCHAR(15), 
628
				BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME NVARCHAR(255), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(120), SUB_BANK_RECEIVE_NAME nvarchar(MAX),  
629
				ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
630
				OPEN XmlDataOutsideRec
631

    
632
				FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
633
				@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
634
				WHILE @@fetch_status=0 
635
				BEGIN
636
					SET @INDEX_REC = @INDEX_REC+1
637

    
638
					IF(@p_IS_SEND_APPR = 'Y')
639
					BEGIN
640
						IF(ISNULL(@ACC_NO_RECEIVE, '') = '')
641
						BEGIN
642
							ROLLBACK TRANSACTION
643
							CLOSE XmlDataOutsideRec;
644
							DEALLOCATE XmlDataOutsideRec;
645
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Số tài khoản không được để trống' ErrorDesc
646
							RETURN '-1'
647
						END
648
						IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
649
						BEGIN
650
							ROLLBACK TRANSACTION
651
							CLOSE XmlDataOutsideRec;
652
							DEALLOCATE XmlDataOutsideRec;
653
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên đơn vị nhận không được để trống' ErrorDesc
654
							RETURN '-1'
655
						END
656
						IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '')
657
						BEGIN
658
							ROLLBACK TRANSACTION
659
							CLOSE XmlDataOutsideRec;
660
							DEALLOCATE XmlDataOutsideRec;
661
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Đối tượng nhận không được để trống' ErrorDesc
662
							RETURN '-1'
663
						END
664
						IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
665
						BEGIN
666
							ROLLBACK TRANSACTION
667
							CLOSE XmlDataOutsideRec;
668
							DEALLOCATE XmlDataOutsideRec;
669
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên ngân hàng hưởng trực tiếp không được để trống' ErrorDesc
670
							RETURN '-1'
671
						END
672
						IF(ISNULL(@CITAD1_ID, '') = '')
673
						BEGIN
674
							ROLLBACK TRANSACTION
675
							CLOSE XmlDataOutsideRec;
676
							DEALLOCATE XmlDataOutsideRec;
677
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Mã CITAD không được để trống' ErrorDesc
678
							RETURN '-1'
679
						END
680
						IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '')
681
						BEGIN
682
							ROLLBACK TRANSACTION
683
							CLOSE XmlDataOutsideRec;
684
							DEALLOCATE XmlDataOutsideRec;
685
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Kênh thanh toán không được để trống' ErrorDesc
686
							RETURN '-1'
687
						END
688
						IF(LEN(@BRANCH_RECEIVE_NAME) > 70)
689
						BEGIN
690
							ROLLBACK TRANSACTION
691
							CLOSE XmlDataOutsideRec;
692
							DEALLOCATE XmlDataOutsideRec;
693
							SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên đơn vị nhận không hợp lệ. Tên đơn vị nhận không được vượt quá 70 ký tự' ErrorDesc
694
							RETURN '-1'
695
						END
696
					END
697

    
698
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
699
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
700
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
701

    
702
					INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_REC(REQ_TRANS_OUTSIDE_REC_ID, REQ_PAY_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, AUTH_STATUS_KT,
703
					CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC, SUB_BANK_RECEIVE_NAME, ENTRY_PAIR, REF_NO)
704
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
705
					@CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO)
706
					IF @@error<>0 GOTO ABORT;
707
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
708
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
709
				END;
710
				CLOSE XmlDataOutsideRec;
711
				DEALLOCATE XmlDataOutsideRec;
712
--- END INSERT đơn vị nhận		
713

    
714
		--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
715
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
716
		-----
717
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
718

    
719
	COMMIT TRANSACTION
720

    
721
-- BEGIN VALIDATE SEND APRROVE
722
	IF(@p_IS_SEND_APPR = 'Y')
723
	BEGIN
724
	-- BEGIN VALIDATE RIGHT
725
		IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL'))
726
		BEGIN
727
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép gửi phê duyêt phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
728
			RETURN '-1'
729
		END
730
		IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
731
		BEGIN
732
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
733
			RETURN '-1'
734
		END
735
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
736
		BEGIN
737
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
738
			RETURN '-1'
739
		END
740
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
741
		BEGIN
742
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt thành công trước đó!' ErrorDesc
743
			RETURN '-1'
744
		END
745
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
746
		BEGIN
747
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt kế toán thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
748
			RETURN '-1'
749
		END
750
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
751
		BEGIN
752
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
753
			RETURN '-1'
754
		END
755
	-- END VALIDATE RIGHT
756

    
757
		DECLARE @SUMVAT DECIMAL(18,0) = 0
758
		DECLARE @SUM3532 DECIMAL(18,0) = 0
759
		DECLARE @tmp3532 TABLE(
760
		AMT DECIMAL(18,0),
761
		ACCT VARCHAR(20)
762
		)
763
		INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
764
		IF(EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002'))
765
		BEGIN
766
			SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
767
			SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
768
						
769
			IF(@SUM3532 <> @SUMVAT)
770
			BEGIN
771
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán dòng ' + CONVERT(VARCHAR(5),@INDEX) + N': Tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN') + N',Tổng tiền tài khoản 3532: ' + FORMAT(@SUM3532,'#,#', 'vi-VN')   ErrorDesc
772
				RETURN '-1'
773
			END
774
		END
775
		IF(NOT EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002') AND EXISTS(SELECT * FROM @tmp3532))
776
		BEGIN
777
			SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
778
						
779
			IF(@SUMVAT <> 0)
780
			BEGIN
781
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán dòng ' + CONVERT(VARCHAR(5),@INDEX) + N': Tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN')  ErrorDesc
782
				RETURN '-1'
783
			END
784
		END
785
		
786

    
787
		DECLARE  @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) = 0
788
		DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
789
		Open cursorProduct
790

    
791
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
792
		WHILE @@FETCH_STATUS = 0
793
		BEGIN
794
			--LUCTV 19-07-2021: MỖI MÃ BÚT TOÁN PHẢI THEO NGUYÊN TẮC 1 NỢ NHIỀU CÓ HOẶC 1 CÓ NHIỀU NỢ
795
			IF	(	 (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='D') > 1 AND 
796
					(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='C')> 1
797
				)
798
			BEGIN
799
				CLOSE cursorProduct;	
800
				DEALLOCATE cursorProduct;
801
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ET_ID+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - Nhiều Nợ)'  ErrorDesc
802
				RETURN '-1'
803
			END
804
			ELSE
805
			BEGIN
806
			print 'sai'+@ENTRY_PAIR
807
			END
808
			IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
809
			BEGIN
810
				SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET)
811
				IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
812
				BEGIN
813
					SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###')  ErrorDesc
814
					RETURN '-1'
815
				END
816
			END
817
			-- KIEM TRA SO TIEN NO CO
818
			IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0))
819
			BEGIN
820
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có'  ErrorDesc
821
				RETURN '-1'
822
			END
823

    
824
			FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
825
		END
826

    
827
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
828
		BEGIN
829
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
830
			RETURN '-1'
831
		END
832

    
833
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
834
		BEGIN
835
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
836
			RETURN '-1'
837
		END
838

    
839
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
840
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
841
		BEGIN
842
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
843
			SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
844
			SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
845
			IF(@SUM_CR <> @SUM_DR)
846
			BEGIN
847
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
848
				RETURN '-1'
849
			END
850
		END
851

    
852
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
853
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
854
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
855
		UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
856
		-- DOANPTT 291222: THEM LOG KPI
857
		UPDATE TR_REQ_KPI 
858
		SET AUTH_STATUS_KT ='P', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTE, REQ_REASON = @p_REQ_REASON
859
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
860
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
861
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên cập nhật thông tin')
862
		SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
863
		RETURN '4'
864
	END
865
-- END VALIDATE SEND APPROVE
866

    
867
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
868
RETURN '0'
869
ABORT:
870
BEGIN
871
		ROLLBACK TRANSACTION
872
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
873
		RETURN '-1'
874
End
875