Project

General

Profile

KT_UPD.txt

Luc Tran Van, 02/27/2023 04:47 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_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_RECEIVER_DEBIT	nvarchar(250)	= NULL,
15
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
16
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= 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_NOTES	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_DVDM_ID VARCHAR(15) = NULL,
40
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
41
@p_RATE DECIMAL(18,0)= 0,
42
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
43
--doanptt 17/02/2022
44
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL,
45
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL
46
AS
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ị tạm ứng này. Phiếu đề nghị tạm ứng đ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_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
54
	BEGIN
55
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đ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 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
59
	BEGIN
60
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
61
		RETURN '-1'
62
	END
63
	IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
64
	BEGIN
65
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt kế toán thành công trước đó!' ErrorDesc
66
		RETURN '-1'
67
	END
68
	IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
69
	BEGIN
70
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
71
		RETURN '-1'
72
	END
73
	IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
74
	BEGIN
75
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
76
		RETURN '-1'
77
	END
78
-- END VALIDATE UPDATE
79
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),
80
	@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000),@GL_CODE VARCHAR(100),@GL_CODE_ACCNO VARCHAR(20),@BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
81
	DECLARE @INDEX_REC INT = 0
82
BEGIN TRANSACTION
83
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
84
		IF(ISNULL(@p_MAKER_ID_KT, '') = '')
85
		BEGIN
86
			SET @p_MAKER_ID_KT = (SELECT TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TYPE_JOB = 'XL')
87
		END
88
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
89
		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 TYPE_JOB ='XL')
90
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
91
		----
92
		--IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
93
-- INSERT HACH TOAN
94
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
95
		BEGIN
96
			-- khai báo cursor
97
			DECLARE @hdocEntries INT;
98
			EXEC sp_xml_preparedocument @hdocEntries OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
99
			DECLARE XmlDataEntries CURSOR FOR
100
			SELECT * FROM OPENXML(@hdocEntries, '/Root/XmlDataEntries', 2)
101
					 WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), 
102
					 EXC_RATE DECIMAL(18,0), BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000), GL_CODE VARCHAR(100),GL_CODE_ACCNO VARCHAR(20))
103
			
104
			OPEN XmlDataEntries;
105
			DECLARE @INDEX INT = 0
106
			UPDATE TR_REQ_ADVANCE_PAYMENT 
107
			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_NOTES=@p_CONFIRM_NOTES
108
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
109
			-- DOANPTT 291222: THEM LOG KPI
110
			UPDATE TR_REQ_KPI 
111
			SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTES, REQ_REASON = @p_REQ_REASON
112
			WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
113
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
114
			IF @@Error <> 0 GOTO ABORT
115
			DECLARE @DR_CR_NAME NVARCHAR(50)
116
			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
117
			WHILE @@fetch_status=0 BEGIN
118
				IF(@EXC_RATE IS NULL)
119
				BEGIN
120
					SET @EXC_RATE = 1
121
				END
122
				SET @INDEX = @INDEX +1
123
				-- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA
124
				IF(ISNULL(@GL_CODE, '') <> '')
125
				BEGIN
126
					SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
127
				END
128
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
129
				BEGIN
130
					SET @GL_CODE = RIGHT(@GL_CODE,9) 
131
				END-- LUCTV BO SUNG 20211117
132
				SET @ACCT_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
133
				-- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA
134
				SET @GL_CODE = RIGHT(@GL_CODE,9)
135
				IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '')
136
				BEGIN
137
					SET @ACCT = @GL_CODE_ACCNO
138
				END
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
				IF(@p_TYPE_FUNCTION ='SEND')
150
				BEGIN
151
					IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
152
					BEGIN
153
						ROLLBACK TRANSACTION
154
						CLOSE XmlDataEntries;
155
						DEALLOCATE XmlDataEntries;
156
						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
157
						RETURN '-1'
158
					END
159
					IF(@DR_CR IS NULL OR @DR_CR ='')
160
					BEGIN
161
						ROLLBACK TRANSACTION
162
						CLOSE XmlDataEntries;
163
						DEALLOCATE XmlDataEntries;
164
						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
165
						RETURN '-1'
166
					END
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
					IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
176
					BEGIN
177
						ROLLBACK TRANSACTION
178
						CLOSE XmlDataEntries;
179
						DEALLOCATE XmlDataEntries;
180
						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
181
						RETURN '-1'
182
					END
183
					IF(@AMT IS NULL OR @AMT < 0)
184
					BEGIN
185
							ROLLBACK TRANSACTION
186
							CLOSE XmlDataEntries;	
187
							DEALLOCATE XmlDataEntries;
188
							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
189
							RETURN '-1'
190
					END
191
					IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
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' Đơn vị nhận không được phép để trống' ErrorDesc
197
						RETURN '-1'
