Project

General

Profile

upd_trans_auto.txt

Luc Tran Van, 03/23/2023 10:05 AM

 
1

    
2
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_KT_Upd]
3
@p_REQ_PAY_AUTO_ID	VARCHAR(20)= NULL,
4
@p_REQ_PAY_AUTO_CODE	VARCHAR(20)= NULL,
5
@p_REQ_PAY_AUTO_DT	VARCHAR(20)= NULL,
6
@p_REQ_PAY_AUTO_TYPE	VARCHAR(20)= NULL,
7
@p_REQ_PAY_AUTO_SERVICE_TYPE	VARCHAR(20)= NULL,
8
@p_REQ_PAY_AUTO_STATUS	VARCHAR(20)= NULL,
9
@p_REQ_PAY_AUTO_EFFECTIVE_DT	VARCHAR(20)= NULL,
10
@p_BRANCH_ID	VARCHAR(20)= NULL,
11
@p_DEP_ID	VARCHAR(20)= NULL,
12
@p_BRANCH_CREATE	VARCHAR(20)= NULL,
13
@p_TRANSFER_USER_RECEIVE	VARCHAR(20)= NULL,
14
@p_CONFIRM_NOTE	NVARCHAR(500)= NULL,
15
@p_CONTRACT_ID	VARCHAR(20)= NULL,
16
@p_PROCESS	VARCHAR(20)= NULL,
17
@p_TRANSFER_MAKER	VARCHAR(20)= NULL,
18
@p_TRANSFER_DT	VARCHAR(20)= NULL,
19
@p_MAKER_ID	VARCHAR(20)= NULL,
20
@p_CREATE_DT	VARCHAR(20)= NULL,
21
@p_EDITOR_ID	VARCHAR(20)= NULL,
22
@p_EDIT_DT	VARCHAR(20)= NULL,
23
@p_CHECKER_ID	VARCHAR(20)= NULL,
24
@p_APPROVE_DT	VARCHAR(20)= NULL,
25
@p_AUTH_STATUS	VARCHAR(20)= NULL,
26
@p_MAKER_ID_KT	VARCHAR(20)= NULL,
27
@p_CREATE_DT_KT	VARCHAR(20)= NULL,
28
@p_CHECKER_ID_KT	VARCHAR(20)= NULL,
29
@p_APPROVE_DT_KT	VARCHAR(20)= NULL,
30
@p_AUTH_STATUS_KT	VARCHAR(20)= NULL,
31
@p_RECORD_STATUS	VARCHAR(20)= NULL,
32
@p_FRMDATE	VARCHAR(20)= NULL,
33
@p_TODATE	VARCHAR(20)= NULL,
34
@p_LEVEL	VARCHAR(20)= NULL,
35
@p_USER_LOGIN	VARCHAR(20)= NULL,
36
@p_IS_SEND_APPR	VARCHAR(20)= NULL,
37
@p_TYPE_SEARCH	VARCHAR(20)= NULL,
38
@p_BRANCH_LOGIN	VARCHAR(20)= NULL,
39
@p_XMP_BUDGET_ALLOCATION XML = NULL,
40
@p_XMP_ENTRIES XML = NULL,
41
@p_XMP_TRANSFER_OUTSIDE_TRANS XML = NULL,
42
@p_XMP_TRANSFER_OUTSIDE_REC XML = NULL
43
AS
44
-- BEGIN VALIDATE
45
-- END VALIDATE
46
-- BEGIN VALIDATE FLOW
47
	IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(AUTH_STATUS, '') <> 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND ISNULL(REQUEST_STATUS, '') = ''))
48
	BEGIN
49
		SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động chưa được chuyển đến phòng kế toán' ErrorDesc
50
		RETURN '-1'
51
	END
52
	IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND ISNULL(PROCESS, '') = '5' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
53
	BEGIN
54
		SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được kiếm sát viên phê duyệt' ErrorDesc
55
		RETURN '-1'
56
	END
57
	IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'P' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
58
	BEGIN
59
		SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được gửi phê duyệt trước đó' ErrorDesc
60
		RETURN '-1'
61
	END
62
	IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'S' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
63
	BEGIN
64
		SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được đề xuất từ chối trước đó' ErrorDesc
65
		RETURN '-1'
66
	END
67
	IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_AUTO_ID))
68
	BEGIN
69
		SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động chưa được KSV điều phối' ErrorDesc
70
		RETURN '-1'
71
	END
72
-- END VALIDATE FLOW
73
BEGIN TRANSACTION
74
	IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') NOT IN ('12', '18') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))	-- NEU KHONG PHAI XAC NHAN TAM DUNG HOAC HUY PHIEU
