Project

General

Profile

pay_auto_scan.txt

Luc Tran Van, 04/19/2023 02:37 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, 
19
	A.MAKER_ID_KT, A.CHECKER_ID_KT, B.BRANCH_NAME, C.CONTENT AS REQ_PAY_AUTO_SERVICE_TYPE_NAME, D.CONTRACT_CODE
20
	FROM TR_REQ_PAYMENT_AUTO A
21
	LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
22
	LEFT JOIN CM_ALLCODE C ON A.REQ_PAY_AUTO_SERVICE_TYPE = C.CDVAL AND CDNAME = 'PAY_SER_AUTO_TS' AND CDTYPE = 'REQ_AUTO'
23
	LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID
24
	WHERE 1=1
25
	AND A.REQ_PAY_AUTO_TYPE = 'A'
26
	AND A.AUTH_STATUS_KT = 'A' 
27
	AND REQ_PAY_AUTO_STATUS = 'EFFECTIVE' 
28
	AND A.RECORD_STATUS = '1' 
29
	AND A.CONTRACT_ID IS NOT NULL
30
	AND	(
31
			A.IS_MAKER_CONFIRM_CHECKBOX IS NULL
32
		OR	A.IS_MAKER_CONFIRM_CHECKBOX = '0' -- THANH TOAN TU DONG KHONG CAN XAC NHAN TRUOC
33
		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
34
		)
35
	Open cursorPaymentAuto
36

    
37
	-- QUET TUNG PHIEU YEU CAU THANH TOAN TU DONG CON HIEU LUC
38
	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, 
39
	@REQ_PAY_AUTO_EFFECTIVE_DT, @BRANCH_ID, @DEP_ID, @BRANCH_CREATE, @TRANSFER_USER_RECEIVE, @CONFIRM_NOTE, 
40
	@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
41
	WHILE @@FETCH_STATUS = 0
42
	BEGIN
43
		IF(@REQ_PAY_AUTO_STATUS <> 'EFFECTIVE')
44
		BEGIN
45
			PRINT N'Phiếu yêu cầu thanh toán tự động chưa có hiệu lực'
46
		END
47
		ELSE
48
		BEGIN
49
			PRINT '0'
50
			-- LAY CAC DONG THANH TOAN CHUA THANH TOAN - CHI LAY 1 LAN 1 KY THANH TOAN
51
			DECLARE  @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20), @EXPECTED_DT VARCHAR(50), @PAY_AUTO_AMT DECIMAL(18,2), @PAY_AUTO_DESC NVARCHAR(1000), 
52
			@PAY_AUTO_STATUS VARCHAR(15), @START_DT VARCHAR(20), @END_DT VARCHAR(20), @TYPE_PERIOD VARCHAR(20), @PAY_PHASE NVARCHAR(500)
53
			DECLARE cursorScheduleDetail CURSOR LOCAL FOR 
54
			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, PAY_PHASE
55
			FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL
56
			WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID 
57
			AND PAY_AUTO_STATUS = 'N' 
58
			AND EXPECTED_DT < CONVERT(DATE, @p_APP_DT, 103)
59
			Open cursorScheduleDetail
60

    
61
			-- TAO CAC PHIEU THANH TOAN TU DONG
62
			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, @PAY_PHASE
63
			WHILE @@FETCH_STATUS = 0
64
			BEGIN
65
				-- 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
66
				UPDATE TR_REQ_PAYMENT_AUTO SET IS_MAKER_CONFIRM = '0' WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
67
				
68
				DECLARE @REQ_PAY_ID VARCHAR(20), @REQ_PAY_CODE VARCHAR(20)
69

    
70
				/*
71
				DECLARE @DAY VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20)
72
				DECLARE @END_PERIOD_DT DATE, @END_PERIOD_0_DT DATE
73
				DECLARE @DAY_PERIOD_END VARCHAR(20), @MONTH_PERIOD_END VARCHAR(20), @YEAR_PERIOD_END VARCHAR(20)
74

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

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

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

    
114
						SET @END_PERIOD_DT = CONVERT(DATE, @EXPECTED_DT, 103)
115
						SET @END_PERIOD_DT = DATEADD(MONTH, CONVERT(INT, @TYPE_PERIOD), @END_PERIOD_DT)
116
						SET @DAY_PERIOD_END = CONVERT(VARCHAR(20), DAY(@END_DT))
117
						SET @MONTH_PERIOD_END = CONVERT(VARCHAR(20), MONTH(@END_PERIOD_DT))
118
						SET @YEAR_PERIOD_END = CONVERT(VARCHAR(20), YEAR(@END_PERIOD_DT))
119
					END
120
				END
121
				*/