198
					END
199
					IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
200
					BEGIN
201
						ROLLBACK TRANSACTION
202
						CLOSE XmlDataEntries;
203
						DEALLOCATE XmlDataEntries;
204
						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
205
						RETURN '-1'
206
					END
207
					IF(@GL_CODE IS NULL OR @GL_CODE ='')
208
					BEGIN
209
						IF (LEN(@ACCT) >9 AND ((SELECT TOP 1 ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT TOP 1 ISNULL(TK_GL_NAME,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) =''))
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' 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
215
							RETURN '-1'
216
						END
217
					END
218
					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)
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' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
224
						RETURN '-1'
225
					END
226
					IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
227
					BEGIN
228
							ROLLBACK TRANSACTION
229
							CLOSE XmlDataEntries;	
230
							DEALLOCATE XmlDataEntries;
231
							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
232
							RETURN '-1'
233
					END
234
					-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
235
					PRINT @BRANCH_ID
236
					IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT TOP 1 ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
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'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
242
							RETURN '-1'
243
					END
244
					
245
					/*
246
					-- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ
247
					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 
248
							(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)
249
					BEGIN
250
						ROLLBACK TRANSACTION
251
						CLOSE XmlDataEntries;	
252
						DEALLOCATE XmlDataEntries;
253
						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
254
						RETURN '-1'
255
					END
256
					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 
257
							(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)
258
					BEGIN
259
						ROLLBACK TRANSACTION
260
						CLOSE XmlDataEntries;	
261
						DEALLOCATE XmlDataEntries;
262
						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
263
						RETURN '-1'
264
					END
265
					*/
266
				END
267
				
268
				/*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))
269
					BEGIN
270
					ROLLBACK TRANSACTION
271
						CLOSE XmlDataEntries;	
272
						DEALLOCATE XmlDataEntries;
273
						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
274
						RETURN '-1'
275
				END*/
276
				
277
				DECLARE @p_ET_ID VARCHAR(15);
278
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
279
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
280
				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)
281
				VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,'VND', 1, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, 'ADVANCE')
282
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
283
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
284
				BEGIN
285
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
286
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
287
				END
288
				ELSE
289
				BEGIN
290
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0')
291
						BEGIN
292
							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()
293
							WHERE ACC_NO=@ACCT
294
					END
295
				END
296
				
297
			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
298
			END;
299
		CLOSE XmlDataEntries;
300
		DEALLOCATE XmlDataEntries;
301
		-- UPDATE GL THEO RULE
302
		----UPDATE  CM_ACCOUNT
303
		----SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001')
304
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
305
		----AND SUBSTRING(ACC_NO,4,4) ='7048'
306
		----UPDATE  CM_ACCOUNT
307
		----SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002')
308
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
309
		----AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19'
310
		----UPDATE  CM_ACCOUNT
311
		----SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001')
312
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
313
		----AND SUBSTRING(ACC_NO,4,4) ='7041'
314
		--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
315
		IF @@error<>0 GOTO ABORT;
316
	END
317
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị chuyển
318
	DECLARE @hdocOutsideTrans INT
319
	EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS;
320
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
321
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
322
-- INSERT đơn vị chuyển
323
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
324
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
325
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
326
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
327
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
328
				OPEN XmlDataOutsideTrans
329
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
330
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
331
				WHILE @@fetch_status=0 
332
				BEGIN
333
					
334
					--IF(@p_REQ_PAY_ID <> NULL)
335
					--BEGIN
336
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
337
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
338
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
339
						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 , 
340
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID, CURRENCY)
341
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
342
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID, @CURRENCY)
343
					--END
344
					IF @@error<>0 GOTO ABORT;
345
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
346
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
347
				END;
348
				CLOSE XmlDataOutsideTrans;
349
				DEALLOCATE XmlDataOutsideTrans;
350
--- END INSERT đơn vị chuyển
351
-- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận
352
-- START INSERT đơn vị nhận
353
	DECLARE @hdocOutsideRec INT
354
	EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC;
355
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(20), @CITAD1_ID VARCHAR(20), @BANK_RECEIVE_ID VARCHAR(255), @OBJECT_RECEIVE_ID VARCHAR(20), @REF_NO VARCHAR(50),
356
				@BRANCH_RECEIVE_ID VARCHAR(255), @BRANCH_RECEIVE_NAME NVARCHAR(MAX), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX)
357
-- INSERT đơn vị nhận
358
	DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
359
	DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
360
	SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
361
	WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(255), OBJECT_RECEIVE_ID VARCHAR(15), 
362
	BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME VARCHAR(MAX), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(120), SUB_BANK_RECEIVE_NAME nvarchar(MAX),  
363
				ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
364
	OPEN XmlDataOutsideRec
