Project

General

Profile

REQ_AD_PAY_UPD.txt

Luc Tran Van, 12/07/2020 01:28 PM

 
1
??ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]  

2
@p_REQ_PAY_ID varchar(15)= NULL,  

3
@p_REQ_PAY_CODE varchar(50) = NULL,  

4
@p_REQ_DT VARCHAR(20)= NULL,  

5
@p_BRANCH_ID varchar(15) = NULL,  

6
@p_DEP_ID varchar(15) = NULL,  

7
@p_REQ_REASON nvarchar(MAX) = NULL,  

8
@p_REQ_TYPE varchar(15) = NULL,  

9
@P_REQ_ENTRIES nvarchar(MAX) = NULL,  

10
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,  

11
@p_REF_ID varchar(15) = NULL,  

12
@p_RECEIVER_PO nvarchar(250) = NULL,  

13
@p_RECEIVER_DEBIT nvarchar(250) = NULL,  

14
@p_REQ_PAY_TYPE varchar(15) = NULL,  

15
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,  

16
@p_REQ_AMT decimal(18, 0) = NULL,  

17
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,  

18
@p_MAKER_ID varchar(15) = NULL,  

19
@p_CREATE_DT varchar(25) = NULL,  

20
@p_EDITOR_ID varchar(15) = NULL,  

21
@p_AUTH_STATUS varchar(1) = NULL,  

22
@p_CHECKER_ID varchar(15) = NULL,  

23
@p_APPROVE_DT varchar(25) = NULL,  

24
@p_CREATE_DT_KT varchar(25) = NULL,  

25
@p_MAKER_ID_KT varchar(15) = NULL,  

26
@p_AUTH_STATUS_KT varchar(1) = NULL,  

27
@p_CHECKER_ID_KT varchar(1) = NULL,  

28
@p_APPROVE_DT_KT varchar(25)= null,  

29
@p_CONFIRM_NOTE nvarchar(500) = NULL,  

30
@p_BRANCH_CREATE varchar(15) = NULL,  

31
@p_NOTES varchar(15) = NULL,  

32
@p_RECORD_STATUS varchar(1) = NULL,  

33
@p_TRANSFER_MAKER nvarchar(50) = NULL,  

34
@p_TRANSFER_DT varchar(25) = NULL,  

35
@p_TRASFER_USER_RECIVE varchar(15) = NULL,  

36
@p_PROCESS varchar(15) = NULL,  

37
@p_PAY_PHASE VARCHAR(15)= NULL,  

38
@p_DVDM_ID VARCHAR(15)= NULL,  

39
@p_RATE DECIMAL(18,0) =0,  

40
@p_RECIVER_MONEY VARCHAR(15)= NULL,  

41
@p_XMP_TEMP XML = NULL,  

42
@p_TYPE_FUNCTION VARCHAR(15) = NULL,  

43
@p_IS_PERIOD VARCHAR(5) = NULL  

44
AS  

45
--Validation is here  

46
/*  

47
DECLARE @ERRORSYS NVARCHAR(15) = ''  

48
IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))  

49
SET @ERRORSYS = ''  

50
IF @ERRORSYS <> ''  

51
BEGIN  

52
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS  

53
RETURN '0'  

54
END  

55
*/  

56
--Luanlt-2019/10/15 Disable Validation  

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, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS  

62
-- RETURN '-1'  

63
--END  

64
 

65
DECLARE @BRANCH_TYPE_CR VARCHAR(15), @ROLE_KI_NHAY VARCHAR(50)  

66
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)  

67
--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))  

68
--BEGIN  

69
-- SELECT '-1' Result, '' REQ_PAY_ID, N'B?n kh?ng ??c ph?p ch?n c?p tr??ng ?n v? l?m c?p ph? duy?t trung gian. Vui l?ng b? qua ho?c ch?n c?p ph? ph?ng, tr??ng b? ph?n' ErrorDesc  

70
-- RETURN '-1'  

71
--END  

72
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)  

73
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))  

74
BEGIN  

75
PRINT @ROLE_KI_NHAY  

76
END  

77
ELSE  

78
BEGIN  

79
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)  

80
IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')  

81
BEGIN  

82
SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))  

83
END  

84
END  

85
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)  

86
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD') AND @p_REQ_TYPE <> 'I')  

87
BEGIN  

