Project

General

Profile

1.0 SCRIPT UPDATE.txt

Luc Tran Van, 03/16/2021 11:44 PM

 
1
ALTER PROCEDURE [dbo].[rpt_TR_ADVANCE_TEMP_PAYMENT_ByID]
2
@p_REQ_PAY_ID	varchar(15)= NULL
3
AS
4
		-------
5
		DECLARE @TITLE_APPROVE NVARCHAR(50) ='', @TITLE_APPROVE_KSV NVARCHAR(50) =''
6
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='S'))
7
		BEGIN
8
			SET @TITLE_APPROVE =N'Đã từ chối '
9
		END
10
		ELSE
11
		BEGIN
12
			SET @TITLE_APPROVE =N'Đã chấp thuận '
13
		END
14
		----------------
15
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='R'))
16
		BEGIN
17
			SET @TITLE_APPROVE_KSV =N'Đã từ chối '
18
		END
19
		ELSE
20
		BEGIN
21
			SET @TITLE_APPROVE_KSV =N'Đã chấp thuận '
22
		END
23
		----------------
24
		DECLARE @TRUONG_DV NVARCHAR(50),@DVKD_APP_DT NVARCHAR(50), @SO_DU_TAM_UNG DECIMAL(18,2)
25
		DECLARE @DATE_APPR DATETIME
26
		SET @DATE_APPR =ISNULL((SELECT TOP 1 CONVERT(DATETIME,APPROVE_DT,103) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID),CONVERT(DATETIME,GETDATE(),103))
27
		DECLARE @REQ_TYPE VARCHAR(15)
28
		SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
29
		-------------------------------------------
30
		DECLARE @CONTENT NVARCHAR(MAX)='', @CONTENT_CK NVARCHAR(MAX)='', @REQ_PAY_TYPE VARCHAR(5), @ACCNO VARCHAR(50), @ACCNAME NVARCHAR(500), @BANK NVARCHAR(500),
31
		@ISUED_DT DATE,@REASON NVARCHAR(MAX), @DESC NVARCHAR(MAX),@NDTM NVARCHAR(MAX) ='', @NDCK NVARCHAR(MAX) =''
32
		DECLARE CURS CURSOR FOR SELECT A.REQ_PAY_TYPE, A.ACC_NO,A.ACC_NAME,A.ISSUED_BY,A.ISSUED_DT,A.REQ_PAY_REASON,A.REQ_PAY_ENTRIES FROM TR_REQ_PAY_METHOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
33
		DECLARE @NOIDUNG NVARCHAR(MAX) =''
34
		--- LAY NOI DUNG THANH TOAN NEU THANH TOAN CHO NHA CUNG CAP
35
		DECLARE CURS_PO CURSOR FOR SELECT A.REQ_PAY_DESC,A.REQ_PAY_ENTRIES FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
36
		DECLARE @NOIDUNG_PO NVARCHAR(MAX) =''
37
		DECLARE @BRANCH_TYPE VARCHAR(15), @BRANCH_RQ VARCHAR(15),@TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0)
