Project

General

Profile

payment_ins.txt

Luc Tran Van, 03/29/2023 01:53 PM

 
1

    
2
ALTER PROCEDURE [dbo].[PAY_AUTO_SCAN]
3
@p_APP_DT VARCHAR(20)
4
AS
5
BEGIN TRANSACTION
6
	--SET @p_APP_DT = GETDATE()
7

    
8
	DECLARE @LIST_REQ_PAYMENT VARCHAR(MAX) = '';
9

    
10
	DECLARE  @REQ_PAY_AUTO_ID VARCHAR(20), @REQ_PAY_AUTO_CODE VARCHAR(50), @REQ_PAY_AUTO_TYPE VARCHAR(15), @REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(15), @REQ_PAY_AUTO_STATUS VARCHAR(15), 
11
	@REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @BRANCH_CREATE VARCHAR(20), @TRANSFER_USER_RECEIVE VARCHAR(15), @CONFIRM_NOTE NVARCHAR(MAX), 
12
	@CONTRACT_ID VARCHAR(20), @TRANSFER_MAKER VARCHAR(20), @TRANSFER_DT VARCHAR(20), @PROCESS VARCHAR(15), @AUTH_STATUS_KT VARCHAR(1), @RECORD_STATUS VARCHAR(1),
13
	@MAKER_ID VARCHAR(20), @CHECKER_ID VARCHAR(20), @MAKER_ID_KT VARCHAR(20), @CHECKER_ID_KT VARCHAR(20), @BRANCH_NAME NVARCHAR(250), @REQ_PAY_AUTO_SERVICE_TYPE_NAME NVARCHAR(250), @CONTRACT_CODE VARCHAR(20)
14
	DECLARE cursorPaymentAuto CURSOR LOCAL FOR 
15
	-- LAY CAC PHIEU YEU CAU THANH TOAN TU DONG CON HIEU LUC
16
	SELECT A.REQ_PAY_AUTO_ID, A.REQ_PAY_AUTO_CODE, A.REQ_PAY_AUTO_TYPE, A.REQ_PAY_AUTO_SERVICE_TYPE, A.REQ_PAY_AUTO_STATUS, 
17
	A.REQ_PAY_AUTO_EFFECTIVE_DT, A.BRANCH_ID, A.DEP_ID, A.BRANCH_CREATE, A.TRANSFER_USER_RECEIVE, A.CONFIRM_NOTE, 
18
	A.CONTRACT_ID, A.TRANSFER_MAKER, A.TRANSFER_DT, A.PROCESS, A.AUTH_STATUS_KT, A.RECORD_STATUS, A.MAKER_ID, A.CHECKER_ID, A.MAKER_ID_KT, A.CHECKER_ID_KT, B.BRANCH_NAME, C.CONTENT AS REQ_PAY_AUTO_SERVICE_TYPE_NAME, D.CONTRACT_CODE
19
	FROM TR_REQ_PAYMENT_AUTO A
20
	LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
21
	LEFT JOIN CM_ALLCODE C ON A.REQ_PAY_AUTO_SERVICE_TYPE = C.CDVAL AND CDNAME = 'PAY_SER_AUTO_TS' AND CDTYPE = 'REQ_AUTO'
22
	LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID
23
	WHERE 1=1
24
	AND A.REQ_PAY_AUTO_TYPE = 'A'
25
	AND A.AUTH_STATUS_KT = 'A' 
26
	AND REQ_PAY_AUTO_STATUS = 'EFFECTIVE' 
27
	AND A.RECORD_STATUS = '1' 
28
	AND A.CONTRACT_ID IS NOT NULL
29
	AND	(
30
			A.IS_MAKER_CONFIRM_CHECKBOX IS NULL
31
		OR	A.IS_MAKER_CONFIRM_CHECKBOX = '0' -- THANH TOAN TU DONG KHONG CAN XAC NHAN TRUOC
32
		OR	(A.IS_MAKER_CONFIRM_CHECKBOX = '1' AND A.IS_MAKER_CONFIRM = '1') -- THANH TOAN TU DONG CAN XAC NHAN VA DA DUOC XAC NHAN
33
		)
34
	Open cursorPaymentAuto
35

    
36
	-- QUET TUNG PHIEU YEU CAU THANH TOAN TU DONG CON HIEU LUC
37
	FETCH NEXT FROM cursorPaymentAuto INTO @REQ_PAY_AUTO_ID, @REQ_PAY_AUTO_CODE, @REQ_PAY_AUTO_TYPE, @REQ_PAY_AUTO_SERVICE_TYPE, @REQ_PAY_AUTO_STATUS, 
38
	@REQ_PAY_AUTO_EFFECTIVE_DT, @BRANCH_ID, @DEP_ID, @BRANCH_CREATE, @TRANSFER_USER_RECEIVE, @CONFIRM_NOTE, 
39
	@CONTRACT_ID, @TRANSFER_MAKER, @TRANSFER_DT, @PROCESS, @AUTH_STATUS_KT, @RECORD_STATUS, @MAKER_ID, @CHECKER_ID, @MAKER_ID_KT, @CHECKER_ID_KT, @BRANCH_NAME, @REQ_PAY_AUTO_SERVICE_TYPE_NAME, @CONTRACT_CODE
40
	WHILE @@FETCH_STATUS = 0
41
	BEGIN
42
		IF(@REQ_PAY_AUTO_STATUS <> 'EFFECTIVE')
43
		BEGIN
44
			PRINT N'Phiếu yêu cầu thanh toán tự động chưa có hiệu lực'
45
		END
46
		ELSE
47
		BEGIN
48
			PRINT '0'
49
			-- LAY CAC DONG THANH TOAN CHUA THANH TOAN - CHI LAY 1 LAN 1 KY THANH TOAN
50
			DECLARE  @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20), @EXPECTED_DT VARCHAR(50), @PAY_AUTO_AMT DECIMAL(18,2), @PAY_AUTO_DESC NVARCHAR(1000), @PAY_AUTO_STATUS VARCHAR(15), @START_DT VARCHAR(20), @END_DT VARCHAR(20), 
51
			@TYPE_PERIOD VARCHAR(20)
52
			DECLARE cursorScheduleDetail CURSOR LOCAL FOR 
53
			SELECT TOP 1 REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, EXPECTED_DT, PAY_AUTO_AMT, PAY_AUTO_DESC, PAY_AUTO_STATUS, START_DT, END_DT, TYPE_PERIOD
54
			FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL
55
			WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID 
56
			AND PAY_AUTO_STATUS = 'N' 
57
			AND EXPECTED_DT < CONVERT(DATE, @p_APP_DT, 103)
58
			Open cursorScheduleDetail
59

    
60
			-- TAO CAC PHIEU THANH TOAN TU DONG
61
			FETCH NEXT FROM cursorScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @START_DT, @END_DT, @TYPE_PERIOD
62
			WHILE @@FETCH_STATUS = 0
63
			BEGIN
64
				-- NEU PHIEU LA THANH TOAN BAN TU DONG THI SET LAI GIA TRI DE NGUOI TAO XAC NHAN TRUOC KHI THANH TOAN KY KE TIEP
65
				UPDATE TR_REQ_PAYMENT_AUTO SET IS_MAKER_CONFIRM = '0' WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
66

    
67

    
68
				DECLARE @REQ_PAY_ID VARCHAR(20), @REQ_PAY_CODE VARCHAR(20)
