Project

General

Profile

STORE LIVE.txt

Luc Tran Van, 07/22/2020 10:57 AM

 
1

2
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]  
3
@p_REQ_PAY_ID varchar(15)= NULL,  
4
@p_REQ_PAY_CODE varchar(50) = NULL,  
5
@p_REQ_DT VARCHAR(10)= NULL,  
6
@p_BRANCH_ID varchar(15) = NULL,  
7
@p_DEP_ID varchar(15) = NULL,  
8
@p_REQ_REASON nvarchar(MAX) = NULL,  
9
@p_REQ_TYPE varchar(15) = NULL,  
10
@P_REQ_ENTRIES nvarchar(MAX) = NULL,  
11
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,  
12
@p_REF_ID varchar(15) = NULL,  
13
@p_RECEIVER_PO nvarchar(250) = NULL,  
14
@p_RECEIVER_DEBIT nvarchar(250) = NULL,  
15
@p_REQ_PAY_TYPE varchar(15) = NULL,  
16
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,  
17
@p_REQ_AMT decimal(18, 0) = NULL,  
18
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,  
19
@p_MAKER_ID varchar(15) = NULL,  
20
@p_CREATE_DT varchar(25) = NULL,  
21
@p_EDITOR_ID varchar(15) = NULL,  
22
@p_AUTH_STATUS varchar(1) = NULL,  
23
@p_CHECKER_ID varchar(15) = NULL,  
24
@p_APPROVE_DT varchar(25) = NULL,  
25
@p_CREATE_DT_KT varchar(25) = NULL,  
26
@p_MAKER_ID_KT varchar(15) = NULL,  
27
@p_AUTH_STATUS_KT varchar(1) = NULL,  
28
@p_CHECKER_ID_KT varchar(1) = NULL,  
29
@p_APPROVE_DT_KT varchar(25)= null,  
30
@p_CONFIRM_NOTE nvarchar(500) = NULL,  
31
@p_BRANCH_CREATE varchar(15) = NULL,  
32
@p_NOTES varchar(15) = NULL,  
33
@p_RECORD_STATUS varchar(1) = NULL,  
34
@p_TRANSFER_MAKER nvarchar(50) = NULL,  
35
@p_TRANSFER_DT varchar(25) = NULL,  
36
@p_TRASFER_USER_RECIVE varchar(15) = NULL,  
37
@p_PROCESS varchar(15) = NULL,  
38
@p_PAY_PHASE VARCHAR(15)= NULL,  
39
@p_DVDM_ID VARCHAR(15) = NULL,  
40
@p_RATE DECIMAL(18,0)= NULL,  
41
@p_RECIVER_MONEY VARCHAR(15) = NULL,  
42
@p_IS_PERIOD VARCHAR(5) = NULL,  
43
@p_TYPE_FUNCTION VARCHAR(15) = NULL,  
44
@p_XMP_TEMP XML = NULL  
45
AS  
46
--Validation is here  
47
/*  
48
DECLARE @ERRORSYS NVARCHAR(15) = ''  
49
IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))  
50
SET @ERRORSYS = ''  
51
IF @ERRORSYS <> ''  
52
BEGIN  
53
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS  
54
RETURN '0'  
55
END  
56
*/  
57
--DECLARE @ERRORSYS NVARCHAR(15) = ''  
58
--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID = @p_REF_ID )  
59
--BEGIN  
60
-- SET @ERRORSYS = 'ASSC-00005'  
61
-- SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS  
62
-- RETURN '0'  
63
--END  
64
--DECLARE @AMT_AD_PAY DECIMAL(18,0) =0  
65
BEGIN TRANSACTION  
66
-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --  
67
--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)  
68
--THIEUVQ 281119---  
69
IF (@p_REQ_TYPE='I')  
70
BEGIN  
71
SET @p_REF_ID = @p_MAKER_ID  
72
SET @p_RECEIVER_DEBIT =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_MAKER_ID)  
73
END  
74
EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out  
75
--END--  
76
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''  
77
BEGIN  
78
ROLLBACK TRANSACTION  
79
SELECT '-1' Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc  
80
RETURN '-1'  
81
END  
82
IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')  
83
BEGIN  
84
ROLLBACK TRANSACTION  
85
SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc  
86
RETURN '-1'  
87
END  
88
IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE )  
89
BEGIN  
90
ROLLBACK TRANSACTION  
91
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số phiếu tạm ứng đã tồn tại trong hệ thống' ErrorDesc  
92
RETURN '-1'  
93
END  
94
-- START 19-11-2019  
95
-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI  
96
--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))  
97
--BEGIN  
98
-- ROLLBACK TRANSACTION  
99
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc  
100
-- RETURN '-1'  
101
--END  
102
---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG  
103
--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))  
104
--BEGIN -- ROLLBACK TRANSACTION  
105
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Nhân viên nhận tạm ứng không được phép để trống' ErrorDesc  
106
-- RETURN '-1'  
107
--END  
108
-- SO TIEN THANH TOÁN PHAI LON HON KHONG  
109
IF(@p_REQ_AMT <=0)  
110
BEGIN  
111
ROLLBACK TRANSACTION  
112
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc  
113
RETURN '-1'  
114
END  
115
-----  
116
---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH  
117
--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')  
118
--BEGIN  
119
-- SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')  
120
--END  
121
--  
122
--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI  
123
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')  
124
BEGIN  
125
INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UN  
126
G DE HOAT DONG NGHIEP VU')  
127
END  
128
ELSE  
129
BEGIN  
130
IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')  
131
BEGIN  
132
ROLLBACK TRANSACTION  
133
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc  
134
RETURN '-1'  
135
END  
136
END  
137
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out  
138
IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT  
139
INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]  
140
([REQ_PAY_ID]  
141
,[REQ_PAY_CODE]  
142
,[BRANCH_ID],[REQ_DT],  
143
[DEP_ID]  
144
,[REQ_REASON]  
145
,[REQ_TYPE],REQ_ENTRIES,  
146
[REQ_DESCRIPTION]  
147
,REF_ID,  
148
RECEIVER_PO, RECEIVER_DEBIT  
149
,[REQ_PAY_TYPE]  
150
,[REQ_TYPE_CURRENCY]  
151
,[REQ_AMT]  
152
,[REQ_TEMP_AMT]  
153
,[MAKER_ID]  
154
,[CREATE_DT]  
155
,[EDITOR_ID]  
156
,[AUTH_STATUS]  
157
,[CHECKER_ID]  
158
,[APPROVE_DT]  
159
,[CREATE_DT_KT]  
160
,[MAKER_ID_KT]  
161
,[AUTH_STATUS_KT]  
162
,[CHECKER_ID_KT]  
163
,[APPROVE_DT_KT]  
164
,[CONFIRM_NOTES]  
165
,[BRANCH_CREATE]  
166
,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)  
167
VALUES  
168
(@p_REQ_PAY_ID,  
169
@p_REQ_PAY_CODE,  
170
@p_BRANCH_ID,CONVERT(DATE,@p_REQ_DT,103),  
171
@p_DEP_ID,  
172
@p_REQ_REASON,  
173
@p_REQ_TYPE,  
174
@P_REQ_ENTRIES,  
175
@p_REQ_DESCRIPTION,  
176
@p_REF_ID,  
177
@p_RECEIVER_PO,  
178
@p_RECEIVER_DEBIT,  
179
@p_REQ_PAY_TYPE,  
180
@p_REQ_TYPE_CURRENCY,  
181
@p_REQ_AMT,  
182
@p_REQ_TEMP_AMT,  
183
@p_MAKER_ID,  
184
GETDATE(),  
185
@p_EDITOR_ID,  
186
'E',  
187
NULL,  
188
NULL,  
189
NULL,  
190
NULL,  
191
NULL,  
192
NULL,  
193
NULL,  
194
NULL,  
195
@p_BRANCH_CREATE,  
196
@p_NOTES,@p_RECORD_STATUS,  
197
@p_TRANSFER_MAKER,  
198
NULL,  
199
@p_TRASFER_USER_RECIVE,  
200
@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)  
201
IF @@Error <> 0 GOTO ABORT  
202
--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN  
203
DECLARE @hdoc INT  
204
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;  
205
 