38
		SET @BRANCH_RQ =(SELECT TOP 1 BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
39
		SET @BRANCH_TYPE  = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
40
		IF(@BRANCH_TYPE ='HS'  AND @REQ_TYPE ='I')
41
		BEGIN
42
			SET @TRUONG_DV = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT top 1 CHECKER_ID FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='0' 
43
			AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0')))
44
			SET @DVKD_APP_DT =(SELECT  TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='0' 
45
			AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0'))
46
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
47
			BEGIN
48
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
49
			END
50
		END
51
		ELSE IF (@BRANCH_TYPE = 'PGD'  AND @REQ_TYPE ='I')
52
		BEGIN
53
			SET @TRUONG_DV =(SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT TOP 1 CHECKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
54
			--AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0')))
55
			SET @DVKD_APP_DT =(SELECT  TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
56
			--AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0'))
57
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
58
			BEGIN
59
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
60
			END
61
		END
62
		ELSE
63
		BEGIN
64
			SET @TRUONG_DV = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT top 1 CHECKER_ID FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='1' 
65
																					AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='1')))
66
			--SET @DVKD_APP_DT =(SELECT TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='1')
67
			SET @DVKD_APP_DT = (SELECT TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID )
68
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
69
			BEGIN
70
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
71
			END
72
		END
73
		DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
74
			INSERT INTO @TMP_DVDM
75
			SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
76
			FROM PL_COSTCENTER A
77
			LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
78
			WHERE B.DEP_ID = (SELECT TOP 1 DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
79
			GROUP BY A.DVDM_ID
80
		DECLARE @tmp_CN table(BRANCH_ID varchar(15))
81
			IF((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
82
			BEGIN
83
				INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
84
			END
85
			ELSE IF((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
86
			BEGIN
87
				DECLARE @FATHER_ID VARCHAR(15) = NULL
88
				SET @FATHER_ID =(SELECT TOP 1 FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
89
				INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
90
			END
91
			SET @SO_DU_TAM_UNG = (SELECT AMT FROM TR_REQ_ADVANCE_LIMIT_LOG
92
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ID
93
			=(SELECT MAX(ID) FROM TR_REQ_ADVANCE_LIMIT_LOG WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
94
		--IF(@BRANCH_TYPE='HS' AND @REQ_TYPE ='I')
95
		--		BEGIN
96
		--			SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
97
		--			 DEP_ID IN
98
		--			 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
99
		--				LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
100
		--				WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
101
		--			 AND REQ_TYPE ='I' AND AUTH_STATUS ='A' AND (CONVERT(DATETIME,APPROVE_DT,103) <=@DATE_APPR OR APPROVE_DT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID),0)
102
		--			SET @TOTAL_PAYBACK =
103
		--			ISNULL(
104
		--			(
105
		--				SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
106
		--				FROM TR_REQ_PAYMENT_DT B
107
		--				INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
108
		--				INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
109
		--				WHERE A.DEP_ID IN 
110
		--				(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
111
		--				LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
112
		--				WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
113
		--				AND A.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I' AND (CONVERT(DATETIME,A.APPROVE_DT_KT,103) <=@DATE_APPR OR A.APPROVE_DT_KT IS NULL) AND B.PAY_ADV_ID <>@p_REQ_PAY_ID
114
		--			),0)
115
		--		END
116
			
117
		--		-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
118
		--		ELSE IF(@BRANCH_TYPE <>'HS')
119
		--		BEGIN
120
		--			SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
121
		--			 AND REQ_TYPE ='I' AND AUTH_STATUS='A' AND (CONVERT(DATETIME,APPROVE_DT,103) <=@DATE_APPR OR APPROVE_DT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)
122
		--			SET @TOTAL_PAYBACK =
123
		--			(
124
		--				SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
125
		--				FROM TR_REQ_PAYMENT_DT B
126
		--				INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
127
		--				INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
128
		--				WHERE A.BRANCH_ID IN 
129
		--				(SELECT BRANCH_ID FROM @tmp_CN)
130
		--				AND A.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I' AND (CONVERT(DATETIME,A.APPROVE_DT_KT,103) <=@DATE_APPR OR A.APPROVE_DT_KT IS NULL) AND B.PAY_ADV_ID <>@p_REQ_PAY_ID
131
		--			)
132
		--		END
133
		---
134
        SELECT A.REQ_PAY_CODE, A.REQ_REASON,A.DEP_ID, N'Đã chấp thuận '+ISNULL(FORMAT(A.CREATE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS CREATE_DT, A.MAKER_ID_KT,A.CHECKER_ID,
135
		CASE WHEN ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN N'Đã chấp thuận '+ ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT,A.CHECKER_ID_KT,MAKER_ID_KT,
136
		CASE WHEN ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN @TITLE_APPROVE_KSV + ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT_KT , 
137
		CASE WHEN  ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'')  <>'' THEN @TITLE_APPROVE +ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS CREATE_DT_KT,
138
		B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, CASE WHEN A.REF_ID IS NOT NULL AND A.REF_ID <>'' THEN TL6.TLFullName ELSE TL.TLFullName END CREATE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
139
		BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, CASE WHEN A.REQ_TYPE <> 'I' THEN  DP.DEP_NAME ELSE DP_R.DEP_NAME END AS DEP_NAME , DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
140
		--Luanlt--2019/10/15-Sửa AL,AL1
141
		BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, 0 TOTAL_AMT_TEMP, 0 TOTAL_AMT_PAY_HIS,TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
142
		DAY(A.CREATE_DT) D_, MONTH(A.CREATE_DT) M_, YEAR(A.CREATE_DT) Y_,
143
		CASE
144
		WHEN A.REQ_TYPE='I' THEN CAST(1 AS BIT)  
145
		WHEN  A.REQ_TYPE <>'I'  THEN CAST(0 AS BIT)  
146
		END AS IS_NB,
147
		CASE
148
		WHEN A.REQ_TYPE='P' THEN CAST(1 AS BIT)  
149
		WHEN  A.REQ_TYPE <>'P'  THEN CAST(0 AS BIT)  
150
		END AS IS_NCC,
151
		CASE
152
		WHEN A.REQ_TYPE='D' THEN CAST(1 AS BIT)  
153
		WHEN  A.REQ_TYPE <>'D'  THEN CAST(0 AS BIT)  
154
		END AS IS_XLN,
155
		CASE WHEN LEN(@CONTENT) >0 THEN LEFT(@CONTENT,LEN(@CONTENT)-2) ELSE '' END AS TTTM,
156
		CASE WHEN LEN(@CONTENT_CK) >0 THEN LEFT(@CONTENT_CK, LEN(@CONTENT_CK)-2) ELSE NULL END AS TTCK,
157
		CASE WHEN LEN(@CONTENT) >0 THEN N'Tiền mặt:' ELSE '' END AS TM_TITLE,
158
		CASE WHEN LEN(@CONTENT_CK) >0 THEN N'Chuyển khoản:' ELSE NULL END AS CK_TITLE,
159
		--CASE WHEN @REQ_TYPE <>'P' THEN LEFT(@NOIDUNG, LEN(@NOIDUNG)-2) ELSE LEFT(@NOIDUNG_PO,LEN(@NOIDUNG_PO)-2) END AS NOIDUNG,
160
		TL1.TLFullName AS APPROVE_FULLNAME,
161
		--ISNULL(A.REQ_AMT,0) AS SO_TIEN_PTTT,
162
		CASE WHEN LEN(@NDTM + @NDCK) >0 THEN LEFT(@NDTM + @NDCK,LEN(@NDTM + @NDCK)-2) ELSE '' END AS PHUONG_THUC_THANH_TOAN, CASE WHEN
163
		EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
164
										THEN (SELECT TOP 1 CURRENCY FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ELSE 'VND' END AS TYPE_CUR,
165
		CASE WHEN
166
		EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
167
										THEN  (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
168
										ELSE A.REQ_AMT END  AS SO_TIEN_PTTT,
169
		--(ISNULL(@TOTAL_ADVANCE,0) -ISNULL(@TOTAL_PAYBACK,0))+A.REQ_AMT*A.RATE AS SO_DU_TAM_UNG,
170
		ISNULL(@SO_DU_TAM_UNG,0.00) AS SO_DU_TAM_UNG,
171
		CASE WHEN EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
172
										THEN  (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
173
										ELSE A.REQ_AMT END  AS REQ_AMT, @TRUONG_DV AS TRUONG_DV, @DVKD_APP_DT AS DVKD_APP_DT,CASE WHEN A.CONFIRM_NOTES <>'' AND A.CONFIRM_NOTES IS NOT NULL THEN  N'Ghi chú: '+ A.CONFIRM_NOTES ELSE '' END AS CONFIRM_NOTES
174
        FROM TR_REQ_ADVANCE_PAYMENT A
175
             LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
176
             LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
177
             LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
178
             LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
179
             LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
180
             LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
181
             LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
182
			 LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
183
             LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
184
			 --Luanlt--2019/10/15-Sửa AL,AL1
185
			 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE'
186
			 LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE'
187
			 LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
188
			 LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
189
			 LEFT JOIN TL_USER TL6 ON A.REF_ID = TL6.TLNANME
190
			 LEFT JOIN TL_USER TL_R ON A.REF_ID = TL_R.TLNANME
191
			 LEFT JOIN CM_DEPARTMENT DP_R ON TL_R.SECUR_CODE = DP_R.DEP_ID
192
			 WHERE 1=1 
193
			 AND(A.REQ_PAY_ID=@p_REQ_PAY_ID)
194
			ORDER BY A.CREATE_DT DESC;
195
¿
196
ALTER PROCEDURE [dbo].[PAY_ENTRIES_POST_UpdRef]  
197
@p_ET_ID varchar(50) = NULL,  
198
@p_PAIR_ID varchar(50) = NULL,  
199
@p_REF_NO VARCHAR(100) = ''---SO REF NO CUA CORE TRA VE  
200
AS  
201
BEGIN TRY  
202
----
203
-- CODE ANH THIEU
204
----
205
--UPDATE PAY_ENTRIES_POST  
206
--SET REF_NO = @p_REF_NO  
207
--WHERE ET_ID = @p_ET_ID AND ENTRY_PAIR = @p_PAIR_ID  
208
--WHERE ENTRY_PAIR = @p_PAIR_ID AND TRN_ID =@REQ_ID  
209
--WHERE ET_ID IN (SELECT * FROM wsiSplit(@p_ET_ID,','))
210
--SELECT * FROM wsiSplit('PET000000000016,PET000000000017,PET000000000018,PET000000000019',',')
211
----
212
--- END
213
--- CODE LUCTV DU KIEN DIEU CHINH
214
DECLARE @TRN_ID VARCHAR(15), @ENTRY_PAIR VARCHAR(15)
215
SET @TRN_ID =(SELECT TOP 1 TRN_ID FROM PAY_ENTRIES_POST WHERE ET_ID IN (SELECT * FROM wsiSplit(@p_ET_ID,',')))
216
SET @ENTRY_PAIR  =(SELECT TOP 1 ENTRY_PAIR FROM PAY_ENTRIES_POST WHERE ET_ID IN (SELECT * FROM wsiSplit(@p_ET_ID,',')))
217
UPDATE PAY_ENTRIES_POST  
218
SET REF_NO = @p_REF_NO  
219
WHERE ISNULL(REF_NO,'') = '' AND TRN_ID =@TRN_ID AND ENTRY_PAIR =@ENTRY_PAIR
220
SELECT '0' RESULT, '' ERROR  
221
RETURN 0  
222
END TRY  
223
BEGIN CATCH  
224
SELECT '-1' RESULT, ERROR_MESSAGE() ERROR  
225
RETURN -1  
226
END CATCH  
227
¿
228
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]
229
@p_REQ_PAY_ID	varchar(15)= NULL,
230
@p_REQ_PAY_CODE	varchar(50)	= NULL,
231
@p_REQ_DT VARCHAR(20)= NULL,
232
@p_BRANCH_ID	varchar(15)	= NULL,
233
@p_DEP_ID	varchar(15)	= NULL,
234
@p_REQ_REASON	nvarchar(MAX)	= NULL,
235
@p_REQ_TYPE	varchar(15)	= NULL,
236
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
237
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
238
@p_REF_ID	varchar(15)	= NULL,
239
@p_RECEIVER_PO	nvarchar(250)	= NULL,
240
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
241
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
242
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
243
@p_REQ_AMT	decimal(18, 0)	= NULL,
244
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
245
@p_MAKER_ID	varchar(15)	= NULL,
246
@p_CREATE_DT	varchar(25)	= NULL,
247
@p_EDITOR_ID	varchar(15)	= NULL,
248
@p_AUTH_STATUS	varchar(1)	= NULL,
249
@p_CHECKER_ID	varchar(15)	= NULL,
250
@p_APPROVE_DT	varchar(25)	= NULL,
251
@p_CREATE_DT_KT	varchar(25)	= NULL,
252
@p_MAKER_ID_KT	varchar(15)	= NULL,
253
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
254
@p_CHECKER_ID_KT	varchar(1)	= NULL,
255
@p_APPROVE_DT_KT  varchar(25)= null,
256
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
257
@p_BRANCH_CREATE	varchar(15)	= NULL,
258
@p_NOTES	varchar(15)	= NULL,
259
@p_RECORD_STATUS	varchar(1)	= NULL,
260
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
261
@p_TRANSFER_DT	varchar(25)	= NULL,
262
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
263
@p_PROCESS	varchar(15)	= NULL,
264
@p_PAY_PHASE VARCHAR(15)= NULL,
265
@p_DVDM_ID VARCHAR(15)= NULL,
266
@p_RATE DECIMAL(18,0) =0,
267
@p_RECIVER_MONEY VARCHAR(15)= NULL,
268
@p_XMP_TEMP XML = NULL,
269
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
270
@p_IS_PERIOD VARCHAR(5) = NULL
271
AS
272
--Validation is here
273
/*
274
DECLARE @ERRORSYS NVARCHAR(15) = '' 
275
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
276
	 SET @ERRORSYS = ''
277
IF @ERRORSYS <> '' 
278
BEGIN
279
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
280
	RETURN '0'
281
END 
282
*/
283
	--Luanlt-2019/10/15 Disable Validation
284
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
285
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
286
	--BEGIN
287
	--	SET @ERRORSYS = 'ASSC-00005'
288
	--	SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
289
	--	RETURN '-1'
290
	--END
291

    
292
	DECLARE @BRANCH_TYPE_CR VARCHAR(15), @ROLE_KI_NHAY VARCHAR(50)
293
	--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
294
	--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
295
	--BEGIN
296
	--	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
297
	--	RETURN '-1'
298
	--END
299
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
300
		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'))
301
		BEGIN
302
		PRINT @ROLE_KI_NHAY
303
		END
304
		ELSE
305
		BEGIN
306
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
307
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
308
		BEGIN
309
				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))
310
		END
311
		END
312
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
313
		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')
314
		BEGIN
315
			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
316
			RETURN '-1'
317
		END
318
	SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
319
	DECLARE @ACC_NUM VARCHAR(15)
320
	SET @ACC_NUM = (SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)
321
	IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
322
	BEGIN
323
		SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc
324
		RETURN '-1'
325
	END
326
	IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
327
	BEGIN
328
		SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
329
		RETURN '-1'
330
	END
331
	IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
332
	BEGIN
333
		SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
334
		RETURN '-1'
335
	END
336
	--IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
337
	--IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
338
	--BEGIN
339
	--	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
340
	--	RETURN '-1'
341
	--END
342
	--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
343
	--	BEGIN
344
	--		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 UNG DE HOAT DONG NGHIEP VU')
345
	--	END
346
	--ELSE
347
	--	BEGIN
348
	--		IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
349
	--		BEGIN
350
	--			--ROLLBACK TRANSACTION
351
	--			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
352
	--			RETURN '-1'
353
	--		END
354
	--END
355
	--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'))
356
	--BEGIN
357

    
358
	--			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
359
	--			RETURN '-1'
360
	--END
361
	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')
362
	BEGIN
363
				ROLLBACK TRANSACTION
364
				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
365
				RETURN '-1'
366
	END
367
	IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
368
	BEGIN
369
				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
370
				RETURN '-1'
371
	END
372
	-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT
373
	-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL
374
	-- SO TIEN THANH TOÁN PHAI LON HON KHONG
375
		IF(@p_REQ_AMT <=0)
376
		BEGIN	
377
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
378
			RETURN '-1'
379
		END
380
	 -- END VALIDATE TRONG QUA TRINH TEST UAT
381
		BEGIN TRANSACTION
382
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
383
		--BEGIN
384
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
385
		--END
386
		UPDATE TR_REQ_ADVANCE_PAYMENT SET 
387
		REF_ID = @p_REF_ID,
388
		DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,
389
		REQ_AMT = @p_REQ_AMT,
390
		NOTES= @p_NOTES,
391
		REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,
392
		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,
393
		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
394
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
395
		IF @@Error <> 0 GOTO ABORT
396
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
397
			DECLARE @hdoc INT
398
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
399
			
400
			-- KIEM TRA NEU TAM UNG THANH TOAN
401
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
402
			BEGIN
403
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID
404
				DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID
405
				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),
406
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
407
				@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),
408
				@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)
409
				DECLARE @TYPE_COST VARCHAR(25), @FR_LEVEL INT ,@TO_LEVEL INT
410
				DECLARE XmlDataPO CURSOR FOR
411
				SELECT *
412
				FROM
413
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
414
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
415
				OPEN XmlDataPO;
416
				DECLARE @INDEX_PO INT =0
417
				SET @INDEX_PO = 0
418
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
419
				WHILE @@fetch_status=0 
420
				BEGIN
421
					SET @INDEX_PO = @INDEX_PO +1
422
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
423
					IF(@p_TYPE_FUNCTION ='SEND')
424
					BEGIN
425
					
426
					
427
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
428
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
429
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
430
					BEGIN
431
						ROLLBACK TRANSACTION
432
						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ố '+
433
						(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
434
						RETURN '-1'
435
					END
436
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
437
					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))
438
					BEGIN
439
						ROLLBACK TRANSACTION
440
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
441
						(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
442
						RETURN '-1'
443
					END
444
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
445
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
446
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
447
					BEGIN
448
						ROLLBACK TRANSACTION
449
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
450
						(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
451
						RETURN '-1'
452
					END
453
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
454
					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))
455
					BEGIN
456
						ROLLBACK TRANSACTION
457
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
458
						(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
459
						RETURN '-1'
460
					END
461
					--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA
462
					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' )))
463
					BEGIN
464
						ROLLBACK TRANSACTION
465
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
466
						(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
467
						RETURN '-1'
468
					END
469
					END
470
					DECLARE @REQ_PAYDTID VARCHAR(15);
471
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
472
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
473
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
474
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
475
				IF @@error<>0 GOTO ABORT;
476
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
477
				END
478
				CLOSE XmlDataPO;
479
				DEALLOCATE XmlDataPO;
480
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
481
				DECLARE XmlDataSchedule CURSOR FOR
482
				SELECT *
483
				FROM
484
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
485
				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),
486
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
487
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
488
				OPEN XmlDataSchedule
489
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
490
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
491
				WHILE @@fetch_status=0 
492
				BEGIN
493
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
494
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
495
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
496
					INSERT INTO TR_REQ_PAY_SCHEDULE(
497
					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,
498
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
499
					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,
500
					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)
501
				--- END KHAI BAO CURSOR
502
				IF @@error<>0 GOTO ABORT;
503
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
504
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
505
				END
506
				CLOSE XmlDataSchedule;
507
				DEALLOCATE XmlDataSchedule;
508
			END
509
		--- END TẠM ỨNG THANH TOÁN
510
		---- TẠM ỨNG HĐ ĐỊNH KÌ
511
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
512
			BEGIN
513
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID
514
				DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
515
				DECLARE XmlDataPO CURSOR FOR
516
				SELECT *
517
				FROM
518
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
519
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
520
				OPEN XmlDataPO;
521
				SET @INDEX_PO = 0
522
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
523
				WHILE @@fetch_status=0 
524
				BEGIN
525
					SET @INDEX_PO = @INDEX_PO +1
526
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
527
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
528
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
529
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
530
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
531
				IF @@error<>0 GOTO ABORT;
532
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
533
				END
534
				CLOSE XmlDataPO;
535
				DEALLOCATE XmlDataPO;
536
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
537
			----------------------------
538
			--INSERT FROM PERIOD	
539
				DECLARE XmlDataPeriod CURSOR FOR
540
				SELECT *
541
				FROM
542
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
543
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
544
				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) )
545
				OPEN XmlDataPeriod;
546
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
547
				@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)
548
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
549
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
550
				WHILE @@fetch_status=0 
551
				BEGIN
552
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
553
					IF(@p_TYPE_FUNCTION ='SEND')
554
					BEGIN
555
					
556
					--IF(EXISTS(SELECT CONTRACT_ID 
557
					--FROM TR_CONTRACT 
558
					--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 <>''))
559
					
560
					----AND IS_CLOSED='Y' ))
561
					--BEGIN
562
					--	ROLLBACK TRANSACTION
563
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
564
					--	RETURN '-1'
565
					--END
566

    
567
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)
568
					BEGIN
569
						ROLLBACK TRANSACTION
570
						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
571
						RETURN '-1'
572
					END
573
					END
574
					DECLARE @PERIOD_ID VARCHAR(15);
575
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
576
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
577
					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)
