Project

General

Profile

TR_REQ_PAYMENT_KT_UPD_201022.txt

Luc Tran Van, 10/20/2022 01:22 PM

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

    
47
-- BEGIN VALIDATE UPDATE
48
	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'))
49
	BEGIN
50
		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
51
		RETURN '-1'
52
	END
53
	IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
54
	BEGIN
55
		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
56
		RETURN '-1'
57
	END
58
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
59
	BEGIN
60
		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
61
		RETURN '-1'
62
	END
63
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
64
	BEGIN
65
		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
66
		RETURN '-1'
67
	END
68
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
69
	BEGIN
70
		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
71
		RETURN '-1'
72
	END
73
-- END VALIDATE UPDATE
74

    
75
	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),
76
		@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(255),@GL_CODE VARCHAR(100), @BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
77
	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,
78
		@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
79
		@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
80
		@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,
81
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15)
82
	DECLARE @hdoc INT;
83
	DECLARE @hdocInvoice INT;
84
	DECLARE @hdocVATInvoice INT;
85
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
86
	EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
87
	EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE;
88
	
89
	--hoa don khong co VAT
90
	DECLARE XmlData CURSOR FOR
91
	SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
92
			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),
93
			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),
94
			VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
95

    
96
	OPEN XmlData
97
	DECLARE @INDEX INT  =0, @INDEX_IV INT =0, @INDEX_VAT INT =0
98

    
99
	BEGIN TRANSACTION
100
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
101
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
102
		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')
103
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
104

    
105
------------------------------------------------------------------------- BEGIN LUOI HACH TOAN -----------------------------------------------------------------------
106
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
107
		BEGIN
108
			-- hach toan
109
			DECLARE XmlDataEntries CURSOR FOR
110
			SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
111
					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),
112
					BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100), IS_TRANSFER_EXTERNAL VARCHAR(15))
113
			OPEN XmlDataEntries;
114

    
115
			UPDATE TR_REQ_PAYMENT 
116
			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
117
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
118

    
119
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
120
			IF @@Error <> 0 GOTO ABORT
121
			DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
122
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @IS_TRANSFER_EXTERNAL
123
			WHILE @@fetch_status=0 
124
			BEGIN
125

    
126
				IF(@EXC_RATE IS NULL)
127
				BEGIN
128
					SET @EXC_RATE = 1
129
				END
130

    
131
				SET @INDEX = @INDEX +1
132
				SET @GL_CODE = RIGHT(@GL_CODE,9)
133
				SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
134

    
135
				IF(@DR_CR='D')
136
				BEGIN
137
					SET @DR_CR_NAME =N'Nợ'
138
				END
139
				ELSE
140
				BEGIN
141
					SET @DR_CR_NAME =N'Có'
142
				END
143

    
144
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
145
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
146
	
147
				IF(@p_IS_SEND_APPR = 'Y')
148
				BEGIN
149
					IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
150
					BEGIN
151
						ROLLBACK TRANSACTION
152
						CLOSE XmlDataEntries;
153
						DEALLOCATE XmlDataEntries;
154
						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
155
						RETURN '-1'
156
					END
157

    
158
					IF(@DR_CR IS NULL OR @DR_CR ='')
159
					BEGIN
160
						ROLLBACK TRANSACTION
161
						CLOSE XmlDataEntries;
162
						DEALLOCATE XmlDataEntries;
163
						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
164
						RETURN '-1'
165
					END
166

    
167
					IF(@ACCT IS NULL OR @ACCT ='')
168
					BEGIN
169
						ROLLBACK TRANSACTION
170
						CLOSE XmlDataEntries;
171
						DEALLOCATE XmlDataEntries;
172
						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
173
						RETURN '-1'
174
					END
175

    
176
					IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
177
					BEGIN
178
						ROLLBACK TRANSACTION
179
						CLOSE XmlDataEntries;
180
						DEALLOCATE XmlDataEntries;
181
						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