88
SELECT '-1' Result, '' REQ_PAY_ID, N'B?n kh?ng ??c ph?p ch?n c?p tr??ng ?n v? l?m c?p ph? duy?t trung gian. Vui l?ng b? qua ho?c ch?n c?p ph? ph?ng, tr??ng b? ph?n' ErrorDesc  

89
RETURN '-1'  

90
END  

91
SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)  

92
DECLARE @ACC_NUM VARCHAR(15)  

93
SET @ACC_NUM = (SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)  

94
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''  

95
BEGIN  

96
SELECT '-1' Result, '' REQ_PAY_ID, N'M? s? phi?u kh?ng ??c ? tr?ng' ErrorDesc  

97
RETURN '-1'  

98
END  

99
IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))  

100
BEGIN  

101
SELECT '-1' Result, '' REQ_PAY_ID, N'T?i kho?n nh?n vi?n t?m ?ng kh?ng ??c ? tr?ng' ErrorDesc  

102
RETURN '-1'  

103
END  

104
IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)  

105
BEGIN  

106
SELECT '-1' Result, '' REQ_PAY_ID, N'M? s? phi?u ? t?n t?i trong h? th?ng' ErrorDesc  

107
RETURN '-1'  

108
END  

109
--IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')  

110
--IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)  

111
--BEGIN  

112
-- 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  

113
-- RETURN '-1'  

114
--END  

115
--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')  

116
-- BEGIN  

117
-- 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  

118
UNG DE HOAT DONG NGHIEP VU')  

119
-- END  

120
--ELSE  

121
-- BEGIN  

122
-- IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)  

123
-- BEGIN  

124
-- --ROLLBACK TRANSACTION  

125
-- 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  

126
-- RETURN '-1'  

127
-- END  

128
--END  

129
--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID = @p_REF_ID AND @p_REQ_TYPE='I'))  

130
--BEGIN  

131
 

132
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'T?i kho?n t?m ?ng s? '+ @p_RECEIVER_DEBIT + N' kh?ng ph?i t?i kho?n c?a user: '+@p_REF_ID ErrorDesc  

133
-- RETURN '-1'  

134
--END  

135
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID = @p_REF_ID) AND @p_REQ_TYPE='I')  

136
BEGIN  

137
ROLLBACK TRANSACTION  

138
SELECT '-1' as Result, '' REQ_PAY_ID, N'T?i kho?n t?m ?ng s? '+ @p_RECEIVER_DEBIT + N' kh?ng ph?i t?i kho?n c?a user: '+@p_REF_ID ErrorDesc  

139
RETURN '-1'  

140
END  

141
IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')  

142
BEGIN  

143
SELECT '-1' as Result, '' REQ_PAY_ID, N'T?i kho?n t?m ?ng n?y kh?ng ??c v??t qu? 15 k? t?' ErrorDesc  

144
RETURN '-1'  

145
END  

146
-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT  

147
-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL  

148
-- SO TIEN THANH TO?N PHAI LON HON KHONG  

149
IF(@p_REQ_AMT <=0)  

150
BEGIN  

151
SELECT '-1' as Result, '' REQ_PAY_ID, N'S? ti?n t?m ?ng ph?i l?n h?n 0' ErrorDesc  

152
RETURN '-1'  

153
END  

154
-- END VALIDATE TRONG QUA TRINH TEST UAT  

155
BEGIN TRANSACTION  

156
--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')  

157
--BEGIN  

158
-- SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')  

159
--END  

160
UPDATE TR_REQ_ADVANCE_PAYMENT SET  

161
REF_ID = @p_REF_ID,  

162
DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,  

163
REQ_AMT = @p_REQ_AMT,  

164
NOTES= @p_NOTES,  

165
REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,  

166
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,  

167
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  

168
WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

169
IF @@Error <> 0 GOTO ABORT  

170
--- INSERT V?O B?NG DETAIL N?U T?M ?NG L? T?M ?NG THANH TO?N  

171
DECLARE @hdoc INT  

172
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;  

173
 

174
-- KIEM TRA NEU TAM UNG THANH TOAN  

175
IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')  

176
BEGIN  

177
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID  

178
DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID  

179
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,2),  

180
@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),  

181
@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),  

182
@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)  

183
DECLARE XmlDataPO CURSOR FOR  

184
SELECT *  

185
FROM  

186
OPENXML(@hdoc, '/Root/XmlDataPO', 2)  

187
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))  

188
OPEN XmlDataPO;  