578
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
579
				@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)
580
			IF @@error<>0 GOTO ABORT;
581
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
582
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
583
			END
584
			CLOSE XmlDataPeriod;
585
			DEALLOCATE XmlDataPeriod;
586
			-- VALIDATE SO TIEN
587
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
588
			--BEGIN
589
			--	ROLLBACK TRANSACTION
590
			--	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
591
			--	RETURN '-1'
592
			--END
593
			----
594
			END
595
		---- END TẠM ỨNG HĐ ĐỊNH KÌ
596
		--- INSERT PHƯƠNG THỨC THANH TOÁN
597
		----MethodCursor
598
			DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
599
			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),
600
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(250), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20)
601
			DECLARE XmlDataMethod CURSOR FOR
602
			SELECT *
603
			FROM
604
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
605
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
606
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(250), 
607
			ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
608
			OPEN XmlDataMethod
609
			FETCH NEXT FROM XmlDataMethod 
610
			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 
611
			WHILE @@fetch_status=0 
612
			BEGIN
613
				IF(@REQ_PAY_TYPE<>'1')
614
				BEGIN
615
					SET @ISSUED_DT = NULL
616
				END
617
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
618
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
619
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
620
				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,
621
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
622
				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,'',
623
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
624
			IF @@error<>0 GOTO ABORT;