75
	BEGIN
76
		UPDATE TR_REQ_PAYMENT_AUTO
77
		SET AUTH_STATUS_KT = 'U', CONFIRM_NOTE = @p_CONFIRM_NOTE, CREATE_DT_KT = GETDATE(), MAKER_ID_KT = @p_USER_LOGIN, CHECKER_ID_KT=NULL, APPROVE_DT_KT = NULL
78
		WHERE 1 = 1 
79
		AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
80
		IF @@Error <> 0 GOTO ABORT
81

    
82
		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),
83
			@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)
84
		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,
85
			@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
86
			@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
87
			@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,
88
			@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15)
89
	------------------------------------------------------------------------- BEGIN LUOI HACH TOAN -----------------------------------------------------------------------
90
		DECLARE @hdoc INT;
91
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_ENTRIES;
92
		DECLARE XmlDataEntries CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
93
		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),
94
		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))
95
		OPEN XmlDataEntries;
96

    
97
		DELETE FROM TR_REQ_PAY_AUTO_ENTRIES WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
98
		DECLARE @INDEX INT = 0;
99
		IF @@Error <> 0 GOTO ABORT
100
		DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
101
		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
102
		WHILE @@fetch_status=0 
103
		BEGIN
104
			IF(@EXC_RATE IS NULL)
105
			BEGIN
106
				SET @EXC_RATE = 1
107
			END
108

    
109
			SET @INDEX = @INDEX +1
110
			SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
111

    
112
			-- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA
113
			IF(ISNULL(@GL_CODE, '') <> '')
114
			BEGIN
115
				SET @ACC_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
116
				SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '')
117
			END
118
			-- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA
119
			SET @GL_CODE = RIGHT(@GL_CODE,9)
120
			IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '')
121
			BEGIN
122
				SET @ACCT = @GL_CODE_ACCNO
123
			END
124

    
125
			IF(@DR_CR='D')
126
			BEGIN
127
				SET @DR_CR_NAME =N'Nợ'
128
			END
129
			ELSE
130
			BEGIN
131
				SET @DR_CR_NAME =N'Có'
132
			END
133

    
134
			SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
135
			SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
136
	
137
			IF(@p_IS_SEND_APPR = 'SEND')
138
			BEGIN
139
				IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='')
140
				BEGIN
141
					ROLLBACK TRANSACTION
142
					CLOSE XmlDataEntries;
143
					DEALLOCATE XmlDataEntries;
144
					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
145
					RETURN '-1'
146
				END
147

    
148
				IF(@DR_CR IS NULL OR @DR_CR ='')
149
				BEGIN
150
					ROLLBACK TRANSACTION
151
					CLOSE XmlDataEntries;
152
					DEALLOCATE XmlDataEntries;
153
					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
154
					RETURN '-1'
155
				END
156
				
157
				IF(@ACCT IS NULL OR @ACCT ='')
158
				BEGIN
159
					ROLLBACK TRANSACTION
160
					CLOSE XmlDataEntries;
161
					DEALLOCATE XmlDataEntries;
162
					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
163
					RETURN '-1'
164
				END
165

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

    
175
				IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
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': Đơn vị nhận không được phép để trống' ErrorDesc
181
					RETURN '-1'
182
				END
183

    
184
				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)
185
				BEGIN
186
					ROLLBACK TRANSACTION
187
					CLOSE XmlDataEntries;
188
					DEALLOCATE XmlDataEntries;
189
					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
190
					RETURN '-1'
191
				END
192

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

    
205
				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)
206
				BEGIN
207
					ROLLBACK TRANSACTION
208
					CLOSE XmlDataEntries;
209
					DEALLOCATE XmlDataEntries;
210
					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
211
					RETURN '-1'
212
				END
213

    
214
				IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
215
				BEGIN
216
					ROLLBACK TRANSACTION
217
					CLOSE XmlDataEntries;	
218
					DEALLOCATE XmlDataEntries;
219
					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
220
					RETURN '-1'
221
				END
222

    
223
				-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
224
				IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
225
				BEGIN
226
					ROLLBACK TRANSACTION
227
					CLOSE XmlDataEntries;	
228
					DEALLOCATE XmlDataEntries;
229
					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
230
					RETURN '-1'
231
				END
232
			END -- END IF VALIDATE
233
	
234
			DECLARE @p_ET_ID VARCHAR(15);
235
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_AUTO_ENTRIES', @p_ET_ID OUT;
236
			IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
237

    
238

    
239
			INSERT INTO TR_REQ_PAY_AUTO_ENTRIES (REQ_PAY_AUTO_DT_ID,REQ_PAY_AUTO_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)