365
	FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
366
	@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
367
	WHILE @@fetch_status=0 
368
	BEGIN
369
		SET @INDEX_REC = @INDEX_REC+1
370
		IF(@p_TYPE_FUNCTION ='SEND')
371
			BEGIN
372
				IF(ISNULL(@ACC_NO_RECEIVE, '') = '')
373
				BEGIN
374
					ROLLBACK TRANSACTION
375
					CLOSE XmlDataOutsideRec;
376
					DEALLOCATE XmlDataOutsideRec;
377
					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
378
					RETURN '-1'
379
				END
380
				IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
381
				BEGIN
382
					ROLLBACK TRANSACTION
383
					CLOSE XmlDataOutsideRec;
384
					DEALLOCATE XmlDataOutsideRec;
385
					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
386
					RETURN '-1'
387
				END
388
				IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '')
389
				BEGIN
390
					ROLLBACK TRANSACTION
391
					CLOSE XmlDataOutsideRec;
392
					DEALLOCATE XmlDataOutsideRec;
393
					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
394
					RETURN '-1'
395
				END
396
				IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
397
				BEGIN
398
					ROLLBACK TRANSACTION
399
					CLOSE XmlDataOutsideRec;
400
					DEALLOCATE XmlDataOutsideRec;
401
					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
402
					RETURN '-1'
403
				END
404
				IF(ISNULL(@CITAD1_ID, '') = '')
405
				BEGIN
406
					ROLLBACK TRANSACTION
407
					CLOSE XmlDataOutsideRec;
408
					DEALLOCATE XmlDataOutsideRec;
409
					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
410
					RETURN '-1'
411
				END
412
				IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '')
413
				BEGIN
414
					ROLLBACK TRANSACTION
415
					CLOSE XmlDataOutsideRec;
416
					DEALLOCATE XmlDataOutsideRec;
417
					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
418
					RETURN '-1'
419
				END
420
			END
421
		DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
422
		EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
423
		IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
424
		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,
425
		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)
426
		VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
427
		@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)
428
		IF @@error<>0 GOTO ABORT;
429
		FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
430
		@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
431
	END;
432
	CLOSE XmlDataOutsideRec;
433
	DEALLOCATE XmlDataOutsideRec;
434
--- END INSERT đơn vị nhận
435
COMMIT TRANSACTION
436
-- BEGIN VALIDATE SEND APPROVE
437
	IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
438
	BEGIN
439
		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'))
440
		BEGIN
441
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép gửi phê duyệt phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc
442
			RETURN '-1'
443
		END
444
		IF ((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
445
		BEGIN
446
			SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đ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
447
			RETURN '-1'
448
		END
449
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
450
		BEGIN
451
			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
452
			RETURN '-1'
453
		END
454
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
455
		BEGIN
456
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt kế toán thành công trước đó!' ErrorDesc
457
			RETURN '-1'
458
		END
459
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
460
		BEGIN
461
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
462
			RETURN '-1'
463
		END
464
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
465
		BEGIN
466
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
467
			RETURN '-1'
468
		END
469
	-- BEGIN VALIDATE LUOI HACH TOAN
470
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
471
		BEGIN
472
			-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
473
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
474
			BEGIN
475
				DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
476
				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)
477
				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)
478
				IF(@SUM_CR<>@SUM_DR)
479
				BEGIN
480
					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
481
					RETURN '-1'
482
				END
483
			END
484
				
485
			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
486
			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
487
			Open cursorProduct
488
			FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
489
			WHILE @@FETCH_STATUS = 0
490
			BEGIN
491
				--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Ợ
492
				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 
493
						(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)
494
				BEGIN
495
					CLOSE cursorProduct;	
496
					DEALLOCATE cursorProduct;
497
					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
498
					RETURN '-1'
499
				END
500
				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))
501
				BEGIN
502
					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)
503
					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))
504
					BEGIN
505
						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
506
						RETURN '-1'
507
					END
508
				END
509
				-- KIEM TRA SO TIEN NO CO
510
				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))
511
				BEGIN
512
					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
513
					RETURN '-1'
514
				END
515
				FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
516
			END -- END WHILE		
517
		END 
518
	-- END VALIDATE LUOI HACH TOAN
519
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
520
		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)
521
		-- CAP NHAT TINH TRANG VE DANG XU LY
522
		UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT =GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
523
		-- DOANPTT 291222: THEM LOG KPI
524
		UPDATE TR_REQ_KPI 
525
		SET AUTH_STATUS_KT ='P', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTES, REQ_REASON = @p_REQ_REASON
526
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
527
		
528
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
529
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt phiếu',N'Giao dịch viên cập nhật thông tin')
530
		
531
		SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_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
532
		RETURN '4'
533
	END -- END TYPE_FUNCTION