189
DECLARE @INDEX_PO INT =0  

190
SET @INDEX_PO = 0  

191
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  

192
WHILE @@fetch_status=0  

193
BEGIN  

194
SET @INDEX_PO = @INDEX_PO +1  

195
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  

196
IF(@p_TYPE_FUNCTION ='SEND')  

197
BEGIN  

198
 

199
 

200
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  

201
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID  

202
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  

203
BEGIN  

204
ROLLBACK TRANSACTION  

205
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dong '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ h?p ?ng s? '+  

206
(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  

207
RETURN '-1'  

208
END  

209
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  

210
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))  

211
BEGIN  

212
ROLLBACK TRANSACTION  

213
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dong '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': H?p ?ng s? '+  

214
(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  

215
RETURN '-1'  

216
END  

217
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  

218
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID  

219
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))  

220
BEGIN  

221
ROLLBACK TRANSACTION  

222
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dong '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO s? '+  

223
(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  

224
RETURN '-1'  

225
END  

226
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH  

227
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))  

228
BEGIN  

229
ROLLBACK TRANSACTION  

230
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dong '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO s? '+  

231
(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  

232
RETURN '-1'  

233
END  

234
--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA  

235
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED ='Y' )))  

236
BEGIN  

237
ROLLBACK TRANSACTION  

238
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dong '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO s? '+  

239
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' ? ??c thanh to?n. Vui l?ng h?y b?n nh?p!' ErrorDesc  

240
RETURN '-1'  

241
END  

242
END  

243
DECLARE @REQ_PAYDTID VARCHAR(15);  

244
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;  

245
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;  

246
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES  

247
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)  

248
IF @@error<>0 GOTO ABORT;  

249
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  

250
END  

251
CLOSE XmlDataPO;  

252
DEALLOCATE XmlDataPO;  

253
--- CUSOR DANH SACH LICH THANH TOAN PO - HD  

254
DECLARE XmlDataSchedule CURSOR FOR  

255
SELECT *  

256
FROM  

257
OPENXML(@hdoc, 'Root/XmlDataSchedule',2)  

258
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,2),  

259
AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),  

260
REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))  

261
OPEN XmlDataSchedule  

262
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,  

263
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL  

264
WHILE @@fetch_status=0  

265
BEGIN  

266
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);  

267
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;  

268
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;  

269
INSERT INTO TR_REQ_PAY_SCHEDULE(  

270
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,  

271
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)  

272
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,  

273
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)  

274
--- END KHAI BAO CURSOR  

275
IF @@error<>0 GOTO ABORT;  

276
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,  

277
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL  

278
END  

279
CLOSE XmlDataSchedule;  

280
DEALLOCATE XmlDataSchedule;  

281
END  

282
--- END T?M ?NG THANH TO?N  

283
---- T?M ?NG H ?NH K?  

284
IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')  

285
BEGIN  

286
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

287
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

288
DECLARE XmlDataPO CURSOR FOR  

289
SELECT *  

290
FROM  

291
OPENXML(@hdoc, '/Root/XmlDataPO', 2)  

292
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))  

293
OPEN XmlDataPO;  

294
SET @INDEX_PO = 0  

295
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  

296
WHILE @@fetch_status=0  

297
BEGIN  

298
SET @INDEX_PO = @INDEX_PO +1  

299
DECLARE @REQ_PAYDTID_C VARCHAR(15);  

300
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;  

301
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;  

302
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES  

303
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)  

304
IF @@error<>0 GOTO ABORT;  

305
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE  

306
END  

307
CLOSE XmlDataPO;  

308
DEALLOCATE XmlDataPO;  

309
--- CUSOR DANH SACH LICH THANH TOAN PO - HD  

310
----------------------------  

311
--INSERT FROM PERIOD  

312
DECLARE XmlDataPeriod CURSOR FOR  

313
SELECT *  

314
FROM  

315
OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)  

316
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),  

317
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) )  

318
OPEN XmlDataPeriod;  

319
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),  

320
@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)  

321
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,  

322
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK  

323
WHILE @@fetch_status=0  

324
BEGIN  

325
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  

326
IF(@p_TYPE_FUNCTION ='SEND')  

327
BEGIN  

328
 