240
			VALUES (@p_ET_ID,@p_REQ_PAY_AUTO_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(), @p_USER_LOGIN, 'PAYMENT', 'VND', 1, @IS_TRANSFER_EXTERNAL)
241

    
242
			-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
243
			IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
244
			BEGIN
245
				INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
246
				(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
247
			END
248
			ELSE
249
			BEGIN
250
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0')
251
				BEGIN
252
					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()
253
					WHERE ACC_NO=@ACCT
254
				END
255
			END
256
		IF @@error<>0 GOTO ABORT;
257
		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
258
		END;--END WHILE
259
		CLOSE XmlDataEntries;
260
		DEALLOCATE XmlDataEntries;
261
	------------------------------------------------------------------------------------------ END LUOI HACH TOAN --------------------------------------------------------------------
262

    
263
	-- BEGIN INSERT đơn vị chuyển
264
		DECLARE @hdocOutsideTrans INT
265
		EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TRANSFER_OUTSIDE_TRANS;
266
		DECLARE  @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), 
267
		@ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255)
268
		DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR
269
		SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) 
270
		WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), 
271
		ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255))
272

    
273
		OPEN XmlDataOutsideTrans
274
		DELETE FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
275
		FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
276
		@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
277
		WHILE @@fetch_status=0 
278
		BEGIN
279
			DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15);
280
			EXEC SYS_CodeMasters_Gen 'TR_REQ_AUTO_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
281
			IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
282

    
283
			INSERT INTO TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS(TR_REQ_TRANS_OUTSIDE_ID ,REQ_PAY_AUTO_ID ,MAKER_ID , CREATE_DT , AUTH_STATUS, AUTH_STATUS_KT , 
284
			BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID)
285
			VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_AUTO_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, 
286
			@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID)
287

    
288
			IF @@error<>0 GOTO ABORT;
289
			FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, 
290
			@ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME
291
		END;
292
		CLOSE XmlDataOutsideTrans;
293
		DEALLOCATE XmlDataOutsideTrans;
294
	--- END INSERT đơn vị chuyển
295

    
296
	-- BEGIN INSERT đơn vị nhận
297
		DECLARE @hdocOutsideRec INT
298
		EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TRANSFER_OUTSIDE_REC;
299

    
300
		DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
301
					@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)
302
	-- INSERT đơn vị nhận
303
		DECLARE XmlDataOutsideRec CURSOR LOCAL FOR
304
		SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) 
305
		WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(250), OBJECT_RECEIVE_ID VARCHAR(15), 
306
		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),  
307
		ENTRY_PAIR varchar(20), REF_NO varchar(20)) 
308
	
309
		OPEN XmlDataOutsideRec
310
		DECLARE @INDEX_REC INT
311
		DELETE FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
312
		FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
313
		@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
314
		WHILE @@fetch_status=0 
315
		BEGIN
316
			IF(@p_IS_SEND_APPR = 'SEND')
317
			BEGIN
318
			SET @INDEX_REC = @INDEX_REC+1
319
				IF(ISNULL(@ACC_NO_RECEIVE, '') = '')
320
				BEGIN
321
					ROLLBACK TRANSACTION
322
					CLOSE XmlDataOutsideRec;
323
					DEALLOCATE XmlDataOutsideRec;
324
					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
325
					RETURN '-1'
326
				END
327
				IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
328
				BEGIN
329
					ROLLBACK TRANSACTION
330
					CLOSE XmlDataOutsideRec;
331
					DEALLOCATE XmlDataOutsideRec;
332
					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
333
					RETURN '-1'
334
				END
335
				IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '')
336
				BEGIN
337
					ROLLBACK TRANSACTION
338
					CLOSE XmlDataOutsideRec;
339
					DEALLOCATE XmlDataOutsideRec;
340
					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
341
					RETURN '-1'
342
				END
343
				IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '')
344
				BEGIN
345
					ROLLBACK TRANSACTION
346
					CLOSE XmlDataOutsideRec;
347
					DEALLOCATE XmlDataOutsideRec;
348
					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
349
					RETURN '-1'
350
				END
351
				IF(ISNULL(@CITAD1_ID, '') = '')
352
				BEGIN
353
					ROLLBACK TRANSACTION
354
					CLOSE XmlDataOutsideRec;
355
					DEALLOCATE XmlDataOutsideRec;
356
					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
357
					RETURN '-1'
358
				END
359
				IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '')
360
				BEGIN
361
					ROLLBACK TRANSACTION
362
					CLOSE XmlDataOutsideRec;