122
				/*
123
				PRINT '@START_DATE: ' + @START_DATE
124
				PRINT '@END_DATE: ' + @END_DATE
125
				PRINT '@BRANCH_NAME: ' + @BRANCH_NAME
126
				PRINT '@BRANCH_MANAGE_NAME: ' + @BRANCH_MANAGE_NAME
127
				PRINT '@REQ_PAY_AUTO_SERVICE_TYPE_NAME: ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME
128
				PRINT '@CONTRACT_CODE: ' + @CONTRACT_CODE
129
				*/
130

    
131

    
132

    
133

    
134
				DECLARE @BRANCH_MANAGE_NAME NVARCHAR(250) = (	SELECT TOP 1 BRANCH_NAME 
135
																FROM CM_BRANCH 
136
																WHERE BRANCH_ID = (	SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @CONTRACT_ID)
137
															)
138

    
139
				-- TAO PHIEU THANH TOAN PHAN MASTER
140
				-- BEGIN KHOI TAO GIA TRI
141
				EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT', '','', @REQ_PAY_CODE out
142
				IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE  = @REQ_PAY_CODE )
143
				BEGIN
144
					ROLLBACK TRANSACTION
145
					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
146
					RETURN '-1'
147
				END
148
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT', @REQ_PAY_ID out
149
				IF @REQ_PAY_ID='' OR @REQ_PAY_ID IS NULL GOTO ABORT
150

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

    
157
				-- NOI DUNG THANH TOAN, DUNG CHO NHIEU TABLE
158
				DECLARE @PAY_AUTO_DESC_DETAIL NVARCHAR(1000) = ''
159
				DECLARE @PAY_AUTO_TRN_DESC_DETAIL VARCHAR(1000) = ''
160
				DECLARE @PAY_AUTO_TRANSFER_OUTSIDE_DESC_DETAIL VARCHAR(1000) = ''
161
				IF(ISNULL(@CONTRACT_CODE, '') = '')
162
				BEGIN
163
					PRINT '1: ' + @PAY_AUTO_DESC_DETAIL
164
					SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' ' + @PAY_PHASE + N' theo GDNTT số ' + @REQ_PAY_CODE
165
					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' ' + @PAY_PHASE + N' theo GDNTT số ' + @REQ_PAY_CODE))
166
					SET @PAY_AUTO_TRANSFER_OUTSIDE_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau('NH TMCP BAN VIET' + N' TTCP ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' ' + @PAY_PHASE + N' theo GDNTT số ' + @REQ_PAY_CODE))
167
				END
168
				ELSE
169
				BEGIN
170
					PRINT '2: ' + @PAY_AUTO_DESC_DETAIL
171
					SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' ' + @PAY_PHASE + N' theo hợp đồng số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE
172
					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' ' + @PAY_PHASE + N' theo hợp đồng số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE))
173
					SET @PAY_AUTO_TRANSFER_OUTSIDE_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau('NH TMCP BAN VIET' + N' TTCP ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' ' + @PAY_PHASE + N' theo HD số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE))
174
				END
175

    
176
				-- END KHOI TAO GIA TRI select * from [TR_REQ_PAYMENT]
177
				PRINT '3'
178
				INSERT INTO [dbo].[TR_REQ_PAYMENT]
179
				(REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, 
180
				REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL
181
				REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, 
182
				MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC
183
				CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT
184
				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)
185
				VALUES
186
				(@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC_DETAIL, 'P', 
187
				NULL, NULL,  NULL, NULL, NULL,  --NULL
188
				'1', CONVERT(DATE, @EXPECTED_DT, 103), 'VND', @PAY_AUTO_AMT, NULL, 
189
				'admin', GETDATE(), NULL, 'A', 'admin', GETDATE(),  --HC
190
				GETDATE(), 'admin', 'A', 'admin', GETDATE(), NULL, --KT
191
				@BRANCH_CREATE, NULL, '1', 'admin', GETDATE(), 'admin', '0', 1, 'Y', NULL, 'Y', 'A', 'N')