329
--IF(EXISTS(SELECT CONTRACT_ID  

330
--FROM TR_CONTRACT  

331
--WHERE CONTRACT_ID = @REF_ID AND CONVERT(DATE,END_DT,103) < CONVERT(DATE,GETDATE(),103) AND END_DT IS NOT NULL AND CONT_TYPE ='DK' AND CONT_TYPE IS NOT NULL AND CONT_TYPE <>''))  

332
 

333
----AND IS_CLOSED='Y' ))  

334
--BEGIN  

335
-- ROLLBACK TRANSACTION  

336
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'T?m ?ng h?p ?ng ?nh k? ? ?ng' ErrorDesc  

337
-- RETURN '-1'  

338
--END  

339
 

340
IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)  

341
BEGIN  

342
ROLLBACK TRANSACTION  

343
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? ci' ErrorDesc  

344
RETURN '-1'  

345
END  

346
END  

347
DECLARE @PERIOD_ID VARCHAR(15);  

348
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;  

349
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;  

350
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)  

351
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),  

352
@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)  

353
IF @@error<>0 GOTO ABORT;  

354
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,  

355
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK  

356
END  

357
CLOSE XmlDataPeriod;  

358
DEALLOCATE XmlDataPeriod;  

359
-- VALIDATE SO TIEN  

360
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)  

361
--BEGIN  

362
-- ROLLBACK TRANSACTION  

363
-- 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  

364
-- RETURN '-1'  

365
--END  

366
----  

367
END  

368
---- END T?M ?NG H ?NH K?  

369
--- INSERT PH??NG TH?C THANH TO?N  

370
----MethodCursor  

371
DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

372
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2),@REQ_PAY_TYPE varchar(1),  

373
@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(250), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20)  

374
DECLARE XmlDataMethod CURSOR FOR  

375
SELECT *  

376
FROM  

377
OPENXML(@hdoc, 'Root/XmlDataMethod',2)  

378
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),  

379
REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(250),  

380
ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))  

381
OPEN XmlDataMethod  

382
FETCH NEXT FROM XmlDataMethod  

383
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  

384
WHILE @@fetch_status=0  

385
BEGIN  

386
IF(@REQ_PAY_TYPE<>'1')  

387
BEGIN  

388
SET @ISSUED_DT = NULL  

389
END  

390
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);  

391
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;  

392
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;  

393
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,  

394
CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)  

395
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,'',  

396
@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)  

397
IF @@error<>0 GOTO ABORT;  

398
FETCH NEXT FROM XmlDataMethod  

399
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  

400
END  

401
CLOSE XmlDataMethod;  

402
DEALLOCATE XmlDataMethod  

403
----END INSERT PH??NG TH?C THANH TO?N  

404
----INSERT VAO BANG DS KHACH HANG  

405
DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID  

406
DECLARE XmlDataCus CURSOR FOR  

407
SELECT *  

408
FROM  

409
OPENXML(@hdoc, '/Root/XmlDataCus', 2)  

410
WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO decimal(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))  

411
OPEN XmlDataCus;  

412
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE  

413
WHILE @@fetch_status=0  

414
BEGIN  

415
INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)  

416
VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())  

417
--- END KHAI BAO CURSOR  

418
IF @@error<>0 GOTO ABORT;  

419
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE  

420
END  

421
CLOSE XmlDataCus;  

422
DEALLOCATE XmlDataCus;  

423
----END  

424
-- HANG MUC CHI PHI VA NGAN SACH  

425
DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

426
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)  

427
DECLARE XmlDataGood CURSOR FOR  

428
SELECT *  

429
FROM  

430
OPENXML(@hdoc, 'Root/XmlDataGood',2)  

431
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))  

432
OPEN XmlDataGood  

433
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON  

434
WHILE @@fetch_status=0 BEGIN  

435
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI  

436
SET @INDEX_NS = @INDEX_NS +1  

437
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE  

438
--IF(@p_TYPE_FUNCTION ='SEND')  

439
--BEGIN  

440
--IF((@AMT_EXE > @AMT_REMAIN_GD))  

441
--BEGIN  

442
-- ROLLBACK TRANSACTION  

443
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dong '+ 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  

444
-- RETURN '-1'  

445
--END  

446
--END  

447
IF(@p_TYPE_FUNCTION ='SEND')  

448
BEGIN  

449
IF(ISNULL(@AMT_EXE,0) =0)  

450
BEGIN  

451
ROLLBACK TRANSACTION  

452
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dong '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ng?n s?ch s? d?ng th?c t? ph?i l?n h?n kh?ng.' ErrorDesc  