363
					DEALLOCATE XmlDataOutsideRec;
364
					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
365
					RETURN '-1'
366
				END
367
			END
368

    
369
			DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
370
			EXEC SYS_CodeMasters_Gen 'TR_REQ_AUTO_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
371
			IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
372

    
373
			INSERT INTO TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC(REQ_TRANS_OUTSIDE_REC_ID, REQ_PAY_AUTO_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, AUTH_STATUS_KT,
374
			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)
375
			VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_AUTO_ID, @p_USER_LOGIN, GETDATE(), NULL, NULL,
376
			@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)
377

    
378
		IF @@error<>0 GOTO ABORT;
379
		FETCH NEXT FROM XmlDataOutsideRec INTO  @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, 
380
		@BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO
381
		END;
382
		CLOSE XmlDataOutsideRec;
383
		DEALLOCATE XmlDataOutsideRec;
384
	--- END INSERT đơn vị nhận
385

    
386
--- INSERT PHÂN CHIA
387
	DECLARE @hDocBudgetAllocation INT
388
	EXEC sp_xml_preparedocument @hDocBudgetAllocation OUTPUT, @p_XMP_BUDGET_ALLOCATION;
389

    
390
	DECLARE @TYPE_BUDGET_ALLOCAITON VARCHAR(20), @PERCENT_BUDGET_ALLOCAITON DECIMAL(18,2), @AMT_BUDGET_ALLOCAITON DECIMAL(18,2), @REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20)
391

    
392
	DECLARE XmlDataBudgetAllocation CURSOR FOR SELECT * FROM OPENXML(@hDocBudgetAllocation, 'Root/XmlDataBudgetAllocation',2)
393
	WITH(REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20), ACC_NO VARCHAR(20), ACC_NAME NVARCHAR(255), BRANCH_ID VARCHAR(20), DEP_ID NVARCHAR(255), TYPE_BUDGET_ALLOCAITON VARCHAR(20), PERCENT_BUDGET_ALLOCAITON DECIMAL(18,2), AMT_BUDGET_ALLOCAITON DECIMAL(18,2))
394
	OPEN XmlDataBudgetAllocation
395

    
396
	DELETE FROM TR_REQ_PAY_AUTO_BUDGET_ALLOCATION WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
397
	FETCH NEXT FROM XmlDataBudgetAllocation INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON
398
	WHILE @@fetch_status=0 
399
	BEGIN
400
		DECLARE @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID VARCHAR(20)
401
		EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_AUTO_ALLCOTION', @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID OUT;
402
		IF @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID = '' OR @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID IS NULL GOTO ABORT;
403
		
404
		INSERT INTO TR_REQ_PAY_AUTO_BUDGET_ALLOCATION(REQ_PAY_AUTO_BUDGET_ALLOCATION_ID, REQ_PAY_AUTO_MANUFACTURER_ID, REQ_PAY_AUTO_ID, ACC_NO, ACC_NAME, BRANCH_ID, DEP_ID, TYPE_BUDGET_ALLOCAITON, PERCENT_BUDGET_ALLOCAITON, AMT_BUDGET_ALLOCAITON, MAKER_ID, CREATE_DT, RECORD_STATUS)
405
		VALUES (@REQ_PAY_AUTO_BUDGET_ALLOCATION_ID, @REQ_PAY_AUTO_MANUFACTURER_ID, @p_REQ_PAY_AUTO_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON, @p_MAKER_ID, GETDATE(), '1')
406
	
407
	IF @@error<>0 GOTO ABORT;
408
	FETCH NEXT FROM XmlDataBudgetAllocation INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON
409
	END
410
	CLOSE XmlDataBudgetAllocation;
411
	DEALLOCATE XmlDataBudgetAllocation;
412

    
413
	END	-- END XAC NHAN TAM DUNG HOAC HUY PHIEU
414

    
415
COMMIT TRANSACTION
416
	IF(@p_IS_SEND_APPR ='SEND')
417
	BEGIN
418
		IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') NOT IN ('12', '18', '14.2', '20.2') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))	-- NEU KHONG PHAI XAC NHAN TAM DUNG HOAC HUY PHIEU
419
		BEGIN
420
			UPDATE TR_REQ_PAYMENT_AUTO 
421
			SET AUTH_STATUS_KT = 'P', CREATE_DT_KT = GETDATE(), MAKER_ID_KT = @p_USER_LOGIN, CONFIRM_NOTE = @p_CONFIRM_NOTE, PROCESS = '4'
422
			WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
423
			-- UPDATE FLOW KE TOAN