625
			FETCH NEXT FROM XmlDataMethod 
626
			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
627
			END
628
			CLOSE XmlDataMethod;
629
			DEALLOCATE XmlDataMethod
630
		----END INSERT PHƯƠNG THỨC THANH TOÁN
631
		----INSERT VAO BANG DS KHACH HANG
632
			DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
633
			DECLARE XmlDataCus CURSOR FOR
634
			SELECT *
635
			FROM
636
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
637
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO decimal(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
638
			OPEN XmlDataCus;
639
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
640
				WHILE @@fetch_status=0 
641
				BEGIN		
642
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
643
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
644
				--- END KHAI BAO CURSOR
645
				IF @@error<>0 GOTO ABORT;
646
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
647
				END
648
				CLOSE XmlDataCus;
649
				DEALLOCATE XmlDataCus;
650
		----END
651
		-- HANG MUC CHI PHI VA NGAN SACH
652
			DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID
653
			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)
654
			DECLARE XmlDataGood CURSOR FOR
655
			SELECT *
656
			FROM
657
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
658
			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),TYPE_COST VARCHAR(25) , FR_LEVEL INT  ,TO_LEVEL INT)
659
			OPEN XmlDataGood
660
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL  ,@TO_LEVEL
661
			WHILE @@fetch_status=0 BEGIN
662
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
663
				SET @INDEX_NS = @INDEX_NS +1
664
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
665
				--IF(@p_TYPE_FUNCTION ='SEND')
666
				--BEGIN
667
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
668
				--BEGIN
669
				--		ROLLBACK TRANSACTION
670
				--		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
671
				--		RETURN '-1'
672
				--END	
673
				--END
674
				IF(@p_TYPE_FUNCTION ='SEND')
675
				BEGIN
676
				IF(ISNULL(@AMT_EXE,0) =0)
677
				BEGIN
678
					ROLLBACK TRANSACTION
679
						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ế phải lớn hơn không.' ErrorDesc
680
						RETURN '-1'
681
				END
682
				--IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
683
				--BEGIN
684
				--		ROLLBACK TRANSACTION
685
				--		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
686
				--		RETURN '-1'
687
				--END		
688
			END
689
				DECLARE @p_BUDGET_ID VARCHAR(15);
690
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
691
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
692
				INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL  ,TO_LEVEL) 
693
				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,@TYPE_COST , @FR_LEVEL  ,@TO_LEVEL)
694
			IF @@error<>0 GOTO ABORT;
695
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL  ,@TO_LEVEL
696
			END;
697
		CLOSE XmlDataGood;
698
		DEALLOCATE XmlDataGood;
699
		--- END INSERT NGAN SACH
700
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
701
		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)
702
		DECLARE XmlAttach CURSOR FOR
703
		SELECT *
704
		FROM
705
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
706
		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))
707
		OPEN XmlAttach
708
		--INSERT CHUNG TU DINH KEM
709
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
710
				WHILE @@fetch_status=0 
711
				BEGIN
712
					IF (@REF_DT='')
713
					BEGIN
714
						SET @REF_DT = NULL
715
					END
716
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
717
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
718
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
719
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
720
				IF @@error<>0 GOTO ABORT;
721
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
722
				END
723
				CLOSE XmlAttach;
724
				DEALLOCATE XmlAttach;
725
		----END
726
		--- BAT DAU VALIDATE
727
		IF(@p_TYPE_FUNCTION ='SEND')
728
		BEGIN
729
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
730
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
731
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
732
			BEGIN
733
				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)
734
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
735
				BEGIN
736
					ROLLBACK TRANSACTION
737
					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
738
					RETURN '-1'
739
				END
740
			END
741
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
742
			BEGIN
743
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
744
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
745
				BEGIN
746
					ROLLBACK TRANSACTION
747
					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
748
					RETURN '-1'
749
				END
750
			END
751
			ELSE
752
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
753
			BEGIN
754
				ROLLBACK TRANSACTION
755
				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
756
				RETURN '-1'
757
			END
758
			
759
		END
760
		----END
761
		IF(@p_REQ_TYPE ='I')
762
			BEGIN
763
				DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID
764
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT decimal(18,2))
765
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
766
				BEGIN
767
					--DECLARE @DEP_CODE VARCHAR(15)
768
					--SET @DEP_CODE =(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
769
					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)
770
					BEGIN
771
						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' ORDER BY LIMIT_VALUE ASC
772
					END
773
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
774
					BEGIN
775
						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' ORDER BY LIMIT_VALUE ASC
776
					END
777
					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)
778
					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) 
779
					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))
780
					BEGIN
781
						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') ORDER BY LIMIT_VALUE ASC
782
					END
783
					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)
784
					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) 
785
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
786
					BEGIN
787
						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' ORDER BY LIMIT_VALUE ASC
788
					END
789
					ELSE
790
					BEGIN
791
						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' ORDER BY LIMIT_VALUE ASC
792
					END
793
				END
794
				ELSE
795
				BEGIN
796
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
797
					BEGIN
798
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
799
						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 AND ROLE_ID ='GDDV' 
800
						--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'
801
				END
802
				ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
803
					BEGIN
804
						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 AND ROLE_ID ='TPGD'
805
						--BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
806
						--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'
807
				END
808
				END
809
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
810
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
811
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
812
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC
813
				OPEN CUR_PR
814
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
815
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
816
				BEGIN								
817
					SET @INDEX= @INDEX+1
818
					IF @INDEX = @SL_ROLE
819
						SET @ISLEAF = 'Y'
820
					ELSE
821
						SET @ISLEAF = 'N'
822
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
823

    
824
					IF(@INDEX=1 )
825
					BEGIN		
826
						SET @PARENT_ID = NULL
827
						SET @STATUS = 'C'							
828
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
829
					END				
830
					ELSE 
831
					BEGIN
832
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
833
						SET @STATUS = 'U'
834
					END
835
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
836
						BEGIN
837
							INSERT INTO dbo.PL_REQUEST_PROCESS