206
-- KIEM TRA NEU TAM UNG THANH TOAN  
207
IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')  
208
BEGIN  
209
DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,0),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,0),@AMT_PAY_DO decimal(18,0),  
210
@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),  
211
@REF_ID VARCHAR(15),@REQ_PAY_DESC NVARCHAR(500), @REQ_PAY_ENTRIES NVARCHAR(250),@CURRENCY VARCHAR(15),@RATE DECIMAL(18,0),@CUST_ID VARCHAR(15), @EMP_ID VARCHAR(15),  
212
@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)  
213
DECLARE XmlDataPO CURSOR FOR  
214
SELECT *  
215
FROM  
216
OPENXML(@hdoc, '/Root/XmlDataPO', 2)  
217
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))  
218
OPEN XmlDataPO;  
219
DECLARE @INDEX_PO INT =0  
220
SET @INDEX_PO = 0  
221
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
222
WHILE @@fetch_status=0  
223
BEGIN  
224
SET @INDEX_PO = @INDEX_PO +1  
225
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
226
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))  
227
--BEGIN  
228
-- ROLLBACK TRANSACTION  
229
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
230
-- RETURN '-1'  
231
--END  
232
---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
233
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  
234
--BEGIN  
235
-- ROLLBACK TRANSACTION  
236
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
237
 