424
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TLNAME= @p_USER_LOGIN AND TYPE_JOB = 'XL'
425
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TYPE_JOB = 'KS'
426
			-- INSERT VAO PL_PROCESS
427
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
428
			VALUES(@p_REQ_PAY_AUTO_ID,'SEND_GDV',@p_USER_LOGIN,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')
429
			SELECT '1' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_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
430
			RETURN '1'
431
		END
432
		ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') IN ('12', '14.2') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
433
		BEGIN
434
			UPDATE TR_REQ_PAYMENT_AUTO 
435
			SET CREATE_DT_KT = GETDATE(), MAKER_ID_KT = @p_USER_LOGIN, CONFIRM_NOTE = @p_CONFIRM_NOTE, PROCESS = '13'
436
			WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
437
			-- UPDATE FLOW KE TOAN
438
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TLNAME= @p_USER_LOGIN AND TYPE_JOB = 'XL'
439
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TYPE_JOB = 'KS'
440
			-- INSERT VAO PL_PROCESS
441
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
442
			VALUES(@p_REQ_PAY_AUTO_ID,'GDV_UNSUS',@p_USER_LOGIN,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên xác nhận yêu cầu khôi phục phiếu')
443
			SELECT '1' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_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
444
			RETURN '1'
445
		END
446
		ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') IN ('18', '20.2') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
447
		BEGIN
448
			UPDATE TR_REQ_PAYMENT_AUTO 
449
			SET PROCESS = '19', CREATE_DT_KT = GETDATE(), MAKER_ID_KT = @p_USER_LOGIN, CONFIRM_NOTE = @p_CONFIRM_NOTE
450
			WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
451
			-- UPDATE FLOW KE TOAN
452
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TLNAME= @p_USER_LOGIN AND TYPE_JOB = 'XL'
453
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TYPE_JOB = 'KS'
454
			-- INSERT VAO PL_PROCESS
455
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
456
			VALUES(@p_REQ_PAY_AUTO_ID,'GDV_DEL',@p_USER_LOGIN,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên xác nhận yêu cầu hủy phiếu')
457
			SELECT '1' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_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
458
			RETURN '1'
459
		END
460
		ELSE
461
		BEGIN
462
			PRINT '1'
463
		END
464

    
465
		
466
	END
467

    
468
SELECT '0' as Result, @p_REQ_PAY_AUTO_ID  REQ_PAY_ID, @p_REQ_PAY_AUTO_CODE  AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
469
RETURN '0'
470

    
471
ABORT:
472
BEGIN
473
	ROLLBACK TRANSACTION
474
	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Lỗi không xác định' ErrorDesc
475
	RETURN '-1'
476
End
477

    
478
GO
479

    
480

    
481
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_TRANSFER_Search]
482
@p_REQ_PAY_AUTO_ID	VARCHAR(20)= NULL,
483
@p_REQ_PAY_AUTO_CODE	VARCHAR(20)= NULL,
484
@p_REQ_PAY_AUTO_NAME	VARCHAR(20)= NULL,
485
@p_REQ_PAY_AUTO_DT	VARCHAR(20)= NULL,
486
@p_REQ_PAY_AUTO_TYPE	VARCHAR(20)= NULL,
487
@p_REQ_PAY_AUTO_SERVICE_TYPE	VARCHAR(20)= NULL,
488
@p_REQ_PAY_AUTO_STATUS	VARCHAR(20)= NULL,
489
@p_REQ_PAY_AUTO_EFFECTIVE_DT	VARCHAR(20)= NULL,
490
@p_BRANCH_ID	VARCHAR(20)= NULL,
491
@p_BRANCH_CODE	VARCHAR(20)= NULL,
492
@p_BRANCH_NAME	VARCHAR(20)= NULL,
493
@p_DEP_ID	VARCHAR(20)= NULL,
494
@p_DEP_CODE	VARCHAR(20)= NULL,
495
@p_DEP_NAME	VARCHAR(20)= NULL,
496
@p_BRANCH_CREATE	VARCHAR(20)= NULL,
497
@p_BRANCH_CREATE_CODE	VARCHAR(20)= NULL,
498
@p_BRANCH_CREATE_NAME	VARCHAR(20)= NULL,
499
@p_TRANSFER_USER_RECEIVE	VARCHAR(20)= NULL,
500
@p_TRANSFER_USER_RECEIVE_NAME	VARCHAR(20)= NULL,
501
@p_CONFIRM_NOTE	VARCHAR(20)= NULL,
502
@p_CONTRACT_ID	VARCHAR(20)= NULL,
503
@p_CONTRACT_CODE	VARCHAR(20)= NULL,
504
@p_CONTRACT_NAME	VARCHAR(20)= NULL,
505
@p_PROCESS	VARCHAR(20)= NULL,
506
@p_TRANSFER_MAKER	VARCHAR(20)= NULL,
507
@p_TRANSFER_DT	VARCHAR(20)= NULL,
508
@p_MAKER_ID	VARCHAR(20)= NULL,
509
@p_MAKER_NAME	VARCHAR(20)= NULL,
510
@p_CREATE_DT	VARCHAR(20)= NULL,
511
@p_EDITOR_ID	VARCHAR(20)= NULL,
512
@p_EDITOR_NAME	VARCHAR(20)= NULL,
513
@p_EDIT_DT	VARCHAR(20)= NULL,
514
@p_CHECKER_ID	VARCHAR(20)= NULL,
515
@p_CHECKER_NAME	VARCHAR(20)= NULL,
516
@p_APPROVE_DT	VARCHAR(20)= NULL,
517
@p_AUTH_STATUS	VARCHAR(20)= NULL,
518
@p_MAKER_ID_KT	VARCHAR(20)= NULL,
519
@p_MAKER_KT_NAME	VARCHAR(20)= NULL,
520
@p_CREATE_DT_KT	VARCHAR(20)= NULL,
521
@p_CHECKER_ID_KT	VARCHAR(20)= NULL,
522
@p_CHECKER_KT_NAME	VARCHAR(20)= NULL,
523
@p_APPROVE_DT_KT	VARCHAR(20)= NULL,
524
@p_AUTH_STATUS_KT	VARCHAR(20)= NULL,
525
@p_AUTH_STATUS_KT_DESC	VARCHAR(20)= NULL,
526
@p_RECORD_STATUS	VARCHAR(20)= NULL,
527
@p_FRMDATE	VARCHAR(20)= NULL,
528
@p_TODATE	VARCHAR(20)= NULL,
529
@p_LEVEL	VARCHAR(20)= NULL,
530
@p_USER_LOGIN	VARCHAR(20)= NULL,
531
@p_IS_SEND_APPR	VARCHAR(20)= NULL,
532
@p_TYPE_SEARCH	VARCHAR(20)= NULL,
533
@p_BRANCH_LOGIN	VARCHAR(20)= NULL,
534
@p_IS_TRANSFER	VARCHAR(20)= NULL,
535
@p_TOP INT = NULL
536
AS
537
BEGIN -- PAGING
538
-- BEGIN KHAI BÁO
539
-- ĐƠN VỊ YÊU CẦU
540
	DECLARE @tmp_branch TABLE(BRANCH_ID VARCHAR(15))
541
	DECLARE @tmp_dep TABLE(DEP_ID VARCHAR(15))
542
	DECLARE @DEP_ID VARCHAR(15) = NULL
543
	INSERT INTO @tmp_branch  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
544
	DECLARE @BRANCH_TYPE VARCHAR(15)
545
	SET @BRANCH_TYPE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_AUTO_ID))