534
-- END VALIDATE SEND APPROVE
535
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
536
RETURN '0'
537
ABORT:
538
BEGIN
539
		ROLLBACK TRANSACTION
540
		CLOSE XmlDataEntries;
541
		DEALLOCATE XmlDataEntries;
542
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
543
		RETURN '-1'
544
End
545

    
546
GO
547

    
548

    
549
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Upd]
550
@p_REQ_PAY_ID	varchar(15)= NULL,
551
@p_REQ_PAY_CODE	varchar(50)	= NULL,
552
@p_REQ_DT VARCHAR(20)= NULL,
553
@p_BRANCH_ID	varchar(15)	= NULL,
554
@p_DEP_ID	varchar(15)	= NULL,
555
@p_REQ_REASON	nvarchar(MAX)	= NULL,
556
@p_REQ_TYPE	varchar(15)	= NULL,
557
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
558
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
559
@p_REF_ID	varchar(15)	= NULL,
560
@p_RECEIVER_PO	nvarchar(250)	= NULL,
561
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
562
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
563
@p_RATE	DECIMAL(18,2) = NULL,
564
@p_REQ_AMT	decimal(18, 0)	= NULL,
565
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
566
@p_MAKER_ID	varchar(15)	= NULL,
567
@p_CREATE_DT	varchar(25)	= NULL,
568
@p_EDITOR_ID	varchar(15)	= NULL,
569
@p_AUTH_STATUS	varchar(1)	= NULL,
570
@p_CHECKER_ID	varchar(15)	= NULL,
571
@p_APPROVE_DT	varchar(25)	= NULL,
572
@p_CREATE_DT_KT	varchar(25)	= NULL,
573
@p_MAKER_ID_KT	varchar(15)	= NULL,
574
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
575
@p_CHECKER_ID_KT	varchar(1)	= NULL,
576
@p_APPROVE_DT_KT  varchar(25)= null,
577
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
578
@p_BRANCH_CREATE	varchar(15)	= NULL,
579
@p_NOTES	varchar(15)	= NULL,
580
@p_RECORD_STATUS	varchar(1)	= NULL,
581
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
582
@p_TRANSFER_DT	varchar(25)	= NULL,
583
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
584
@p_PROCESS	varchar(15)	= NULL,
585
@p_PAY_PHASE VARCHAR(15) = NULL,
586
@p_IS_SEND_APPR VARCHAR(15) = NULL,
587
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
588
@p_XMP_TEMP_INVOICE XML = NULL,
589
@p_XMP_TEMP_VAT_INVOICE XML = NULL,
590
--doanptt 14/03/2022
591
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL,
592
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL
593
AS
594

    
595
-- BEGIN VALIDATE UPDATE
596
	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'))
597
	BEGIN
598
		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
599
		RETURN '-1'
600
	END
601
	IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
602
	BEGIN
603
		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
604
		RETURN '-1'
605
	END
606
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
607
	BEGIN
608
		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
609
		RETURN '-1'
610
	END
611
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
612
	BEGIN
613
		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
614
		RETURN '-1'
615
	END
616
	IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
617
	BEGIN
618
		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
619
		RETURN '-1'
620
	END
621
-- END VALIDATE UPDATE
622

    
623
	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),
624
		@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)
625
	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,
626
		@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
627
		@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
628
		@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,
629
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15)
630
	DECLARE @hdoc INT;
631
	DECLARE @hdocInvoice INT;
632
	DECLARE @hdocVATInvoice INT;
633
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
634
	EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
635
	EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE;
636
	
637
	--hoa don khong co VAT
638
	DECLARE XmlData CURSOR FOR
639
	SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
640
			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),
641
			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),
642
			VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
643

    
644
	OPEN XmlData
645
	DECLARE @INDEX INT  =0, @INDEX_IV INT =0, @INDEX_VAT INT =0, @INDEX_REC INT = 0;
646

    
647
	BEGIN TRANSACTION
648
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
649
		IF(ISNULL(@p_MAKER_ID_KT, '') = '')
650
		BEGIN
651
			SET @p_MAKER_ID_KT = (SELECT TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TYPE_JOB = 'XL')
652
		END
653
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
654
		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')
655
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
656

    
657
		UPDATE TR_REQ_PAYMENT 
658
		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
659
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
660
		-- DOANPTT 291222: THEM LOG KPI
661
		UPDATE TR_REQ_KPI 
662
		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
663
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
664

    
665
------------------------------------------------------------------------- BEGIN LUOI HACH TOAN -----------------------------------------------------------------------
666
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
667
		BEGIN
668
			-- hach toan
669
			DECLARE XmlDataEntries CURSOR FOR
670
			SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
671
					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),
672
					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))
673
			OPEN XmlDataEntries;