238
-- RETURN '-1'  
239
--END  
240
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
241
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  
242
IF(@p_TYPE_FUNCTION ='SEND')  
243
BEGIN  
244
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID  
245
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  
246
BEGIN  
247
ROLLBACK TRANSACTION  
248
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+  
249
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
250
RETURN '-1'  
251
END  
252
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
253
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))  
254
BEGIN  
255
ROLLBACK TRANSACTION  
256
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+  
257
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
258
RETURN '-1'  
259
END  
260
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
261
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID  
262
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  
263
BEGIN  
264
ROLLBACK TRANSACTION  
265
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+  
266
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
267
RETURN '-1'  
268
END  
269
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
270
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))  
271
BEGIN  
272
ROLLBACK TRANSACTION  
273
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+  
274
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
275
RETURN '-1'  
276
END  
277
END  
278
DECLARE @REQ_PAYDTID VARCHAR(15);  
279
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;  
280
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;  
281
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES  
282
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)  
283
IF @@error<>0 GOTO ABORT;  
284
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
285
END  
286
CLOSE XmlDataPO;  
287
DEALLOCATE XmlDataPO;  
288
--- CUSOR DANH SACH LICH THANH TOAN PO - HD  
289
DECLARE XmlDataSchedule CURSOR FOR  
290
SELECT *  
291
FROM  
292
OPENXML(@hdoc, 'Root/XmlDataSchedule',2)  
293
WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,0),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,0), AMT_PAY_DO decimal(18,0),  
294
AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),  
295
REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))  
296
OPEN XmlDataSchedule  
297
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,  
298
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL  
299
WHILE @@fetch_status=0  
300
BEGIN  
301
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);  
302
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;  
303
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;  
304
INSERT INTO TR_REQ_PAY_SCHEDULE(  
305
SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,  
306
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE,AMT_PAY_REAL)  
307
VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@p_REQ_PAY_ID,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,@AMT_REMAIN_SCHEDULE,  
308
GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),NULL,@p_MAKER_ID,GETDATE(),'U','','ADV_PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)  
309
--- END KHAI BAO CURSOR  
310
IF @@error<>0 GOTO ABORT;  
311
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,  
312
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL  
313
END  
314
CLOSE XmlDataSchedule;  
315
DEALLOCATE XmlDataSchedule;  
316
END  
317
--- END TẠM ỨNG THANH TOÁN  
318
--- TẠM ỨNG HĐ ĐỊNH KỲ  
319
IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')  
320
BEGIN  
321
 