546

    
547
-- ĐƠN VỊ ĐĂNG NHẬP
548
	DECLARE @tmp_branch_login TABLE(BRANCH_ID VARCHAR(15))
549
	DECLARE @tmp_dep_login TABLE(DEP_ID VARCHAR(15))
550
	INSERT INTO @tmp_branch_login  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
551
	INSERT INTO @tmp_branch_login VALUES (@p_BRANCH_LOGIN)
552
	INSERT INTO @tmp_branch_login	SELECT BRANCH_ID 
553
									FROM TL_SYS_ROLE_MAPPING 
554
									WHERE TLNAME =@P_USER_LOGIN 
555
									AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) 
556
									AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
557
	DECLARE @BRANCH_TYPE_LG VARCHAR(15)
558
	SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN)
559
-- PHÒNG BAN ĐĂNG NHẬP
560
	DECLARE @DEP_ID_LG VARCHAR(15) = NULL
561
	SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
562
	INSERT INTO @tmp_dep_login VALUES (@DEP_ID_LG)
563
	INSERT INTO @tmp_dep_login SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@DEP_ID_LG
564
	INSERT INTO @tmp_dep_login	SELECT DEP_ID 
565
								FROM TL_SYS_ROLE_MAPPING 
566
								WHERE TLNAME =@P_USER_LOGIN 
567
								AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) 
568
								AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
569

    
570
-- ROLE
571
	DECLARE @ROLE_ID VARCHAR(20)
572
	SET @ROLE_ID = (SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
573
	DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))  
574
	INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID)
575
	INSERT INTO @TABLE_ROLE SELECT ROLE_NEW 