182
						RETURN '-1'
183
					END
184

    
185
					IF(@AMT IS NULL OR @AMT < 0)
186
					BEGIN
187
					ROLLBACK TRANSACTION
188
							CLOSE XmlDataEntries;	
189
							DEALLOCATE XmlDataEntries;
190
							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
191
							RETURN '-1'
192
					END
193

    
194
					IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
195
					BEGIN
196
						ROLLBACK TRANSACTION
197
						CLOSE XmlDataEntries;
198
						DEALLOCATE XmlDataEntries;
199
						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
200
						RETURN '-1'
201
					END
202

    
203
					IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
204
					BEGIN
205
						ROLLBACK TRANSACTION
206
						CLOSE XmlDataEntries;
207
						DEALLOCATE XmlDataEntries;
208
						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
209
						RETURN '-1'
210
					END
211

    
212
					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)
213
					BEGIN
214
						ROLLBACK TRANSACTION
215
						CLOSE XmlDataEntries;
216
						DEALLOCATE XmlDataEntries;
217
						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
218
						RETURN '-1'
219
					END
220

    
221
					IF(@GL_CODE IS NULL OR @GL_CODE ='')
222
					BEGIN
223
						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) =''))
224
						BEGIN
225
							ROLLBACK TRANSACTION
226
							CLOSE XmlDataEntries;
227
							DEALLOCATE XmlDataEntries;
228
							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
229
							RETURN '-1'
230
						END
231
					END
232

    
233
					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)
234
					BEGIN
235
						ROLLBACK TRANSACTION
236
						CLOSE XmlDataEntries;
237
						DEALLOCATE XmlDataEntries;
238
						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
239
						RETURN '-1'
240
					END
241

    
242
					IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
243
						BEGIN
244
						ROLLBACK TRANSACTION
245
								CLOSE XmlDataEntries;	
246
								DEALLOCATE XmlDataEntries;
247
								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
248
								RETURN '-1'
249
						END
250

    
251
					-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
252
					IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
253
					BEGIN
254
						ROLLBACK TRANSACTION
255
						CLOSE XmlDataEntries;	
256
						DEALLOCATE XmlDataEntries;
257
						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
258
						RETURN '-1'
259
					END
260

    
261
					--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'))
262
					--BEGIN
263
					--	IF(@ACCT ='353200002' OR @ACCT ='353200001')
264
					--	BEGIN
265
					--		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
266
					--		RETURN '-1'
267
					--	END
268
					--END select * from TR_REQ_PAY_ENTRIES
269

    
270
					--doanptt 20/04/2022
271
					IF(@ACCT = '353200002')
272
					BEGIN
273
						IF(NOT EXISTS(SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)))
274
						BEGIN
275
							ROLLBACK TRANSACTION
276
							CLOSE XmlDataEntries;	
277
							DEALLOCATE XmlDataEntries;
278
							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
279
							RETURN '-1'
280
						END
281
					END
282

    
283
					IF(@ACCT = '353200002')
284
					BEGIN
285
						IF((SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0))) <> (SELECT SUM(AMT) FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0))))
286
						BEGIN
287
							ROLLBACK TRANSACTION
288
							CLOSE XmlDataEntries;	
289
							DEALLOCATE XmlDataEntries;
290
							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 tài khoản nợ 353200002 không bằng tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT'  ErrorDesc
291
							RETURN '-1'
292
						END
293
					END
294
				END -- END IF VALIDATE
295

    
296
				
297
	
298
				DECLARE @p_ET_ID VARCHAR(15);
299
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
300
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
301

    
302
				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)
303
				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)
304

    
305
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
306
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
307
				BEGIN
308
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
309
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
310
				END
311
				ELSE
312
				BEGIN
313
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
314
						BEGIN
315
							UPDATE CM_ACCOUNT SET ACC_NAME =@ACC_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
316
							WHERE ACC_NO=@ACCT
317
					END
318
					--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()