838
							(
839
								REQ_ID,
840
								PROCESS_ID,
841
								STATUS,
842
								ROLE_USER,
843
								BRANCH_ID,
844
								CHECKER_ID,
845
								APPROVE_DT,
846
								PARENT_PROCESS_ID,
847
								IS_LEAF, COST_ID, DVDM_ID, NOTES
848
							)
849
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
850
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
851
							--IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
852
							--BEGIN
853
								BREAK;
854
							--END
855
						END
856
						ELSE
857
							INSERT INTO PL_REQUEST_PROCESS (
858
								REQ_ID,
859
								PROCESS_ID,
860
								STATUS,
861
								ROLE_USER,
862
								BRANCH_ID,
863
								CHECKER_ID,
864
								APPROVE_DT,
865
								PARENT_PROCESS_ID,
866
								IS_LEAF, COST_ID, DVDM_ID, NOTES
867
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
868
					--END
869
					
870
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
871
				END
872
				CLOSE CUR_PR
873
				DEALLOCATE CUR_PR
874
			END
875
COMMIT TRANSACTION
876
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
877
		BEGIN
878
				
879
				--ROLLBACK TRANSACTION
880
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
881
				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')
882
				BEGIN
883
					DECLARE @USER_TP VARCHAR(15) =''
884
					--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
885
					--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
886
					IF(@USER_TP IS NULL OR @USER_TP ='')
887
					BEGIN
888
						SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
889
							AND (RoleName IN ('TBP','PP')))
890
					END
891
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
892
				END
893
				DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
894
				IF (@p_REQ_TYPE ='I')
895
				BEGIN
896
					SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) 
897
					FROM TR_REQ_ADVANCE_PAYMENT WHERE  REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND  REQ_TYPE ='I')
898
					SET  @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID  AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
899
					UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
900
				END
901
				--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')
902
				--BEGIN
903
				--	DECLARE @USER_TPGD VARCHAR(15) =''
904
				--	SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD')))
905
				--	IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
906
				--	BEGIN
907
				--		SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE 
908
				--			AND RoleName ='TPGD')
909
				--	END
910
				--	UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
911
				--END
912
				DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0
913
				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)
914
				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)
915
				IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
916
				BEGIN
917
					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
918
					RETURN '-1'
919
				END
920
				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')
921
				BEGIN
922
					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
923
					RETURN '-1'
924
				END
925
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
926
				BEGIN
927
					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
928
					RETURN '-1'
929
				END
930
				--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')))
931
				--BEGIN
932
				--	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
933
				--	RETURN '-1'
934
				--END
935
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U',CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
936
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
937
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
938
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
939
				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')
940
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' OR TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
941
				BEGIN
942
					SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
943
					RETURN '4'
944
				END
945
				ELSE
946
				BEGIN
947
					SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
948
					RETURN '4'
949
				END
950
				--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
951
				--RETURN '4'
952
		END
953
		-- FIX PHONG HO LOI LIEN QUAN DEN VIEC TAI KHOAN TAM UNG BI SAI
954
		DECLARE  @REQ_PAY_ID varchar(15), @l_REF_ID varchar(15)
955
		DECLARE cursorProduct CURSOR LOCAL FOR
956
		SELECT REQ_PAY_ID,REF_ID FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_TYPE ='I'
957
		Open cursorProduct
958
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
959
		WHILE @@FETCH_STATUS = 0
960
		BEGIN
961
		   UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@l_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@REQ_PAY_ID
962
		FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID, @l_REF_ID
963
		END
964
	SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
965
	RETURN '0'
966
ABORT:
967
BEGIN
968
		ROLLBACK TRANSACTION
969
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
970
		RETURN '-1'
971
End
972
¿
973

    
974
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]
975
@p_REQ_PAY_ID	varchar(15)= NULL,
976
@p_REQ_PAY_CODE	varchar(50)	= NULL,
977
@p_REQ_DT VARCHAR(10)= NULL,
978
@p_BRANCH_ID	varchar(15)	= NULL,
979
@p_DEP_ID	varchar(15)	= NULL,
980
@p_REQ_REASON	nvarchar(MAX)	= NULL,
981
@p_REQ_TYPE	varchar(15)	= NULL,
982
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
983
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
984
@p_REF_ID	varchar(15)	= NULL,
985
@p_RECEIVER_PO	nvarchar(250)	= NULL,
986
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
987
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
988
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
989
@p_REQ_AMT	decimal(18, 0)	= NULL,
990
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
991
@p_MAKER_ID	varchar(15)	= NULL,
992
@p_CREATE_DT	varchar(25)	= NULL,
993
@p_EDITOR_ID	varchar(15)	= NULL,
994
@p_AUTH_STATUS	varchar(1)	= NULL,
995
@p_CHECKER_ID	varchar(15)	= NULL,
996
@p_APPROVE_DT	varchar(25)	= NULL,
997
@p_CREATE_DT_KT	varchar(25)	= NULL,
998
@p_MAKER_ID_KT	varchar(15)	= NULL,
999
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
1000
@p_CHECKER_ID_KT	varchar(1)	= NULL,
1001
@p_APPROVE_DT_KT  varchar(25)= null,
1002
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
1003
@p_BRANCH_CREATE	varchar(15)	= NULL,
1004
@p_NOTES	varchar(15)	= NULL,
1005
@p_RECORD_STATUS	varchar(1)	= NULL,
1006
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
1007
@p_TRANSFER_DT	varchar(25)	= NULL,
1008
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
1009
@p_PROCESS	varchar(15)	= NULL,
1010
@p_PAY_PHASE VARCHAR(15)= NULL,
1011
@p_DVDM_ID VARCHAR(15) = NULL,
1012
@p_RATE DECIMAL(18,0)= NULL,
1013
@p_RECIVER_MONEY VARCHAR(15) = NULL,
1014
@p_IS_PERIOD VARCHAR(5) = NULL,
1015
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
1016
@p_XMP_TEMP XML = NULL
1017
AS
1018
--Validation is here
1019
/*
1020
DECLARE @ERRORSYS NVARCHAR(15) = '' 
1021
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
1022
	 SET @ERRORSYS = ''
1023
IF @ERRORSYS <> '' 
1024
BEGIN
1025
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
1026
	RETURN '0'
1027
END 
1028
*/
1029
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
1030
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
1031
	--BEGIN
1032
	--	SET @ERRORSYS = 'ASSC-00005'
1033
	--	SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
1034
	--	RETURN '0'
1035
	--END
1036
	IF(@p_REQ_TYPE ='I')
1037
	BEGIN
1038
		DECLARE @AMT_AD_PAY DECIMAL(18,0) =0
1039
		DECLARE @AMT_AD_PAY_BACK DECIMAL(18,0) =0
1040
		DECLARE @AMT_AD_PAY_REMAIN DECIMAL(18,0) =0
1041
		SET @AMT_AD_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID=@p_MAKER_ID AND AUTH_STATUS_KT='A' AND REQ_TYPE ='I')
1042
		SET @AMT_AD_PAY_BACK = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
1043
					FROM TR_REQ_PAYMENT_DT D
1044
					LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID  AND D.AUTH_STATUS_KT ='A'
1045
					WHERE X.REF_ID =@p_REF_ID)
1046
	 SET @AMT_AD_PAY_REMAIN =ISNULL(@AMT_AD_PAY,0) -ISNULL(@AMT_AD_PAY_BACK,0)
1047
	 SET @p_REQ_TEMP_AMT =ISNULL(@AMT_AD_PAY_REMAIN,0)
1048
	 END
1049
BEGIN TRANSACTION
1050
	-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --
1051
		--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)
1052
	--THIEUVQ 281119---
1053
		DECLARE @REC_DEBIT_AUTO VARCHAR(15),@ROLE_KI_NHAY VARCHAR(50)
1054
		SET @REC_DEBIT_AUTO =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID = @p_REF_ID)
1055
		--IF (@p_REQ_TYPE='I')
1056
		--BEGIN