322
DECLARE XmlDataPO CURSOR FOR  
323
SELECT *  
324
FROM  
325
OPENXML(@hdoc, '/Root/XmlDataPO', 2)  
326
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))  
327
OPEN XmlDataPO;  
328
SET @INDEX_PO = 0  
329
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
330
WHILE @@fetch_status=0  
331
BEGIN  
332
SET @INDEX_PO = @INDEX_PO +1  
333
DECLARE @REQ_PAYDTID_C VARCHAR(15);  
334
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;  
335
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;  
336
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES  
337
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)  
338
IF @@error<>0 GOTO ABORT;  
339
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
340
END  
341
CLOSE XmlDataPO;  
342
DEALLOCATE XmlDataPO;  
343
--- CUSOR DANH SACH LICH THANH TOAN PO - HD  
344
----------------------------  
345
--INSERT FROM PERIOD  
346
DECLARE XmlDataPeriod CURSOR FOR  
347
SELECT *  
348
FROM  
349
OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)  
350
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),  
351
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))  
352
OPEN XmlDataPeriod;  
353
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),  
354
@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250),@REASON_TTDK NVARCHAR(2000)  
355
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,  
356
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK  
357
WHILE @@fetch_status=0  
358
BEGIN  
359
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  
360
IF(@p_TYPE_FUNCTION ='SEND')  
361
BEGIN  
362
IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0 )  
363
BEGIN  
364
ROLLBACK TRANSACTION  
365
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc  
366
RETURN '-1'  
367
END  
368
END  
369
DECLARE @PERIOD_ID VARCHAR(15);  
370
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;  
371
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;  
372
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE, TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE,REASON)  
373
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),  
374
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)  
375
IF @@error<>0 GOTO ABORT;  
376
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,  
377
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK  
378
END  
379
CLOSE XmlDataPeriod;  
380
DEALLOCATE XmlDataPeriod;  
381
-- VALIDATE SO TIEN  
382
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)  
383
--BEGIN  
384
-- ROLLBACK TRANSACTION  
385
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc  
386
-- RETURN '-1'  
387
--END  
388
----  
389
END  
390
---- END TẠM ỨNG HỢP ĐỒNG ĐỊNH KÌ  
391
--- INSERT PHƯƠNG THỨC THANH TOÁN  
392
----MethodCursor  
393
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,0),@REQ_PAY_TYPE varchar(1),  
394
@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(50), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CHECK_IN VARCHAR(15)  
395
DECLARE XmlDataMethod CURSOR FOR  
396
SELECT *  
397
FROM  
398
OPENXML(@hdoc, 'Root/XmlDataMethod',2)  
399
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,0),REQ_PAY_TYPE varchar(1),  
400
REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50),  
401
ACC_NAME NVARCHAR(50), ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))  
402
OPEN XmlDataMethod  
403
FETCH NEXT FROM XmlDataMethod  
404
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME ,@ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN  
405
WHILE @@fetch_status=0  
406
BEGIN  
407
IF(@REQ_PAY_TYPE <>'1')  
408
BEGIN  
409
SET @ISSUED_DT = NULL  
410
END  
411
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);  
412
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;  
413
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;  
414
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,  
415
CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)  
416
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',  
417
@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)  
418
IF @@error<>0 GOTO ABORT;  
419
FETCH NEXT FROM XmlDataMethod  
420
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME , @ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN  
421
END  
422
CLOSE XmlDataMethod;  
423
DEALLOCATE XmlDataMethod  
424
----END INSERT PHƯƠNG THỨC THANH TOÁN  
425
----INSERT VAO BANG DS KHACH HANG  
426
DECLARE XmlDataCus CURSOR FOR  
427
SELECT *  
428
FROM  
429
OPENXML(@hdoc, '/Root/XmlDataCus', 2)  
430
WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,0),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))  
431
OPEN XmlDataCus;  
432
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE  
433
WHILE @@fetch_status=0  
434
BEGIN  
435
INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)  
436
VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())  
437
--- END KHAI BAO CURSOR  
438
IF @@error<>0 GOTO ABORT;  
439
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE  
440
END  
441
CLOSE XmlDataCus;  
442
DEALLOCATE XmlDataCus;  
443
----END  
444
-- HANG MUC CHI PHI VA NGAN SACH  
445
DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2), @AMT_DO decimal(18,2), @AMT_EXE decimal(18,2),@AMT_REMAIN_GD decimal(18,2)  
446
DECLARE XmlDataGood CURSOR FOR  
447
SELECT *  
448
FROM  
449
OPENXML(@hdoc, 'Root/XmlDataGood',2)  
450
WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2),AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000))  
451
OPEN XmlDataGood  
452
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON  
453
WHILE @@fetch_status=0 BEGIN  
454
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI  
455
SET @INDEX_NS = @INDEX_NS +1  
456
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  
457
IF(@p_TYPE_FUNCTION ='SEND')  
458
BEGIN  
459
IF((@AMT_EXE > @AMT_REMAIN_GD))  
460
BEGIN  
461
ROLLBACK TRANSACTION  
462
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc  
463
RETURN '-1'  
464
END  
465
END  
466
DECLARE @p_BUDGET_ID VARCHAR(15);  
467
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;  
468
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;  
469
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)  
470
VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO, @AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON)  
471
IF @@error<>0 GOTO ABORT;  
472
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON  
473
END;  
474
CLOSE XmlDataGood;  
475
DEALLOCATE XmlDataGood;  
476
--- END INSERT NGAN SACH  
477
DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20),@NOTES_ATT NVARCHAR(1000)  
478
DECLARE XmlAttach CURSOR FOR  
479
SELECT *  
480
FROM  
481
OPENXML(@hdoc, 'Root/XmlAttach',2)  
482
WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20))  
483
OPEN XmlAttach  
484
--INSERT CHUNG TU DINH KEM  
485
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT  
486
WHILE @@fetch_status=0  
487
BEGIN  
488
IF (@REF_DT='')  
489
BEGIN  
490
SET @REF_DT = NULL  
491
END  
492
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;  
493
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;  
494
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES  
495
(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))  
496
IF @@error<>0 GOTO ABORT;  
497
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT  
498
END  
499
CLOSE XmlAttach;  
500
DEALLOCATE XmlAttach;  
501
----END  
502
--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS  
503
IF(@p_REQ_TYPE ='I')  
504
BEGIN  
505
DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))  
506
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')  
507
BEGIN  
508
IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)  
509
BEGIN  
510
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'  
511
END  
512
ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)  
513
BEGIN  
514
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'  
515
END  
516
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)  
517
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID)  
518
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID))  
519
BEGIN  
520
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD')  
521
END  
522
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)  
523
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID)  
524
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))  
525
BEGIN  
526
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'  
527
END  
528
ELSE  
529
BEGIN  
530
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'  
531
END  
532
END  
533
ELSE  
534
BEGIN  
535
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')  
536
BEGIN  
537
--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO  
538
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE  
539
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'  
540
END  
541
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')  
542
BEGIN  
543
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)  
544
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'  
545
END  
546
END  
547
DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)  
548
SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)  
549
DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)  
550
DECLARE CUR_PR CURSOR FOR SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A  
551
OPEN CUR_PR  
552
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE  
553
WHILE @@FETCH_STATUS =0 --AND @STOP=0  
554
BEGIN  
555
SET @INDEX= @INDEX+1  
556
IF @INDEX = @SL_ROLE  
557
SET @ISLEAF = 'Y'  
558
ELSE  
559
SET @ISLEAF = 'N'  
560
SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)  
561
 
562
IF(@INDEX=1 )  
563
BEGIN  
564
SET @PARENT_ID = NULL  
565
SET @STATUS = 'C'  
566
--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)  
567
END  
568
ELSE  
569
BEGIN  
570
SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)  
571
SET @STATUS = 'U'  
572
END  
573
IF(@LIMIT_VALUE >= @p_REQ_AMT)  
574
BEGIN  
575
INSERT INTO dbo.PL_REQUEST_PROCESS  
576
(  
577
REQ_ID,  
578
PROCESS_ID,  
579
STATUS,  
580
ROLE_USER,  
581
BRANCH_ID,  
582
CHECKER_ID,  
583
APPROVE_DT,  
584
PARENT_PROCESS_ID,  
585
IS_LEAF, COST_ID, DVDM_ID, NOTES  
586
)  
587
VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)  
588
--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')  
589
BREAK;  
590
END  
591
ELSE  
592
INSERT INTO PL_REQUEST_PROCESS (  
593
REQ_ID,  
594
PROCESS_ID,  
595
STATUS,  
596
ROLE_USER,  
597
BRANCH_ID,  
598
CHECKER_ID,  
599
APPROVE_DT,  
600
PARENT_PROCESS_ID,  
601
IS_LEAF, COST_ID, DVDM_ID, NOTES  
602
) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)  
603
--END  
604
 
