Project

General

Profile

stored_upd_reqpayment.txt

Luc Tran Van, 04/20/2022 03:30 PM

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

    
53
--Validation is here
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_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
60
	BEGIN
61
		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
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 = 'A'))
65
	BEGIN
66
		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
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 được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
72
		RETURN '-1'
73
	END
74
--End Validation
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), @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)
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 *
93
	FROM
94
	OPENXML(@hdocInvoice, '/Root/XmlData', 2)
95
	WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
96
		 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
97
		 PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
98
		OPEN XmlData
99
	
100
	DECLARE @INDEX INT  =0, @INDEX_IV INT =0, @INDEX_VAT INT =0
101
	BEGIN TRANSACTION
102
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
103
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
104
		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')
105
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
106
		----
107
		--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
108

    
109
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
110
		BEGIN
111
			-- hach toan
112
			DECLARE XmlDataEntries CURSOR FOR
113
			SELECT *
114
			FROM
115
			OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
116
			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),
117
			BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100))
118
			OPEN XmlDataEntries;
119

    
120
			UPDATE TR_REQ_PAYMENT SET 
121
			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
122
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
123
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
124
			DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
125
			IF @@Error <> 0 GOTO ABORT
126
			DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
127
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
128
			WHILE @@fetch_status=0 
129
			BEGIN
130

    
131
				IF(@EXC_RATE IS NULL)
132
				BEGIN
133
					SET @EXC_RATE = 1.00
134
				END
135

    
136
				SET @INDEX = @INDEX +1
137
				SET @GL_CODE = RIGHT(@GL_CODE,9)
138
				SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
139
				IF(@DR_CR='D')
140
				BEGIN
141
					SET @DR_CR_NAME =N'Nợ'
142
				END
143
				ELSE
144
				BEGIN
145
					SET @DR_CR_NAME =N'Có'
146
				END
147
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
148
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
149
				--SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)
150
	----------------------------------------------------------------------------------------------------------- BEGIN VALIDATE -------------------------------------------------------------------------------------------------------
151
				/*IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='' OR @ACC_NAME ='0')
152
				BEGIN
153
					ROLLBACK TRANSACTION
154
					CLOSE XmlDataEntries;
155
					DEALLOCATE XmlDataEntries;
156
					SELECT '-1' as Result, '' REQ_PAY_ID, 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
157
					RETURN '-1'
158
				END*/
159
				/*IF(@GL_CODE IS NULL OR @GL_CODE ='')
160
				BEGIN
161
					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) =''))
162
					BEGIN
163
						ROLLBACK TRANSACTION
164
						CLOSE XmlDataEntries;
165
						DEALLOCATE XmlDataEntries;
166
						SELECT '-1' as Result, '' REQ_PAY_ID, 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
167
						RETURN '-1'
168
					END
169
				END*/
170
				IF(@DR_CR IS NULL OR @DR_CR ='')
171
				BEGIN
172
					ROLLBACK TRANSACTION
173
					CLOSE XmlDataEntries;
174
					DEALLOCATE XmlDataEntries;
175
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản nợ không được phép để trống' ErrorDesc
176
					RETURN '-1'
177
				END
178
				IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
179
				BEGIN
180
					ROLLBACK TRANSACTION
181
					CLOSE XmlDataEntries;
182
					DEALLOCATE XmlDataEntries;
183
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
184
					RETURN '-1'
185
				END
186
				IF(@ACCT IS NULL OR @ACCT ='')
187
				BEGIN
188
					ROLLBACK TRANSACTION
189
					CLOSE XmlDataEntries;
190
					DEALLOCATE XmlDataEntries;
191
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản có không được phép để trống' ErrorDesc
192
					RETURN '-1'
193
				END
194
				IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID =''))
195
				BEGIN
196
					ROLLBACK TRANSACTION
197
					CLOSE XmlDataEntries;
198
					DEALLOCATE XmlDataEntries;
199
					SELECT '-1' as Result, '' REQ_PAY_ID, 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
200
					RETURN '-1'
201
				END
202
				IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
203
				BEGIN
204
					ROLLBACK TRANSACTION
205
					CLOSE XmlDataEntries;
206
					DEALLOCATE XmlDataEntries;
207
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
208
					RETURN '-1'
209
				END
210
				-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
211
				IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
212
				BEGIN
213
					ROLLBACK TRANSACTION
214
					CLOSE XmlDataEntries;	
215
					DEALLOCATE XmlDataEntries;
216
					SELECT '-1' as Result, '' REQ_PAY_ID, 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
217
					RETURN '-1'
218
				---
219
				END
220
				--IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND NOT EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID AND BRANCH_ID =@BRANCH_ID))
221
				--BEGIN
222
				--ROLLBACK TRANSACTION
223
				--		--CLOSE XmlDataEntries;	
224
				--		--DEALLOCATE XmlDataEntries;
225
				--		SELECT '-1' as Result, '' REQ_PAY_ID, 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
226
				--		RETURN '-1'