453
RETURN '-1'  

454
END  

455
--IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))  

456
--BEGIN  

457
-- ROLLBACK TRANSACTION  

458
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dong '+ 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  

459
-- RETURN '-1'  

460
--END  

461
END  

462
DECLARE @p_BUDGET_ID VARCHAR(15);  

463
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;  

464
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;  

465
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)  

466
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)  

467
IF @@error<>0 GOTO ABORT;  

468
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON  

469
END;  

470
CLOSE XmlDataGood;  

471
DEALLOCATE XmlDataGood;  

472
--- END INSERT NGAN SACH  

473
DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

474
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)  

475
DECLARE XmlAttach CURSOR FOR  

476
SELECT *  

477
FROM  

478
OPENXML(@hdoc, 'Root/XmlAttach',2)  

479
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))  

480
OPEN XmlAttach  

481
--INSERT CHUNG TU DINH KEM  

482
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT  

483
WHILE @@fetch_status=0  

484
BEGIN  

485
IF (@REF_DT='')  

486
BEGIN  

487
SET @REF_DT = NULL  

488
END  

489
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;  

490
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;  

491
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES  

492
(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))  

493
IF @@error<>0 GOTO ABORT;  

494
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT  

495
END  

496
CLOSE XmlAttach;  

497
DEALLOCATE XmlAttach;  

498
----END  

499
--- BAT DAU VALIDATE  

500
IF(@p_TYPE_FUNCTION ='SEND')  

501
BEGIN  

502
DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)  

503
SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)  

504
IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')  

505
BEGIN  

506
SET @SUM_LICH_TT =(SELECT SUM(AMT_PAY_REAL* ISNULL(RATE,1)) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)  

507
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))  

508
BEGIN  

509
ROLLBACK TRANSACTION  

510
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'T?ng s? ti?n l?ch thanh to?n PO v? h?p ?ng li?n quan ?n kh?ch h?ng x? l? n? ph?i b?ng s? ti?n t?m ?ng' ErrorDesc  

511
RETURN '-1'  

512
END  

513
END  

514
IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))  

515
BEGIN  

516
SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)  

517
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))  

518
BEGIN  

519
ROLLBACK TRANSACTION  

520
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'T?ng s? ti?n s? d?ng ng?n s?ch v? chi ph? ph?i b?ng s? ti?n t?m ?ng' ErrorDesc  

521
RETURN '-1'  

522
END  

523
END  

524
ELSE  

525
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))  

526
BEGIN  

527
ROLLBACK TRANSACTION  

528
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'T?ng s? ti?n ph??ng th?c thanh to?n ph?i b?ng s? ti?n t?m ?ng' ErrorDesc  

529
RETURN '-1'  

530
END  

531
 

532
END  

533
----END  

534
IF(@p_REQ_TYPE ='I')  

535
BEGIN  

536
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID  

537
DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT decimal(18,2))  

538
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')  

539
BEGIN  

540
--DECLARE @DEP_CODE VARCHAR(15)  

541
--SET @DEP_CODE =(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)  

542
IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605' OR DEP_CODE ='0690405') AND DEP_ID =@p_DEP_ID)  

543
BEGIN  

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' AND A.ROLE_ID <>'GDK'  

545
END  

546
ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)  

547
BEGIN  

548
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'  

549
END  

550
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)  

551
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)  

552
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))  

553
BEGIN  

554
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')  

555
END  

556
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)  

557
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)  

558
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))  

559
BEGIN  

560
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'  

561
END  

562
ELSE  

563
BEGIN  

564
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'  

565
END  

566
END  

567
ELSE  

568
BEGIN  

569
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')  

570
BEGIN  

571
--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO  

572
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  

573
--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'  

574
END  

575
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')  

576
BEGIN  

577
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)  

578
--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'  

579
END  

580
END  

581
DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)  

582
SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)  

583
DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)  

584
DECLARE CUR_PR CURSOR FOR SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A  

585
OPEN CUR_PR  

586
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE  

587
WHILE @@FETCH_STATUS =0 --AND @STOP=0  

588
BEGIN  

589
SET @INDEX= @INDEX+1  

590
IF @INDEX = @SL_ROLE  

591
SET @ISLEAF = 'Y'  

592
ELSE  

593
SET @ISLEAF = 'N'  

594
SET @NOTES = (SELECT N'?i '+ ROLE_DESC + N' ph? duy?t' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)  