605
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE  
606
END  
607
CLOSE CUR_PR  
608
DEALLOCATE CUR_PR  
609
END  
610
--- CAP NHAT THANG CUOI CUNG LA Y  
611
--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)  
612
COMMIT TRANSACTION  
613
IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET  
614
BEGIN  
615
--ROLLBACK TRANSACTION  
616
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY  
617
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
618
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)  
619
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu tạm ứng và gửi phê duyệt')  
620
SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc  
621
RETURN '4'  
622
END  
623
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, '' ErrorDesc  
624
RETURN '0'  
625
ABORT:  
626
BEGIN  
627
ROLLBACK TRANSACTION  
628
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, '' ErrorDesc  
629
RETURN '-1'  
630
End  
631

    
632

    
633

    
634
Text
635

    
636
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]  
637
@p_REQ_PAY_ID varchar(15)= NULL,  
638
@p_REQ_PAY_CODE varchar(50) = NULL,  
639
@p_REQ_DT VARCHAR(20)= NULL,  
640
@p_BRANCH_ID varchar(15) = NULL,  
641
@p_DEP_ID varchar(15) = NULL,  
642
@p_REQ_REASON nvarchar(MAX) = NULL,  
643
@p_REQ_TYPE varchar(15) = NULL,  
644
@P_REQ_ENTRIES nvarchar(MAX) = NULL,  
645
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,  
646
@p_REF_ID varchar(15) = NULL,  
647
@p_RECEIVER_PO nvarchar(250) = NULL,  
648
@p_RECEIVER_DEBIT nvarchar(250) = NULL,  
649
@p_REQ_PAY_TYPE varchar(15) = NULL,  
650
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,  
651
@p_REQ_AMT decimal(18, 0) = NULL,  
652
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,  
653
@p_MAKER_ID varchar(15) = NULL,  
654
@p_CREATE_DT varchar(25) = NULL,  
655
@p_EDITOR_ID varchar(15) = NULL,  
656
@p_AUTH_STATUS varchar(1) = NULL,  
657
@p_CHECKER_ID varchar(15) = NULL,  
658
@p_APPROVE_DT varchar(25) = NULL,  
659
@p_CREATE_DT_KT varchar(25) = NULL,  
660
@p_MAKER_ID_KT varchar(15) = NULL,  
661
@p_AUTH_STATUS_KT varchar(1) = NULL,  
662
@p_CHECKER_ID_KT varchar(1) = NULL,  
663
@p_APPROVE_DT_KT varchar(25)= null,  
664
@p_CONFIRM_NOTE nvarchar(500) = NULL,  
665
@p_BRANCH_CREATE varchar(15) = NULL,  
666
@p_NOTES varchar(15) = NULL,  
667
@p_RECORD_STATUS varchar(1) = NULL,  
668
@p_TRANSFER_MAKER nvarchar(50) = NULL,  
669
@p_TRANSFER_DT varchar(25) = NULL,  
670
@p_TRASFER_USER_RECIVE varchar(15) = NULL,  
671
@p_PROCESS varchar(15) = NULL,  
672
@p_PAY_PHASE VARCHAR(15)= NULL,  
673
@p_DVDM_ID VARCHAR(15)= NULL,  
674
@p_RATE DECIMAL(18,0) =0,  
675
@p_RECIVER_MONEY VARCHAR(15)= NULL,  
676
@p_XMP_TEMP XML = NULL,  
677
@p_TYPE_FUNCTION VARCHAR(15) = NULL,  
678
@p_IS_PERIOD VARCHAR(5) = NULL  
679
AS  
680
--Validation is here  
681
/*  
682
DECLARE @ERRORSYS NVARCHAR(15) = ''  
683
IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))  
684
SET @ERRORSYS = ''  
685
IF @ERRORSYS <> ''  
686
BEGIN  
687
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS  
688
RETURN '0'  
689
END  
690
*/  
691
--Luanlt-2019/10/15 Disable Validation  
692
--DECLARE @ERRORSYS NVARCHAR(15) = ''  
693
--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID = @p_REF_ID )  
694
--BEGIN  
695
-- SET @ERRORSYS = 'ASSC-00005'  
696
-- SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS  
697
-- RETURN '-1'  
698
--END  
699
DECLARE @BRANCH_TYPE_CR VARCHAR(15)  
700
SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)  
701
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''  
702
BEGIN  
703
SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc  
704
RETURN '-1'  
705
END  
706
IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))  
707
BEGIN  
708
SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc  
709
RETURN '-1'  
710
END  
711
IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)  
712
BEGIN  
713
SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc  
714
RETURN '-1'  
715
END  
716
IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')  
717
BEGIN  
718
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc  
719
RETURN '-1'  
720
END  
721
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')  
722
BEGIN  
723
INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UN  
724
G DE HOAT DONG NGHIEP VU')  
725
END  
726
ELSE  
727
BEGIN  
728
IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')  
729
BEGIN  
730
ROLLBACK TRANSACTION  
731
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc  
732
RETURN '-1'  
733
END  
734
END  
735
-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT  
736
-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL  
737
-- SO TIEN THANH TOÁN PHAI LON HON KHONG  
738
IF(@p_REQ_AMT <=0)  
739
BEGIN  
740
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc  
741
RETURN '-1'  
742
END  
743
-- END VALIDATE TRONG QUA TRINH TEST UAT  
744
BEGIN TRANSACTION  
745
--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')  
746
--BEGIN  
747
-- SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')  
748
--END  
749
UPDATE TR_REQ_ADVANCE_PAYMENT SET  
750
REF_ID = @p_REF_ID,  
751
DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_DT = CONVERT(DATE,@p_REQ_DT,103),  
752
REQ_AMT = @p_REQ_AMT,  
753
NOTES= @p_NOTES,  
754
REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,  
755
REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID,REQ_PAY_CODE = @p_REQ_PAY_CODE, PAY_PHASE =@p_PAY_PHASE,  
756
AUTH_STATUS='E', DVDM_ID=@p_DVDM_ID, RATE =@p_RATE,REQ_TYPE_CURRENCY =@p_REQ_TYPE_CURRENCY, RECIVER_MONEY= @p_RECIVER_MONEY, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE,IS_PERIOD =@p_IS_PERIOD  
757
WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
758
IF @@Error <> 0 GOTO ABORT  
759
--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN  
760
DECLARE @hdoc INT  
761
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;  
762
 