69
				DECLARE @DAY VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20)
70
				DECLARE @END_PERIOD_DT DATE, @END_PERIOD_0_DT DATE
71
				DECLARE @DAY_PERIOD_END VARCHAR(20), @MONTH_PERIOD_END VARCHAR(20), @YEAR_PERIOD_END VARCHAR(20)
72

    
73
				-- TH Nam trong 1 thang: 01/03/2023-31/12/2023
74
				IF(DAY(CONVERT(DATE, @START_DT, 103)) < DAY(CONVERT(DATE, @END_DT, 103)))
75
				BEGIN
76
					SET @DAY = CONVERT(VARCHAR(20), DAY(CONVERT(DATE, @START_DT, 103)))
77
					SET @MONTH = CONVERT(VARCHAR(20), MONTH(CONVERT(DATE, @EXPECTED_DT, 103)))
78
					SET @YEAR = CONVERT(VARCHAR(20), YEAR(CONVERT(DATE, @EXPECTED_DT, 103)))
79

    
80
					SET @END_PERIOD_DT = CONVERT(DATE, @EXPECTED_DT, 103)
81
					SET @END_PERIOD_DT = DATEADD(MONTH, CONVERT(INT, @TYPE_PERIOD) - 1, @END_PERIOD_DT)
82
					SET @DAY_PERIOD_END = CONVERT(VARCHAR(20), DAY(@END_DT))
83
					SET @MONTH_PERIOD_END = CONVERT(VARCHAR(20), MONTH(@END_PERIOD_DT))
84
					SET @YEAR_PERIOD_END = CONVERT(VARCHAR(20), YEAR(@END_PERIOD_DT))
85
				END
86
				-- TH1: 15/03/2023-14/06/2023: Thanh toan ngay 20 --> lớn  hơn start_dt	--> Lay thang expect_dt --> vd 15/03/2023 đến 14/06/2023
87
				-- TH2: 15/03/2023-14/06/2023: Thanh toan ngay 7  --> bé  hơn start_dt	--> Lay thang expect_dt + 1
88
				ELSE
89
				BEGIN
90
					-- TH1
91
					IF(DAY(CONVERT(DATE, @START_DT, 103)) < DAY(CONVERT(DATE, @EXPECTED_DT, 103)))
92
					BEGIN
93
						SET @DAY = CONVERT(VARCHAR(20), DAY(CONVERT(DATE, @START_DT, 103)))
94
						SET @MONTH = CONVERT(VARCHAR(20), MONTH(CONVERT(DATE, @EXPECTED_DT, 103)))
95
						SET @YEAR = CONVERT(VARCHAR(20), YEAR(CONVERT(DATE, @EXPECTED_DT, 103)))
96

    
97
						SET @END_PERIOD_DT = CONVERT(DATE, @EXPECTED_DT, 103)
98
						SET @END_PERIOD_DT = DATEADD(MONTH, CONVERT(INT, @TYPE_PERIOD), @END_PERIOD_DT)
99
						SET @DAY_PERIOD_END = CONVERT(VARCHAR(20), DAY(@END_DT))
100
						SET @MONTH_PERIOD_END = CONVERT(VARCHAR(20), MONTH(@END_PERIOD_DT))
101
						SET @YEAR_PERIOD_END = CONVERT(VARCHAR(20), YEAR(@END_PERIOD_DT))
102
					END
103
					--TH2
104
					ELSE
105
					BEGIN
106
						SET @END_PERIOD_0_DT = CONVERT(DATE, @EXPECTED_DT, 103)
107
						SET @END_PERIOD_0_DT = DATEADD(MONTH, 1, @END_PERIOD_DT)
108
						SET @DAY = CONVERT(VARCHAR(20), DAY(CONVERT(DATE, @START_DT, 103)))
109
						SET @MONTH = CONVERT(VARCHAR(20), MONTH(CONVERT(DATE, @END_PERIOD_0_DT, 103)))
110
						SET @YEAR = CONVERT(VARCHAR(20), YEAR(CONVERT(DATE, @END_PERIOD_0_DT, 103)))
111

    
112
						SET @END_PERIOD_DT = CONVERT(DATE, @EXPECTED_DT, 103)
113
						SET @END_PERIOD_DT = DATEADD(MONTH, CONVERT(INT, @TYPE_PERIOD), @END_PERIOD_DT)
114
						SET @DAY_PERIOD_END = CONVERT(VARCHAR(20), DAY(@END_DT))
115
						SET @MONTH_PERIOD_END = CONVERT(VARCHAR(20), MONTH(@END_PERIOD_DT))
116
						SET @YEAR_PERIOD_END = CONVERT(VARCHAR(20), YEAR(@END_PERIOD_DT))
117
					END
118
				END
119

    
120

    
121

    
122

    
123
				DECLARE @BRANCH_MANAGE_NAME NVARCHAR(250) = (	SELECT TOP 1 BRANCH_NAME 
124
																FROM CM_BRANCH 
125
																WHERE BRANCH_ID = (	SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @CONTRACT_ID)
126
															)
127
				/*
128
				PRINT '@START_DATE: ' + @START_DATE
129
				PRINT '@END_DATE: ' + @END_DATE
130
				PRINT '@BRANCH_NAME: ' + @BRANCH_NAME
131
				PRINT '@BRANCH_MANAGE_NAME: ' + @BRANCH_MANAGE_NAME
132
				PRINT '@REQ_PAY_AUTO_SERVICE_TYPE_NAME: ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME
133
				PRINT '@CONTRACT_CODE: ' + @CONTRACT_CODE
134
				*/
135

    
136
				-- TAO PHIEU THANH TOAN PHAN MASTER
137
				-- BEGIN KHOI TAO GIA TRI
138
				EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT', '','', @REQ_PAY_CODE out
139
				IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE  = @REQ_PAY_CODE )
140
				BEGIN
141
					ROLLBACK TRANSACTION
142
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Số phiếu đề nghị thanh toán đã tồn tại trong hệ thống' ErrorDesc
143
					RETURN '-1'
144
				END
145
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT', @REQ_PAY_ID out
146
				IF @REQ_PAY_ID='' OR @REQ_PAY_ID IS NULL GOTO ABORT
147

    
148
				-- GET DON VI QUAN LY HOP DONG
149
				DECLARE @BRANCH_MANAGE_ID NVARCHAR(250) =	(	SELECT TOP 1 BRANCH_ID 
150
																FROM CM_BRANCH 
151
																WHERE BRANCH_ID = (	SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @CONTRACT_ID)
152
															)
153

    
154
				-- NOI DUNG THANH TOAN, DUNG CHO NHIEU TABLE
155
				DECLARE @PAY_AUTO_DESC_DETAIL NVARCHAR(1000) = ''
156
				DECLARE @PAY_AUTO_TRN_DESC_DETAIL VARCHAR(1000) = ''
157
				IF(ISNULL(@CONTRACT_CODE, '') = '')
158
				BEGIN
159
					PRINT '1: ' + @PAY_AUTO_DESC_DETAIL
160
					SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @DAY + '/' + @MONTH + '/' + @YEAR + N' đến ' + @DAY_PERIOD_END + '/' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END  + N' theo GDNTT số ' + @REQ_PAY_CODE
161
					SET @PAY_AUTO_TRN_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau(@BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @DAY + '/' + @MONTH + '/' + @YEAR + N' đến ' + @DAY_PERIOD_END + '/' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END  + N' theo GDNTT số ' + @REQ_PAY_CODE))