674

    
675
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
676
			IF @@Error <> 0 GOTO ABORT
677
			DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
678
			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
679
			WHILE @@fetch_status=0 
680
			BEGIN
681

    
682
				IF(@EXC_RATE IS NULL)
683
				BEGIN
684
					SET @EXC_RATE = 1
685
				END
686

    
687
				SET @INDEX = @INDEX +1
688
				SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
689

    
690
				-- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA
691
				IF(ISNULL(@GL_CODE, '') <> '')
692
				BEGIN
693
					SET @ACC_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
694
					SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
695
				END
696
				-- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA
697
				SET @GL_CODE = RIGHT(@GL_CODE,9)
698
				IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '')
699
				BEGIN
700
					SET @ACCT = @GL_CODE_ACCNO
701
				END
702

    
703
				IF(@DR_CR='D')
704
				BEGIN
705
					SET @DR_CR_NAME =N'Nợ'
706
				END
707
				ELSE
708
				BEGIN
709
					SET @DR_CR_NAME =N'Có'
710
				END
711

    
712
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
713
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
714
	
715
				IF(@p_IS_SEND_APPR = 'Y')
716
				BEGIN
717
				
718
				print '@ENTRY_PAIR: ' + @ENTRY_PAIR
719
				print 'req_pay_id: ' + @p_REQ_PAY_ID
720
					IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
721
					BEGIN
722
						ROLLBACK TRANSACTION
723
						CLOSE XmlDataEntries;
724
						DEALLOCATE XmlDataEntries;
725
						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
726
						RETURN '-1'
727
					END
728

    
729
					IF(@DR_CR IS NULL OR @DR_CR ='')
730
					BEGIN
731
						ROLLBACK TRANSACTION
732
						CLOSE XmlDataEntries;
733
						DEALLOCATE XmlDataEntries;
734
						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
735
						RETURN '-1'
736
					END
737

    
738
					IF(@ACCT IS NULL OR @ACCT ='')
739
					BEGIN
740
						ROLLBACK TRANSACTION
741
						CLOSE XmlDataEntries;
742
						DEALLOCATE XmlDataEntries;
743
						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
744
						RETURN '-1'
745
					END
746

    
747
					IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
748
					BEGIN
749
						ROLLBACK TRANSACTION
750
						CLOSE XmlDataEntries;
751
						DEALLOCATE XmlDataEntries;
752
						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
753
						RETURN '-1'
754
					END
755

    
756
					IF(@AMT IS NULL OR @AMT < 0)
757
					BEGIN
758
					ROLLBACK TRANSACTION
759
							CLOSE XmlDataEntries;	
760
							DEALLOCATE XmlDataEntries;
761
							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
762
							RETURN '-1'
763
					END
764

    
765
					IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
766
					BEGIN
767
						ROLLBACK TRANSACTION
768
						CLOSE XmlDataEntries;
769
						DEALLOCATE XmlDataEntries;
770
						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
771
						RETURN '-1'
772
					END
773

    
774
					IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
775
					BEGIN
776
						ROLLBACK TRANSACTION
777
						CLOSE XmlDataEntries;
778
						DEALLOCATE XmlDataEntries;
779
						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
780
						RETURN '-1'
781
					END
782

    
783
					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)
784
					BEGIN
785
						ROLLBACK TRANSACTION
786
						CLOSE XmlDataEntries;
787
						DEALLOCATE XmlDataEntries;
788
						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
789
						RETURN '-1'
790
					END
791

    
792
					IF(@GL_CODE IS NULL OR @GL_CODE ='')
793
					BEGIN
794
						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) =''))
795
						BEGIN
796
							ROLLBACK TRANSACTION
797
							CLOSE XmlDataEntries;
798
							DEALLOCATE XmlDataEntries;
799
							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
800
							RETURN '-1'
801
						END
802
					END
803

    
804
					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)
805
					BEGIN
806
						ROLLBACK TRANSACTION
807
						CLOSE XmlDataEntries;
808
						DEALLOCATE XmlDataEntries;
809
						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
810
						RETURN '-1'
811
					END
812

    
813
					IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
814
					BEGIN
815
					ROLLBACK TRANSACTION
816
							CLOSE XmlDataEntries;	
817
							DEALLOCATE XmlDataEntries;
818
							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
819
							RETURN '-1'
820
					END
821

    
822
					-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
823
					IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
824
					BEGIN
825
						ROLLBACK TRANSACTION
826
						CLOSE XmlDataEntries;	
827
						DEALLOCATE XmlDataEntries;
828
						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
829
						RETURN '-1'
830
					END
831

    
832
					--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'))
833
					--BEGIN
834
					--	IF(@ACCT ='353200002' OR @ACCT ='353200001')
835
					--	BEGIN
836
					--		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