595
 

596
IF(@INDEX=1 )  

597
BEGIN  

598
SET @PARENT_ID = NULL  

599
SET @STATUS = 'C'  

600
--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)  

601
END  

602
ELSE  

603
BEGIN  

604
SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)  

605
SET @STATUS = 'U'  

606
END  

607
IF(@LIMIT_VALUE >= @p_REQ_AMT)  

608
BEGIN  

609
INSERT INTO dbo.PL_REQUEST_PROCESS  

610
(  

611
REQ_ID,  

612
PROCESS_ID,  

613
STATUS,  

614
ROLE_USER,  

615
BRANCH_ID,  

616
CHECKER_ID,  

617
APPROVE_DT,  

618
PARENT_PROCESS_ID,  

619
IS_LEAF, COST_ID, DVDM_ID, NOTES  

620
)  

621
VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)  

622
--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')  

623
BREAK;  

624
END  

625
ELSE  

626
INSERT INTO PL_REQUEST_PROCESS (  

627
REQ_ID,  

628
PROCESS_ID,  

629
STATUS,  

630
ROLE_USER,  

631
BRANCH_ID,  

632
CHECKER_ID,  

633
APPROVE_DT,  

634
PARENT_PROCESS_ID,  

635
IS_LEAF, COST_ID, DVDM_ID, NOTES  

636
) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)  

637
--END  

638
 

639
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE  

640
END  

641
CLOSE CUR_PR  

642
DEALLOCATE CUR_PR  

643
END  

644
COMMIT TRANSACTION  

645
IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET  

646
BEGIN  

647
 

648
--ROLLBACK TRANSACTION  

649
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY  

650
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID ) AND @BRANCH_TYPE_CR ='HS' AND @p_REQ_TYPE ='I')  

651
BEGIN  

652
DECLARE @USER_TP VARCHAR(15) =''  

653
--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID  

654
-- AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))  

655
IF(@USER_TP IS NULL OR @USER_TP ='')  

656
BEGIN  

657
SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID  

658
AND (RoleName IN ('GDDV','TPTC','TC','KTT')))  

659
END  

660
UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

661
END  

662
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD' AND @p_REQ_TYPE ='I')  

663
BEGIN  

664
DECLARE @USER_TPGD VARCHAR(15) =''  

665
SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD')))  

666
IF(@USER_TPGD IS NULL OR @USER_TPGD ='')  

667
BEGIN  

668
SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE  

669
AND RoleName ='TPGD')  

670
END  

671
UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

672
END  

673
DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0  

674
SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)  

675
SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)  

676
IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))  

677
BEGIN  

678
SELECT '-1' as Result, '' REQ_PAY_ID, N'S? ti?n ph??ng th?c thanh to?n ph?i b?ng s? ti?n b?n c?n thanh to?n l?: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc  

679
RETURN '-1'  

680
END  

681
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE <>'' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD' AND @p_REQ_TYPE <>'I')  

682
BEGIN  

683
SELECT '-1' as Result, '' REQ_PAY_ID, N'? c?p ? ph?ng giao d?ch. Vui l?ng kh?ng ??c ch?n c?p ph? duy?t trung gian' ErrorDesc  

684
RETURN '-1'  

685
END  

686
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS='U'))  

687
BEGIN  

688
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phi?u ? ngh? t?m ?ng ? ??c g?i ph? duy?t tr??c ?! Vui l?ng ?i c?c c?p ph? duy?t' ErrorDesc  

689
RETURN '-1'  

690
END  

691
--IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND @p_REQ_TYPE='P' AND (@p_IS_PERIOD IS NULL OR @p_IS_PERIOD ='' OR @p_IS_PERIOD ='N')))  

692
--BEGIN  

693
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Th?ng tin h?ng m?c ng?n s?ch v? chi ph? kh?ng ??c ? tr?ng. Vui l?ng ch?n ng?n s?ch v? chi ph?' ErrorDesc  

694
-- RETURN '-1'  

695
--END  

696
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U',CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID  

697
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)  

698
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')  

699
SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'G?i ph? duy?t th?nh c?ng' ErrorDesc  

700
RETURN '4'  

701
END  

702
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc  

703
RETURN '0'  

704
ABORT:  

705
BEGIN  

706
ROLLBACK TRANSACTION  

707
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc  

708
RETURN '-1'  

709
End  

710