763
-- KIEM TRA NEU TAM UNG THANH TOAN  
764
IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')  
765
BEGIN  
766
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID  
767
DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID  
768
DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,0),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,0),@AMT_PAY_DO decimal(18,0),  
769
@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),  
770
@REF_ID VARCHAR(15),@REQ_PAY_DESC NVARCHAR(500), @REQ_PAY_ENTRIES NVARCHAR(250),@CURRENCY VARCHAR(15),@RATE DECIMAL(18,0),@CUST_ID VARCHAR(15),  
771
@EMP_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2),@CHECK_IN VARCHAR(15),@IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15)  
772
DECLARE XmlDataPO CURSOR FOR  
773
SELECT *  
774
FROM  
775
OPENXML(@hdoc, '/Root/XmlDataPO', 2)  
776
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))  
777
OPEN XmlDataPO;  
778
DECLARE @INDEX_PO INT =0  
779
SET @INDEX_PO = 0  
780
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
781
WHILE @@fetch_status=0  
782
BEGIN  
783
SET @INDEX_PO = @INDEX_PO +1  
784
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  
785
IF(@p_TYPE_FUNCTION ='SEND')  
786
BEGIN  
787
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
788
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID  
789
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  
790
BEGIN  
791
ROLLBACK TRANSACTION  
792
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+  
793
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
794
RETURN '-1'  
795
END  
796
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
797
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))  
798
BEGIN  
799
ROLLBACK TRANSACTION  
800
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+  
801
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
802
RETURN '-1'  
803
END  
804
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
805
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID  
806
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  
807
BEGIN  
808
ROLLBACK TRANSACTION  
809
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+  
810
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
811
RETURN '-1'  
812
END  
813
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  
814
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))  
815
BEGIN  
816
ROLLBACK TRANSACTION  
817
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+  
818
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc  
819
RETURN '-1'  
820
END  
821
END  
822
DECLARE @REQ_PAYDTID VARCHAR(15);  
823
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;  
824
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;  
825
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES  
826
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)  
827
IF @@error<>0 GOTO ABORT;  
828
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
829
END  
830
CLOSE XmlDataPO;  
831
DEALLOCATE XmlDataPO;  
832
--- CUSOR DANH SACH LICH THANH TOAN PO - HD  
833
DECLARE XmlDataSchedule CURSOR FOR  
834
SELECT *  
835
FROM  
836
OPENXML(@hdoc, 'Root/XmlDataSchedule',2)  
837
WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,0),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,0), AMT_PAY_DO decimal(18,0),  
838
AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),  
839
REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))  
840
OPEN XmlDataSchedule  
841
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,  
842
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL  
843
WHILE @@fetch_status=0  
844
BEGIN  
845
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);  
846
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;  
847
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;  
848
INSERT INTO TR_REQ_PAY_SCHEDULE(  
849
SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,  
850
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)  
851
VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@p_REQ_PAY_ID,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,@AMT_REMAIN_SCHEDULE,  
852
GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),NULL,@p_MAKER_ID,GETDATE(),'U','','ADV_PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)  
853
--- END KHAI BAO CURSOR  
854
IF @@error<>0 GOTO ABORT;  
855
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,  
856
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL  
857
END  
858
CLOSE XmlDataSchedule;  
859
DEALLOCATE XmlDataSchedule;  
860
END  
861
--- END TẠM ỨNG THANH TOÁN  
862
---- TẠM ỨNG HĐ ĐỊNH KÌ  
863
IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')  
864
BEGIN  
865
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
866
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
867
DECLARE XmlDataPO CURSOR FOR  
868
SELECT *  
869
FROM  
870
OPENXML(@hdoc, '/Root/XmlDataPO', 2)  
871
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))  
872
OPEN XmlDataPO;  
873
SET @INDEX_PO = 0  
874
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
875
WHILE @@fetch_status=0  
876
BEGIN  
877
SET @INDEX_PO = @INDEX_PO +1  
878
DECLARE @REQ_PAYDTID_C VARCHAR(15);  
879
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;  
880
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;  
881
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES  
882
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)  
883
IF @@error<>0 GOTO ABORT;  
884
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  
885
END  
886
CLOSE XmlDataPO;  
887
DEALLOCATE XmlDataPO;  
888
--- CUSOR DANH SACH LICH THANH TOAN PO - HD  
889
----------------------------  
890
--INSERT FROM PERIOD  
891
DECLARE XmlDataPeriod CURSOR FOR  
892
SELECT *  
893
FROM  
894
OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)  
895
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),  
896
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000) )  
897
OPEN XmlDataPeriod;  
898
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),  
899
@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250), @REASON_TTDK NVARCHAR(2000)  
900
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,  
901
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK  
902
WHILE @@fetch_status=0  
903
BEGIN  
904
 