837
					--		RETURN '-1'
838
					--	END
839
					--END select * from TR_REQ_PAY_ENTRIES
840

    
841
					--doanptt 20/04/2022
842
					IF(@ACCT = '353200002')
843
					BEGIN
844
						IF(NOT EXISTS(SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)))
845
						BEGIN
846
							ROLLBACK TRANSACTION
847
							CLOSE XmlDataEntries;	
848
							DEALLOCATE XmlDataEntries;
849
							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
850
							RETURN '-1'
851
						END
852
					END
853
					
854
					/*
855
					-- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ
856
					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 
857
							(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)
858
					BEGIN
859
						ROLLBACK TRANSACTION
860
						CLOSE XmlDataEntries;	
861
						DEALLOCATE XmlDataEntries;
862
						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
863
						RETURN '-1'
864
					END
865

    
866
					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 
867
							(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)
868
					BEGIN
869
						ROLLBACK TRANSACTION
870
						CLOSE XmlDataEntries;	
871
						DEALLOCATE XmlDataEntries;
872
						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
873
						RETURN '-1'
874
					END
875
					*/
876
					
877

    
878
					
879
				END -- END IF VALIDATE
880
				/*
881
				IF(@ACCT = '353200002')
882
					BEGIN
883
						DECLARE @SUMVAT DECIMAL(18,0) = 0
884
						DECLARE @SUM3532 DECIMAL(18,0) = 0
885
						DECLARE @tmp3532 TABLE(
886
						AMT DECIMAL(18,0),
887
						ACCT VARCHAR(20)
888
						)
889
						INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
890
						SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
891
						SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
892
						
893
						IF(@SUM3532 <> @SUMVAT)
894
						BEGIN
895
							ROLLBACK TRANSACTION
896
							CLOSE XmlDataEntries;	
897
							DEALLOCATE XmlDataEntries;
898
							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
899
							RETURN '-1'
900
						END
901
					END
902
					*/
903
	
904
				DECLARE @p_ET_ID VARCHAR(15);
905
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
906
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
907

    
908
				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)
909
				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)
910

    
911
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
912
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
913
				BEGIN
914
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
915
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
916
				END
917
				ELSE
918
				BEGIN
919
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0')
920
						BEGIN
921
							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()
922
							WHERE ACC_NO=@ACCT
923
					END
924
					--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()
925
					--WHERE ACC_NO=@ACCT
926
				END
927
				IF @@error<>0 GOTO ABORT;
928
				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
929
			END;--END WHILE
930
			CLOSE XmlDataEntries;
931
			DEALLOCATE XmlDataEntries;
932
		END--END LUOI HACH TOAN
933
------------------------------------------------------------------------------------------ END LUOI HACH TOAN --------------------------------------------------------------------
934

    
935
--INSERT XMLDATAENTRIES
936
		-- CAP NHAT TAI KHOAN GL
937

    
938
		--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,'') ='')
939
		-- CAP NHAT TAI KHOAN GL
940

    
941
-- INSERT LUOI HOA DON KHONG VAT
942
	
943
		DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000)
944
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
945
		FETCH NEXT FROM XmlData  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
946
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
947
		WHILE @@FETCH_STATUS=0 BEGIN
948
			SET @INDEX_IV = @INDEX_IV+1
949
				IF(@TYPE_FUNC ='HC')
950
				BEGIN
951
					SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
952
					(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 
953
					AND AUTH_STATUS <>'D' AND TYPE_FUNC ='HC'
954
					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')))
955
					FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
956
					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 
957
					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'))))
958

    
959
					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 
960
					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'))))
961
					BEGIN
962
						ROLLBACK TRANSACTION
963
						CLOSE XmlData;
964
						DEALLOCATE XmlData;
965
						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
966
						RETURN '-1'
967
					END	
968
				END
969
			DECLARE @p_REQ_INV_ID VARCHAR(15);
970
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
971
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
972

    
973
		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,
974
		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) 
975
		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,
976
		@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')
977
		
978
		IF @@error<>0 GOTO ABORT;
979
		FETCH NEXT FROM XmlData 
980
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
981
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
982
		END;
983
		CLOSE XmlData;
984
		DEALLOCATE XmlData;
985

    
986
-- BEGIN HOA DON CO VAT
987
		IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL)
988
		BEGIN
989
			-- hoa don co VAT
990
			DECLARE XmlVATInvoice CURSOR FOR
991
			SELECT *
992
			FROM
993
			OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
994
			WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
995
				 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
996
				 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))
997
			OPEN XmlVATInvoice
998

    
999
			-- CAP NHAT HOA DON CO VAT
1000
			FETCH NEXT FROM XmlVATInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
1001
			@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
1002
			WHILE @@fetch_status=0 BEGIN