1057
		--	--SET @p_REF_ID = @p_MAKER_ID
1058
		--	--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT))
1059
		--	--BEGIN
1060
		--	--	SET @p_RECEIVER_DEBIT = @p_RECEIVER_DEBIT+''
1061
		--	--END
1062
		--	--ELSE
1063
		--	--BEGIN
1064
		--	--	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT AND REF_ID != @p_REF_ID ) AND @p_TYPE_FUNCTION ='SEND')
1065
		--	--	BEGIN
1066
		--	--		SET @p_RECEIVER_DEBIT =(SELECT ACC_NUM FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT)
1067
		--	--	END
1068
		--	--END
1069
		--	IF(@p_RECEIVER_DEBIT IS NOT NULL AND @p_RECEIVER_DEBIT <>'')
1070
		--	BEGIN
1071
		--		IF(@REC_DEBIT_AUTO IS NOT NULL AND @REC_DEBIT_AUTO <>''  AND @REC_DEBIT_AUTO <> @p_RECEIVER_DEBIT)
1072
		--		BEGIN
1073
		--			SET @p_RECEIVER_DEBIT =@REC_DEBIT_AUTO
1074
		--		END
1075
		--		--IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID <> @p_REF_ID AND ACC_NUM =@p_RECEIVER_DEBIT))
1076
		--		--BEGIN
1077
		--		--	ROLLBACK TRANSACTION
1078
		--		--	SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Tài khoản tạm ứng này đã tồn tại và thuộc về nhân viên khác' ErrorDesc
1079
		--		--	RETURN '-1'
1080
		--		--END
1081
		--	END
1082
		--	ELSE
1083
		--	BEGIN
1084
		--		SET @p_RECEIVER_DEBIT =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) 
1085
		--	END
1086

    
1087
		--END
1088
		EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out
1089
	--END--
1090
		IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
1091
		BEGIN
1092
			ROLLBACK TRANSACTION
1093
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
1094
			RETURN '-1'
1095
		END
1096
		IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')
1097
		BEGIN
1098
			ROLLBACK TRANSACTION
1099
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
1100
			RETURN '-1'
1101
		END
1102
		IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE  = @p_REQ_PAY_CODE )
1103
		BEGIN
1104
			ROLLBACK TRANSACTION
1105
			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
1106
			RETURN '-1'
1107
		END
1108
		IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
1109
		BEGIN
1110
				ROLLBACK TRANSACTION
1111
				SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Tài khoản tạm ứng này không được vượt quá 15 kí tự' ErrorDesc
1112
				RETURN '-1'
1113
		END
1114
		-- START 19-11-2019
1115
		-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI
1116
		--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))
1117
		--BEGIN
1118
		--	ROLLBACK TRANSACTION
1119
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc
1120
		--	RETURN '-1'
1121
		--END
1122
		---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG
1123
		--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
1124
		--BEGIN
1125
		--	ROLLBACK TRANSACTION
1126
		--	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
1127
		--	RETURN '-1'
1128
		--END
1129
		-- SO TIEN THANH TOÁN PHAI LON HON KHONG
1130
		IF(@p_REQ_AMT <=0)
1131
		BEGIN
1132
			ROLLBACK TRANSACTION
1133
			SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
1134
			RETURN '-1'
1135
		END
1136
		-----
1137
		---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH
1138
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
1139
		--BEGIN
1140
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
1141
		--END
1142
		--
1143
		--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI
1144
		--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
1145
		--BEGIN
1146
		--	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 UNG DE HOAT DONG NGHIEP VU')
1147
		--END
1148
		--ELSE
1149
		--BEGIN
1150
		--	IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
1151
		--	BEGIN
1152
		--		ROLLBACK TRANSACTION
1153
		--		SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE, 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
1154
		--		RETURN '-1'
1155
		--	END
1156
		--END
1157
		
1158
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1159
		--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
1160
		--BEGIN
1161
		--	ROLLBACK TRANSACTION
1162
		--	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
1163
		--	RETURN '-1'
1164
		--END
1165
		--DECLARE @ROLE_KI_NHAY VARCHAR(50)
1166
		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')
1167
		BEGIN
1168
				ROLLBACK TRANSACTION
1169
				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
1170
				RETURN '-1'
1171
		END
1172
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1173
		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'))
1174
		BEGIN
1175
		PRINT @ROLE_KI_NHAY
1176
		END
1177
		ELSE
1178
		BEGIN
1179
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1180
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
1181
		BEGIN
1182
				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))
1183
		END
1184
		END
1185
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1186
		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')
1187
		BEGIN
1188
			ROLLBACK TRANSACTION
1189
			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
1190
			RETURN '-1'
1191
		END
1192
		EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out
1193
		IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
1194
		INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]
1195
           ([REQ_PAY_ID]
1196
           ,[REQ_PAY_CODE]
1197
           ,[BRANCH_ID],[REQ_DT],
1198
           [DEP_ID]
1199
           ,[REQ_REASON]
1200
           ,[REQ_TYPE],REQ_ENTRIES,
1201
            [REQ_DESCRIPTION]
1202
           ,REF_ID,
1203
			RECEIVER_PO, RECEIVER_DEBIT
1204
           ,[REQ_PAY_TYPE]
1205
           ,[REQ_TYPE_CURRENCY]
1206
           ,[REQ_AMT]
1207
           ,[REQ_TEMP_AMT]
1208
           ,[MAKER_ID]
1209
           ,[CREATE_DT]
1210
           ,[EDITOR_ID]
1211
           ,[AUTH_STATUS]
1212
           ,[CHECKER_ID]
1213
           ,[APPROVE_DT]
1214
           ,[CREATE_DT_KT]
1215
           ,[MAKER_ID_KT]
1216
           ,[AUTH_STATUS_KT]
1217
           ,[CHECKER_ID_KT]
1218
		   ,[APPROVE_DT_KT]
1219
           ,[CONFIRM_NOTES]
1220
           ,[BRANCH_CREATE]
1221
           ,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)
1222
			VALUES
1223
           (@p_REQ_PAY_ID,
1224
			@p_REQ_PAY_CODE,
1225
			@p_BRANCH_ID,CONVERT(DATE,GETDATE(),103),
1226
			@p_DEP_ID,
1227
			@p_REQ_REASON,
1228
			@p_REQ_TYPE,
1229
			@P_REQ_ENTRIES,
1230
			@p_REQ_DESCRIPTION,
1231
			@p_REF_ID,
1232
			@p_RECEIVER_PO,
1233
			@p_RECEIVER_DEBIT,
1234
			@p_REQ_PAY_TYPE,
1235
			@p_REQ_TYPE_CURRENCY,
1236
			@p_REQ_AMT,
1237
			@p_REQ_TEMP_AMT,
1238
			@p_MAKER_ID,
1239
			GETDATE(),
1240
			@p_EDITOR_ID,
1241
			'E',
1242
			NULL,
1243
			NULL,
1244
			NULL,
1245
			NULL,
1246
			NULL,
1247
			NULL,
1248
			NULL,
1249
			NULL,
1250
			@p_BRANCH_CREATE,
1251
			@p_NOTES,'1',
1252
			@p_TRANSFER_MAKER,
1253
			NULL,
1254
			@p_TRASFER_USER_RECIVE,
1255
			@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)
1256
			IF @@Error <> 0 GOTO ABORT
1257
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
1258
			DECLARE @hdoc INT
1259
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
1260
			
1261
			-- KIEM TRA NEU TAM UNG THANH TOAN
1262
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
1263
			BEGIN
1264
				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),
1265
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
1266
				@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),
1267
				@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)
1268
				DECLARE @TYPE_COST VARCHAR(5) , @FR_LEVEL INT  ,@TO_LEVEL INT
1269
				DECLARE XmlDataPO CURSOR FOR
1270
				SELECT *
1271
				FROM
1272
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
1273
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
1274
				OPEN XmlDataPO;
1275
				DECLARE @INDEX_PO INT =0
1276
				SET @INDEX_PO = 0
1277
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1278
				WHILE @@fetch_status=0 
