Project

General

Profile

invoice.txt

Luc Tran Van, 03/27/2023 10:41 AM

 
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
					END
689

    
690
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
691
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
692
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
693

    
694
					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,
695
					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)
696
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
697
					@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)
698
					IF @@error<>0 GOTO ABORT;
699
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
700
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
701
				END;
702
				CLOSE XmlDataOutsideRec;
703
				DEALLOCATE XmlDataOutsideRec;
704
--- END INSERT đơn vị nhận		
705

    
706
		--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
707
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
708
		-----
709
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
710

    
711
	COMMIT TRANSACTION
712

    
713
-- BEGIN VALIDATE SEND APRROVE
714
	IF(@p_IS_SEND_APPR = 'Y')
715
	BEGIN
716
	-- BEGIN VALIDATE RIGHT
717
		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'))
718
		BEGIN
719
			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
720
			RETURN '-1'
721
		END
722
		IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
723
		BEGIN
724
			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
725
			RETURN '-1'
726
		END
727
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
728
		BEGIN
729
			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
730
			RETURN '-1'
731
		END
732
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
733
		BEGIN
734
			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
735
			RETURN '-1'
736
		END
737
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
738
		BEGIN
739
			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
740
			RETURN '-1'
741
		END
742
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
743
		BEGIN
744
			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
745
			RETURN '-1'
746
		END
747
	-- END VALIDATE RIGHT
748

    
749
		DECLARE @SUMVAT DECIMAL(18,0) = 0
750
		DECLARE @SUM3532 DECIMAL(18,0) = 0
751
		DECLARE @tmp3532 TABLE(
752
		AMT DECIMAL(18,0),
753
		ACCT VARCHAR(20)
754
		)
755
		INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
756
		IF(EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002'))
757
		BEGIN
758
			SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
759
			SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
760
						
761
			IF(@SUM3532 <> @SUMVAT)
762
			BEGIN
763
				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
764
				RETURN '-1'
765
			END
766
		END
767
		IF(NOT EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002') AND EXISTS(SELECT * FROM @tmp3532))
768
		BEGIN
769
			SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
770
						
771
			IF(@SUMVAT <> 0)
772
			BEGIN
773
				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
774
				RETURN '-1'
775
			END
776
		END
777
		
778

    
779
		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
780
		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
781
		Open cursorProduct
782

    
783
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
784
		WHILE @@FETCH_STATUS = 0
785
		BEGIN
786
			--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Ợ
787
			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 
788
					(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
789
				)
790
			BEGIN
791
				CLOSE cursorProduct;	
792
				DEALLOCATE cursorProduct;
793
				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
794
				RETURN '-1'
795
			END
796
			ELSE
797
			BEGIN
798
			print 'sai'+@ENTRY_PAIR
799
			END
800
			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))
801
			BEGIN
802
				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)
803
				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))
804
				BEGIN
805
					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
806
					RETURN '-1'
807
				END
808
			END
809
			-- KIEM TRA SO TIEN NO CO
810
			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))
811
			BEGIN
812
				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
813
				RETURN '-1'
814
			END
815

    
816
			FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
817
		END
818

    
819
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
820
		BEGIN
821
			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
822
			RETURN '-1'
823
		END
824

    
825
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
826
		BEGIN
827
			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
828
			RETURN '-1'
829
		END
830

    
831
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
832
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
833
		BEGIN
834
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
835
			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)
836
			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)
837
			IF(@SUM_CR <> @SUM_DR)
838
			BEGIN
839
				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
840
				RETURN '-1'
841
			END
842
		END
843

    
844
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
845
		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)
846
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
847
		UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
848
		-- DOANPTT 291222: THEM LOG KPI
849
		UPDATE TR_REQ_KPI 
850
		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
851
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
852
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
853
		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')
854
		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
855
		RETURN '4'
856
	END
857
-- END VALIDATE SEND APPROVE
858

    
859
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
860
RETURN '0'
861
ABORT:
862
BEGIN
863
		ROLLBACK TRANSACTION
864
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
865
		RETURN '-1'
866
End
867