192

    
193
				IF(ISNULL(@LIST_REQ_PAYMENT, '') = '')
194
				BEGIN
195
					SET @LIST_REQ_PAYMENT = @REQ_PAY_ID;
196
				END
197
				ELSE
198
				BEGIN
199
					SET @LIST_REQ_PAYMENT = @LIST_REQ_PAYMENT + ',' + @REQ_PAY_ID;
200
				END
201

    
202
				PRINT '4'
203
				-- TẠO LƯỚI PHIEU DE NGHI THANH TOAN CHO PYC
204
				INSERT INTO [dbo].[TR_REQ_PAY_AUTO_PAYMENTS]
205
				(REQ_PAY_AUTO_ID, REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, 
206
				REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL
207
				REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, 
208
				MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC
209
				CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT
210
				BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY)
211
				VALUES
212
				(@REQ_PAY_AUTO_ID ,@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC, 'P', 
213
				NULL, NULL,  NULL, NULL, NULL,  --NULL
214
				'1', CONVERT(DATE, @EXPECTED_DT, 103), 'VND', @PAY_AUTO_AMT, NULL, 
215
				'admin', GETDATE(), NULL, 'A', 'admin', GETDATE(),  --HC
216
				GETDATE(), 'admin', 'A', 'admin', GETDATE(), @CONFIRM_NOTE, --KT
217
				@BRANCH_CREATE, NULL, '1', 'admin', GETDATE(), @TRANSFER_USER_RECEIVE, '0', 1, 'Y', NULL)
218
				-- INSERT VAO PL_PROCESS
219
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
220
				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')
221

    
222
				-- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ
223
				DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
224
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
225
				IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
226
				INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID, REQ_PAY_ID,REF_ID, [TYPE], MAKER_ID, CREATE_DT, IS_CLOSED, REF_TYPE, DELIVERY_DT) 
227
				VALUES(@REQ_PAYDTID_PERIOD, @REQ_PAY_ID, @CONTRACT_ID, 'PAY', 'admin', GETDATE(), 'N', 'C', CONVERT(DATE,NULL,103))
228
				PRINT '5'
229
				-- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ
230
				DECLARE @PERIOD_ID VARCHAR(15);
231
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
232
				IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
233
				INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID, REQ_PAY_ID, PAY_TYPE, CONTRACT_ID, PAY_DT_REAL ,OLD_INDEX, NEW_INDEX, AMT_PAY, 
234
				AUTH_STATUS_KT, CURRENCY, RATE, FROM_DATE, TO_DATE,AD_PAY_ID, PROCESS, PARENT_ID, PAY_PHASE, REASON, TYPE_COST,FR_LEVEL , TO_LEVEL)
235
				VALUES (@PERIOD_ID, @REQ_PAY_ID,'PAY', @CONTRACT_ID, NULL, NULL , NULL , @PAY_AUTO_AMT, 
236
				'A', 'VND', '1', NULL, NULL, NULL, '1', NULL, @PAY_PHASE, @PAY_AUTO_DESC_DETAIL, NULL, NULL, NULL )
237
				PRINT '6'
238
				-- TẠO LƯỚI THÔNG TIN HẠNG MỤC NGÂN SÁCH VÀ CHI PHÍ/
239
				/*
240
				DECLARE @p_BUDGET_ID VARCHAR(15);
241
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
242
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
243
				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, 
244
				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) 
245
				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 , 
246
				@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)
247
				*/
248

    
249
				-- TẠO LƯỚI THÔNG TIN PHƯƠNG THỨC THANH TOÁN
250
				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),
251
				@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), 
252
				@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)
253
				DECLARE cursorMethod CURSOR LOCAL FOR 
254
				SELECT EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, 
255
				ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT
256
				FROM TR_REQ_PAY_AUTO_METHOD
257
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
258
				Open cursorMethod
259
				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, 
260
				@ACC_NO, @ACC_NAME, @ISSUED_BY, @ISSUED_DT, @CURRENCY, @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
261
				WHILE @@FETCH_STATUS = 0
262
				BEGIN
263
					DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
264
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
265
					IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
266
					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, 
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
					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(),
269
					@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 )