162
				END
163
				ELSE
164
				BEGIN
165
					PRINT '2: ' + @PAY_AUTO_DESC_DETAIL
166
					SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @DAY + '/' + @MONTH + '/' + @YEAR + N' đến ' + @DAY_PERIOD_END + '/' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END + N' theo hợp đồng số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE
167
					SET @PAY_AUTO_TRN_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau(@BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @DAY + '/' + @MONTH + '/' + @YEAR + N' đến ' + @DAY_PERIOD_END + '/' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END + N' theo hợp đồng số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE))
168
				END
169

    
170
				-- END KHOI TAO GIA TRI select * from [TR_REQ_PAYMENT]
171
				PRINT '3'
172
				INSERT INTO [dbo].[TR_REQ_PAYMENT]
173
				(REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, 
174
				REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL
175
				REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, 
176
				MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC
177
				CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT
178
				BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY, IS_CREATE_AUTO, TYPE_AUTO, IS_CREATE_AUTO_DONE)
179
				VALUES
180
				(@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC_DETAIL, 'P', 
181
				NULL, NULL,  NULL, NULL, NULL,  --NULL
182
				'1', CONVERT(DATE, @EXPECTED_DT, 103), 'VND', @PAY_AUTO_AMT, NULL, 
183
				'admin', GETDATE(), NULL, 'A', 'admin', GETDATE(),  --HC
184
				GETDATE(), 'admin', 'A', 'admin', GETDATE(), NULL, --KT
185
				@BRANCH_CREATE, NULL, '1', 'admin', GETDATE(), 'admin', '0', 1, 'Y', NULL, 'Y', 'A', 'N')
186

    
187
				IF(ISNULL(@LIST_REQ_PAYMENT, '') = '')
188
				BEGIN
189
					SET @LIST_REQ_PAYMENT = @REQ_PAY_ID;
190
				END
191
				ELSE
192
				BEGIN
193
					SET @LIST_REQ_PAYMENT = @LIST_REQ_PAYMENT + ',' + @REQ_PAY_ID;
194
				END
195

    
196
				PRINT '4'
197
				-- TẠO LƯỚI PHIEU DE NGHI THANH TOAN CHO PYC
198
				INSERT INTO [dbo].[TR_REQ_PAY_AUTO_PAYMENTS]
199
				(REQ_PAY_AUTO_ID, REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, 
200
				REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL
201
				REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, 
202
				MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC
203
				CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT
204
				BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY)
205
				VALUES
206
				(@REQ_PAY_AUTO_ID ,@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC, 'P', 
207
				NULL, NULL,  NULL, NULL, NULL,  --NULL
208
				'1', CONVERT(DATE, @EXPECTED_DT, 103), 'VND', @PAY_AUTO_AMT, NULL, 
209
				'admin', GETDATE(), NULL, 'A', 'admin', GETDATE(),  --HC
210
				GETDATE(), 'admin', 'A', 'admin', GETDATE(), @CONFIRM_NOTE, --KT
211
				@BRANCH_CREATE, NULL, '1', 'admin', GETDATE(), @TRANSFER_USER_RECEIVE, '0', 1, 'Y', NULL)
212
				-- INSERT VAO PL_PROCESS
213
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
214
				VALUES(@REQ_PAY_ID,'AUTO_APPR','admin',GETDATE(), N'Hệ thống tạo phiếu thanh toán tự động',N'Hệ thống tạo phiếu thanh toán tự động')
215

    
216
				-- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ
217
				DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
218
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
219
				IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
220
				INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID, REQ_PAY_ID,REF_ID, [TYPE], MAKER_ID, CREATE_DT, IS_CLOSED, REF_TYPE, DELIVERY_DT) 
221
				VALUES(@REQ_PAYDTID_PERIOD, @REQ_PAY_ID, @CONTRACT_ID, 'PAY', 'admin', GETDATE(), 'N', 'C', CONVERT(DATE,NULL,103))
222
				PRINT '5'
223
				-- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ
224
				DECLARE @PERIOD_ID VARCHAR(15);
225
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
226
				IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
227
				INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID, REQ_PAY_ID, PAY_TYPE, CONTRACT_ID, PAY_DT_REAL ,OLD_INDEX, NEW_INDEX, AMT_PAY, 
228
				AUTH_STATUS_KT, CURRENCY, RATE, FROM_DATE, TO_DATE,AD_PAY_ID, PROCESS, PARENT_ID, PAY_PHASE, REASON, TYPE_COST,FR_LEVEL , TO_LEVEL)
229
				VALUES (@PERIOD_ID, @REQ_PAY_ID,'PAY', @CONTRACT_ID, NULL, NULL , NULL , @PAY_AUTO_AMT, 
230
				'A', 'VND', '1', NULL, NULL, NULL, '1', NULL, N'Từ ' + @DAY + '/' + @MONTH + '/' + @YEAR + N' đến ' + @DAY_PERIOD_END + '/' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END, @PAY_AUTO_DESC_DETAIL, NULL, NULL, NULL )
231
				PRINT '6'
232
				-- TẠO LƯỚI THÔNG TIN HẠNG MỤC NGÂN SÁCH VÀ CHI PHÍ/
233
				/*
234
				DECLARE @p_BUDGET_ID VARCHAR(15);
235
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
236
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
237
				INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID, GD_ID, REQ_PAY_ID, TRADE_ID, AMT_APP, AMT_DO, AMT_EXE, AMT_REMAIN, MAKER_ID, CREATE_DT, CURRENCY, RATE, REASON, TYPE_COST, 
238
				FR_LEVEL, TO_LEVEL, MONTH_RATE, YEAR_RATE, BUDGET_TYPE, BRANCH_ID, DEP_ID, TLNAME, ROLENAME, BRANCH_TAKE_COST_ID, DEP_TAKE_COST_ID, KHOI_TAKE_COST_ID, BRANCH_KIND) 
239
				VALUES (@p_BUDGET_ID, @GD_ID, @p_REQ_PAY_AUTO_ID, @TRADE_ID, @AMT_APP, @AMT_DO, @AMT_EXE, @AMT_REMAIN_GD, @p_MAKER_ID, GETDATE(), @p_REQ_TYPE_CURRENCY, @p_RATE, @REASON, @TYPE_COST , 
240
				@FR_LEVEL, @TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID, @DEP_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @BRANCH_KIND)
241
				*/
242

    
243
				-- TẠO LƯỚI THÔNG TIN PHƯƠNG THỨC THANH TOÁN
244
				DECLARE  @RECEIVE_ID VARCHAR(20), @RECEIVE_NAME VARCHAR(20), @REQ_PAY_REASON NVARCHAR(1000),@TOTAL_AMT DECIMAL(18, 2),@REQ_PAY_TYPE VARCHAR(20), @REQ_PAY_DESC NVARCHAR(1000),@REQ_PAY_ENTRIES VARCHAR(20),
245
				@ACC_NO VARCHAR(20), @ACC_NAME NVARCHAR(250), @ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(20),@RATE DECIMAL(18,2),@CHECK_IN VARCHAR(20), @TYPE_TRANSFER VARCHAR(20), 
246
				@BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME NVARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20), @EMP_ID VARCHAR(20), @TEMP VARCHAR(20), @CREATE_DT VARCHAR(20)