1279
				BEGIN
1280
					SET @INDEX_PO = @INDEX_PO +1
1281
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1282
					--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))
1283
					--BEGIN
1284
					--	ROLLBACK TRANSACTION
1285
					--	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
1286
					--	RETURN '-1'
1287
					--END
1288
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1289
					--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)))
1290
					--BEGIN
1291
					--	ROLLBACK TRANSACTION
1292
					--	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
1293
					--	RETURN '-1'
1294
					--END
1295
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1296
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1297
					IF(@p_TYPE_FUNCTION ='SEND')
1298
					BEGIN
1299
							
1300
				
1301
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
1302
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1303
					BEGIN
1304
						ROLLBACK TRANSACTION
1305
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1306
						(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
1307
						RETURN '-1'
1308
					END
1309
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1310
					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))
1311
					BEGIN
1312
						ROLLBACK TRANSACTION
1313
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1314
						(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
1315
						RETURN '-1'
1316
					END
1317
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1318
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
1319
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1320
					BEGIN
1321
						ROLLBACK TRANSACTION
1322
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1323
						(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
1324
						RETURN '-1'
1325
					END
1326
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1327
					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))
1328
					BEGIN
1329
						ROLLBACK TRANSACTION
1330
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1331
						(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
1332
						RETURN '-1'
1333
					END
1334
					END
1335
					DECLARE @REQ_PAYDTID VARCHAR(15);
1336
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
1337
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
1338
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
1339
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
1340
				IF @@error<>0 GOTO ABORT;
1341
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1342
				END
1343
				CLOSE XmlDataPO;
1344
				DEALLOCATE XmlDataPO;
1345
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
1346
				DECLARE XmlDataSchedule CURSOR FOR
1347
				SELECT *
1348
				FROM
1349
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
1350
				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),
1351
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
1352
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
1353
				OPEN XmlDataSchedule
1354
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
1355
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
1356
				WHILE @@fetch_status=0 
1357
				BEGIN
1358
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
1359
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
1360
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
1361
					INSERT INTO TR_REQ_PAY_SCHEDULE(
1362
					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,
1363
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE,AMT_PAY_REAL)
1364
					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,
1365
					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)
1366
				--- END KHAI BAO CURSOR
1367
				IF @@error<>0 GOTO ABORT;
1368
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
1369
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
1370
				END
1371
				CLOSE XmlDataSchedule;
1372
				DEALLOCATE XmlDataSchedule;
1373
			END
1374
		--- END TẠM ỨNG THANH TOÁN
1375
		--- TẠM ỨNG HĐ ĐỊNH KỲ
1376
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
1377
		BEGIN
1378
				
1379
				DECLARE XmlDataPO CURSOR FOR
1380
				SELECT *
1381
				FROM
1382
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
1383
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
1384
				OPEN XmlDataPO;
1385
				SET @INDEX_PO = 0
1386
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1387
				WHILE @@fetch_status=0 
1388
				BEGIN
1389
					SET @INDEX_PO = @INDEX_PO +1
1390
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
1391
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
1392
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
1393
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
1394
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
1395
				IF @@error<>0 GOTO ABORT;
1396
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1397
				END
1398
				CLOSE XmlDataPO;
1399
				DEALLOCATE XmlDataPO;
1400
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
1401
			----------------------------
1402
			--INSERT FROM PERIOD	
1403
				DECLARE XmlDataPeriod CURSOR FOR
1404
				SELECT *
1405
				FROM
1406
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
1407
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
1408
				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))
1409
				OPEN XmlDataPeriod;
1410
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
1411
				@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)
1412
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
1413
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
1414
				WHILE @@fetch_status=0 
1415
				BEGIN
1416
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1417
					IF(@p_TYPE_FUNCTION ='SEND')
1418
					BEGIN
1419
					
1420
						IF(EXISTS(SELECT CONTRACT_ID 
1421
						FROM TR_CONTRACT 
1422
						WHERE CONTRACT_ID = @REF_ID
1423
						AND IS_CLOSED='Y' ))
1424
						BEGIN
1425
							ROLLBACK TRANSACTION
1426
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
1427
							RETURN '-1'
1428
						END
1429

    
1430
					
1431
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0  )
1432
					BEGIN
1433
						ROLLBACK TRANSACTION
1434
						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
1435
						RETURN '-1'
1436
					END
1437
					END
1438
					DECLARE @PERIOD_ID VARCHAR(15);
1439
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
1440
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
1441
					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)
1442
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
1443
				@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)
1444
			IF @@error<>0 GOTO ABORT;
1445
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
1446
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
1447
			END
1448
			CLOSE XmlDataPeriod;
1449
			DEALLOCATE XmlDataPeriod;
1450
			-- VALIDATE SO TIEN
1451
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
1452
			--BEGIN
1453
			--	ROLLBACK TRANSACTION
1454
			--	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
1455
			--	RETURN '-1'
1456
			--END
1457
			----
1458
		END
1459
		---- END TẠM ỨNG HỢP ĐỒNG ĐỊNH KÌ
1460
		--- INSERT PHƯƠNG THỨC THANH TOÁN
1461
		----MethodCursor
1462
			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),
1463
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(200), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CHECK_IN VARCHAR(15)
1464
			DECLARE XmlDataMethod CURSOR FOR
1465
			SELECT *
1466
			FROM
1467
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
1468
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
1469
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), 
1470
			ACC_NAME NVARCHAR(200), ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
1471
			OPEN XmlDataMethod
1472
			FETCH NEXT FROM XmlDataMethod 
1473
			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
1474
			WHILE @@fetch_status=0 
1475
			BEGIN
1476
				IF(@REQ_PAY_TYPE <>'1')
1477
				BEGIN
1478
					SET @ISSUED_DT = NULL
1479
				END
1480
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
1481
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
1482
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
1483
				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,
1484
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
1485
				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,'',
1486
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
1487
			IF @@error<>0 GOTO ABORT;
1488
			FETCH NEXT FROM XmlDataMethod 
1489
			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
1490
			END
1491
			CLOSE XmlDataMethod;
1492
			DEALLOCATE XmlDataMethod
1493
		----END INSERT PHƯƠNG THỨC THANH TOÁN
1494
		----INSERT VAO BANG DS KHACH HANG
1495
			DECLARE XmlDataCus CURSOR FOR
1496
			SELECT *
1497
			FROM
1498
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
1499
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
1500
			OPEN XmlDataCus;
1501
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1502
				WHILE @@fetch_status=0 
1503
				BEGIN		
1504
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
1505
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
1506
				--- END KHAI BAO CURSOR
1507
				IF @@error<>0 GOTO ABORT;
1508
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1509
				END
1510
				CLOSE XmlDataCus;
1511
				DEALLOCATE XmlDataCus;
1512
		----END
1513
			-- HANG MUC CHI PHI VA NGAN SACH
1514
			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)
1515
			DECLARE XmlDataGood CURSOR FOR
1516
			SELECT *
1517
			FROM
1518
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
1519
			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),TYPE_COST VARCHAR(5) , FR_LEVEL INT  ,TO_LEVEL INT)
1520
			OPEN XmlDataGood
1521
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL
1522
			WHILE @@fetch_status=0 BEGIN
1523
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1524
				SET @INDEX_NS = @INDEX_NS +1
1525
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1526
				--IF(@p_TYPE_FUNCTION ='SEND')
1527
				--BEGIN
1528
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
1529
				--BEGIN
1530
				--		ROLLBACK TRANSACTION
1531
				--		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
1532
				--		RETURN '-1'
1533
				--END
1534
				--END
1535
				IF(@p_TYPE_FUNCTION ='SEND')
1536
				BEGIN
1537
				IF(ISNULL(@AMT_EXE,0) =0)
1538
				BEGIN
1539
					ROLLBACK TRANSACTION
1540
						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ế phải lớn hơn không.' ErrorDesc
1541
						RETURN '-1'
1542
				END
1543
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
1544
				BEGIN
1545
						ROLLBACK TRANSACTION