270

    
271
				IF @@error<>0 GOTO ABORT;
272
				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, 
273
				@ACC_NO, @ACC_NAME, @ISSUED_BY, @ISSUED_DT, @CURRENCY, @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
274
				END
275
				CLOSE cursorMethod
276
				DEALLOCATE cursorMethod
277
				PRINT '7'
278
				-- TẠO LƯỚI THÔNG TIN HẠCH TOÁN
279
				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), 
280
				@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),
281
				@CREATE_DT_KT varchar(20), @APPROVE_DT_KT varchar(20), @IS_TRANSFER_EXTERNAL varchar(20), @DEP_ID_ENTRY varchar(20)
282
				DECLARE cursorEntries CURSOR LOCAL FOR 
283
				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,
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
				FROM TR_REQ_PAY_AUTO_ENTRIES
286
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
287
				Open cursorEntries
288
				PRINT '8'
289
				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,
290
				@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
291
				WHILE @@FETCH_STATUS = 0
292
				BEGIN
293
					DECLARE @l_TR_REQ_PAY_ENTRIES_D VARCHAR(15);
294
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @l_TR_REQ_PAY_ENTRIES_D OUT;
295
					IF @l_TR_REQ_PAY_ENTRIES_D='' OR @l_TR_REQ_PAY_ENTRIES_D IS NULL GOTO ABORT;
296

    
297
					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],
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
					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,
300
					@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)
301

    
302
				IF @@error<>0 GOTO ABORT;
303
				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,
304
				@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
305
				END
306
				CLOSE cursorEntries
307
				DEALLOCATE cursorEntries
308
				PRINT '9'
309
				--- BAN BUT TOAN VAO CORE
310
				DECLARE @RES VARCHAR(10)
311
				EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @REQ_PAY_ID,'admin','admin', @RES OUT 
312

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

    
333
				IF @@error<>0 GOTO ABORT;
334
				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
335
				END
336
				CLOSE cursorTrans
337
				DEALLOCATE cursorTrans
338
				PRINT '11'
339
				-- LUOI DON VI NHAN
340
				DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), 
341
				@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)
342
				DECLARE cursorRec CURSOR LOCAL FOR 
343
				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
344
				FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC
345
				WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID
346
				Open cursorRec
347
				PRINT '12'
348
				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
349
				WHILE @@FETCH_STATUS = 0
350
				BEGIN
351
					DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15);
352
					EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT;
353
					IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT;
354

    
355
					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,
356
					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)
357
					VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @REQ_PAY_ID, 'admin', GETDATE(), NULL, NULL,
358
					@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_TRANSFER_OUTSIDE_DESC_DETAIL, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO)
359

    
360
				IF @@error<>0 GOTO ABORT;
361
				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
362
				END
363
				CLOSE cursorRec
364
				DEALLOCATE cursorRec
365
				PRINT '13'
366
				
367
				UPDATE TR_REQ_PAY_AUTO_SCHEDULE_DETAIL 
368
				SET PAY_AUTO_DESC = @PAY_AUTO_DESC_DETAIL, PAY_AUTO_STATUS = 'Y', EXACT_DT = GETDATE() 
369
				WHERE REQ_PAY_AUTO_SCHEDULE_DETAIL_ID = @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID
370

    
371
			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, @PAY_PHASE
372
			END
373
			CLOSE cursorScheduleDetail
374
			DEALLOCATE cursorScheduleDetail
375
		END
376
	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, 
377
	@REQ_PAY_AUTO_EFFECTIVE_DT, @BRANCH_ID, @DEP_ID, @BRANCH_CREATE, @TRANSFER_USER_RECEIVE, @CONFIRM_NOTE, 
378
	@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
379
	END
380
	CLOSE cursorPaymentAuto
381
	DEALLOCATE cursorPaymentAuto
382
	
383
COMMIT TRANSACTION
384

    
385
SELECT '0' as Result, @LIST_REQ_PAYMENT list_req_payment, N'Thêm mới thành công' ErrorDesc
386
RETURN '0'
387

    
388
ABORT:
389
BEGIN
390
	ROLLBACK TRANSACTION
391
	SELECT '-1' as Result, @LIST_REQ_PAYMENT list_req_payment, N'Lỗi không xác định' ErrorDesc
392
	RETURN '-1'
393
End