319
					--WHERE ACC_NO=@ACCT
320
				END
321
				IF @@error<>0 GOTO ABORT;
322
				FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @IS_TRANSFER_EXTERNAL
323
			END;--END WHILE
324
			CLOSE XmlDataEntries;
325
			DEALLOCATE XmlDataEntries;
326
		END--END LUOI HACH TOAN
327
------------------------------------------------------------------------------------------ END LUOI HACH TOAN --------------------------------------------------------------------
328

    
329
--INSERT XMLDATAENTRIES
330
		-- CAP NHAT TAI KHOAN GL
331

    
332
		--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,'') ='')
333
		-- CAP NHAT TAI KHOAN GL
334

    
335
-- INSERT LUOI HOA DON KHONG VAT
336
	
337
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
338
		FETCH NEXT FROM XmlData  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
339
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
340
		WHILE @@FETCH_STATUS=0 BEGIN
341
			SET @INDEX_IV = @INDEX_IV+1
342
				IF(@TYPE_FUNC ='HC')
343
				BEGIN
344
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND 
345
					TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' 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'))))
346
					BEGIN
347
						ROLLBACK TRANSACTION
348
						CLOSE XmlData;
349
						DEALLOCATE XmlData;
350
						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' ErrorDesc
351
						RETURN '-1'
352
					END	
353
				END
354
			DECLARE @p_REQ_INV_ID VARCHAR(15);
355
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
356
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
357

    
358
		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,
359
		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) 
360
		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,
361
		@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')
362
		
363
		IF @@error<>0 GOTO ABORT;
364
		FETCH NEXT FROM XmlData 
365
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
366
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
367
		END;
368
		CLOSE XmlData;
369
		DEALLOCATE XmlData;
370

    
371
-- BEGIN HOA DON CO VAT
372
		IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL)
373
		BEGIN
374
			-- hoa don co VAT
375
			DECLARE XmlVATInvoice CURSOR FOR
376
			SELECT *
377
			FROM
378
			OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
379
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
380
				 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
381
				 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))
382
			OPEN XmlVATInvoice
383

    
384
			-- CAP NHAT HOA DON CO VAT
385
			FETCH NEXT FROM XmlVATInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
386
			@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
387
			WHILE @@fetch_status=0 BEGIN
388
				SET @INDEX_VAT = @INDEX_VAT+1
389
				--IF(@TYPE_FUNC ='KT')
390
				--BEGIN
391
					IF(EXISTS(SELECT REQ_PAYDT_ID FROM TR_REQ_PAY_INVOICE 
392
									   WHERE INVOICE_NO =@INVOICE_NO 
393
											AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
394
											AND INVOICE_SIGN =@INVOICE_SIGN 
395
											AND TAX_NO =@TAX_NO 
396
											AND TAX =@TAX 
397
											AND TYPE_FUNC = 'KT' 
398
											AND AUTH_STATUS <>'D' 
399
											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'))
400
							  )
401
					   )
402
					BEGIN
403
						ROLLBACK TRANSACTION
404
						CLOSE XmlVATInvoice;
405
						DEALLOCATE XmlVATInvoice;
406
						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' ErrorDesc
407
						RETURN '-1'
408
					END	
409
				--END
410
				--doanptt 20/04/2022
411
				/*
412
				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'))
413
				BEGIN
414
					ROLLBACK TRANSACTION
415
					CLOSE XmlVATInvoice;	
416
					DEALLOCATE XmlVATInvoice;
417
					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
418
					RETURN '-1'
419
				END
420
				*/
421
					
422
				DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
423
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
424
				IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
425
				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,
426
				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,
427
				TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
428
				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 ,
429
				@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,
430
				@TYPE_VAT,'KT')
431
			IF @@error<>0 GOTO ABORT;
432

    
433
			FETCH NEXT FROM XmlVATInvoice 
434
			INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
435
			@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
436
			END;
437
			CLOSE XmlVATInvoice;