247
				DECLARE cursorMethod CURSOR LOCAL FOR 
248
				SELECT EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, 
249
				ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT
250
				FROM TR_REQ_PAY_AUTO_METHOD
251
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
252
				Open cursorMethod
253
				FETCH NEXT FROM cursorMethod INTO @EMP_ID, @REQ_PAY_REASON, @TOTAL_AMT, @REQ_PAY_TYPE, @REQ_PAY_DESC, @REQ_PAY_ENTRIES, @TEMP, @MAKER_ID, @CREATE_DT, 
254
				@ACC_NO, @ACC_NAME, @ISSUED_BY, @ISSUED_DT, @CURRENCY, @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
255
				WHILE @@FETCH_STATUS = 0
256
				BEGIN
257
					DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
258
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
259
					IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
260
					INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID, REQ_PAY_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, 
261
					ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT)
262
					VALUES (@p_REQ_PAY_METHOD_ID, @REQ_PAY_ID, @RECEIVE_ID, @PAY_AUTO_DESC_DETAIL, @PAY_AUTO_AMT, @REQ_PAY_TYPE, @REQ_PAY_DESC, @REQ_PAY_ENTRIES, '', 'admin', GETDATE(),
263
					@ACC_NO, @ACC_NAME, @ISSUED_BY, CONVERT(DATE,@ISSUED_DT,103), @CURRENCY , @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT )
264

    
265
				IF @@error<>0 GOTO ABORT;
266
				FETCH NEXT FROM cursorMethod INTO @EMP_ID, @REQ_PAY_REASON, @TOTAL_AMT, @REQ_PAY_TYPE, @REQ_PAY_DESC, @REQ_PAY_ENTRIES, @TEMP, @MAKER_ID, @CREATE_DT, 
267
				@ACC_NO, @ACC_NAME, @ISSUED_BY, @ISSUED_DT, @CURRENCY, @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
268
				END
269
				CLOSE cursorMethod
270
				DEALLOCATE cursorMethod
271
				PRINT '7'
272
				-- TẠO LƯỚI THÔNG TIN HẠCH TOÁN
273
				DECLARE @FUNCTION_TYPE VARCHAR(15), @TRN_TYPE NVARCHAR(40), @REF_ID VARCHAR(15), @ENTRY_PAIR varchar(50), @DR_CR varchar(2), @DR_CR_NAME nvarchar(50), 
274
				@ACCT varchar(100), @ACCT_NAME varchar(500), @AMT DECIMAL(18,2), @EXC_RATE DECIMAL(18,2), @TRN_DATE VARCHAR(20), @TRN_DESC nvarchar(1000), @AUTH_STATUS varchar(2), @APPROVE_DT varchar(20),
275
				@CREATE_DT_KT varchar(20), @APPROVE_DT_KT varchar(20), @IS_TRANSFER_EXTERNAL varchar(20), @DEP_ID_ENTRY varchar(20)
276
				DECLARE cursorEntries CURSOR LOCAL FOR 
277
				SELECT REQ_PAY_AUTO_ID, FUNCTION_TYPE, TRN_TYPE, REF_ID, ENTRY_PAIR, DR_CR, DR_CR_NAME, ACCT, ACCT_NAME, BRANCH_ID, DEP_ID, AMT, CURRENCY, EXC_RATE,
278
				TRN_DATE, TRN_DESC, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, MAKER_ID_KT, CREATE_DT_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, RECORD_STATUS, IS_TRANSFER_EXTERNAL
279
				FROM TR_REQ_PAY_AUTO_ENTRIES
280
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
281
				Open cursorEntries
282
				PRINT '8'
283
				FETCH NEXT FROM cursorEntries INTO @REQ_PAY_AUTO_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @AMT, @CURRENCY, @EXC_RATE,
284
				@TRN_DATE, @TRN_DESC, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL
285
				WHILE @@FETCH_STATUS = 0
286
				BEGIN
287
					DECLARE @l_TR_REQ_PAY_ENTRIES_D VARCHAR(15);
288
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @l_TR_REQ_PAY_ENTRIES_D OUT;
289
					IF @l_TR_REQ_PAY_ENTRIES_D='' OR @l_TR_REQ_PAY_ENTRIES_D IS NULL GOTO ABORT;
290

    
291
					INSERT INTO [TR_REQ_PAY_ENTRIES] ([REQ_PAY_DT_ID],[REQ_PAY_ID],[FUNCTION_TYPE],[TRN_TYPE],[REF_ID],[ENTRY_PAIR],[DR_CR],[DR_CR_NAME],[ACCT],[ACCT_NAME],[BRANCH_ID],[DEP_ID], [AMT],[CURRENCY],[EXC_RATE],
292
					[TRN_DATE],[TRN_DESC],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[MAKER_ID_KT],[CREATE_DT_KT],[AUTH_STATUS_KT],[CHECKER_ID_KT],[APPROVE_DT_KT],[RECORD_STATUS],[IS_TRANSFER_EXTERNAL])
293
					VALUES (@l_TR_REQ_PAY_ENTRIES_D, @REQ_PAY_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @PAY_AUTO_AMT, @CURRENCY, @EXC_RATE,
294
					@TRN_DATE, @PAY_AUTO_TRN_DESC_DETAIL, 'admin', @CREATE_DT, @AUTH_STATUS, 'admin', @APPROVE_DT, 'admin', @CREATE_DT_KT, @AUTH_STATUS_KT, 'admin', @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL)
295

    
296
				IF @@error<>0 GOTO ABORT;
297
				FETCH NEXT FROM cursorEntries INTO @REQ_PAY_AUTO_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @AMT, @CURRENCY, @EXC_RATE,
298
				@TRN_DATE, @TRN_DESC, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL
299
				END
300
				CLOSE cursorEntries
301
				DEALLOCATE cursorEntries
302
				PRINT '9'
303
				--- BAN BUT TOAN VAO CORE
304
				DECLARE @RES VARCHAR(10)
305
				EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @REQ_PAY_ID,'admin','admin', @RES OUT 
306

    
307
				-- TẠO LƯỚI CHUYỂN TIỀN NGOÀI HỆ THỐNG
308
				-- LUOI DON VI CHUYEN
309
				DECLARE @BRANCH_TRANFSER_NAME NVARCHAR(255), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), @ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15)
310
				DECLARE cursorTrans CURSOR LOCAL FOR 
311
				SELECT MAKER_ID, BRANCH_TRANFSER_NAME, TYPE_TRANSFER_ID, PRODUCT_ID, OBJECT_TRANSFER_ID, BRANCH_ID, ACC_NO_TRANSFER, BRANCH_TRANSFER_ID
312
				FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS
313
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
314
				Open cursorTrans
315
				PRINT '10'
316
				FETCH NEXT FROM cursorTrans INTO @MAKER_ID_KT, @BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID
317
				WHILE @@FETCH_STATUS = 0
318
				BEGIN
319
					DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15)
320
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT;
321
					IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT;
322
					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 , 
323
					BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID)
324
					VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@REQ_PAY_ID ,'admin' , GETDATE(), NULL , NULL, 
325
					@BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID)
326

    
327
				IF @@error<>0 GOTO ABORT;
328
				FETCH NEXT FROM cursorTrans INTO @MAKER_ID_KT, @BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID
329
				END
330
				CLOSE cursorTrans
331
				DEALLOCATE cursorTrans