576
							FROM TL_SYS_ROLE_MAPPING 
577
							WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@P_USER_LOGIN  
578
							AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
579
							AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='') 
580
	
581
-- NEU USER KHONG CHON TU NGAY THI TU NGAY BANG NGAY 1 1 HANG THANG 20211116
582
	DECLARE @DATE DATE
583
	IF ((@p_FRMDATE IS NULL OR @p_FRMDATE ='') AND ISNULL(@p_REQ_PAY_AUTO_ID,'')='' AND @p_AUTH_STATUS ='') -- MỤC ĐÍCH NẾU NHƯ XEM CHI TIẾT 1 PĐN THANH TOÁN DẠNG POPUP THÌ BỎ QUA ĐIỀU KIỆN NÀY, TỪ NGÀY VẪN LÀ NULL
584
	BEGIN
585
		SET @DATE = CONVERT(DATE,GETDATE(),103)
586
		SET @DATE = DATEADD(MONTH,-2,@DATE)
587
	END
588
	ELSE
589
	BEGIN
590
		SET @DATE = CONVERT(DATE,@p_FRMDATE,103)
591
	END
592
-- END KHAI BÁO
593

    
594
	IF(@p_TOP IS NULL OR @p_TOP=0)
595
	BEGIN
596
-- PAGING BEGIN
597
		SELECT A.*, B.TLNAME AS TRANSFER_USER_RECEIVE,
598
		C.BRANCH_NAME, D.DEP_NAME, E.TLFullName AS MAKER_NAME, F.CONTENT AS REQ_PAY_AUTO_TYPE_NAME, G.CONTENT AS AUTH_STATUS_NAME, H.CONTENT AS AUTH_STATUS_KT_NAME
599
-- SELECT END
600
        FROM TR_REQ_PAYMENT_AUTO A
601
		LEFT JOIN PL_REQUEST_PROCESS_CHILD B ON A.REQ_PAY_AUTO_ID = B.REQ_ID AND B.TYPE_JOB = 'XL'
602
		LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
603
		LEFT JOIN CM_DEPARTMENT D ON A.DEP_ID = D.DEP_ID
604
		LEFT JOIN TL_USER E ON A.MAKER_ID = E.TLNANME
605
		LEFT JOIN CM_ALLCODE F ON A.REQ_PAY_AUTO_TYPE = F.CDVAL AND F.CDNAME = 'PAY_TYPE_AUTO' AND F.CDTYPE = 'REQ_AUTO'
606
		LEFT JOIN CM_ALLCODE G ON A.AUTH_STATUS = G.CDVAL AND G.CDNAME = 'AUTH_STATUS' AND G.CDTYPE = 'TR_REQ_PAYMENT'
607
		LEFT JOIN CM_ALLCODE H ON A.AUTH_STATUS_KT = H.CDVAL AND H.CDNAME = 'AUTH_STATUS_KT' AND H.CDTYPE = 'TR_REQ_PAYMENT'
608
        WHERE 1=1 
609
		AND	(	A.AUTH_STATUS = 'A' OR A.AUTH_STATUS = 'N')
610
		AND A.PROCESS IN ('2', '11', '17')
611
		-- BEGIN FILTER
612
		AND	(	A.REQ_PAY_AUTO_TYPE = @p_REQ_PAY_AUTO_TYPE OR ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '')
613
		AND	(	A.PROCESS = @p_PROCESS OR ISNULL(@p_PROCESS, '') = '')
614
		AND	(	A.CONTRACT_ID = @p_CONTRACT_ID OR ISNULL(@p_CONTRACT_ID, '') = '')
615
		AND	(	A.REQ_PAY_AUTO_SERVICE_TYPE = @p_REQ_PAY_AUTO_SERVICE_TYPE OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '')
616
		AND	(	A.REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE OR ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '')
617
		AND	(	(	@p_IS_TRANSFER = 'Y' 
618
					AND	EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID) 
619
						
620
				)
621
				OR	(	@p_IS_TRANSFER='N' 
622
						AND	NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID )
623
					)
624
				OR @p_IS_TRANSFER IS NULL 
625
				OR @p_IS_TRANSFER=''
626
			)
627
		AND	(CONVERT(DATE, A.CREATE_DT) >= CONVERT(DATE, @p_FRMDATE, 103) OR @p_FRMDATE IS NULL OR @p_FRMDATE = '' OR A.CREATE_DT IS NULL)
628
		AND	(CONVERT(DATE, A.CREATE_DT) <= CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '' OR A.CREATE_DT IS NULL)
629
		--AND	(	A.BRANCH_ID = @p_BRANCH_ID OR ISNULL(@p_BRANCH_ID, '') = '')