227
				--	---
228
				--END
229
				IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
230
				BEGIN
231
					ROLLBACK TRANSACTION
232
					CLOSE XmlDataEntries;	
233
					DEALLOCATE XmlDataEntries;
234
					SELECT '-1' as Result, '' REQ_PAY_ID, 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
235
					RETURN '-1'
236
					---
237
				END
238
				--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'))
239
				--BEGIN
240
				--	IF(@ACCT ='353200002' OR @ACCT ='353200001')
241
				--	BEGIN
242
				--		SELECT '-1' as Result, '' REQ_PAY_ID, 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
243
				--		RETURN '-1'
244
				--	END
245
				--END select * from TR_REQ_PAY_ENTRIES
246

    
247
				--doanptt 20/04/2022
248
				IF(@ACCT = '353200002')
249
				BEGIN
250
					IF(NOT EXISTS(SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)))
251
					BEGIN
252
						ROLLBACK TRANSACTION
253
						CLOSE XmlDataEntries;	
254
						DEALLOCATE XmlDataEntries;
255
						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
256
						RETURN '-1'
257
					END
258
				END
259

    
260
				IF(@ACCT = '353200002')
261
				BEGIN
262
					IF((SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0))) <> @AMT)
263
					BEGIN
264
						ROLLBACK TRANSACTION
265
						CLOSE XmlDataEntries;	
266
						DEALLOCATE XmlDataEntries;
267
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Số tiền tài khoản nợ 353200002 không bằng tổn số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT'  ErrorDesc
268
						RETURN '-1'
269
					END
270
				END
271
	----------------------------------------------------------------------------------------------------------- BEGIN VALIDATE -------------------------------------------------------------------------------------------------------
272
				DECLARE @p_ET_ID VARCHAR(15);
273
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
274
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
275
				INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT, TRN_TYPE)
276
				VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, 'PAYMENT')
277
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
278
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
279
				BEGIN
280
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
281
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
282
				END
283
				ELSE
284
				BEGIN
285
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
286
						BEGIN
287
							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)
288
							WHERE ACC_NO=@ACCT
289
					END
290
					--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()
291
					--WHERE ACC_NO=@ACCT
292
				END
293
				IF @@error<>0 GOTO ABORT;
294
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
295
		END;
296
			CLOSE XmlDataEntries;
297
			DEALLOCATE XmlDataEntries;
298
		END
299

    
300
	-- UPDATE INVOICE
301
	--Insert XmlDataEntries
302
		-- CAP NHAT TAI KHOAN GL
303
		UPDATE  CM_ACCOUNT
304
		SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001')
305
		WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'') =''
306
		AND SUBSTRING(ACC_NO,4,4) ='7048'
307

    
308
		UPDATE  CM_ACCOUNT
309
		SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002')
310
		WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'') =''
311
		AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19'
312

    
313
		UPDATE  CM_ACCOUNT
314
		SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001')
315
		WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'') =''
316
		AND SUBSTRING(ACC_NO,4,4) ='7041'
317

    
318
		--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,'') ='')
319
		-- CAP NHAT TAI KHOAN GL
320
		FETCH NEXT FROM XmlData  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
321
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
322
		WHILE @@FETCH_STATUS=0 BEGIN
323
			SET @INDEX_IV = @INDEX_IV+1
324
				IF(@TYPE_FUNC ='HC')
325
				BEGIN
326
					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 
327
					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'))))
328
					BEGIN
329
						ROLLBACK TRANSACTION
330
						CLOSE XmlData;
331
						DEALLOCATE XmlData;
332
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
333
						RETURN '-1'
334
					END	
335
				END
336
				IF(@TYPE_FUNC ='KT')
337
				BEGIN
338
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
339
											AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
340
											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'))))
341
					BEGIN
342
						ROLLBACK TRANSACTION
343
						CLOSE XmlData;
344
						DEALLOCATE XmlData;
345
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
346
						RETURN '-1'
347
					END	
348
				END
349
			DECLARE @p_REQ_INV_ID VARCHAR(15);
350
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
351
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
352
			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,
353
		MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
354
		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) 
355
		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,
356
		@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC)
357
		IF @@error<>0 GOTO ABORT;
358
		FETCH NEXT FROM XmlData 
359
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
360
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
361
		END;
362
		CLOSE XmlData;
363
		DEALLOCATE XmlData;
364

    
365
		IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL)
366
		BEGIN
367
			-- hoa don co VAT
368
			DECLARE XmlVATInvoice CURSOR FOR
369
			SELECT *
370
			FROM
371
			OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
372
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
373
				 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
374
				 PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
375
			OPEN XmlVATInvoice
376

    
377
			-- CAP NHAT HOA DON CO VAT
378
			FETCH NEXT FROM XmlVATInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
379
			@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
380
			WHILE @@fetch_status=0 BEGIN
381
				SET @INDEX_VAT = @INDEX_VAT+1
382
				IF(@TYPE_FUNC ='HC')
383
				BEGIN