1003
				SET @INDEX_VAT = @INDEX_VAT+1
1004

    
1005
				SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
1006
				(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 
1007
				AND AUTH_STATUS <>'D' AND TYPE_FUNC ='KT'
1008
				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')))
1009
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
1010
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
1011
										AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
1012
										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'))))
1013

    
1014
				--IF(@TYPE_FUNC ='KT')
1015
				--BEGIN
1016
					IF(EXISTS(SELECT REQ_PAYDT_ID FROM TR_REQ_PAY_INVOICE 
1017
									   WHERE INVOICE_NO =@INVOICE_NO 
1018
											AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
1019
											AND INVOICE_SIGN =@INVOICE_SIGN 
1020
											AND TAX_NO =@TAX_NO 
1021
											AND TAX =@TAX 
1022
											AND TYPE_FUNC = 'KT' 
1023
											AND AUTH_STATUS <>'D' 
1024
											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'))
1025
							  )
1026
					   )
1027
					BEGIN
1028
						ROLLBACK TRANSACTION
1029
						CLOSE XmlVATInvoice;
1030
						DEALLOCATE XmlVATInvoice;
1031
						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
1032
						RETURN '-1'
1033
					END	
1034
				--END
1035
				--doanptt 20/04/2022
1036
				/*
1037
				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'))
1038
				BEGIN
1039
					ROLLBACK TRANSACTION
1040
					CLOSE XmlVATInvoice;	
1041
					DEALLOCATE XmlVATInvoice;
1042
					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
1043
					RETURN '-1'
1044
				END
1045
				*/
1046
					
1047
				DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
1048
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
1049
				IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
1050
				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,
1051
				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,
1052
				TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
1053
				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 ,
1054
				@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,
1055
				@TYPE_VAT,'KT')
1056
			IF @@error<>0 GOTO ABORT;
1057

    
1058
			FETCH NEXT FROM XmlVATInvoice 
1059
			INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
1060
			@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
1061
			END;
1062
			CLOSE XmlVATInvoice;
1063
			DEALLOCATE XmlVATInvoice;
1064
		END
1065
-- END HOA DON CO VAT
1066

    
1067

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

    
1072
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
1073
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
1074
-- BEGIN INSERT đơn vị chuyển
1075
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1076
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
1077
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
1078
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
1079
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
1080
				OPEN XmlDataOutsideTrans
1081

    
1082

    
1083
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
1084
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
1085
				WHILE @@fetch_status=0 
1086
				BEGIN
1087
					--IF(@p_REQ_PAY_ID <> NULL)
1088
					--BEGIN
1089
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
1090
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
1091
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
1092
						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 , 
1093
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID)
1094
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
1095
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID)
1096
					--END
1097

    
1098
					IF @@error<>0 GOTO ABORT;
1099
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
1100
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
1101
				END;
1102
				CLOSE XmlDataOutsideTrans;
1103
				DEALLOCATE XmlDataOutsideTrans;
1104
--- END INSERT đơn vị chuyển
1105

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

    
1111
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
1112
				@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)
1113
-- INSERT đơn vị nhận
1114
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1115

    
1116
				DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
1117
				SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
1118
				WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(250), OBJECT_RECEIVE_ID VARCHAR(15), 
1119
				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),  
1120
				ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
1121
				OPEN XmlDataOutsideRec
1122

    
1123
				FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
1124
				@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
1125
				WHILE @@fetch_status=0 
1126
				BEGIN
1127
					SET @INDEX_REC = @INDEX_REC+1
1128

    
1129
					IF(@p_IS_SEND_APPR = 'Y')
1130
					BEGIN
1131
						IF(ISNULL(@ACC_NO_RECEIVE, '') = '')
1132
						BEGIN
1133
							ROLLBACK TRANSACTION
1134
							CLOSE XmlDataOutsideRec;
1135
							DEALLOCATE XmlDataOutsideRec;
1136
							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
1137
							RETURN '-1'
1138
						END
1139
						IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
1140
						BEGIN
1141
							ROLLBACK TRANSACTION
1142
							CLOSE XmlDataOutsideRec;
1143
							DEALLOCATE XmlDataOutsideRec;
1144
							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
1145
							RETURN '-1'
1146
						END
1147
						IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '')
1148
						BEGIN
1149
							ROLLBACK TRANSACTION
1150
							CLOSE XmlDataOutsideRec;
1151
							DEALLOCATE XmlDataOutsideRec;
1152
							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
1153
							RETURN '-1'
1154
						END
1155
						IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
1156
						BEGIN
1157
							ROLLBACK TRANSACTION
1158
							CLOSE XmlDataOutsideRec;
1159
							DEALLOCATE XmlDataOutsideRec;
1160
							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
1161
							RETURN '-1'
1162
						END