630
		AND	(	A.DEP_ID = @p_DEP_ID OR ISNULL(@p_DEP_ID, '') = '')
631
		AND	(	A.MAKER_ID = @p_MAKER_ID OR ISNULL(@p_MAKER_ID, '') = '')
632
		AND	(	B.TLNAME = @p_MAKER_ID_KT OR ISNULL(@p_MAKER_ID_KT, '') = '')
633
		-- END FILTER
634
		ORDER BY A.CREATE_DT DESC
635
-- PAGING END
636
    END;
637
    ELSE 
638
	BEGIN
639
-- PAGING BEGIN
640
		SELECT A.*, B.TLNAME AS TRANSFER_USER_RECEIVE,
641
		C.BRANCH_NAME, D.DEP_NAME, E.TLFullName AS MAKER_NAME, F.CONTENT AS REQ_PAY_AUTO_TYPE_NAME, G.CONTENT AS AUTH_STATUS_NAME, H.CONTENT AS AUTH_STATUS_KT_NAME
642
-- SELECT END
643
        FROM TR_REQ_PAYMENT_AUTO A
644
		LEFT JOIN PL_REQUEST_PROCESS_CHILD B ON A.REQ_PAY_AUTO_ID = B.REQ_ID AND B.TYPE_JOB = 'XL'
645
		LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
646
		LEFT JOIN CM_DEPARTMENT D ON A.DEP_ID = D.DEP_ID
647
		LEFT JOIN TL_USER E ON A.MAKER_ID = E.TLNANME
648
		LEFT JOIN CM_ALLCODE F ON A.REQ_PAY_AUTO_TYPE = F.CDVAL AND F.CDNAME = 'PAY_TYPE_AUTO' AND F.CDTYPE = 'REQ_AUTO'
649
		LEFT JOIN CM_ALLCODE G ON A.AUTH_STATUS = G.CDVAL AND G.CDNAME = 'AUTH_STATUS' AND G.CDTYPE = 'TR_REQ_PAYMENT'
650
		LEFT JOIN CM_ALLCODE H ON A.AUTH_STATUS_KT = H.CDVAL AND H.CDNAME = 'AUTH_STATUS_KT' AND H.CDTYPE = 'TR_REQ_PAYMENT'
651
        WHERE 1=1 
652
		AND	(	A.AUTH_STATUS = 'A' OR A.AUTH_STATUS = 'N')
653
		AND A.PROCESS IN ('2', '11', '17')
654
		-- BEGIN FILTER
655
		AND	(	A.REQ_PAY_AUTO_TYPE = @p_REQ_PAY_AUTO_TYPE OR ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '')
656
		AND	(	A.PROCESS = @p_PROCESS OR ISNULL(@p_PROCESS, '') = '')
657
		AND	(	A.CONTRACT_ID = @p_CONTRACT_ID OR ISNULL(@p_CONTRACT_ID, '') = '')
658
		AND	(	A.REQ_PAY_AUTO_SERVICE_TYPE = @p_REQ_PAY_AUTO_SERVICE_TYPE OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '')
659
		AND	(	A.REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE OR ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '')
660
		AND	(	(	@p_IS_TRANSFER = 'Y' 
661
					AND	(	EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID) 
662
						)
663
				)
664
				OR	(	@p_IS_TRANSFER='N' 
665
						AND	NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID )
666
					)
667
				OR @p_IS_TRANSFER IS NULL 
668
				OR @p_IS_TRANSFER=''
669
			)
670
		AND	(CONVERT(DATE, A.CREATE_DT) >= CONVERT(DATE, @p_FRMDATE, 103) OR @p_FRMDATE IS NULL OR @p_FRMDATE = '' OR A.CREATE_DT IS NULL)
671
		AND	(CONVERT(DATE, A.CREATE_DT) <= CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '' OR A.CREATE_DT IS NULL)
672
		--AND	(	A.BRANCH_ID = @p_BRANCH_ID OR ISNULL(@p_BRANCH_ID, '') = '')
673
		AND	(	A.DEP_ID = @p_DEP_ID OR ISNULL(@p_DEP_ID, '') = '')
674
		AND	(	A.MAKER_ID = @p_MAKER_ID OR ISNULL(@p_MAKER_ID, '') = '')
675
		AND	(	B.TLNAME = @p_MAKER_ID_KT OR ISNULL(@p_MAKER_ID_KT, '') = '')
676
		-- END FILTER
677
		ORDER BY A.CREATE_DT DESC
678
-- PAGING END
679
   END;
680
END -- PAGING