332
				PRINT '11'
333
				-- LUOI DON VI NHAN
334
				DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
335
				@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)
336
				DECLARE cursorRec CURSOR LOCAL FOR 
337
				SELECT MAKER_ID, 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
338
				FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC
339
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
340
				Open cursorRec
341
				PRINT '12'
342
				FETCH NEXT FROM cursorRec INTO @MAKER_ID_KT, @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
343
				WHILE @@FETCH_STATUS = 0
344
				BEGIN
345
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
346
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
347
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
348

    
349
					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,
350
					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)
351
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @REQ_PAY_ID, 'admin', GETDATE(), NULL, NULL,
352
					@CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @PAY_AUTO_AMT, @PAY_AUTO_TRN_DESC_DETAIL, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO)
353

    
354
				IF @@error<>0 GOTO ABORT;
355
				FETCH NEXT FROM cursorRec INTO @MAKER_ID_KT, @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
356
				END
357
				CLOSE cursorRec
358
				DEALLOCATE cursorRec
359
				PRINT '13'
360
				
361
				UPDATE TR_REQ_PAY_AUTO_SCHEDULE_DETAIL 
362
				SET PAY_AUTO_DESC = @PAY_AUTO_DESC_DETAIL, PAY_AUTO_STATUS = 'Y', EXACT_DT = GETDATE() 
363
				WHERE REQ_PAY_AUTO_SCHEDULE_DETAIL_ID = @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID
364

    
365
			FETCH NEXT FROM cursorScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @START_DT, @END_DT, @TYPE_PERIOD
366
			END
367
			CLOSE cursorScheduleDetail
368
			DEALLOCATE cursorScheduleDetail
369
		END
370
	FETCH NEXT FROM cursorPaymentAuto INTO @REQ_PAY_AUTO_ID, @REQ_PAY_AUTO_CODE, @REQ_PAY_AUTO_TYPE, @REQ_PAY_AUTO_SERVICE_TYPE, @REQ_PAY_AUTO_STATUS, 
371
	@REQ_PAY_AUTO_EFFECTIVE_DT, @BRANCH_ID, @DEP_ID, @BRANCH_CREATE, @TRANSFER_USER_RECEIVE, @CONFIRM_NOTE, 
372
	@CONTRACT_ID, @TRANSFER_MAKER, @TRANSFER_DT, @PROCESS, @AUTH_STATUS_KT, @RECORD_STATUS, @MAKER_ID, @CHECKER_ID, @MAKER_ID_KT, @CHECKER_ID_KT, @BRANCH_NAME, @REQ_PAY_AUTO_SERVICE_TYPE_NAME, @CONTRACT_CODE
373
	END
374
	CLOSE cursorPaymentAuto
375
	DEALLOCATE cursorPaymentAuto
376
	
377
COMMIT TRANSACTION
378

    
379
SELECT '0' as Result, @LIST_REQ_PAYMENT list_req_payment, N'Thêm mới thành công' ErrorDesc
380
RETURN '0'
381

    
382
ABORT:
383
BEGIN
384
	ROLLBACK TRANSACTION
385
	SELECT '-1' as Result, @LIST_REQ_PAYMENT list_req_payment, N'Lỗi không xác định' ErrorDesc
386
	RETURN '-1'
387
End
388

    
389
GO
390

    
391

    
392
ALTER PROCEDURE [dbo].[TR_REQ_PAY_AUTO_CREATE_REQ_PAYMENT_FROM_SYSTEM_INVOICE]
393
@p_XMP_RECURRING XML
394
AS
395
BEGIN TRANSACTION
396

    
397
	DECLARE @list_req_payment NVARCHAR(MAX) = ''
398
-- DS CAC KY DA THANH TOAN
399
	DECLARE @billRef VARCHAR(20), @billCode VARCHAR(20), @customerName NVARCHAR(MAX), @amount VARCHAR(20), @accountNo VARCHAR(20), @accountType VARCHAR(20), 
400
	@createdTime VARCHAR(21), @partner VARCHAR(20), @resultCode VARCHAR(20), @resultDesc NVARCHAR(MAX), @transDesc NVARCHAR(MAX), @coreXref VARCHAR(20), @partnerAccount VARCHAR(20), 
401
	@billCodeAlias VARCHAR(20), @prvCode VARCHAR(20), @sevCode VARCHAR(20), @year VARCHAR(20), @customerAddress VARCHAR(20), @month VARCHAR(20), 
402
	@accountName VARCHAR(20), @accountNoRec VARCHAR(20), @accountNameRec VARCHAR(20), @billDate VARCHAR(20)
403

    
404
	DECLARE @hDocRecurring INT EXEC sp_xml_preparedocument @hDocRecurring OUTPUT, @p_XMP_RECURRING;
405
	DECLARE XmlAutoRecurring CURSOR LOCAL FOR
406
	SELECT * FROM OPENXML(@hDocRecurring, 'Root/XmlAutoRecurring',2) 
407
	WITH(billRef VARCHAR(20), billCode VARCHAR(20), customerName NVARCHAR(MAX), amount VARCHAR(20), accountNo VARCHAR(20), accountType VARCHAR(20), createdTime VARCHAR(30),
408
	[partner] VARCHAR(20), resultCode VARCHAR(20), resultDesc NVARCHAR(MAX), transDesc NVARCHAR(MAX), coreXref VARCHAR(20), partnerAccount VARCHAR(20), [month] VARCHAR(20))
409
	OPEN XmlAutoRecurring
410

    
411
--- DUYET QUA TUNG KY THANH TOAN
412
	FETCH NEXT FROM XmlAutoRecurring INTO @billRef, @billCode, @customerName, @amount, @accountNo, @accountType, @createdTime,
413
	@partner, @resultCode, @resultDesc, @transDesc, @coreXref, @partnerAccount, @month
414
	WHILE @@fetch_status=0 
415
	BEGIN
416
		IF(@resultCode NOT IN  ('00', '100'))
417
		BEGIN
418
			PRINT 'KY THANH TOAN KHONG HOP LE' + @billRef
419
			-- THEM VAO LOG CAC KY THANH TOAN LOI
420
		END
421
		ELSE IF(@accountType <> 'A')
422
		BEGIN
423
			PRINT 'KHONG PHAI THANH TOAN BANG THE' + @billRef
424
		END
425
		ELSE IF(EXISTS(SELECT * FROM TR_REQ_PAY_AUTO_RECURRING_HISTORY WHERE billRef = @billRef AND @billCode = billCode AND @coreXref = coreXref))
426
		BEGIN
427
			PRINT 'KY THANH TOAN DA TON TAI TRONG HE THONG - DA THUC HIEN THANH TOAN TREN AMS: ' + @billRef
428
		END
429
		ELSE IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_AUTO_RECURRING WHERE BILLCODE = @billCode))
430
		BEGIN
431
			PRINT 'KHONG CO BILLCODE TRONG HE THONG AMS: ' + @billCode
432
		END
433
		ELSE IF(NOT EXISTS	(SELECT *	FROM TR_REQ_PAY_AUTO_RECURRING A
434
										LEFT JOIN TR_REQ_PAYMENT_AUTO B ON A.REQ_PAY_AUTO_ID = B.REQ_PAY_AUTO_ID 
435
										WHERE A.BILLCODE = @billCode
436
							)
437
				)
438
		BEGIN