438
			DEALLOCATE XmlVATInvoice;
439
		END
440
-- END HOA DON CO VAT
441

    
442

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

    
447
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
448
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
449
-- BEGIN INSERT đơn vị chuyển
450
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
451
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
452
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
453
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
454
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
455
				OPEN XmlDataOutsideTrans
456

    
457

    
458
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
459
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
460
				WHILE @@fetch_status=0 
461
				BEGIN
462
					
463
					--IF(@p_REQ_PAY_ID <> NULL)
464
					--BEGIN
465
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
466
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
467
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
468
						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 , 
469
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID)
470
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
471
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID)
472
					--END
473

    
474
					IF @@error<>0 GOTO ABORT;
475
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
476
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
477
				END;
478
				CLOSE XmlDataOutsideTrans;
479
				DEALLOCATE XmlDataOutsideTrans;
480
--- END INSERT đơn vị chuyển
481

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

    
487
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
488
				@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)
489
-- INSERT đơn vị nhận
490
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
491

    
492
				DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
493
				SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
494
				WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(250), OBJECT_RECEIVE_ID VARCHAR(15), 
495
				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),  
496
				ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
497
				OPEN XmlDataOutsideRec
498

    
499
				FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
500
				@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
501
				WHILE @@fetch_status=0 
502
				BEGIN
503

    
504
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
505
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
506
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
507

    
508
					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,
509
					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)
510
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
511
					@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)
512
					IF @@error<>0 GOTO ABORT;
513
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
514
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
515
				END;
516
				CLOSE XmlDataOutsideRec;
517
				DEALLOCATE XmlDataOutsideRec;
518
--- END INSERT đơn vị nhận		
519

    
520
		--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
521
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
522
		-----
523
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
524

    
525
	COMMIT TRANSACTION
526

    
527
-- BEGIN VALIDATE SEND APRROVE
528
	IF(@p_IS_SEND_APPR = 'Y')
529
	BEGIN
530
	-- BEGIN VALIDATE RIGHT
531
		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'))
532
		BEGIN
533
			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
534
			RETURN '-1'
535
		END
536
		IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
537
		BEGIN
538
			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
539
			RETURN '-1'
540
		END
541
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
542
		BEGIN
543
			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
544
			RETURN '-1'
545
		END
546
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
547
		BEGIN
548
			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
549
			RETURN '-1'
550
		END
551
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
552
		BEGIN
553
			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
554
			RETURN '-1'
555
		END
556
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
557
		BEGIN
558
			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
559
			RETURN '-1'
560
		END
561
	-- END VALIDATE RIGHT
562

    
563
		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
564
		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
565
		Open cursorProduct
566

    
567
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
568
		WHILE @@FETCH_STATUS = 0
569
		BEGIN
570
			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))
571
			BEGIN
572
				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)
573
				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))
574
				BEGIN
575
					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
576
					RETURN '-1'
577
				END
578
			END
579
			-- KIEM TRA SO TIEN NO CO
580
			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))
581
			BEGIN
582
				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
583
				RETURN '-1'
584
			END
585

    
586
			FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
587
		END
588

    
589
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
590
		BEGIN
591
			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
592
			RETURN '-1'
593
		END
594

    
595
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
596
		BEGIN
597
			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
598
			RETURN '-1'
599
		END
600

    
601
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
602
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
603
		BEGIN
604
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
605
			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)
606
			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)
607
			IF(@SUM_CR <> @SUM_DR)
608
			BEGIN
609
				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
610
				RETURN '-1'
611
			END
612
		END
613

    
614
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
615
		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)
616
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
617
		UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
618
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
619
		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')
620
		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
621
		RETURN '4'
622
	END
623
-- END VALIDATE SEND APPROVE
624

    
625
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
626
RETURN '0'
627
ABORT:
628
BEGIN
629
		ROLLBACK TRANSACTION
630
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
631
		RETURN '-1'
632
End