384
					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 
385
					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'))))
386
					BEGIN
387
						ROLLBACK TRANSACTION
388
						CLOSE XmlVATInvoice;
389
						DEALLOCATE XmlVATInvoice;
390
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
391
						RETURN '-1'
392
					END	
393
				END
394
				IF(@TYPE_FUNC ='KT')
395
				BEGIN
396
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
397
											AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
398
											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'))))
399
					BEGIN
400
						ROLLBACK TRANSACTION
401
						CLOSE XmlVATInvoice;
402
						DEALLOCATE XmlVATInvoice;
403
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
404
						RETURN '-1'
405
					END	
406
				END
407
				--doanptt 20/04/2022
408
				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'))
409
				BEGIN
410
					ROLLBACK TRANSACTION
411
					CLOSE XmlVATInvoice;	
412
					DEALLOCATE XmlVATInvoice;
413
					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
414
					RETURN '-1'
415
				END
416
					
417
				DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
418
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
419
				IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
420
				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,
421
						MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
422
						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) 
423
				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 ,@TAX,@VAT,@NOTES,
424
						@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,'KT')
425
			IF @@error<>0 GOTO ABORT;
426

    
427
			FETCH NEXT FROM XmlVATInvoice 
428
			INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
429
			@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
430
			END;
431
			CLOSE XmlVATInvoice;
432
			DEALLOCATE XmlVATInvoice;
433
		END
434

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

    
439
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
440
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
441
-- INSERT đơn vị chuyển
442
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
443
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
444
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
445
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
446
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
447
				OPEN XmlDataOutsideTrans
448

    
449

    
450
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
451
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
452
				WHILE @@fetch_status=0 
453
				BEGIN
454
					
455
					--IF(@p_REQ_PAY_ID <> NULL)
456
					--BEGIN
457
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
458
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
459
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
460
						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 , 
461
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID, CURRENCY)
462
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
463
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID, @CURRENCY)
464
					--END
465

    
466
					IF @@error<>0 GOTO ABORT;
467
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
468
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
469
				END;
470
				CLOSE XmlDataOutsideTrans;
471
				DEALLOCATE XmlDataOutsideTrans;
472
--- END INSERT đơn vị chuyển
473

    
474
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận
475
-- START INSERT đơn vị nhận
476
	DECLARE @hdocOutsideRec INT
477
	EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC;
478

    
479
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(15), @OBJECT_RECEIVE_ID VARCHAR(15), 
480
				@BRANCH_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_NAME NVARCHAR(MAX), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(MAX)
481
-- INSERT đơn vị nhận
482
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
483

    
484
				DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
485
				SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
486
				WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(15), OBJECT_RECEIVE_ID VARCHAR(15), 
487
				BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME VARCHAR(15), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(MAX)) 
488
				OPEN XmlDataOutsideRec
489

    
490
				FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
491
				@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC
492
				WHILE @@fetch_status=0 
493
				BEGIN
494

    
495
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
496
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
497
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
498
					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,
499
					CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC)
500
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
501
					@CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC)
502
					IF @@error<>0 GOTO ABORT;
503
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
504
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC
505
				END;
506
				CLOSE XmlDataOutsideRec;
507
				DEALLOCATE XmlDataOutsideRec;
508
--- END INSERT đơn vị nhận		
509

    
510
		--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
511
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
512
		-----
513
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
514

    
515
	COMMIT TRANSACTION
516
	IF(@p_IS_SEND_APPR = 'Y')
517
			BEGIN
518
				---BAT DAU VALIDATE
519
				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
520
				DECLARE cursorProduct CURSOR LOCAL FOR
521
				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
522
				Open cursorProduct
523
				FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
524
				WHILE @@FETCH_STATUS = 0
525
				BEGIN
526
				  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))
527
				  BEGIN
528
					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)
529
					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))
530
					BEGIN
531
						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
532
						RETURN '-1'
533
					END
534
				  END
535
				  -- KIEM TRA SO TIEN NO CO
536
					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)
537
						<> 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)
538
						)
539
					BEGIN
540
						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
541
						RETURN '-1'
542
					END
543
				FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
544
				END
545
				-- KET THUC VIEC VALIDATE
546
				IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
547
				BEGIN
548
					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
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 thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
554
					RETURN '-1'
555
				END
556
				-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
557
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
558
				BEGIN
559
					DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
560
					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)
561
					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)
562
					IF(@SUM_CR <> @SUM_DR)
563
					BEGIN
564
					--ROLLBACK TRANSACTION
565
					--CLOSE XmlDataEntries;
566
					--DEALLOCATE XmlDataEntries;
567
						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
568
						RETURN '-1'
569
					END
570
				END
571
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
572
				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)
573
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
574
				UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
575
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
576
				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')
577
				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
578
				RETURN '4'
579
END
580
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
581
RETURN '0'
582
ABORT:
583
BEGIN
584
		ROLLBACK TRANSACTION
585
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
586
		RETURN '-1'
587
End