439
			PRINT 'KHONG CO PHIEU YEU CAU THANH TOAN TU DONG TRONG HE THONG AMS: ' + @billCode
440
		END
441
		ELSE
442
		BEGIN
443
			DECLARE @REQ_PAY_ID VARCHAR(20), @REQ_PAY_CODE VARCHAR(20), @CONTRACT_ID VARCHAR(20), @CONTRACT_CODE VARCHAR(20), @CONTRACT_NAME NVARCHAR(500),
444
			@BRANCH_ID NVARCHAR(20), @REQ_PAY_AUTO_SERVICE_TYPE_NAME NVARCHAR(200), @DEP_ID VARCHAR(20), @BRANCH_CREATE VARCHAR(20), 
445
			@REQ_PAY_AUTO_ID VARCHAR(20), @TRANSFER_USER_RECEIVE VARCHAR(20), @TRANS_GLCODE VARCHAR(20), @TRANS_GLNAME NVARCHAR(500)
446
			PRINT 'GET DATA BILLCODE'
447
			-- LAY DATA CUA BILLCODE DANG KY TRONG AMS
448
			SELECT TOP 1 @CONTRACT_ID = B.CONTRACT_ID, @CONTRACT_CODE = E.CONTRACT_CODE, @CONTRACT_NAME = E.[CONTRACT_NAME], 
449
			@BRANCH_ID = B.BRANCH_ID, @REQ_PAY_AUTO_SERVICE_TYPE_NAME = D.CONTENT, @DEP_ID = B.DEP_ID, @BRANCH_CREATE = B.BRANCH_CREATE,
450
			@REQ_PAY_AUTO_ID = B.REQ_PAY_AUTO_ID, @TRANSFER_USER_RECEIVE = B.TRANSFER_USER_RECEIVE, 
451
			@TRANS_GLCODE = A.TRANS_GLCODE, @TRANS_GLNAME = A.TRANS_GLNAME
452
			FROM TR_REQ_PAY_AUTO_RECURRING A
453
			LEFT JOIN TR_REQ_PAYMENT_AUTO B ON A.REQ_PAY_AUTO_ID = B.REQ_PAY_AUTO_ID
454
			LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID
455
			LEFT JOIN CM_ALLCODE D ON B.REQ_PAY_AUTO_SERVICE_TYPE = D.CDVAL AND D.CDNAME = 'PAY_SER_AUTO' AND CDTYPE = 'REQ_AUTO'
456
			LEFT JOIN TR_CONTRACT E ON B.CONTRACT_ID = E.CONTRACT_ID
457
			WHERE BILLCODE = @billCode
458
			PRINT 'LUU LOG KY THANH TOAN'
459
			print @createdTime
460
			-- LUU LOG KY THANH TOAN
461
			INSERT INTO TR_REQ_PAY_AUTO_RECURRING_HISTORY(billRef, billCode, customerName, amount, accountNo, accountType, createdTime,
462
			[partner], resultCode, resultDesc, transDesc, coreXref, partnerAccount, MAKER_ID, CREATE_DT)
463
			VALUES (@billRef, @billCode, @customerName, @amount, @accountNo, @accountType, CONVERT(DATE, @createdTime, 103),
464
			@partner, @resultCode, @resultDesc, @transDesc, @coreXref, @partnerAccount, 'admin', GETDATE())
465

    
466
			-------------------- BEGIN TAO PHIEU DE NGHI THANH TOAN TU DONG ----------------------------------
467

    
468
			-- BEGIN KHOI TAO GIA TRI
469
			-- ID PDN THANH TOAN
470
			PRINT 'GEN ID PDN THANH TOAN'
471
			EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT', '','', @REQ_PAY_CODE out
472
			IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE  = @REQ_PAY_CODE )
473
			BEGIN
474
				ROLLBACK TRANSACTION
475
				SELECT '-1' as Result, @list_req_payment LIST_REQ_PAYMENT, N'Số phiếu đề nghị thanh toán đã tồn tại trong hệ thống' ErrorDesc
476
				RETURN '-1'
477
			END
478
			PRINT 'GEN MA CODE PDN THANH TOAN'
479
			-- MA CODE PDN THANH TOAN
480
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT', @REQ_PAY_ID out
481
			IF @REQ_PAY_ID='' OR @REQ_PAY_ID IS NULL GOTO ABORT
482
			PRINT 'GET DON VI QUAN LY HOP DONG'
483
			DECLARE @BRANCH_MANAGE_ID NVARCHAR(250) =	(	SELECT TOP 1 BRANCH_ID 
484
															FROM CM_BRANCH 
485
															WHERE BRANCH_ID = (	SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @CONTRACT_ID)
486
														)
487
			
488
			DECLARE @BRANCH_MANAGE_NAME NVARCHAR(250) = (	SELECT TOP 1 BRANCH_NAME 
489
															FROM CM_BRANCH 
490
															WHERE BRANCH_ID = (	SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @CONTRACT_ID)
491
														)
492

    
493
			-- NOI DUNG THANH TOAN, DUNG CHO NHIEU TABLE
494
			DECLARE @PAY_AUTO_DESC_DETAIL NVARCHAR(1000) = ''
495
			DECLARE @PAY_AUTO_TRN_DESC_DETAIL VARCHAR(1000) = ''
496

    
497
			DECLARE @l_Month VARCHAR(2), @l_Year VARCHAR(4)
498
			SET @l_Month =  RIGHT('0' + CAST(DATEPART(MM, GETDATE()) AS VARCHAR(2)), 2);
499
			SET @l_Year =  RIGHT(YEAR(GETDATE()), 2);
500

    
501
			IF(ISNULL(@month, '') = '')
502
			BEGIN
503
				PRINT 'HOP DONG KHONG CO MA CODE: ' + @PAY_AUTO_DESC_DETAIL
504
				SET @month = @l_Month + '/' + @l_Year
505
				SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + ' ' + @l_Month + '/' + @l_Year + N' theo GDNTT số ' + @REQ_PAY_CODE
506
				SET @PAY_AUTO_TRN_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau(@BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + ' ' + @l_Month + '/' + @l_Year + N' theo GDNTT số ' + @REQ_PAY_CODE))
507
			END
508
			ELSE
509
			BEGIN
510
				PRINT 'HOP DONG CO MA CODE: ' + @PAY_AUTO_DESC_DETAIL
511
				SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N', ' + @month + N' theo GDNTT số ' + @REQ_PAY_CODE
512
				SET @PAY_AUTO_TRN_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau(@BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N', ' + @month + N' theo GDNTT số ' + @REQ_PAY_CODE))
513
			END
514

    
515
			-- END KHOI TAO GIA TRI
516
			PRINT 'TAO PHIEU DE NGHI THANH TOAN'
517
			INSERT INTO [dbo].[TR_REQ_PAYMENT]
518
			(REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, 
519
			REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL
520
			REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, 
521
			MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC
522
			CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT
523
			BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY, IS_CREATE_AUTO, TYPE_AUTO, SYSTEM_INVOICE_ID, IS_CREATE_AUTO_DONE)
524
			VALUES
525
			(@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC_DETAIL, 'P', 
526
			NULL, NULL,  NULL, NULL, NULL,  --NULL
527
			'1', GETDATE(), 'VND', @amount, NULL, 
528
			'admin', GETDATE(), NULL, 'A', 'admin', GETDATE(),  --HC
529
			GETDATE(), 'admin', 'A', 'admin', GETDATE(), NULL, --KT
530
			@BRANCH_CREATE, NULL, '1', 'admin', GETDATE(), NULL, '0', 1, 'Y', NULL, 'Y', 'B', @billRef, 'N')