1546
						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
1547
						RETURN '-1'
1548
				END		
1549
			END
1550
				DECLARE @p_BUDGET_ID VARCHAR(15);
1551
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
1552
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
1553
				INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO, AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST, FR_LEVEL,TO_LEVEL) 
1554
				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,@TYPE_COST, @FR_LEVEL,@TO_LEVEL)
1555
			IF @@error<>0 GOTO ABORT;
1556
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL
1557
			END;
1558
		CLOSE XmlDataGood;
1559
		DEALLOCATE XmlDataGood;
1560
		--- END INSERT NGAN SACH
1561
		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)
1562
		DECLARE XmlAttach CURSOR FOR
1563
		SELECT *
1564
		FROM
1565
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
1566
		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))
1567
		OPEN XmlAttach
1568
		--INSERT CHUNG TU DINH KEM
1569
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
1570
				WHILE @@fetch_status=0 
1571
				BEGIN
1572
					IF (@REF_DT='')
1573
					BEGIN
1574
						SET @REF_DT = NULL
1575
					END
1576
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
1577
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
1578
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
1579
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
1580
				IF @@error<>0 GOTO ABORT;
1581
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
1582
				END
1583
				CLOSE XmlAttach;
1584
				DEALLOCATE XmlAttach;
1585
		----END
1586
		--- BAT DAU VALIDATE
1587
		IF(@p_TYPE_FUNCTION ='SEND')
1588
		BEGIN
1589
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
1590
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1591
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
1592
			BEGIN
1593
				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)
1594
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
1595
				BEGIN
1596
					ROLLBACK TRANSACTION
1597
					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
1598
					RETURN '-1'
1599
				END
1600
			END
1601
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1602
			BEGIN
1603
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1604
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1605
				BEGIN
1606
					ROLLBACK TRANSACTION
1607
					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
1608
					RETURN '-1'
1609
				END
1610
			END
1611
			ELSE
1612
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1613
			BEGIN
1614
				ROLLBACK TRANSACTION
1615
				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
1616
				RETURN '-1'
1617
			END
1618
			
1619
		END
1620
		----END
1621
		--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS
1622
			IF(@p_REQ_TYPE ='I')
1623
			BEGIN
1624
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
1625
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
1626
				BEGIN
1627
					--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'
1628
					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)
1629
					BEGIN
1630
						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'
1631
					END
1632
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
1633
					BEGIN
1634
						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'
1635
					END
1636
					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)
1637
					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) 
1638
					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))
1639
					BEGIN
1640
						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')
1641
					END
1642
					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)
1643
					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) 
1644
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
1645
					BEGIN
1646
						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'
1647
					END
1648
					ELSE
1649
					BEGIN
1650
						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'
1651
					END
1652
				END
1653
				ELSE
1654
				BEGIN
1655
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
1656
					BEGIN
1657
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
1658
						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 AND ROLE_ID ='GDDV'
1659
						--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'
1660
					END
1661
					ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
1662
					BEGIN
1663
						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 AND ROLE_ID ='TPGD'
1664
						--AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)AND BRANCH_ID = @p_BRANCH_CREATE
1665
						--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'
1666
					END
1667
				END
1668
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
1669
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
1670
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
1671
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC
1672
				OPEN CUR_PR
1673
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1674
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
1675
				BEGIN								
1676
					SET @INDEX= @INDEX+1
1677
					IF @INDEX = @SL_ROLE
1678
						SET @ISLEAF = 'Y'
1679
					ELSE
1680
						SET @ISLEAF = 'N'
1681
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
1682

    
1683
					IF(@INDEX=1 )
1684
					BEGIN		
1685
						SET @PARENT_ID = NULL
1686
						SET @STATUS = 'C'							
1687
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
1688
					END				
1689
					ELSE 
1690
					BEGIN
1691
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
1692
						SET @STATUS = 'U'
1693
					END
1694
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
1695
						BEGIN
1696
							INSERT INTO dbo.PL_REQUEST_PROCESS
1697
							(
1698
								REQ_ID,
1699
								PROCESS_ID,
1700
								STATUS,
1701
								ROLE_USER,
1702
								BRANCH_ID,
1703
								CHECKER_ID,
1704
								APPROVE_DT,
1705
								PARENT_PROCESS_ID,
1706
								IS_LEAF, COST_ID, DVDM_ID, NOTES
1707
							)
1708
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
1709
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
1710
							--IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
1711
							--BEGIN
1712
								BREAK;
1713
							--END
1714
						END
1715
						ELSE
1716
							INSERT INTO PL_REQUEST_PROCESS (
1717
								REQ_ID,
1718
								PROCESS_ID,
1719
								STATUS,
1720
								ROLE_USER,
1721
								BRANCH_ID,
1722
								CHECKER_ID,
1723
								APPROVE_DT,
1724
								PARENT_PROCESS_ID,
1725
								IS_LEAF, COST_ID, DVDM_ID, NOTES
1726
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
1727
					--END
1728
					
1729
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1730
				END
1731
				CLOSE CUR_PR
1732
				DEALLOCATE CUR_PR
1733
			END
1734
			--- CAP NHAT THANG CUOI CUNG LA Y
1735
			--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
1736
		COMMIT TRANSACTION
1737
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
1738
		BEGIN
1739
				--ROLLBACK TRANSACTION
1740
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1741
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1742
				--INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1743
				--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')
1744
				--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
1745
				--RETURN '4'
1746
				DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
1747
				IF (@p_REQ_TYPE ='I')
1748
				BEGIN
1749
					SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) 
1750
					FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND  REQ_TYPE ='I')
1751
					SET  @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID  AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
1752
					UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0),
1753
					RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE  REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE ='I'
1754
				END
1755
				IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
1756
				BEGIN
1757
				DECLARE @BRANCH_TYPE_CR VARCHAR(15)
1758
				SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
1759
				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')
1760
				BEGIN
1761
					DECLARE @USER_TP VARCHAR(15) =''
1762
					--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
1763
					--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
1764
					IF(@USER_TP IS NULL OR @USER_TP ='')
1765
					BEGIN
1766
						SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
1767
							AND (RoleName IN ('GDDV','TPTC','TC','KTT')))
1768
					END
1769
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1770
				END
1771
				--ELSE 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')
1772
				--BEGIN
1773
				--	DECLARE @USER_TPGD VARCHAR(15) =''
1774
				--	SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
1775
				--	--SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD') OR
1776
				--	--RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='TPGD')))
1777
				--	IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
1778
				--	BEGIN
1779
				--		SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE 
1780
				--			AND RoleName ='TPGD')
1781
				--	END
1782
				--	UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1783
				--END
1784
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
1785
				BEGIN
1786
					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
1787
					RETURN '-1'
1788
				END
1789
				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')
1790
				BEGIN
1791
					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
1792
					RETURN '-1'
1793
				END
1794
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1795
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1796
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
1797
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
1798
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1799
				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')
1800
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' OR TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
1801
				BEGIN
1802
					SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
1803
					RETURN '4'
1804
				END
1805
				ELSE
1806
				BEGIN
1807
					SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
1808
					RETURN '4'
1809
				END
1810
			END
1811
		END
1812
		-- FIX PHONG HO LOI LIEN QUAN DEN VIEC TAI KHOAN TAM UNG BI SAI
1813
		DECLARE  @REQ_PAY_ID varchar(15), @l_REF_ID varchar(15)
1814
		DECLARE cursorProduct CURSOR LOCAL FOR
1815
		SELECT REQ_PAY_ID,REF_ID FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_TYPE ='I'
1816
		Open cursorProduct
1817
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
1818
		WHILE @@FETCH_STATUS = 0
1819
		BEGIN
1820
		   UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@l_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@REQ_PAY_ID
1821
		FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID, @l_REF_ID
1822
		END
1823
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, '' ErrorDesc
1824
		RETURN '0'
1825
ABORT:
1826
BEGIN
1827
		ROLLBACK TRANSACTION
1828
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
1829
		RETURN '-1'
1830
End