Project

General

Profile

stored_send_approve_220322.txt

Luc Tran Van, 03/22/2022 11:07 AM

 
1

    
2
GO
3
/****** Object:  StoredProcedure [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Upd]    Script Date: 22-Mar-22 11:05:39 AM ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_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_RECEIVER_DEBIT	nvarchar(250)	= NULL,
21
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
22
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
23
@p_REQ_AMT	decimal(18, 0)	= NULL,
24
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
25
@p_MAKER_ID	varchar(15)	= NULL,
26
@p_CREATE_DT	varchar(25)	= NULL,
27
@p_EDITOR_ID	varchar(15)	= NULL,
28
@p_AUTH_STATUS	varchar(1)	= NULL,
29
@p_CHECKER_ID	varchar(15)	= NULL,
30
@p_APPROVE_DT	varchar(25)	= NULL,
31
@p_CREATE_DT_KT	varchar(25)	= NULL,
32
@p_MAKER_ID_KT	varchar(15)	= NULL,
33
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
34
@p_CHECKER_ID_KT	varchar(1)	= NULL,
35
@p_APPROVE_DT_KT  varchar(25)= null,
36
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
37
@p_BRANCH_CREATE	varchar(15)	= NULL,
38
@p_NOTES	varchar(15)	= NULL,
39
@p_RECORD_STATUS	varchar(1)	= NULL,
40
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
41
@p_TRANSFER_DT	varchar(25)	= NULL,
42
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
43
@p_PROCESS	varchar(15)	= NULL,
44
@p_PAY_PHASE VARCHAR(15)= NULL,
45
@p_DVDM_ID VARCHAR(15) = NULL,
46
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
47
@p_RATE DECIMAL(18,0)= 0,
48
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
49
--doanptt 17/02/2022
50
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL,
51
@p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL
52
AS
53
--Validation is here
54
/*
55
END 
56
*/
57

    
58

    
59
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),
60
	@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000),@GL_CODE VARCHAR(100),@BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
61

    
62

    
63
BEGIN TRANSACTION
64
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
65
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
66
		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')
67
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
68
		----
69
		--IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
70
-- insert hach toan
71
		IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
72
		BEGIN
73
			-- khai báo cursor
74
			DECLARE @hdocEntries INT;
75
			EXEC sp_xml_preparedocument @hdocEntries OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
76
			DECLARE XmlDataEntries CURSOR FOR
77
			SELECT * FROM OPENXML(@hdocEntries, '/Root/XmlDataEntries', 2)
78
				WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), 
79
				EXC_RATE DECIMAL(18,0), BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000), GL_CODE VARCHAR(100))
80
				OPEN XmlDataEntries;
81
				DECLARE @INDEX INT = 0
82

    
83
			UPDATE TR_REQ_ADVANCE_PAYMENT SET 
84
			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_NOTE
85
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
86
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
87
			IF @@Error <> 0 GOTO ABORT
88
			DECLARE @DR_CR_NAME NVARCHAR(50)
89
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
90
			WHILE @@fetch_status=0 BEGIN
91

    
92
				SET @INDEX = @INDEX +1
93
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
94
				BEGIN
95
					SET @GL_CODE = RIGHT(@GL_CODE,9) 
96
			
97
				END-- LUCTV BO SUNG 20211117
98
				--SET @ACCT_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
99
				IF(@DR_CR='D')
100
				BEGIN
101
					SET @DR_CR_NAME =N'Nợ'
102
				END
103
				ELSE
104
				BEGIN
105
					SET @DR_CR_NAME =N'Có'
106
				END
107
				SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
108
				SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
109
				IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
110
				BEGIN
111
					ROLLBACK TRANSACTION
112
					CLOSE XmlDataEntries;
113
					DEALLOCATE XmlDataEntries;
114
					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
115
					RETURN '-1'
116
				END
117
				IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
118
				BEGIN
119
					ROLLBACK TRANSACTION
120
					CLOSE XmlDataEntries;
121
					DEALLOCATE XmlDataEntries;
122
					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
123
					RETURN '-1'
124
				END
125
				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)
126
				BEGIN
127
					ROLLBACK TRANSACTION
128
					CLOSE XmlDataEntries;
129
					DEALLOCATE XmlDataEntries;
130
					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
131
					RETURN '-1'
132
				END
133
				IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
134
				BEGIN
135
					ROLLBACK TRANSACTION
136
					CLOSE XmlDataEntries;
137
					DEALLOCATE XmlDataEntries;
138
					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
139
					RETURN '-1'
140
				END
141
				---- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
142
				--IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
143
				--BEGIN
144
				--	ROLLBACK TRANSACTION
145
				--		CLOSE XmlDataEntries;	
146
				--		DEALLOCATE XmlDataEntries;
147
				--		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
148
				--		RETURN '-1'
149
				-----
150
				--END
151
				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))
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' 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
157
						RETURN '-1'
158
					---
159
				END
160
				IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
161
				BEGIN
162
				ROLLBACK TRANSACTION
163
						--CLOSE XmlDataEntries;	
164
						--DEALLOCATE XmlDataEntries;
165
						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
166
						RETURN '-1'
167
					---
168
				END
169
				DECLARE @p_ET_ID VARCHAR(15);
170
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
171
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
172
				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)
173
				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)
174

    
175
				-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
176
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
177
				BEGIN
178
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
179
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
180
				END
181
				ELSE
182
				BEGIN
183
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
184
						BEGIN
185
							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)
186
							WHERE ACC_NO=@ACCT