531
			PRINT 'TAO LUOI PDN THANH TOAN CHO PYC TTTD'
532
			-- TẠO LƯỚI PHIEU DE NGHI THANH TOAN CHO PYC
533
			INSERT INTO [dbo].[TR_REQ_PAY_AUTO_PAYMENTS]
534
			(REQ_PAY_AUTO_ID, REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, 
535
			REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL
536
			REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, 
537
			MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC
538
			CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT
539
			BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY)
540
			VALUES
541
			(@REQ_PAY_AUTO_ID ,@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC_DETAIL, 'P', 
542
			NULL, NULL,  NULL, NULL, NULL,  --NULL
543
			'1', GETDATE(), 'VND', @amount, NULL, 
544
			'admin', GETDATE(), NULL, 'A', 'admin', GETDATE(),  --HC
545
			GETDATE(), 'admin', 'A', 'admin', GETDATE(), NULL, --KT
546
			@BRANCH_CREATE, NULL, '1', 'admin', GETDATE(), NULL, '0', 1, 'Y', NULL)
547
			PRINT 'THEM LICH SU XU LY'
548
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
549
			VALUES(@REQ_PAY_ID,'AUTO_APPR','admin',GETDATE(), N'Hệ thống tạo phiếu thanh toán tự động',N'Hệ thống tạo phiếu thanh toán tự động')
550

    
551
			
552
			-------------------- END TAO PHIEU DE NGHI THANH TOAN TU DONG ----------------------------------
553

    
554
			-- TẠO LƯỚI THÔNG TIN HỢP ĐỒNG ĐỊNH KỲ
555
			PRINT 'TAO LUOI THONG TIN HDDK'
556
			DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
557
			EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
558
			IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
559
			INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID, REQ_PAY_ID,REF_ID, [TYPE], MAKER_ID, CREATE_DT, IS_CLOSED, REF_TYPE, DELIVERY_DT) 
560
			VALUES(@REQ_PAYDTID_PERIOD, @REQ_PAY_ID, @CONTRACT_ID, 'PAY', 'admin', GETDATE(), 'N', 'C', CONVERT(DATE,NULL,103))
561
			
562
			-- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ
563
			PRINT 'TAO LUOI THONG TIN THANH TOAN HDDK'
564
			DECLARE @PERIOD_ID VARCHAR(15);
565
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
566
			IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
567
			INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID, REQ_PAY_ID, PAY_TYPE, CONTRACT_ID, PAY_DT_REAL ,OLD_INDEX, NEW_INDEX, AMT_PAY, 
568
			AUTH_STATUS_KT, CURRENCY, RATE, FROM_DATE, TO_DATE,AD_PAY_ID, PROCESS, PARENT_ID, PAY_PHASE, REASON, TYPE_COST,FR_LEVEL , TO_LEVEL)
569
			VALUES (@PERIOD_ID, @REQ_PAY_ID,'PAY', @CONTRACT_ID, NULL, NULL , NULL , @amount, 
570
			'A', 'VND', '1', NULL, NULL, NULL, '1', NULL, @month, @PAY_AUTO_DESC_DETAIL, NULL, NULL, NULL )
571

    
572
			-- TẠO LƯỚI THÔNG TIN HẠCH TOÁN
573

    
574
			-- BUT TOAN CHI PHI
575
				PRINT 'BUT TOAN CHI PHI'
576
				DECLARE @FUNCTION_TYPE VARCHAR(15), @TRN_TYPE NVARCHAR(40), @REF_ID VARCHAR(15), @ENTRY_PAIR varchar(50), @DR_CR varchar(2), @DR_CR_NAME nvarchar(50), 
577
				@ACCT varchar(100), @ACCT_NAME varchar(500), @AMT DECIMAL(18,2), @EXC_RATE DECIMAL(18,2), @TRN_DATE VARCHAR(20), @TRN_DESC nvarchar(1000), @AUTH_STATUS varchar(2), @APPROVE_DT varchar(20),
578
				@CREATE_DT_KT varchar(20), @APPROVE_DT_KT varchar(20), @IS_TRANSFER_EXTERNAL varchar(20), @DEP_ID_ENTRY varchar(20), 
579
				@CURRENCY varchar(20), @MAKER_ID varchar(20), @CREATE_DT varchar(20), @CHECKER_ID varchar(20), @MAKER_ID_KT varchar(20), @AUTH_STATUS_KT varchar(2), @CHECKER_ID_KT varchar(20), 
580
				@RECORD_STATUS varchar(20)
581
				DECLARE cursorEntries CURSOR LOCAL FOR 
582
				SELECT REQ_PAY_AUTO_ID, FUNCTION_TYPE, TRN_TYPE, REF_ID, ENTRY_PAIR, DR_CR, DR_CR_NAME, ACCT, ACCT_NAME, BRANCH_ID, DEP_ID, AMT, CURRENCY, EXC_RATE,
583
				TRN_DATE, TRN_DESC, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, MAKER_ID_KT, CREATE_DT_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, RECORD_STATUS, IS_TRANSFER_EXTERNAL
584
				FROM TR_REQ_PAY_AUTO_ENTRIES
585
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
586
				Open cursorEntries
587
				
588
				FETCH NEXT FROM cursorEntries INTO @REQ_PAY_AUTO_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @AMT, @CURRENCY, @EXC_RATE,
589
				@TRN_DATE, @TRN_DESC, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL
590
				WHILE @@FETCH_STATUS = 0
591
				BEGIN
592
					DECLARE @l_TR_REQ_PAY_ENTRIES VARCHAR(15);
593
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @l_TR_REQ_PAY_ENTRIES OUT;
594
					IF @l_TR_REQ_PAY_ENTRIES='' OR @l_TR_REQ_PAY_ENTRIES IS NULL GOTO ABORT;
595

    
596
					INSERT INTO [TR_REQ_PAY_ENTRIES] ([REQ_PAY_DT_ID],[REQ_PAY_ID],[FUNCTION_TYPE],[TRN_TYPE],[REF_ID],[ENTRY_PAIR],[DR_CR],[DR_CR_NAME],[ACCT],[ACCT_NAME],[BRANCH_ID],[DEP_ID], [AMT],[CURRENCY],[EXC_RATE],
597
					[TRN_DATE],[TRN_DESC],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[MAKER_ID_KT],[CREATE_DT_KT],[AUTH_STATUS_KT],[CHECKER_ID_KT],[APPROVE_DT_KT],[RECORD_STATUS],[IS_TRANSFER_EXTERNAL])
598
					VALUES (@l_TR_REQ_PAY_ENTRIES, @REQ_PAY_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, CONVERT(DECIMAL(18,2), @amount), 'VND', @EXC_RATE,
599
					@TRN_DATE, @PAY_AUTO_TRN_DESC_DETAIL, 'admin', GETDATE(), @AUTH_STATUS, 'admin', @APPROVE_DT, 'admin', GETDATE(), 'A', 'admin', @APPROVE_DT_KT, '1', @IS_TRANSFER_EXTERNAL)
600

    
601
				IF @@error<>0 GOTO ABORT;