905
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  
906
IF(@p_TYPE_FUNCTION ='SEND')  
907
BEGIN  
908
IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)  
909
BEGIN  
910
ROLLBACK TRANSACTION  
911
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc  
912
RETURN '-1'  
913
END  
914
END  
915
DECLARE @PERIOD_ID VARCHAR(15);  
916
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;  
917
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;  
918
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE, TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE, REASON)  
919
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),  
920
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)  
921
IF @@error<>0 GOTO ABORT;  
922
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,  
923
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK  
924
END  
925
CLOSE XmlDataPeriod;  
926
DEALLOCATE XmlDataPeriod;  
927
-- VALIDATE SO TIEN  
928
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)  
929
--BEGIN  
930
-- ROLLBACK TRANSACTION  
931
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc  
932
-- RETURN '-1'  
933
--END  
934
----  
935
END  
936
---- END TẠM ỨNG HĐ ĐỊNH KÌ  
937
--- INSERT PHƯƠNG THỨC THANH TOÁN  
938
----MethodCursor  
939
DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
940
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,0),@REQ_PAY_TYPE varchar(1),  
941
@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(50), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20)  
942
DECLARE XmlDataMethod CURSOR FOR  
943
SELECT *  
944
FROM  
945
OPENXML(@hdoc, 'Root/XmlDataMethod',2)  
946
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,0),REQ_PAY_TYPE varchar(1),  
947
REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(50),  
948
ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))  
949
OPEN XmlDataMethod  
950
FETCH NEXT FROM XmlDataMethod  
951
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME,@ISSED_BY,@ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN  
952
WHILE @@fetch_status=0  
953
BEGIN  
954
IF(@REQ_PAY_TYPE<>'1')  
955
BEGIN  
956
SET @ISSUED_DT = NULL  
957
END  
958
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);  
959
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;  
960
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;  
961
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,  
962
CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)  
963
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',  
964
@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)  
965
IF @@error<>0 GOTO ABORT;  
966
FETCH NEXT FROM XmlDataMethod  
967
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME , @ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN  
968
END  
969
CLOSE XmlDataMethod;  
970
DEALLOCATE XmlDataMethod  
971
----END INSERT PHƯƠNG THỨC THANH TOÁN  
972
----INSERT VAO BANG DS KHACH HANG  
973
DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID  
974
DECLARE XmlDataCus CURSOR FOR  
975
SELECT *  
976
FROM  
977
OPENXML(@hdoc, '/Root/XmlDataCus', 2)  
978
WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,0),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))  
979
OPEN XmlDataCus;  
980
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE  
981
WHILE @@fetch_status=0  
982
BEGIN  
983
INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)  
984
VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())  
985
--- END KHAI BAO CURSOR  
986
IF @@error<>0 GOTO ABORT;  
987
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE  
988
END  
989
CLOSE XmlDataCus;  
990
DEALLOCATE XmlDataCus;  
991
----END  
992
-- HANG MUC CHI PHI VA NGAN SACH  
993
DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
994
DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2),@AMT_DO decimal(18,2),@AMT_EXE decimal(18,2),@AMT_REMAIN_GD decimal(18,2)  
995
DECLARE XmlDataGood CURSOR FOR  
996
SELECT *  
997
FROM  
998
OPENXML(@hdoc, 'Root/XmlDataGood',2)  
999
WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000))  
1000
OPEN XmlDataGood  
1001
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON  
1002
WHILE @@fetch_status=0 BEGIN  
1003
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI  
1004
SET @INDEX_NS = @INDEX_NS +1  
1005
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  
1006
IF(@p_TYPE_FUNCTION ='SEND')  
1007
BEGIN  
1008
IF((@AMT_EXE > @AMT_REMAIN_GD))  
1009
BEGIN  
1010
ROLLBACK TRANSACTION  
1011
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc  
1012
RETURN '-1'  
1013
END  
1014
END  
1015
DECLARE @p_BUDGET_ID VARCHAR(15);  
1016
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;  
1017
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;  
1018
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)  
1019
VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON)  
1020
IF @@error<>0 GOTO ABORT;  
1021
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON  
1022
END;  
1023
CLOSE XmlDataGood;  
1024
DEALLOCATE XmlDataGood;  
1025
--- END INSERT NGAN SACH  
1026
DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
1027
DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20),@NOTES_ATT NVARCHAR(1000)  
1028
DECLARE XmlAttach CURSOR FOR  
1029
SELECT *  
1030
FROM  
1031
OPENXML(@hdoc, 'Root/XmlAttach',2)  
1032
WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20))  
1033
OPEN XmlAttach  
1034
--INSERT CHUNG TU DINH KEM  
1035
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT  
1036
WHILE @@fetch_status=0  
1037
BEGIN  
1038
IF (@REF_DT='')  
1039
BEGIN  
1040
SET @REF_DT = NULL  
1041
END  
1042
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;  
1043
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;  
1044
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES  
1045
(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))  
1046
IF @@error<>0 GOTO ABORT;  
1047
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT  
1048
END  
1049
CLOSE XmlAttach;  
1050
DEALLOCATE XmlAttach;  
1051
----END  
1052
IF(@p_REQ_TYPE ='I')  
1053
BEGIN  
1054
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID  
1055
DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))  
1056
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')  
1057
BEGIN  
1058
IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)  
1059
BEGIN  
1060
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'  
1061
END  
1062
ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)  
1063
BEGIN  
1064
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'  
1065
END  
1066
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)  
1067
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID)  
1068
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID))  
1069
BEGIN  
1070
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD')  
1071
END  
1072
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)  
1073
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID)  
1074
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))  
1075
BEGIN  
1076
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'  
1077
END  
1078
ELSE  
1079
BEGIN  
1080
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'  
1081
END  
1082
END  
1083
ELSE  
1084
BEGIN  
1085
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')  
1086
BEGIN  
1087
--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO  
1088
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE  
1089
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'  
1090
END  
1091
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')  
1092
BEGIN  
1093
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)  
1094
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'  
1095
END  
1096
END  
1097
DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)  
1098
SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)  
1099
DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)  
1100
DECLARE CUR_PR CURSOR FOR SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A  
1101
OPEN CUR_PR  
1102
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE  
1103
WHILE @@FETCH_STATUS =0 --AND @STOP=0  
1104
BEGIN  
1105
SET @INDEX= @INDEX+1  
1106
IF @INDEX = @SL_ROLE  
1107
SET @ISLEAF = 'Y'  
1108
ELSE  
1109
SET @ISLEAF = 'N'  
1110
SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)  
1111
 