1163
						IF(ISNULL(@CITAD1_ID, '') = '')
1164
						BEGIN
1165
							ROLLBACK TRANSACTION
1166
							CLOSE XmlDataOutsideRec;
1167
							DEALLOCATE XmlDataOutsideRec;
1168
							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
1169
							RETURN '-1'
1170
						END
1171
						IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '')
1172
						BEGIN
1173
							ROLLBACK TRANSACTION
1174
							CLOSE XmlDataOutsideRec;
1175
							DEALLOCATE XmlDataOutsideRec;
1176
							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
1177
							RETURN '-1'
1178
						END
1179
					END
1180

    
1181
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
1182
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
1183
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
1184

    
1185
					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,
1186
					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)
1187
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
1188
					@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)
1189
					IF @@error<>0 GOTO ABORT;
1190
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
1191
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
1192
				END;
1193
				CLOSE XmlDataOutsideRec;
1194
				DEALLOCATE XmlDataOutsideRec;
1195
--- END INSERT đơn vị nhận		
1196

    
1197
		--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
1198
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1199
		-----
1200
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
1201

    
1202
	COMMIT TRANSACTION
1203

    
1204
-- BEGIN VALIDATE SEND APRROVE
1205
	IF(@p_IS_SEND_APPR = 'Y')
1206
	BEGIN
1207
	-- BEGIN VALIDATE RIGHT
1208
		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'))
1209
		BEGIN
1210
			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
1211
			RETURN '-1'
1212
		END
1213
		IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
1214
		BEGIN
1215
			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
1216
			RETURN '-1'
1217
		END
1218
		IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A'))
1219
		BEGIN
1220
			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
1221
			RETURN '-1'
1222
		END
1223
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
1224
		BEGIN
1225
			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
1226
			RETURN '-1'
1227
		END
1228
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
1229
		BEGIN
1230
			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
1231
			RETURN '-1'
1232
		END
1233
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
1234
		BEGIN
1235
			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
1236
			RETURN '-1'
1237
		END
1238
	-- END VALIDATE RIGHT
1239

    
1240
		DECLARE @SUMVAT DECIMAL(18,0) = 0
1241
		DECLARE @SUM3532 DECIMAL(18,0) = 0
1242
		DECLARE @tmp3532 TABLE(
1243
		AMT DECIMAL(18,0),
1244
		ACCT VARCHAR(20)
1245
		)
1246
		INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20))
1247
		IF(EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002'))
1248
		BEGIN
1249
			SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002')
1250
			SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0)))
1251
						
1252
			IF(@SUM3532 <> @SUMVAT)
1253
			BEGIN
1254
				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
1255
				RETURN '-1'
1256
			END
1257
		END
1258
		
1259

    
1260
		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
1261
		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
1262
		Open cursorProduct
1263

    
1264
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
1265
		WHILE @@FETCH_STATUS = 0
1266
		BEGIN
1267
			--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Ợ
1268
			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 
1269
					(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
1270
				)
1271
			BEGIN
1272
				CLOSE cursorProduct;	
1273
				DEALLOCATE cursorProduct;
1274
				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
1275
				RETURN '-1'
1276
			END
1277
			ELSE
1278
			BEGIN
1279
			print 'sai'+@ENTRY_PAIR
1280
			END
1281
			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))
1282
			BEGIN
1283
				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)
1284
				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))
1285
				BEGIN
1286
					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
1287
					RETURN '-1'
1288
				END
1289
			END
1290
			-- KIEM TRA SO TIEN NO CO
1291
			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))
1292
			BEGIN
1293
				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
1294
				RETURN '-1'
1295
			END
1296

    
1297
			FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
1298
		END
1299

    
1300
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
1301
		BEGIN
1302
			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
1303
			RETURN '-1'
1304
		END
1305

    
1306
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
1307
		BEGIN
1308
			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
1309
			RETURN '-1'
1310
		END
1311

    
1312
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
1313
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1314
		BEGIN
1315
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
1316
			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)
1317
			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)
1318
			IF(@SUM_CR <> @SUM_DR)
1319
			BEGIN
1320
				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
1321
				RETURN '-1'
1322
			END
1323
		END
1324

    
1325
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
1326
		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)
1327
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
1328
		UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
1329
		-- DOANPTT 291222: THEM LOG KPI
1330
		UPDATE TR_REQ_KPI 
1331
		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
1332
		WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' AND IS_DONE = '0'
1333
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1334
		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')
1335
		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
1336
		RETURN '4'
1337
	END
1338
-- END VALIDATE SEND APPROVE
1339

    
1340
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
1341
RETURN '0'
1342
ABORT:
1343
BEGIN
1344
		ROLLBACK TRANSACTION
1345
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
1346
		RETURN '-1'
1347
End
1348