602
				FETCH NEXT FROM cursorEntries INTO @REQ_PAY_AUTO_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @AMT, @CURRENCY, @EXC_RATE,
603
				@TRN_DATE, @TRN_DESC, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL
604
				END
605
				CLOSE cursorEntries
606
				DEALLOCATE cursorEntries
607
				PRINT '9'
608
				--- BAN BUT TOAN VAO CORE
609
				DECLARE @RES VARCHAR(10)
610
				EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @REQ_PAY_ID,'admin','admin', @RES OUT 
611

    
612
			-- BUT TOAN HE THONG
613
			-- NỢ
614
				DECLARE @l_TR_REQ_PAY_ENTRIES_D VARCHAR(15);
615
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @l_TR_REQ_PAY_ENTRIES_D OUT;
616
				INSERT INTO [TR_REQ_PAY_ENTRIES] ([REQ_PAY_DT_ID],[REQ_PAY_ID],[FUNCTION_TYPE],[TRN_TYPE],[REF_ID],
617
				[ENTRY_PAIR],[DR_CR],[DR_CR_NAME],
618
				[ACCT],[ACCT_NAME],[BRANCH_ID],[DEP_ID],
619
				[AMT],[CURRENCY],[EXC_RATE],[TRN_DATE],[TRN_DESC],
620
				[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[MAKER_ID_KT],[CREATE_DT_KT],[AUTH_STATUS_KT],[CHECKER_ID_KT],[APPROVE_DT_KT],[RECORD_STATUS],[IS_TRANSFER_EXTERNAL])
621
				VALUES(@l_TR_REQ_PAY_ENTRIES_D, @REQ_PAY_ID,NULL,'PAYMENT',NULL,
622
				'2', N'D', N'Nợ',
623
				@accountNo, @customerName, N'DV0001', N'',
624
				CONVERT(DECIMAL(18,2), @amount), N'VND', 1.00, GETDATE(), @PAY_AUTO_TRN_DESC_DETAIL,
625
				'admin',GETDATE(),'A','admin', GETDATE(),'admin',GETDATE(),'A','admin',GETDATE(),'1',NULL)
626

    
627
				DECLARE @l_PAY_ENTRIES_POST_D VARCHAR(15);
628
				EXEC SYS_CodeMasters_Gen 'PAY_ENTRIES_POST', @l_PAY_ENTRIES_POST_D OUT;
629
				INSERT INTO [PAY_ENTRIES_POST] ([ET_ID],[REF_NO],[TRN_ID],[REF_ID],[TRN_TYPE],
630
							[ENTRY_PAIR],[DO_BRN],[DRCR],[ACCT],[BRN_ID],[DEPT_ID],
631
							[AMT],[CURRENCY],[EXC_RATE],[EXP_TO_CORE],[TRN_DATE],[TRN_DESC],[MAKER_ID],[CHECKER_ID])
632
				VALUES	(@l_PAY_ENTRIES_POST_D, @coreXref, @REQ_PAY_ID, @l_TR_REQ_PAY_ENTRIES_D,'PAYMENT',
633
						'2',N'DV0001',N'D',
634
						@accountNo,N'DV0001',N'',
635
						CONVERT(DECIMAL(18,2), @amount),N'VND',1.00,N'1',GETDATE(),
636
						@PAY_AUTO_TRN_DESC_DETAIL,'admin','admin')
637

    
638
			-- CÓ
639
				DECLARE @l_TR_REQ_PAY_ENTRIES_C VARCHAR(15);
640
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @l_TR_REQ_PAY_ENTRIES_C OUT;
641
				INSERT INTO [TR_REQ_PAY_ENTRIES] ([REQ_PAY_DT_ID],[REQ_PAY_ID],[FUNCTION_TYPE],[TRN_TYPE],[REF_ID],
642
				[ENTRY_PAIR],[DR_CR],[DR_CR_NAME],
643
				[ACCT],[ACCT_NAME],[BRANCH_ID],[DEP_ID],
644
				[AMT],[CURRENCY],[EXC_RATE],[TRN_DATE],[TRN_DESC],
645
				[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[MAKER_ID_KT],[CREATE_DT_KT],[AUTH_STATUS_KT],[CHECKER_ID_KT],[APPROVE_DT_KT],[RECORD_STATUS],[IS_TRANSFER_EXTERNAL])
646
				VALUES(@l_TR_REQ_PAY_ENTRIES_C, @REQ_PAY_ID,NULL,'PAYMENT',NULL,
647
				'2',N'C',N'Có',
648
				@partnerAccount, @partner,N'DV0001',N'',
649
				CONVERT(DECIMAL(18,2), @amount),N'VND',1.00,GETDATE(),@PAY_AUTO_TRN_DESC_DETAIL,
650
				'admin',GETDATE(),'A','admin', GETDATE(),'admin',GETDATE(),'A','admin',GETDATE(),'1',NULL)
651

    
652
				DECLARE @l_PAY_ENTRIES_POST_C VARCHAR(15);
653
				EXEC SYS_CodeMasters_Gen 'PAY_ENTRIES_POST', @l_PAY_ENTRIES_POST_C OUT;
654
				INSERT INTO [PAY_ENTRIES_POST] ([ET_ID],[REF_NO],[TRN_ID],[REF_ID],[TRN_TYPE],
655
							[ENTRY_PAIR],[DO_BRN],[DRCR],[ACCT],[BRN_ID],[DEPT_ID],
656
							[AMT],[CURRENCY],[EXC_RATE],[EXP_TO_CORE],[TRN_DATE],[TRN_DESC],[MAKER_ID],[CHECKER_ID])
657
				VALUES	(@l_PAY_ENTRIES_POST_C, @coreXref, @REQ_PAY_ID,@l_TR_REQ_PAY_ENTRIES_C,'PAYMENT',
658
						'2',N'DV0001',N'C',
659
						@partnerAccount,N'DV0001',N'',
660
						CONVERT(DECIMAL(18,2), @amount),N'VND',1.00,N'1',GETDATE(),
661
						@PAY_AUTO_TRN_DESC_DETAIL, 'admin', 'admin')
662

    
663
			-- Mỗi lần chỉ quét 1 bill hợp lệ
664
			CLOSE XmlAutoRecurring;
665
			DEALLOCATE XmlAutoRecurring;
666
			COMMIT TRANSACTION
667
			SELECT '0' as Result, @list_req_payment LIST_REQ_PAYMENT, N'Quét bill thành công!' ErrorDesc
668
			RETURN '0'
669

    
670
		END
671
		
672
	IF @@error<>0 GOTO ABORT;
673
	FETCH NEXT FROM XmlAutoRecurring INTO @billRef, @billCode, @customerName, @amount, @accountNo, @accountType, @createdTime,
674
	@partner, @resultCode, @resultDesc, @transDesc, @coreXref, @partnerAccount, @month
675
	END;
676
	CLOSE XmlAutoRecurring;
677
	DEALLOCATE XmlAutoRecurring;
678
	
679
COMMIT TRANSACTION
680

    
681
SELECT '0' as Result, @list_req_payment LIST_REQ_PAYMENT, N'Quét bill thành công!' ErrorDesc
682
RETURN '0'
683

    
684
ABORT:
685
BEGIN
686
	ROLLBACK TRANSACTION
687
	SELECT '-1' as Result, @list_req_payment LIST_REQ_PAYMENT, N'Lỗi không xác định' ErrorDesc
688
	RETURN '-1'
689
End