187
					END
188
				END
189
				--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Ợ
190
				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 
191
						(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)
192
				BEGIN
193
						ROLLBACK TRANSACTION
194
							CLOSE XmlDataEntries;	
195
							DEALLOCATE XmlDataEntries;
196
							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ó - Nhiều Nợ)'  ErrorDesc
197
							RETURN '-1'
198
						---
199
				END
200
			FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
201
			END;
202
		CLOSE XmlDataEntries;
203
		DEALLOCATE XmlDataEntries;
204
		-- UPDATE GL THEO RULE
205
		----UPDATE  CM_ACCOUNT
206
		----SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001')
207
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
208
		----AND SUBSTRING(ACC_NO,4,4) ='7048'
209

    
210
		----UPDATE  CM_ACCOUNT
211
		----SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002')
212
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
213
		----AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19'
214

    
215
		----UPDATE  CM_ACCOUNT
216
		----SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001')
217
		----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
218
		----AND SUBSTRING(ACC_NO,4,4) ='7041'
219

    
220
		--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
221

    
222
		IF @@error<>0 GOTO ABORT;
223
	END
224

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

    
229
	DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
230
				@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
231
-- INSERT đơn vị chuyển
232
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
233
				DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
234
				SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
235
				WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
236
				ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
237
				OPEN XmlDataOutsideTrans
238

    
239

    
240
				FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
241
				@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
242
				WHILE @@fetch_status=0 
243
				BEGIN
244
					
245
					--IF(@p_REQ_PAY_ID <> NULL)
246
					--BEGIN
247
						DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
248
						EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
249
						IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
250
						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 , 
251
						BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID, CURRENCY)
252
						VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
253
						@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID, @CURRENCY)
254
					--END
255

    
256
					IF @@error<>0 GOTO ABORT;
257
					FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
258
					@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
259
				END;
260
				CLOSE XmlDataOutsideTrans;
261
				DEALLOCATE XmlDataOutsideTrans;
262
--- END INSERT đơn vị chuyển
263

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

    
269
	DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(15), @OBJECT_RECEIVE_ID VARCHAR(15), 
270
				@BRANCH_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_NAME NVARCHAR(MAX), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(MAX)
271
-- INSERT đơn vị nhận
272
				DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID
273

    
274
				DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
275
				SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
276
				WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(15), OBJECT_RECEIVE_ID VARCHAR(15), 
277
				BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME VARCHAR(15), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(MAX)) 
278
				OPEN XmlDataOutsideRec
279

    
280
				FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
281
				@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC
282
				WHILE @@fetch_status=0 
283
				BEGIN
284

    
285
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
286
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
287
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
288
					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,
289
					CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC)
290
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_ID, @p_MAKER_ID_KT, GETDATE(), NULL, NULL,
291
					@CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC)
292
					IF @@error<>0 GOTO ABORT;
293
					FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
294
					@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC
295
				END;
296
				CLOSE XmlDataOutsideRec;
297
				DEALLOCATE XmlDataOutsideRec;
298
--- END INSERT đơn vị nhận
299

    
300

    
301
COMMIT TRANSACTION
302
--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
303
IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
304
		BEGIN
305
			IF(@p_XMP_TEMP_DATA_ENTRIES IS NULL)
306
			BEGIN
307
				-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
308
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
309
				BEGIN
310
					DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
311
					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)
312
					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)
313
					IF(@SUM_CR<>@SUM_DR)
314
					BEGIN
315
					--ROLLBACK TRANSACTION
316
					--CLOSE XmlDataEntries;
317
					--DEALLOCATE XmlDataEntries;
318
						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
319
						RETURN '-1'
320
					END
321
				END
322
				---BAT DAU VALIDATE
323
				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
324
						DECLARE cursorProduct CURSOR LOCAL FOR
325
						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
326
						Open cursorProduct
327
						FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
328
						WHILE @@FETCH_STATUS = 0
329
						BEGIN
330
						  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))
331
						  BEGIN
332
							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)
333
							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))
334
							BEGIN
335
								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
336
								RETURN '-1'
337
							END
338
						  END
339
						  -- KIEM TRA SO TIEN NO CO
340
							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)
341
								<> 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)
342
								)
343
							BEGIN
344
								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
345
								RETURN '-1'
346
							END
347
						-- KIEM TRA TAI KHOAN CO TON TAI TRONG HACH TOAN HAY KHONG
348
						--IF(LEN(@ACC_ET) =12 OR 
349
						--	(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACC_ET) 
350
						--	OR (NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =(SELECT TOP 1 TK_GL FROM CM_ACCOUNT WHERE ACC_NO =@ACC_ET)))))
351
						--BEGIN
352
						--		SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N'Vui lòng kiểm tra đầu tài khoản hạch toán: ' +@ACC_ET +N'. Đây là tài khoản chưa hợp lệ' ErrorDesc
353
						--		RETURN '-1'
354
						--END
355
						FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
356
						END		
357
				-- KET THUC VIEC VALIDATE
358
				
359
			END
360

    
361
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
362
			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)
363
			-- CAP NHAT TINH TRANG VE DANG XU LY
364
			UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT =GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
365
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
366
						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')
367
			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
368
			RETURN '4'
369
		END
370
	
371
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
372
RETURN '0'
373
ABORT:
374
BEGIN
375
		ROLLBACK TRANSACTION
376
		CLOSE XmlDataEntries;
377
		DEALLOCATE XmlDataEntries;
378
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
379
		RETURN '-1'
380
End
381

    
382