1112
IF(@INDEX=1 )  
1113
BEGIN  
1114
SET @PARENT_ID = NULL  
1115
SET @STATUS = 'C'  
1116
--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)  
1117
END  
1118
ELSE  
1119
BEGIN  
1120
SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)  
1121
SET @STATUS = 'U'  
1122
END  
1123
IF(@LIMIT_VALUE >= @p_REQ_AMT)  
1124
BEGIN  
1125
INSERT INTO dbo.PL_REQUEST_PROCESS  
1126
(  
1127
REQ_ID,  
1128
PROCESS_ID,  
1129
STATUS,  
1130
ROLE_USER,  
1131
BRANCH_ID,  
1132
CHECKER_ID,  
1133
APPROVE_DT,  
1134
PARENT_PROCESS_ID,  
1135
IS_LEAF, COST_ID, DVDM_ID, NOTES  
1136
)  
1137
VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)  
1138
--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')  
1139
BREAK;  
1140
END  
1141
ELSE  
1142
INSERT INTO PL_REQUEST_PROCESS (  
1143
REQ_ID,  
1144
PROCESS_ID,  
1145
STATUS,  
1146
ROLE_USER,  
1147
BRANCH_ID,  
1148
CHECKER_ID,  
1149
APPROVE_DT,  
1150
PARENT_PROCESS_ID,  
1151
IS_LEAF, COST_ID, DVDM_ID, NOTES  
1152
) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)  
1153
--END  
1154
 
1155
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE  
1156
END  
1157
CLOSE CUR_PR  
1158
DEALLOCATE CUR_PR  
1159
END  
1160
COMMIT TRANSACTION  
1161
IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET  
1162
BEGIN  
1163
--ROLLBACK TRANSACTION  
1164
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY  
1165
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='HS')  
1166
BEGIN  
1167
DECLARE @USER_TP VARCHAR(15)  
1168
SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('GDDV','TPTC','TC','KTT'))  
1169
UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
1170
END  
1171
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
1172
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)  
1173
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu tạm ứng và gửi phê duyệt')  
1174
SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc  
1175
RETURN '4'  
1176
END  
1177
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc  
1178
RETURN '0'  
1179
ABORT:  
1180
BEGIN  
1181
ROLLBACK TRANSACTION  
1182
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc  
1183
RETURN '-1'  
1184
End